菜鸟:
我的程序用PLC做主站,ModbusRTU协议与三个积算仪通讯,我用**个MSG的完成做下一个MSG的使能,轮询过程中发现其中一个MSG的DONE=0,程序不再执行此MSG模块后面的命令,而是重新从**个MSG命令开始执行,只是为什么?每个MSG完成的时间大概为多少?之前的程序发现每执行一次MSG的时间间隔大概为2-3s,是否有问题?
侠客:
认真检查DONE位,肯定用错乱了。
菜鸟:
认真检查了,没有用乱的DONE。程序里我用初始化命令的DONE的上升沿开启**个MSG,*后一个MSG的DONE置位**个MSG的使能,当程序运行到中间的一个MSG时,DONE位为1,这之后的MSG命令不被执行,却可以重新从**个MSG开始,不知道为什么。
会是因为我一共有9个MSG轮询,初始化命令的Timeout设置的是1000,所以超时了吗?
侠客:
DONE位地址有没有其他程序在赋值?触摸屏里有没有写相关地址?
菜鸟:
**个MSG的使能用初始化命令完成位置一,之后用作*后一个MSG的DONE,其余DONE没有被置位的程序,只是在初始化前被复位。我连接的是三个从站,一个积算仪,两个虚拟串口,有写地址。
侠客:
你把程序导出来,发上来看看。