在PLC加密情况下监控I/O变量
工厂有两条一样的软糖生产线,一条已经投产,另一条还在调试阶段。由于疫情原因老外来不了,就自己调试,外加远程协助。
设备:
一个控制保温水(密闭管路)流量的阀,控制原理图大致如下。屏幕上按钮控制两个继电器,继电器控制阀开度。阀的开度反馈给plc,并在屏幕上显示。另外还有个压力表作流量参考。
问题现象:
当两台设备屏幕上开度一致时,压力相差较大。因为开度是工艺参数,所以生产想两台设备保持一致。
检查:
这里用的IM151-8 PN/DP CPU。
上载发现程序加密,没法监控,只能用万用表测量两个模块的输入是否一样。一直以来接触的都是电压或者电流输入也就没在意,测了半天发现不管开度怎么调,电压电流都太大变化,一查模块,发现是个测电阻的。想想太麻烦了,就下了个免费监控软件PLCRecorder试试,不过这个软件只支持以太网。
设置通道:
设置变量:
录波:
非常方便。
然后又捣鼓了下STEP7,结果发现也能监控变量:
显示可访问节点:
右击添加变量监控:
添加变量监控即可,效果一样
该方法可以简单协助检查,省去了用万用表测量的麻烦及误差。
前面介绍了读取和写入数组中元素值的指令Field Read和Field Write两条指令,同时给大家简单的分析了程序的设计思路。接下来就使用Field Read来实现本功能,在程序的设计过程中可能还需要用到循环跳转指令。
例子说明:
假设需要从一组数据中找出一个大值,并记录这个大值是这组数据中的第几个数据。
步:
添加一个全局DB块,并在DB块中建立一个变量名为data_1#,数据类型为数组的变量,用于存储需要找出大的数据,同时建立一些相应的变量,如下图所示。
第二步:
初始化相应的存储器并把存储大值的存储器的值设置为小值。程序如下所示:
第三步:
编写判断数据的挨个比较是否完成,当执行的次数与设定的次数相等时,则表示完成,可以跳出大值查找的程序,让程序跳转到后执行。程序如下所示:
第四步:
编写读取数组中元素的值,然后与存储大值的存储器中的值做比较,用于判断数据存储器存储的值是否是大值,若不是大值进行数据交换,同时记录位置,然后INDEX的值加1,同时记录执行次数并与设定次数做比较,如未达到设定次数,则跳转换前面继续通过Field Read指令读取数据出来继续做比较。