人接触PLC不久,前段时间才刚学会用modbus协议与上位机通信,没几天又发现问题了。问题如下:
CPU224CN,做MODBUS从站,写了一个小小的闪烁动作程序。程序如图。STEP软件中把闪烁周期VW2与ON时间VW4设置好,v1.0打开,然后把PLC调成RUN状态,PLC可以正常工作,比如Q0.0亮3秒,黑3秒。然后用串口接上mudbus通信用的线,电脑用modscan32软件与PLC通信。通信正常,Modscan上未有任何异常。但是Q0.0输出灯就发现有异常。比如原来是亮3秒黑3秒,现在就亮一秒左右,黑5秒或者是亮5秒黑一下。VW2与VW4等参数都未有任何改动,Modscan上读出来的也是正常数据。
我就想问是不是Modbus通信协议上会占用或者干扰某些定时器或者刷新什么东西导致子程序受到干扰。依据我的观察,每次modscan32发出信号至PLC,PLC里子程序的自保电路就会断开。是不是MBUS_SLAVE在调用的时候其他子程序会被刷新么?
主程序
子程序
1、是不是Modbus通信协议上会占用或者干扰某些定时器或者刷新什么东西导致子程序受到干扰?
网上modscan32软件的版本有许多,这种类型的软件只不过是一款测试通讯软件,不能用来进行精密的控制。这种软件多用VC、VB等高等语言编制,由于电脑的操作系统运行环境及后台服务等各有所异,对于这种软件的运行不能要求其有实时性。
2、如果应用S7-200的MIRCOWIN的变量监视或从S7-200的输出模板输出点的指示灯状态观察,判断程序的运行结果正确,这样就可以了。
3、如有条件应用WINCC或其他正式厂家的组态软件进行监视。如果PLC运行正常,这些组态软件肯定就能够显示正常。
4. Modscan软件作为测试Modbus的通讯软件,只需设置相关的通讯参数,设置后按照间隔时间(缺省为1s)自动发出Modbus请求,并采用侦听方式接受从站的响应,与软件运行平台无任何关系,更不会在侦听方式对PLC的运行产生影响。同时,该软件自动发布到现在,已经经过了长期的考验,可靠性毋庸置疑。
5. Modscan软件本省很小,和组态软件相比,由于只处理一个从站的响应,实时性更高。而组态软件可能同时完成一个串口多个设备的轮询扫描外,还可以需要完成多个串口或多个通讯卡的扫描,同时要完成报警、趋势、对客户机的响应等多中实时处理。因此,如果在多任务处理等方面处理不好,实时性根本无法保证。因此,用Modscan测试正常,用组态软件不见得就能测试正常。
建议还是检查PLC程序吧,如果希望确认时否Modscan影响,很简单,断开连接,看Q0.0的输出是否正常,如果不正常,PLC程序问题;如果正常,就需要检查Modbus从站的中断程序问题。