Mbus从站使用TSS721芯片搭建,原理图(百度的后附链接)大概如下:
原图链接:http://bbs.elecfans.com/jishu_910531_1_1.html
在调试过程中遇到问题如下
- 上位机通过Mbus主站给从站发送信息,从站可以正常接收。从站向主站发送反馈数据时,无论如何主站都无法收到信息。
- 正常通讯后只能收到16个字节,并且波特率只最高4800。9600时会出现读写错误。
第一个问题是因为对串口通讯的基础不够了解。从该文章了解到
PC 机的RS-232 口为9 芯针插座。一些设备与PC 机连接的RS-232 接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据TXD”、“接收数据RXD”和“信号地GND”。双向接口能够只需要3根线制作是因为RS-232的所有信号都共享一个公共接地。非平衡电路使得RS-232非常的容易受两设备间基点电压偏移的影响。
对于信号的上升期和下降期,RS-232也只有相对较差的控制能力,很容易发生串话的问题。RS-232被推荐在短距离(15m以内)间通信。由于非对称电路的关系,RS-232接口电缆通常不是由双绞线制作的。
————————————————
版权声明:本文为CSDN博主「不脱发的程序猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_38106923/article/details/98615747
也就是说我的串口与从机模块只连接了TX、RX,没有连接公共地。导致主站给从站发送的数据,从站转为TTl信号可以被串口RX收到。而串口TX输出的数据则无法通过从站发给主站。连接公共地后可以正常收发。
第二个问题初步怀疑为隔离光耦使用的不是高速光耦导致波特率局限在4800。可以尝试使用上边百度的原理图中光耦。待后续研究再做补充。
水平有限,仅做为个人记录。
串口外接的时候一定要接TX、RX、公共地。单工通讯可以不接TX/RX,但一定要接公共地、公共地、公共地。