前两张图为程序,第三张为发出的串口数据
我希望发出的数据中间依次是1 2 3 4 ;5,6,7,8....连续的四个值
但是现在发出来的是1 2 3 08,;5 6 7 0C....
想问问是哪里不对呢
问题补充:
。。帖子好像有点多 找不到是哪个诶 大佬方便的话留个链接可以吗
然后我这个数据不是接收方接收到的数据
是我发出去的,直接连串口软件看的
发出去的没有起始停止位也会丢失吗
图片说明:
最佳答案
你的通讯参数编写的不完整,定义通讯参数内容有各种方式,但你没有定义任意的一种,而仅仅定义了modbus通讯及9600pbs、无校验。
你编辑一个起始符、结束符什么都可以,丢失通讯数据与没有完整编写通讯程序有关。
论坛上我有你类似的程序例子,你可以找找参考一下。
补充问题回复:
发送数据也需要标记,不然怎么知道是数据的开始还是结束?如果仅仅发送了一次数据呢?
链接:
在200smart版区,标题【说说西门子200smart modbus自由口通讯的那些事】是连载方式的。
提问者对于答案的评价:
感谢两位大佬的回答 但是好像并不是因为这个原因,现在问题已经解决了,是因为数据更新太快,这轮还没发完下一轮的数据已经刷新了,所以错了最后一位
第一个回答:.就我的理解,发送数据要区分是在要发给接收端的时候接收端的区分,但是我现在没有接收端,仅仅拉了串口
第二个回答:我是按modbus rtu格式写的发送区,因为之前的通讯是用的rtu,避免下位机要更改程序,所以我保留原格式(其实也相当于第一个大佬所说的起始结束字符了吧,变化的数据只有中间8个字节)
最后谢谢大佬给的学习链接,我看完了发送部分,学到了很多,过段时间看接收,接着把剩下的几个帖子看完~
最佳答案作者回复:
如果是这样,那你试试提高一些通讯频率,以免丢失数据,当然通讯距离与频率是有关系的,频率高通讯距离就近。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc367777.html