发布于 2013-09-16 10:32:16
3楼
不知道你的通信口参数设定是什么,不过大概知道问题所在。
如果是9600,8,N,1,那么数据帧的时间大概如下(每传输1个字节大概1ms):
请求帧: 4字符帧间隔+地址+功能吗+数据地址+数据长度+校验码,最少就得12ms;
响应帧: 通讯响应时间+4字符帧间隔+地址+功能吗+字节字数+52个字节数据+校验码,最少也得10ms+61ms;
那么PC最少得间隔10+61+12=83ms发送一次才能完成一次通讯过程。。。。
而你现在竟然要PLC每50ms就响应一次通讯,这明显的违反了通讯协议了,你让人家怎么给你数据?
给你个建议,PC上发送请求的时间必须大于一次通讯时间(这里必须大于160ms而且在响应接收完成后),而PLC采集时间就得看你的工艺要求做衡量了,跟上位机通讯影响不大。
写通讯程序议前,真心建议耐心的去学习通讯协议先。如果协议都不清楚,还从何谈写通讯程序?