我在PLC的V区设置了一块区域用于和上位机进行数据交换,我使用以太网S7通信,然而测试发现,这段数据 在上位机读取显示经常发生数据错乱,而使用自由口通信等其他方式则不存在该问题。我分析认为,可能是在PLC程序更新该段区域数据时,在中间被通信读取进程打断进行读取,导致数据完整性丢失。
我不知道有没有办法阻止该种情形的发生,我想到,如果在程序更新该段区域前先执行一个关中断操作DISI,更新完毕后再执行一个开中断ENI 操作,会不会能防止该种情况?我没有测试这种想法,因为第一,我想这可能行不通,因为关中断可能只是关闭中断事件表里的那些中断,对这个S7通信的读取不一定会有效果。第二,即使该操作可以用,对我而言也不可行,因为我还有其他的一些数据采样完全靠中断驱动,如果因为关中断导致那些采样被延后,可能就丢失了采集时机,得不到正确的结果。
所以我现在有些迷茫,想使用S7通信,但有无法避免这个问题。不知道这个问题还能不能解决。