plc 基础指令下,高级部份(官方文档整理)
第八讲:数学函数进阶——CALCULATE 指令
8.1 我看到的截图
老师展示了一个公式: y=3x12+x22+x32
这是均方根的计算,在 PLC 里用CALCULATE指令实现。
8.2 CALCULATE 是什么
CALCULATE是一个通用数学表达式指令,可以在里面写复杂公式,不用连一堆 ADD、MUL、DIV、SQRT。
引脚
EN:使能OUT:计算结果IN1、IN2、IN3...:输入变量(可以添加多个)
我的理解:就像计算器里的公式输入,把一堆运算打包到一个框里。
8.3 和基本指令的区别
表格
| 方式 | 适合场景 | 我的感受 |
|---|---|---|
| ADD、SUB、MUL、DIV 逐个连 | 简单运算 | 直观,但连线多 |
| CALCULATE | 复杂公式 | 一个框搞定,省地方 |
8.4 应用场景
平均值计算:多个传感器取平均
标准差/方差:质量检测中的统计计算
几何运算:距离、角度计算
8.5 我的注意事项
CALCULATE 里写的公式要检查数据类型匹配
如果公式里有除法,还是要防除零错误
太复杂的公式建议拆成几步,方便调试时看中间值
第九讲:移动操作——MOVE 家族
9.1 MOVE 指令(单个变量移动)
我看到的截图
老师展示了 DB29 里的各种数据类型:
Static_1:IntStatic_2:IntStatic_3:DIntStatic_4:Array[0..1] of ByteStatic_5、Static_6:UDT(用户数据类型)Static_7:String[10]Static_8:CharStatic_9:BoolStatic_10:UInt
MOVE 的用法
plain
MOVE EN —— ENO "DB29".Static_1 —— IN —— OUT1 —— "DB29".Static_2我的理解:MOVE 就是复制,把 IN 的值复制到 OUT,IN 原来的值不变。
MOVE 能做什么
单个变量复制(Int → Int)
数组整体复制(Array → Array)
结构体复制(UDT → UDT)
字符串复制(String → String)
我的疑问:不同类型能直接 MOVE 吗?比如 Int 复制到 DInt?老师好像说基本类型可以自动转换,但最好保持一致。
9.2 MOVE_BLK 指令(数组块移动)
我看到的截图
DB30 的Static_1是 Array[0..7] of Byte,里面存了:
Static_1[0]= 16#01Static_1[1]= 16#02Static_1[2]= 16#03Static_1[3]= 16#04Static_1[4]~[7]= 16#00
用 MOVE_BLK 把前 4 个元素搬到 DB31 的Static_1[4]开始的位置:
plain
MOVE_BLK EN —— ENO "DB30".Static_1[0] —— IN "DB31".Static_1[4] —— OUT 4 —— COUNT结果:DB31 的Static_1[4]=01,[5]=02,[6]=03,[7]=04
我的理解:MOVE_BLK 是数组的批量复制,可以指定从哪开始、复制多少个。
引脚说明
表格
| 引脚 | 我的理解 |
|---|
