junmadianzi 发表于 2009-6-7 15:47:31

AVR 做MODBUS ASCII SLAVE 遇到问题

近段时间,再做关于通讯的试验,想用USART0实现MODBUS ASCII SLAVE,还在初级阶段,程序在接收完成后,如LRC校验通过,则将原信息中的LRC校验码改为0x46,0x46,并将整条信息发送出来,执行结果有些怪异,图中红色圈中部分把原信息返回了
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_451680.JPG
串口调试工具结果 (原文件名:串口.JPG)

junmadianzi 发表于 2009-6-7 16:00:15

出现这种情况是随机的,约有5%的可能性,高手帮忙分析下

sipueay 发表于 2009-6-7 20:01:39

两者波特率不一致

youpeng 发表于 2009-6-7 20:46:06

楼主用的哪的代码?是板上的吗。估计是代码有点问题

junmadianzi 发表于 2009-6-8 18:08:48

今天忙了点,这个问题表面上已经解决了,先前我在刚接收完成就禁止接收,允许发送了,后来改为在分析完接收内容并确定了发送内容才允许发送并送第一个BYTE,这样发送5000条未发现错误。但是,我觉得先前的程序并不存在问题

junmadianzi 发表于 2009-6-9 08:38:52

还有,我也实现市面上的一款PLC的编程口协议,元件范围比原PLC小些.昨晚刚准备实现01命令,发现各类软元件地址是分散的,各类软元件的地址都要进行范围判断,if/else语句用了有7重,看了其他网友的成功例子,程序量都比较短小,我的方向有问题吗?

helloshi 发表于 2009-6-9 09:11:59

觉得还是在需要发送前允许发送比较好

caojingeyou 发表于 2011-11-3 19:29:22

回复【4楼】junmadianzi
-----------------------------------------------------------------------
我就是数据准备好才发送的,用modbus tester 就会有误码,而timeout== 4000ms 才没有误码,我奇诡的是为什么timeout 会导致误码,到底modbus tester 是怎么判断的。

fish198868 发表于 2013-3-13 15:30:27

表示看不太懂呀!!
页: [1]
查看完整版本: AVR 做MODBUS ASCII SLAVE 遇到问题