485通信问题-2
关于485通信的问题,我又来提问啦,先感谢21家和各路大神网友!{:tongue:}以下为目前的问题{:mad:}
目的:实现PLC(下位机)与LINUX设备(上位机)之间的通信,上位机发送查询命令给下位机,下位机收到命令后回复相对应的数据(很简单是不是{:smile:})。
接口:RS485;波特率:19200;
目前问题:上位机发送查询命令,下位机通信指示灯会闪烁,说明命令收到,但是上位机并未收到下位机的回复(略尴尬{:sad:})。
调试手段:1)PC端模拟上位机通过串口调试助手和485转换小板发送查询命令给下位机,下位机会回复正常数据;
2)PC端模拟下位机,当收到上位机发送的查询命令后,回复数据给上位机,上位机可正常显示回复的数据;
3)上位机和下位机通信线中间接入PC端监测数据,可监测到上位机发送的查询命令,但看不到下位机的回复。
请问还有啥办法检测问题的所在?
好好检查你上位机和下位机通信的那根线吧。。 长的帅怪我落 发表于 2017-4-7 15:27
好好检查你上位机和下位机通信的那根线吧。。
通信线检查过、更换过,在别的设备上也用过,可以排除 把地线连过去,可能是两个机器压差大了 ar_dong 发表于 2017-4-9 14:28
把地线连过去,可能是两个机器压差大了
做过共地测试,电平问题暂时也可以不做怀疑 检查:终端电阻是否接上、总线连接是否遵循首尾互联原则、不同节点间地电位是否相差过大等。通讯指示灯闪烁,未必说明通讯成功,具体需要看PLC的使用说明。另外用串口监视器时,注意使用16进制,特别注意上位机指令格式、数据/指令间隔时间等。通过比较有无响应的上位机指令,应该就可以弄清问题。这里,用存储示波器配合观察对分析问题更为有利。 chunyang 发表于 2017-4-10 12:04
检查:终端电阻是否接上、总线连接是否遵循首尾互联原则、不同节点间地电位是否相差过大等。通讯指示灯闪烁 ...
您提示的终端电阻、总线连接、电位差、16进制、指令格式、间隔时间等在周末时候均做过相应的检查和测试,仍然没有发现问题所在,下一步打算弄个示波器来检查下(暂时没有示波器,之前调I2C也是在无示波器状态下调试,略痛苦)。
另外需要说明下,测试过程中,将波特率从19200调到9600后,上位机、下位机通信正常了{:funk:},这就有迷糊了。 sunee 发表于 2017-4-10 13:44
您提示的终端电阻、总线连接、电位差、16进制、指令格式、间隔时间等在周末时候均做过相应的检查和测试, ...
那说明存在波形失真或波特率误差过大,有个示波器看看的话,立刻就能确定问题了。 chunyang 发表于 2017-4-10 16:13
那说明存在波形失真或波特率误差过大,有个示波器看看的话,立刻就能确定问题了。 ...
老板还是没有买示波器,不过问题缩小到一个串口扩展芯片上(GM8125),暂时把这个坑绕过,先用别的方法完成项目(交期限制),再回过头来排除问题,完善项目。{:dizzy:} 去年关于485通信的坑还没机会去填,现在又来一个,不知道啥时候才能有个结论{:sleepy:}{:sleepy:} sunee 发表于 2017-4-11 16:13
老板还是没有买示波器,不过问题缩小到一个串口扩展芯片上(GM8125),暂时把这个坑绕过,先用别的方法完 ...
如果是用了串口扩展芯片,那问题多半出在这,GM8125如果处于分频模式下,那波特率没法太高,分频后误差也会加大。 chunyang 发表于 2017-4-11 17:10
如果是用了串口扩展芯片,那问题多半出在这,GM8125如果处于分频模式下,那波特率没法太高,分频后误差也 ...
如果GM8125子串口波特率没法太高,可是PC、STM32开发板模拟PLC回复,上位机还是正常能够通信,难道说PC、STM32抗干扰能力强? sunee 发表于 2017-4-12 08:17
如果GM8125子串口波特率没法太高,可是PC、STM32开发板模拟PLC回复,上位机还是正常能够通信,难道说PC、 ...
不是抗干扰问题,而是波特率精度问题。所有串口设备的波特率都存在误差,如果恰好一个是正误差,一个是负误差,一旦过限,那就没**常通讯了。你可以试试稍调解一下接GM8125的原串口波特率,稍稍调一点,先往一个方向调,不行再向相反的方向调。不过这招可不适合批量产品,批量产品必须控制好离散性,所以选用精度高、稳定性好的晶体很重要。 chunyang 发表于 2017-4-12 11:53
不是抗干扰问题,而是波特率精度问题。所有串口设备的波特率都存在误差,如果恰好一个是正误差,一个是负 ...
明白了,非常感谢!项目完了再回过头来一下一下调,这次这问题不能轻易不管了,不然以后问题都堆起来就不好工作了。 sunee 发表于 2017-4-12 13:22
明白了,非常感谢!项目完了再回过头来一下一下调,这次这问题不能轻易不管了,不然以后问题都堆起来就不 ...
这个问题有解决吗?我给你的问题现象是一样的,我的波特率还是9600也是这样。 碰到过很多产品,晶振频偏过多,导致通信不上的问题,强制修改波特率到非整数,就搞定了,不同接收的容错率不同,一般电脑的容错率蛮高的,单片机不能识别,电脑串口可以识别 涨姿势
页:
[1]