2分钟学会PLC比较指令的应用
现今物流行业迅猛发展,快递公司和邮局每天会汇集来自全国各地数以亿计的邮件,这些邮件经过识别后会以不同的地域进行分类,再散发到目的地。
邮件的自动分拣一直是决定物流速度的核心技术问题,如何自动识别邮件的编码并自动进行分拣呢?本文通过学习S7-1200的比较指令、拨码卡关的结构来完成一个PLC控制的自动邮件分拣系统。
认识PLC的比较指令
比较指令共分为两大类,包括比较数值大小的指令和比较数值范围的指令。
1 、比较数值大小的指令
比较数值大小指令有等于、不等于、大于或等于、小于或等于、大于、小于这六种判断条件。这类指令均有两个操作数IN1与IN2,可以是位字符串、整数、浮点数、字符串、TIME、DATE、TOD、DTL。以下分别是6中比较指令的应用举例。
如上图所示,指令符号的上下各有一个占位符,分别用来填写操作数1和操作数2,操作数可以是地址或常数,且必须是相同的数据类型。当操作数1与操作数2进行比较,满足比较条件时,输出端为1,反之输出端为0。例如图 中,地址MB20与MB30中的数值如果相等,则输出线圈Q0.0得电。
多个比较指令还可以进行串联和并联,串联比较指令时执行“与”运算,并联
比较指令时执行“或”运算。
2、 比较数值范围的指令
比较数值范围的指令有“值在范围内”和“值超出范围”两种判断条件。
(1) 值在范围内(IN_RANGE)指令
表示符号如下,用来比较输入参数是否在设定的数值范围之内,如果输入参数在设定参数范围内则使能端有能流输出。如气动设备的压力在允许范围内时,绿色指示灯亮,表示设备处于正常工作状态。
在该指令名称下面,单击???会显示数据类型下拉列表,该指令支持的数据类型为整数和浮点数。
VAL、MIN、MAX这三个端口输入的值既可以是地址也可以是常数,需要注意的是在进行比较操作时,MIN、MAX和VAL的值必须与设置的数据类型相匹配,否则在输入指令时会报错。
IN_RANGE指令工作原理:将输入 VAL 的值与输入 MIN 和 MAX 的值进行比较,并将结果发送到功能框输出中。 如果输入 VAL 的值满足 MIN <= VAL 且 VAL <= MAX 的比较条件,则功能框输出的信号状态为“1”。 如果不满足比较条件,则功能框输出的信号状态为“0”。
(2) 值超出范围(OUT_RANGE)指令
表示符号如下,该指令的各端口及所支持的数据类型与IN_RANGE指令相同,用来比较设定的参数是否在设定范围内,如超出范围使能端有能流输出。例如将温度传感器采集的当前温度值存入地址MD40中,如果当前温度值超出了安全的温度范围,报警指示灯亮。
3、 检查有效性的指令
(1)比较是否为实数
指令符号为—|OK|—,可以检查操作数的值是否为有效的浮点数,该操作数必须是一个地址。因为—|OK|—检查有效性只针对实数类型(Real),所以程序上方操作数用长度为32位的地址,如MD40。
如下图程序所示,检查地址MD40中的数值是否为实数,如果操作数的值是有效浮点数且指令的信号状态为“1”,则该指令输出的信号状态为“1”。 在其它任何情况下,“检查有效性”指令输出的信号状态都为“0”。
(2)比较是否为非实数
指令符号为—|NOT OK|—,可使用该指令检查操作数的值是否为无效的浮点数。该指令符号如下:
可以同时使用“检查有效性”指令和 EN 机制。 如果将该指令功能框连接到 EN 使能输入,则仅在值的有效性查询结果为正数时才置位使能输入。 使用该功能,可确保仅在指定操作数的值为有效浮点数时才启用该指令。
话说PLC程序的比较
程序比较是编程软件一个很重要的功能,当我们不知道哪个备份是最新的时候、当我们的程序修改发生问题,需要判断是哪部分修改造成的时候,都需要进行代码对比。对于PLC来说,有在线和离线两种程序,对应的程序比较也有两种:离线-在线、离线-离线。不同的厂家和编程软件提供的比较功能也是不同的,下面就我熟悉的几个产品进行一下简单对比:
一、西门子STEP7
STEP7可以进行在线-离线,离线-离线对比,当代码不同时,可以打开代码进行逐行比较,能快速跳转到不同的地方。
离线对比时,可以进行不同项目的对比,也可以进行本项目内不同程序目录、设备的对比。
二、西门子TIA博图
TIA博图软件功能非常强大,其比较功能也很强大和漂亮。
在线后,马上就能看出哪些程序块不一致。然后对于不一致的程序块点击右键,选择快速比较->与在线对象进行比较,就可以马上进行对比,不一致的程序段会醒目标识,非常方便。
如需进行离线-离线比较,在打开主项目后,再打开参考项目,选择对应的欲比较的块,也可以完成比较(首先选择在左侧窗口的块,然后再到另外一个项目里选择欲对比的块即可)。
三、罗克韦尔(AB)的RSLogix
最近处理一起AB PLC5软件故障时,需要知道离线和在线程序的异同,对于20年前的RSLogix5 Pro软件是否有对比功能,很担心,翻了一下菜单,竟然找到了,操作非常简单,结果界面非常漂亮、清晰。同样,可以快速定位到不同点。
遗憾的是,PLC5只能进行离线-离线比较,如果需要在线-离线比较,需要先上传程序,离线保存,再进行比较。
对于RSLogix5000,默认是不带比较功能的(这有点奇葩),需要自己安装RSLogix 5000 Compare Tool(可以集成在RSLogix5000内),也只能进行离线-离线比较(咋几十年没有啥大变化呢?)。
四、ABB的APB软件
ABB的APB编程软件是AC450、AC110、AC80等进行编程的工具。对于小控制器,如果在线与离线不一致,根本就不允许在线,因此,不存在在线-离线比较的可能。对于AC450这种大型控制器,在线与离线是分离的,同样没有在线-离线比较的功能。
同时,APB也不提供离线-离线比较的功能。如果需要进行比较,怎么办?将离线程序转成源文件(source),在线程序进行源程序上载,再转变成源文件,用第三方的比较软件进行文本比较即可(比如ultraCompare)。
曾经发生过最新源程序丢失的事故,我上载后,与老版本进行对比,修改,才逐步恢复了完整的源程序。
小结
当我们拿到一个程序,不知道是否最新版本时,对于西门子软件,可以进行在线,然后自动或者手动对比即可。对于罗克韦尔,如果与在线不一致,则会直接告知用户,并且不允许在线。对于AC450,在线时,也会自动进行用户存储信息(包括注释等)的比对,但是不能说明程序是否一致,要小心对待。总之,程序比较是一个比较重要的功能,可以为工作带来比较大的便利。
2019年12月10日
说明:
1、本文是实践经验,非严格论文,与相关产品和理论可能不完全相符。
2、原创不易,欢迎转发,让更多朋友看到(引用请注明出处!)
相关问答
西门子PLC比较指令?
比较指令就是比较两个数的大小啊,可以是两个整数,实数,双整,比较成立就输出高电平,不成立就是低电平,比如整数大于等于比较指令CMP_I如果IN1的值大于或等...
PLC用哪种编程语言比较好?
PLC(可编程逻辑控制器)可以使用多种编程语言进行编程,包括LadderDiagram(梯形图)、StructuredText(结构化文本)、FunctionBlockDiagram(功能块图...
三菱PLC比较指令?
三菱PLC的比较指令用于比较两个数据的大小。比较指令是PLC中常用的一种指令,用于比较两个数据的大小,并根据比较结果执行相应的逻辑操作。三菱PLC的比较指令包...
PLC三菱好还是西门子好?
plc是西门子的好,但是价格也贵.一般200的cpu用于小型的系统,而300,特别是400的cpu则用于大型的系统中.实际工作中,我个人感觉不计较价格的话.编程方面西门子的...
PLC编程语言有哪三个?
1、PLC有五种标准化编程语言顺序功能图(SFC)、梯形图(LD)、功能模块图(FBD)三种图形化语言和语句表(IL)、结构文本(ST)两种文本语言,最常用的两种编程...1、P...
plc有几种编程语言?
PLC(可编程逻辑控制器)有以下几种编程语言:1.LadderDiagram(梯形图):梯形图是PLC编程中最常用的一种编程语言,它模拟了电气控制电路的逻辑关系,具有易...P...
plc编程谁家的好用?
很高兴回答的问题!就市场占有率来看,西门子最大,其次是三菱、欧姆龙。具体谁家好用,这个不能一概而论,还取决于编程人员对其使用的熟练程度。西门子PLC又...西...
plc程序种类?
1、梯形图语言(LD)梯形图语言是PLC程序设计中最常用的编程语言。它是与继电器线路类似的一种编程语言2、指令表语言(IL)指令表编程语言是与汇编语言类似的一...
plc和python哪个好?
首先人的精力都是有限的,除非你天资聪颖的人中龙凤,第二,PLC和Python学好哪个都可以,首先你要知道学习了这两个技术能够干什么。然后你要选择有一个主要学习...
plc比较器的基本用法?
plc比较数值大小的指令在plc中用于比较数值大小指令,主要有等于、不等于、大于或等于、小于或等于、大于、小于等六种,这类指令均有两个操作数IN1与IN2,可以...