JZGKCHINA
工控技术分享平台
作为PLC编程者,正常运行的源程序交给别人之后,在运行过程中,可能会出现被别人改动后下载,导致设备停机、撞机等情况,最后将责任归咎于源程序作者。
针对这种情况,小李今天给大家分享一个小程序,简单几步即可判断出你的PLC程序是否被别人修改过,并记录下修改时间作为证据。
01
使用的硬件与软件
硬件:西门子 S7-1500 CPU-1515
软件:博图TIA Portal
02
编写PLC程序,调用读取校验和功能块
2.1 先在程序里面建立一个DB块,作为证据存储点
如图所示:先编辑DB块变量的内容。
注意:这里建立的变量一定要设置为保持性变量,否则CPU断电或者Down机的时候,证据就丢失了哦!
2.2 调用功能块,编辑抓捕证据的小程序
如图所示,调用GetChecksum指令,指令位于“选项—扩展指令——诊断”文件夹里面。
2.3编辑功能块
指令块每个管脚的说明如下
2.4 判断程序校验和改变,当程序有改变并下载的时候,记录下下载时间
当前读取的校验和与上一周期保存的校验和比较,当校验和发生改变时,纪录校验和改变时的时间,这个时间是程序改变后下载的生效时间,这个时间我们可以发送到HMI或者其他人机软件上面,显示出程序改变下载时间。
2.5 记录上一周期的校验和
将本周期计算的校验和变量MOVE给上周期校验和的变量,用于下一次继续监视。
2.6 保存错误代码(非必须)
指令执行过程中有时候会发生错误,当错误输出管脚为1的时候,我们可以把错误代码抓取出来分析分析。
03
检查程序是否正常
程序编辑完成之后,将程序下载到CPU,对比离线的校验和及在线读取的校验和,检查程序是否正确下载,适当改变一下程序,再次下载,验证一下程序是否有效。
此小程序仅检查标准程序的修改;可以将GetChecksum指令 Scope管脚修改为 2,只检查安全程序的修改;可以将GetChecksum指令 Scope管脚修改为 3,只检查文本列表的修改。
编辑完成这个小程序之后,你就可以记录到别人修改或下载你的源程序的证据,保护你的权益。