大家知道,西门子S7-1200、S7-1500的数据块结构优先推荐“优化的块访问”,自然有它的道理。但是像PLC-Recorder这样的很多国产软件暂时无法对这样的数据块进行访问,也就是说,无法直接读取其中的数据。那么,怎么解决这个问题呢?如果允许修改程序,则可以分两种情况来解决。如果不允许修改程序,则暂时没有方案。
1、允许修改程序、允许停机的情况
这种情况下,只需要将需要访问的数据块的属性修改成非优化的块访问,然后在安全的情况下进行程序编译,下载(会重新初始化数据块),即可解决这个问题(从波形曲线和变量树上可以看出,PLC-Recorder可以访问到DB1里的数据):
改动前的块属性
改动后的块属性
改动后的程序
2、允许修改程序,不允许停机
这种情况下,需要找到一种安全的简单方案(注意下载的顺序,且要注意PLC有足够的内存):
1)在编程软件里复制一下需要访问的数据块;
2)将复制获得的数据块修改名称(这里改成DBNormal)和编号(DB2),取消优化访问的选项;
3)添加一个FC1程序(我们命名为Transfer),里面传送那些需要采集的数据到DB2:
4)下载FC1和DB2(不需要停机);
5)打开OB1,在里面调用FC1:
6)下载OB1,可以看到DB2里的数据开始同步更新:
7)PLC-Recorder可以通过访问DB2 来间接访问DB1里的数据了(注意左侧变量的地址已经是DB2了):
3、小结
以上两种方法是工控领域常用的方案,能解决大部分的问题,大家不妨试试。
另外,以上提到的PLC-Recorder是一款优秀的国产PLC数据采集和录波软件,下载地址。本文是利用Nettoplcsim软件实现对于PLCSim进行数据采集的,操作方法见文章链接。
2022年3月1日