在自由口通信设置中,数据位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