谈谈我的思路,我用的是自由协议,485模块挂十几个变频器,还有其它仪表,要求和你的差不多,读取运行参数,控制设备启停设置运行频率。我把所有的查询指令做一个“循环”:即:
1#站发送第一个读取指令,然后等待变频器回答,收到回答后发送下一个指令,然后等待回答。每个指令发送完均启动定时器,设定时间没有收到回答判定通讯超时,交故障处理函数。依次类推,1#发完发2#,一直把所有变频器均查询一遍返回第一台开始下一个循环。如果,需要起停某台变频器,或者设定参数,则在设定命令下达时,中断当前查询进程,组帧数据后交发送数据区,下一次发送脉冲到来时立马发送。
这样满足了不间断指令的要求(查询),也满足少量指令(设定频率起停设备等)的要求。
所有循环均用标志位或状态字自己控制,不用plc循环指令。(当初开始时用的是plc的循环指令,发现对于通讯plc循环指令并不好用)
波特率尽量设高。
从系统运行来看,还是很好的,挂了十几个变频器,拿着对讲机,变频器上数据变了上位机上也立马变。其中有部分变频器是pid调节,液位,能稳定跟随。
不好意思,献丑了,抛砖引玉,希望高手能指点指点,改进改进。
先道声谢谢。