问:我们使用的施耐德NOE总是无原无故出现通讯异常现象,但出现故障时NOE的工作信号正常,重新热插拔一下NOE模块后,通讯恢复正常。其间我们更换过CPU、NOE、交换机、网络等与数据处理有关的所有设备,现象未得到解决
答:可能与PLC编写的通讯程序有关,一般编写的通讯程序受PLC系统调用,不可控,尤其是以太网,通讯流量大,很容易引起网络风暴。所以在编程时合理调用通讯程序,这样就可以避免上述情况了。
问:你说的有道理,对于"合理调用通讯程序",你能否具体说明一下,因为我在编程时,未考虑专用的通讯程序,控制站与控制站之间的通讯,我是使用专用的功能块TCP_IP进行数据通讯,而且数据量相当少,下位机与上位机之间存在大量数据的交换,我所使用下位机软件是INTOUCH,但都只是对应点的数据交换,也没有专用的通讯程序.
答:PLC与PLC之间通过NOE交换数据,可以编程实现合理调用,具体是在PLC程序中,某个通讯功能块执行完成后,再执行下一个,如果在设定的时间内该通讯块没有成功完成,就必须断开该功能块,将资源释放,供下一个通讯块使用。通讯程序就这样实现循环调用。
问:我将根据你的提示编辑测试程序进行检测,然后再进行分析。不过我有点不解,我这里经常出故障的控制站与其它PLC之间的交换数据只有大约15个(与其它两个PLC之间的数据交换),是通过两个通讯功能块实现的,这样的调用不应该造成通讯阻塞。是否存在交换机数据流通量过大引起NOE数据不畅通现象?我也不能确定,因为它所连接的交换机连接了一个NOE、三台上位机、一台专家系统通讯机。
五个NOE、四台上位机,交换机组成星型网络。Concept2.5编程、IFix3.0组太。我也认为是通讯程序编制不合理,请问测试程序如何编?另外是不是我的上位Ifix配置、软件编制有问题??它读取五个站较大数据量!
答:测试程序编写过程如下,通讯功能块执行成功后,就计一次数,可以统计在2分钟内,通讯功能块一共成功执行了多少次,那么就可以算出执行一次通讯功能块花了多少时间,留下一定的裕量。在编写PLC与PLC通讯程序的时候,在一个通讯功能块执行成功或在设定的时间内没有执行成功,都断开该功能块,释放资源,再调用下一个功能块,如此反复调用,网络通讯的情况应该会得到改善。以前遇到过这种情况,就是通过这种方法解决的。 如果PLC之间的通讯要求实时性不高,可以采用定时执行通讯功能块的方法,减少PLC之间通讯占用网络资源的比重,但是同样要采取在设定时间内通讯不成功就释放通讯功能块的方法。上位机与PLC之间的通讯数据量大,这样就有更多的网络资源供其使用,通讯出问题的概率就会降低了。