【工控技术】为什么在 S7-1500 中 HMI 系统或 web server 的数据有时会覆盖?
在实际使用时,PLC及HMI系统是互相平行完全独立运行的两个进程。当两个系统同时尝试向同一个变量进行写入操作时,该数据可能在系统侧被覆盖掉。
描述
S7-1500与S7-300不同,数据通讯不是根据操作系统进行循环处理,而是在程序周期中固定的时间间隔中进行。
具体请参考下例中的描述:
-
在S7-1500中,其他进程(Web服务器、HMI通讯或技术功能)到PLC间的访问都是同时进行的,且访问相同变量地址。
例如
DB变量在功能块中作为输出参数。则HMI系统在FC进程中,无法向该DB块写入数据。写入的数据会丢失。
图. 1
-
当优化数据与非优化数据进行交换时,使用输入输出参数会出现如下问题。
例如
当数据块在优化访问模式时,DB变量作为输入输出参数,对其进行访问。
在此情况下,数据是用复制模式传送的。运算数据复制后,即使数据未改变,也会在数据块结尾处再次写入回该数据。因此,在数据块过程中HMI系统写入的数据会丢失。注意
根据传送区域和参数数据类型的不同,STEP 7(TIA Portal)传送数据同时支持支持指针模式和复制模式。
解决方法
根据系统特性的描述,推荐使用以下解决方法:
-
在平行进程中需要避免同时向同一变量写入数据。
1、创建一个全局数据块包括两个完全独立的数据结构(使用PLC数据类型),分别用于HMI和PLC访问。
-
2、其中一个数据结构仅用于进程一的写入,如HMI。
-
3、另一个数据结构仅用于进程二的写入,如PLC。
-
4、用户可以同时使用两个进程向两个数据机构中读取数据。
-
5、这样可以避免平行进程中数据互相覆盖。
-
-
访问数据块时,要避免优化和非优化区域的交换。S7-1200/S7-1500中有“优化块访问”的设置,但S7-300/S7-400中不支持。当使用S7-1500时,推荐将块访问设置为“优化”模式。用户可以在“属性”选项卡中修改块访问模式。
图. 2