鲲鹏恒控-脚本升级
> 以前写脚本得背一堆英文函数名:`Tag.GetFloat`、`Math2.Scale`、`Log.Info`…… 记不住就翻手册、抄错一个字母编译不过。现在这些函数都有了**中文别名**,编辑器里补全、悬停说明、快速插入,全走中文 —— 写脚本和写易语言一样顺。
【配图:右侧函数库面板,分组头显示「变量 / Variables」;鼠标悬停在某一条上,弹出四行:中文写法 / English / 举例 / For example】
## 中文别名覆盖了哪些
**15 个内置函数库、163 条别名**,从点位读写、数学运算、字符串处理、文件操作、数据库、报表、报警、历史、通信到 UI 弹窗,全都有中文写法:
| 库 | 中文名 | 几条别名 | 典型例子 |
|---|---|---|---|
| 点位 | Tag | 23 | `点位.读浮点` = `Tag.GetFloat` |
| 数学 | Math2 | 30 | `数学.量程变换` = `Math2.Scale` |
| 文本 | Str | 27 | `文本.替换` = `Str.Replace` |
| 报表 | Report | 19 | `报表.导出` = `Report.Export` |
| 位运算 | Bit | 18 | `位.取位` = `Bit.Get` |
| 文件 | Fs | 13 | `文件.读文本` = `Fs.ReadText` |
| 报警 | Alarm | 6 | `报警.触发` = `Alarm.Trigger` |
| 界面 | Ui | 5 | `界面.确认框` = `Ui.Confirm` |
| 系统 | Sys | 4 | `系统.当前时间` = `Sys.Now` |
| 历史 | History | 4 | `历史.平均值` = `History.Avg` |
| 表格 | Csv | 4 | `表格.读整表` = `Csv.ReadAll` |
| 日志 | Log | 3 | `日志.记录信息` = `Log.Info` |
| 数据库 | Db | 3 | `数据库.执行` = `Db.Exec` |
| 定时器 | Timer | 2 | `定时器.周期执行` = `Timer.Every` |
| 通信 | Comm | 2 | `通信.设备在线` = `Comm.IsDeviceOnline` |
> 标准英文名仍是**唯一运行时契约**;中文别名在编译前被安全地改写回标准名,不会多一层调用开销,也不会误伤字符串和注释里的文字。
## 编辑器里怎么用
**右侧函数库面板** —— 每个分组头显示「中文 / English」,条目悬停弹出四行说明:**中文写法在前、英文在后**,照抄就能用。
**快速插入(`Ctrl+J`)** —— 弹出的函数列表里,中文别名和标准名并列显示;选中文别名插进去的就是中文,选标准名插进去的就是英文,**脚本里混着写也行**。
**代码补全** —— 打 `点位.` 就列出全部 23 条点位操作;打 `数学.` 就列出量程变换、限制范围、取绝对值……**不用背英文名**。
**举例用的是真实点名** —— 不是「点名」「点1」这种占位符,而是「锅炉温度」「1号PLC」「机组表」这类现场真实叫法;**复制进脚本改个名字就能跑**。
## 点位读写也简化了
以前读写点位要记一长串按名调用:
```csharp
// 老写法(仍可用,但不再是首选)
double t = Tag.GetFloat("锅炉温度");
Tag.Write("进料阀", 1);
```
现在直接写:
```csharp
// 新写法 —— 点位是可寻址对象
double t = #PLC1.锅炉温度.实时值;
#PLC1.进料阀.开.实时值 = 真;
// 还能取质量、单位、量程
if (#PLC1.锅炉温度.质量正常) {
#窗口.液位棒图.填充比例 = #PLC1.锅炉温度.实时值 / 100;
}
```
**三类作用域全覆盖**:设备通道点 `#<设备名>.<点名>.实时值`、全局内部变量 `#全局变量.<裸名>.实时值`、画面窗口变量 `#<画面名>.<短名>.实时值`。
**6 个叶子可选**:除了 `实时值`,还能取 `质量` / `质量正常` / `单位` / `量程下限` / `量程上限` / `初始值`。
**写错了编译期就报中文错误** —— 点名重复、张冠李戴、找不到作用域或点,不再等进运行态才炸。
## 动态点名也能写
点名要等运行期才算得出来?把整条引用包进花括号,**变量裸写在双引号外**:
```csharp
// 动态点名 —— 双引号里只放纯文本,变量一律写在引号外
for (int i = 1; i <= 5; i++) {
double temp = #{"PLC1.窑" + i + ".温度.实时值"};
日志.记录信息("窑" + i + "温度 = " + temp);
}
```
> 双引号里只放纯文本,变量/表达式一律裸写在引号外 —— 读代码的人一眼分出死的/活的。**只有两种形态**:要么整段都不写花括号(静态),要么井号 + `{` 到第一个 `}` 把作用域、点名、叶子一起包进去。
## 按名收点的函数,实参直接传 `#….点名`
以前按名收点的函数要手写双引号:
```csharp
// 老写法
History.Log("烤箱温度", 0);
```
现在直接传点位的 `.点名` 叶子:
```csharp
// 新写法 —— 编译期自动变成点名字符串
History.Log(#烤箱温度.点名, 0);
```
点位改名或换作用域时,这条引用随手就改成对的,**不会漏改另一串字符串**。
## 类型混用?编译期就拦住
以前「开关点跟 0 比」「数值点直接当 if 条件」能顺利编过,进运行态才抛异常。现在**编译时就报错**:
- **开关点**不能做加减乘除、不能跟数字比、不能赋给数值变量
- **数值点**不能当 `if` / `while` 条件、不能敲 `!` / `&&` / `||`、不能强转 `(bool)`
报错消息里**带点名和该改成什么**,不用猜。
> 字符串、数组、结构、FIFO 和没填类型的点暂不检查 —— 宁可漏报,不误报。
## 一句话
**英文函数名不是门槛了。** 中文别名铺满 15 个库、点位读写简成一个 `#`、动态点名花括号里拼、类型混用编译期就报 —— 写脚本和写易语言一样顺,复制粘贴就能跑。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)