楼主最近还看过
奥,忘了!再次请教芳侠:
200与台达变频器通讯,我当时试过奇校验、偶校验都不行。最后采用无校验立马通讯上了。不知道怎么回事。这个问题记得当时也发帖了,但是一直没有解决。给我留下的阴影就是但凡遇到通讯首先考虑无校验试。所以有了6楼的提示。
不知道芳侠对此有何看法?
说实话,做这个程序的时侯也是我对200开始学习的起步阶段。做完那个项目觉得对200有了一个大概的认识,可惜此后却与200绝缘了。有三年没有摸过200了,怪想念那时那刻的时光。
那是一个机器的控制系统,200+变频器+文本。有PID调节,模拟量采集,MODBUS通讯,用224XP编程,差一点容量不够,上手就得到了锻炼,确实机会不易啊!唯一遗憾就是那段时间可能太闷头工作了,落了一个“颈椎病”,现在老是头晕。
通讯初期的失败只要不是程序错误,都有返回码的。可以根据返回码尝试等待,等变频器准备完成。延时的做法相当于:我是主,你是副。你一定要准备好了等我来。这对人来说显然是不太礼貌了。做主的应该先到,迎接来宾。来宾没到,打个电话问一下。重复发起通讯请求。200有完善的MODBUS库应该好搞。延时是可以解决很多通讯上不同步的问题。但是这是个消极的做法,只会延长通讯周期。
假如,你现在只需要写速度给定。这样你可以尽管写就是了(最好想从机不需要应答)。但是写的频率太高了。从机没来得及应答又收到新信息了,就会双方都出错。这个时候你插入一个20毫秒的延时。事情是解决了。但是,其实从机只需要9毫秒就应答完成了。这样你的通讯就白白浪费了11毫秒的时间。
做法应该是判断从机的应答,然后就可以立即发送了。时间省很多。