Modbus调试,我快疯了,兄弟们帮我看看是怎么回事吧
用串口调试助手发送数据:
14 03 00 02 00 03 CE A6
程序收到数据是正确的
程序回应数据:
14 03 06 00 56 78 9A 6B 91
示波器观察到的波形:
10 00101000 10 11000000 10 01100000 10 00000000 10 01101010 10 10001110 10 01011001 。。。。。。
单片机串口寄存器设置是8位数据位 1个停止位 无校验位
串口调试助手发送波特率19200
设置为8位数据位 1个停止位 无校验位的时候
接收到:94 80 10 C8 05 C2 01 DA ED
设置为7位数据位 1个停止位 无校验位的时候
接收到:14 03 06 00 16 00 38 00 5A 2B 7F
我都郁闷了哪位兄弟帮我分析一下啊 示波器看到的波形和程序发送的数据是对应的
但是串口调试助手收到的数据,就有问题了 日了 不太可能 是不是 那里设置错了 或是 没有有效供地。 以前出现串口线 地线不通 也会出现这种数据乱的情况 那我得回去检查一下,应该不会吧 我是通过一个RS232-RS485转换器接的接了A、B、GND、5V
而且这个电路,在别人的产品上我也见过一模一样的啊 地线没有问题。。
快崩溃了 换一个别的牌子的转换器试试,最好是有源的,工业级的
个人感觉是转换器的收发转换有延时造成的,或者软件上人为的延时3~5ms后再发送数据试试 回复【6楼】zhao_pc0305
-----------------------------------------------------------------------
好的 我这就试
转换器我有两个 是同一个牌子的 先加一个延时试试吧 我做modbus时,波特率是9600的,见过很多modbus通信都是9600的。
另外,modbus就是一串口通信,没难度啊。重要是数据 帧与帧之间的时间T控制:1.5char<T<3.5char 停止位2位试试 回复【8楼】cool33777612
-----------------------------------------------------------------------
我也觉得没难度啊
SPI、USART我都用过,都好用的
就是和电脑通讯这块 就是弄不好了日了 回复【9楼】sunke9小可歌
-----------------------------------------------------------------------
依然不好用
我现在只用单片机给电脑发送数据,不接受数据 还他娘的不好用 郁闷了 本来以为可能是485接口转换器的原因
换了一个别的牌子的还是不好用
现在只能怀疑波特率偏差了
电脑端的估计问题不大,我单片机用的是内部RC震荡,8M
不知道是不是这个震荡不准导致的
郁闷了 用内部RC震荡,8M ,必须注意:
确保得到的波特率的误差不要超过3%,否则通讯可能有问题。
实验时,最好还是使用11.0592MHZ的外部晶体振荡器吧! 内振不可靠,还是外振吧 首先排除串口调试助手的设置问题,比如发送接收设置的不匹配;再就考虑换个串口通讯软件试试,我碰到过同一个终端,不同软件接收数据不同的现象;最后再考虑硬件问题 用逻辑分析仪看看波形吧,232,485都可以解码看到字节内容,这样好查一些。
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_598564GRKLBJ.jpg
(原文件名:adpter22.jpg) 用11。0592的外振没有出现数据出错的现象。 恩谢谢这几位兄弟
我手头只有3.6864M的晶振
换上去了
立竿见影啊,,
眼泪哗哗的 终于好使了~~~~~~~~~~~ 其实开始的时候也怀疑过晶振的问题
后来就问了下单位一个比较老的工程师
他言之凿凿的说没问题,所以我也就没换晶振
看来老工程师也有失误的时候啊
这个经验这辈子都忘不了啊 mark 串口晶振,逻辑分析仪,MODBUS 学习一下 学习了!!!先mark mark一下。。。经验贴!
页:
[1]