自由口通信中数据位与数据停止位如何理解?

在自由口通信设置中,数据位7位 这可以在SM30中设置,可是有的仪表要求数据位要求7位,可是仪表还要求停止位为2位,这在自由口设置中如何设置?

 另外:停止位在自由口通信中起到什么作用?

问题补充:
自由口通信看过S7 200手册,也做过几个简单的例子,可是还是不太明白这个停止位是起什么作用?
 停止位为1位,是1Bit还是1Byte?
 停止位的设置在自由口通信中编程中,为什么没体现?
 假如我的数据格式包为:
 * AA 00 CA 00 B8 !
 这也看不到停止位在哪里起作用啊?

最佳答案

S7 200自由口通信是基于RS485电气规范的,在串行通信的学习过程中,有许多人都容易误会的一个概念就是字节和数据包的概念,初学者容易将他们画上等号;
 字节:字节是在串行设备中定义的一个数据格式,1个字节为8位,可以表示在设备中的ASC字符或者特殊字符
 串行数据包:就是串行设备之间通信所定义的一个数据格式包,它是基于设置的串行数据参数,如波特率,数据位,校验位,停止位,支持串行通信的设备首先根据波特率来计算每个位的传输时间,根据这个时间来读取每个位的0或者1

 举个简单的例子:
 如果定义传输一个字符A,ASC码为 0100 0001

 你在SM30中定义通信设置:波特率9.6BPS,数据位8位 偶校验,1停止位

 在程序中你将字符A赋值给自己定义的串行通信区,并且调用xmt发送

 LD SM0.1
 MOVB 16#49,SMB30
 MOVB 1,VB100
 MOVB 16#41,VB101 
 LD I0.1
 EU
 XMT VB100,0

 也就是说在程序中你只要将A赋值就OK,剩下的工作就是串口根据你的串行设置来打包一个串行通信数据包,如下:

 串行通信数据包格式:
 8数据位   1校验位   1停止位
 0100 0001   0                 1     

 这是发送方根据串行通信设置将字符A打包成的数据包

 上述回答希望能帮到你

提问者对于答案的评价:
谢谢,调试成功一半,仪表接受指令成功,就是返回数据不对,还要继续调试。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc347427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:21
下一篇 2021年7月4日 下午11:21

相关推荐

发表回复

登录后才能评论