在西门子S7-1200 PLC编程里,数学函数指令是实现数据运算、模拟量处理、项目逻辑控制的核心功能。如果说触点、定时器、计数器是PLC的“手脚”,那数学函数指令就是PLC的“计算大脑”——现场90%的金额统计、工程量换算、数据限值控制、公式化运算,都要靠数学函数指令来实现。
很多刚接触S7-1200的新手,写程序时只会做简单的通断控制,一遇到数据运算、数值处理就无从下手,本质就是没吃透数学函数指令的用法。这篇文章就用最通俗的大白话,把S7-1200常用的11种数学函数指令全讲透,不用死记硬背,看完就能理解每个指令的适用场景,写程序时直接套用。
一、基础四则运算指令(最常用)
这4种是PLC编程里用得最多的基础运算指令,核心就是对两个数值做加减乘除运算,是所有数据处理的基础。
重点提醒:参与运算的输入参数IN1、IN2和输出参数OUT,必须是完全相同的数据类型,比如Int和Int比、Real和Real比,不然会报错。
1. 加法ADD
- 核心规则:将输入参数IN1和IN2相加,运算结果送到输出参数OUT中。
- 通俗理解:就像投币机,投进去1元、5元、10元,用加法指令把金额累加起来,得到总投币金额。
- 典型应用:投币金额统计、产量累计、模拟量数值累加、设备运行时长累计。
2. 减法SUB
- 核心规则:用输入参数IN1减去IN2,运算结果送到输出参数OUT中。
- 通俗理解:就像买东西付款,总金额减去商品价格,得到剩余的余额。
- 典型应用:消费金额扣减、余量计算、数值差值计算、位置偏差计算。
3. 乘法MUL
- 核心规则:将输入参数IN1和IN2相乘,运算结果送到输出参数OUT中。
- 通俗理解:就像批发商品,单价乘以数量,得到总付款金额。
- 典型应用:模拟量工程量换算、产量总产量计算、功率计算、倍率换算。
4. 除法DIV
- 核心规则:用输入参数IN1除以IN2,运算结果送到输出参数OUT中。
- 通俗理解:就像AA制付款,总金额除以人数,得到每个人应付的金额。
- 典型应用:平均值计算、模拟量比例换算、单位换算、节拍时间计算。
二、实用数值处理指令(新手必学)
这组指令是专门用来做数值特殊处理的,在数据统计、符号转换、数值步进控制里用得非常多,能大幅简化程序逻辑。
1. 取余数MOD
- 核心规则:用输入参数IN1除以IN2,将所得的余数结果送到输出参数OUT中。
- 通俗理解:就像分苹果,10个苹果分给3个人,每人分3个,最后剩下的1个就是余数。
- 典型应用:固定数量批次分拣、循环计数余数判断、奇偶校验、脉冲等分控制。
2. 求补码NEG
- 核心规则:更改输入参数IN的符号,求IN的补码,正数变负数、负数变正数,结果送到输出参数OUT中。
- 通俗理解:就像温度计,零上5℃,用这个指令就能变成零下5℃,直接反转数值符号。
- 典型应用:正反转位置控制、数值符号反转、偏差方向判断、模拟量正负值转换。
3. 绝对值ABS
- 核心规则:求输入参数IN的绝对值,无论输入是正数还是负数,输出都是正数,结果送到输出参数OUT中。
- 通俗理解:就像算距离,不管你往前走5米还是往后走5米,离开起点的距离都是5米。
- 典型应用:位置偏差绝对值计算、振动幅度计算、误差值计算、超差值判断。
4. 递增INC、递减DEC
- 核心规则:
- 递增INC:将参数IN/OUT的值加1,结果重新送回IN/OUT中;
- 递减DEC:将参数IN/OUT的值减1,结果重新送回IN/OUT中。
- 通俗理解:就像电梯楼层按钮,按一下上键,楼层数加1;按一下下键,楼层数减1。
- 典型应用:产品计数、步骤序号控制、循环次数统计、地址偏移量步进。
三、最值与限值控制指令(现场必用)
这组指令是专门用来做数值范围控制、最值筛选的,不用写多个比较指令并联,一个指令就能搞定数值上下限控制、多数据最值筛选,大幅简化程序。
1. 获取最小值MIN
- 核心规则:比较多个输入参数的值,将最小的数值写入输出OUT中,最少指定2个输入,最多支持100个输入。
- 通俗理解:就像比赛打分,多个评委给出分数,用这个指令直接找出最低分。
- 典型应用:多通道温度最低值筛选、多传感器数据最小值判断、数值下限保护、多设备运行状态优先级判断。
2. 获取最大值MAX
- 核心规则:比较多个输入参数的值,将最大的数值写入输出OUT中,最少指定2个输入,最多支持100个输入。
- 通俗理解:就像考试排名,多个学生的成绩,用这个指令直接找出最高分。
- 典型应用:多通道温度最高值报警、多传感器数据最大值判断、数值上限保护、设备负载最大值监控。
3. 设置限值LIMIT
- 核心规则:设置下限MN和上限MX,将输入IN的值限制在MN和MX之间。如果IN在区间内,直接输出IN的值;如果IN低于下限MN,输出MN的值;如果IN高于上限MX,输出MX的值。
- 通俗理解:就像电梯的楼层限制,最低只能到1楼,最高只能到20楼,哪怕你按了地下1楼或者30楼,电梯也只会停在1楼或20楼。
- 典型应用:模拟量输出限值保护、电机转速上下限控制、阀门开度范围限制、参数输入合规性控制。
四、数学函数与通用计算指令
1. 计算平方SQR
- 核心规则:计算输入IN的浮点值的平方,结果写入输出OUT中。
- 典型应用:面积计算、功率计算、加速度计算、曲线公式运算。
2. 计算平方根SQRT
- 核心规则:计算输入IN的浮点值的平方根,输入值大于0,结果为正数;输入值小于0,输出无效浮点数。
- 典型应用:距离计算、标准差计算、速度换算、几何尺寸运算。
3. 通用计算CALCULATE
- 核心规则:可以自定义并执行复杂的数学表达式或逻辑运算,支持扩展多个输入参数,在对话框里直接写计算公式,一个指令就能完成复杂的多步运算。
- 通俗理解:就像一个科学计算器,你直接写计算公式,它就能自动算出结果,不用把加减乘除拆成多个指令。
- 典型应用:复杂的模拟量工程量换算、多参数公式运算、非标设备的工艺公式计算、多变量逻辑运算。
新手必记的数学指令避坑红线
1.数据类型必须一致:参与运算的所有输入、输出参数,必须是相同的数据类型,Int不能和Word运算,Real不能和DInt运算,这是新手最容易踩的坑。
2.除法运算禁止除零:除法DIV指令的IN2参数不能为0,否则会导致程序运算报错、PLC停机,写程序时一定要加除零判断保护。
3.注意数值溢出问题:整数运算时,结果不能超过对应数据类型的上下限,比如Int类型最大值是32767,超过就会溢出,导致数值错误。
4.负数开平方会输出无效值:平方根SQRT指令的输入值不能小于0,否则会输出无效浮点数,导致后续运算全部出错,一定要提前做数值范围判断。
5.CALCULATE指令注意表达式语法:自定义计算公式时,必须严格遵循博途的语法规则,参数名称要和输入端口对应,不然会出现运算错误。
以上就是西门子S7-1200最核心的数学函数指令,所有复杂的数值运算、数据处理、公式化控制程序,都是这些基础指令组合出来的。新手不用死记硬背,把每个指令的运算规则和适用场景理解透,写程序时就能信手拈来。