我用S7-1200的Modbus TCP/IP协议做了几个小项目,第一个项目是Portal V11做的,运行几年很少出现通讯问题。这次用212-1BE40-0XB0的CPU(硬件版本V4.2),Portal V14(V14版本的MB_CLIENT块和以前的块有点不一样)。系统是利用S7-1200与施耐德PLC通讯读取设备运行状态,S7-300再与S7-1200通过S7通讯协议,从S7-1200中将设备运行状态读取出来再控制其它配套设备(S7-1200主要用作通讯中转,读取数据为8个word,另外也编了一点温度检测的程序,都很简单)。系统投运一个半月时,运行正常;上周就发现通讯中断了,检查发现S7-1200的CPU貌似死机了,工控机也连不上,完全访问不到,S7-300显示没有连上(通讯正在连接)。1200断电重启后,恢复正常。今天现场又反应出现同样的问题,CPU及模块看上去各指示灯正常,没有红灯报错,网口灯一黄一绿但是不闪,依然是断电重启后恢复正常。
该程序只与一个服务器通讯,因此我编程时将“MB_CLIENT”的请求信号(REQ)始终置为“TRUE”,通讯断开信号(DISCONNECT)始终置为“FALSE”,不知道是否和这个有关系,会不会因为始终通讯导致CPU死机?还是因为本身CPU模块质量的问题。