手把手教你写个小程序判断你的源程序是否被别人改动过

作为PLC编程者,正常运行的源程序交给别人之后,在运行过程中,可能会出现被别人改动后下载,导致设备停机、撞机等情况,最后将责任归咎于源程序作者。

针对这种情况,小李今天给大家分享一个小程序,简单几步即可判断出你的PLC程序是否被别人修改过,并记录下修改时间作为证据。  

01 使用的硬件与软件

硬件:西门子 S7-1500   CPU-1515

软件:博图TIA Portal

02  编写PLC程序,调用读取校验和功能块

2.1 先在程序里面建立一个DB块,作为证据存储点

如图所示:先编辑DB块变量的内容。 

图片

注意:这里建立的变量一定要设置为保持性变量,否则CPU断电或者Done机的时候,证据就丢失了哦! 

2.2 调用功能块,编辑抓捕证据的小程序

如图所示,调用GetChecksum指令,指令位于“选项—扩展指令——诊断”文件夹里面。 

图片

2.3编辑功能块 

图片

指令块每个管脚的说明如下

图片

2.4 判断程序校验和改变,当程序有改变并下载的时候,记录下下载时间 

图片

当前读取的校验和与上一周期保存的校验和比较,当校验和发生改变时,纪录校验和改变时的时间,这个时间是程序改变后下载的生效时间,这个时间我们可以发送到HMI或者其他人机软件上面,显示出程序改变下载时间。 

2.5  记录上一周期的校验和

将本周期计算的校验和变量MOVE给上周期校验和的变量,用于下一次继续监视。 

图片

2.6 保存错误代码(非必须)

指令执行过程中有时候会发生错误,当错误输出管脚为1的时候,我们可以把错误代码抓取出来分析分析。

图片

03 检查程序是否正常

程序编辑完成之后,将程序下载到CPU,对比离线的校验和及在线读取的校验和,检查程序是否正确下载,适当改变一下程序,再次下载,验证一下程序是否有效。 

图片

图片

此小程序仅检查标准程序的修改;可以将GetChecksum指令 Scope管脚修改为 2,只检查安全程序的修改;可以将GetChecksum指令 Scope管脚修改为 3,只检查文本列表的修改。 

编辑完成这个小程序之后,你就可以记录到别人修改或下载你的源程序的证据,保护你的权益。

图片

2023年7月

Tags: