恭喜,你发布的帖子
发布于 2017-09-07 09:59:39
23楼
不少人纠结SMB2只有一个,所以认为两个端口会相互干涉。
串口通讯叫做异步串行通讯。异步者,就是通讯行为存在随机性。一个口连续收发一帧信息时,占用时间可以在几ms至数百ms,另一个口怎么办?没有人会设计这么弱爆的产品。
玩过单片机的,比如51,串口收和发的寄器都叫SBUF,实际物理上有两个寄存器,读SBUF时,访问的是接收SBUF,写入SBUF时,是访问发送SBUF。
200的SMB2也是同样的原理。当你在端口1的中断里读写SMB2,物理上访问的是端口1的寄存器;当在端口2的中断里读写SMB2时,物理上对应的是端口2的寄存器。
SMB2不适合在主程序里读写。若要问为什么,请自行研究。
话说,现在的modbus库,根本就没使用SMB2.用的是RCV和XMT。
当然,库程序也会存在BUG,说两个端口会相互干扰,你要有充分的理由说明你的程序没问题,来证明库程序有BUG。
请填写推广理由:
分享
只看
楼主