在西门子STEP7编程中关于FC的ENO使用的容易产生的误解
前两天在为头条写的一个关于FC的ENO的使用容易产生误解的地方,很多朋友私信询问关于这方面的问题。
今天跟大家详细来聊聊这个问题:
首先,关于ENO的机制的问题大家可以参考“S7-300 和 S7-400 编程的梯形图(LAD)参考手册”,这个手册可以在西门子全球资源库下载。
那么他的机制是什么呢?
1、ENO = EN AND NOT (框错误) 什么意思呢?也就是说当EN 与 FC块没有错误,这样的话ENO=EN(也就是说EN为1则ENO为1)、
那么当FC块中有错误呢?
即使EN为1,ENO=EN(1)and NOT 1=0;
这就解释了我微头条中的那个小程序(如下图所示),因为超过了范围,所以,FC105有错误。
2、EN/ENO 机制用于:
• 数学运算指令、
• 传送和转换指令、
• 移位和循环移位指令、
• 块调用。
该机制不用于:
• 比较、
• 计数器、
• 定时器。
3、在框的实际指令周围,为 EN/ENO 机制生成附加的 STL 指令,这些指令依赖于现有的在此之前和之后的逻辑运算。 使用一个加法器实例,
a、. 连接了 EN 和 ENO 的加法器
1 A I 0.0 // EN 连接
2 JNB _001 // 将 RLO 移入 BR,并在 RLO = 0 时跳转
3 L in1 // 框参数
4 L in2 // 框参数
5 +I // 实际加法
6 T out // 框参数
7 AN OV // 错误识别
8 SAVE // 将错误存入 BR
9 CLR // 首次检查
10 _001: A BR // 将 BR 移位到 RLO 中
11 = Q 4.0
在第 1 行后,RLO 包含在此之前的逻辑运算的结果。 JNB 指令将 RLO 复制到 BR 位,并设置第一个校验位。
• 当 RLO = 0 时,程序跳转到第 10 行,继续执行 A BR。 不执行加法指令。 在第 10 行,重新将 BR复制到 RLO 中,然后给输出赋值 0。
• 当 RLO = 1 时,程序不跳转,表示执行加法指令。 在第 7 行中,程序判断是否在执行加法指令期间发生了错误,然后在第 8 行存储到 BR 中。 第 9 行设置第一个校验位。 现在,在第 10 行中将BR 位复制回 RLO,因此,输出显示是否成功执行了加法指令。第 10 行和第 11 行不改变 BR 位,因此,也显示是否成功执行了加法指令。
S7-1200 PLC数学函数指令之基本数学运算(上)
S7-1200 PLC常用的基本指令,包括比较指令、数学函数指令、移动操作指令、转换操作指令、逻辑运算指令和移位与循环指令等。
之前的文章介绍了比较指令,今天就介绍一下数学函数指令吧,数学函数指令又包括基本的数学运算指令、三角函数运算和指数运算指令等,所以我们在学习数学函数指令时,要重点掌握基本数学运算指令哦。
S7-1200 PLC基本数学运算指令包括加ADD、减SUB、乘MUL、除DIV、取余数MOD、计算指令CALCULATE、取补码NEG、递增INC、递减DEC、取最大最小值和绝对值ABS指令。
与S7-200 SMART PLC对比的话,S7-1200 PLC是新增了取余数MOD、取补码NEG、取最大最小值和绝对值ABS指令的,我们可以对比学习这几个新增的指令。
1、加法指令ADD和减法指令SUB
加法指令是对整数和实数类型的数据进行加法运算,在使用指令的时候,可以在指令上选择操作数的数据类型,此外,还可以点击指令上的图标添加多个数的输入管脚,可以实现多个数据的相加(IN1+IN2+IN3+……+INn=OUT)。
这也是S7-1200 PLC与S7-200 SMART PLC的区别,S7-200 SMART PLC的输入操作数是只有2个的,不能进行添加管脚。
减法指令SUB是对整数或实数类型的数据进行减法运算IN1-IN2=OUT,减法指令不能添加输入管脚。
2、乘法指令MUL和除法指令DIV
乘法指令MUL和加法指令是一样的,可以增加输入IN的管脚,实现多个数据相乘的运算(IN1×IN2×IN3×……×INn=OUT)。除法指令DIV使用整数的数据类型进行除法运算IN1÷IN2=OUT,注意OUT存储的是商的结果,余数是不存储的。
3、取余数指令MOD
用DIV指令将两个整数相除输出的结果是只有商,若需要取余数,那么我们就需要用到取余数指令MOD,MOD指令所支持的数据类型也是整数的,运算是IN1÷IN2=OUT,OUT存储的是运算后的余数。
我们需要注意的是,当数据运算结果产生溢出或者运算不符合规则,比如说除数为0时,如果希望指令的ENO后面的指令不执行,我们可以生成ENO功能,选中指令,点击鼠标右键,选择“生成ENO”即可,当我们执行生成有ENO的指令时,如果运算出错,指令会以蓝色虚线框显示。
4、计算指令CALCULATE
计算指令是用户可以按照计算公式自行编写算法的指令,使用这个指令的好处是可以省去多个运算指令进行运算的步骤,不过我们需要注意的是参与运算的数据必须要是同一种数据类型的。
使用的时候点击指令右上角的计算器图标就可以弹出编辑公式的对话框,我们在里面编写好运算公式就可以了,非常方便。
下图程序的计算公式是y=(a+b)/(a-b)+c,都是INT类型的数据参与运算。
从上图我们可以看到,我们只要给输入管脚赋值,指令会自动根据用户编好的公式进行运算,是不是非常简单呢,这么方便好用的指令,你确定不要掌握一下吗?
篇幅也有限,基本数学运算指令还有取补码NEG、递增INC、递减DEC、取最大最小值和绝对值ABS指令没讲呢,那在下一篇文章继续介绍哦~
技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究~
点击加入工控交流圈
(此处已添加圈子卡片,请到今日头条客户端查看)相关问答
西门子200plc移位寄存器怎么使用的?
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...
牙齿做了矫正后牙龈萎缩并且松了
[回答]成年人做牙齿矫正,因为这时候牙齿已经发育完全,通过矫治器长时间作用人为将牙齿及牙槽骨一起移位来到达牙齿排列整齐的目的,因此这种外力干预给牙齿...