用S7200自由口modbusRtu通讯,s7200PLC主站、智能模块从站。
modbusRtu协议数据格式 1位起始位+8位数据位+1位校验位(如无奇偶校验该位位停止位)+1位停止位,即11位格式。西门子200PLC数据格式为 1位起始位+8位数据位+1位校验位或无+1位停止位。
如果s7200采用无奇偶校验,那么到底是11位还是10位格式。数据格式不一样,对通讯是否有影响。
请大家帮我解答一下,谢谢。
问题补充:
LaoHuai - 助理工程师 第8级:你好!
请教一下s7200字符数据格式的问题。因为Modbus Rtu标准协议中当采用无校验方式时,其字符格式中的校验位自动变为停止位。即“1位起始位+8位数据位+1位奇偶校验位+1位停止位”变化为“1位起始位+8位数据位+1位停止位+1位停止位”。我不清楚s7200中的字符数据格式是否也有这种转换。那么当s7200采用无校验时,其数据格式是“1位起始位+8位数据位+1位停止位+1位停止位”还是“1位起始位+8位数据位+1位停止位”?
那么当s7200采用无校验时,如果其字符格式为:“1位起始位+8位数据位+1位停止位”是否意味着下面的内容。
1.当S7200 PLC做主站使用自由口Modbus Rtu标准协议通讯时,如果采用11位数据格式,那么必须要求第三方设备改变为只有1位的数据格式么?
2.当如果S7200 PLC做从站时,那不是就没有办法与有两位停止位的标准Modbus Rtu标准协议通讯?
3.主从双方都同时使用奇校验或者偶校验方式,使得数据位都成为11位?
请答复一下,谢谢。
最佳答案
关于字符中断的例子已经发给你了。
1 通讯双方的字符格式必须一致!相同的起始位,相同的数据位,相同的停止位,这是必须的。
2 200PLC通讯字符的停止位是1位的,这是硬件决定的,没法改变
但是在论坛里,他们好像讨论过怎么和2位停止位的设备通讯的问题,你可以找找。
3 在通信开始之前,收发双方要把所采用的信息格式和数据传输速率作统一的规定。通信时,发送方把要发送的代码数据拼装成以起始位开始,停止为结束,代码数据的低位在前,高位在后的串行字符信息格式进行发送。在每个串行字符之间允许有不定长的空闲位,一直到要发送的代码数据结束。
起始位为“0”,作为联络信号,通知接受方开始接受数据,停止位“1”和空闲位“1”告诉接受方一个串行字符传送完毕。通信开始后,接受方不断的检测传输线,查看是否有起始位的到来。当收到一系列的“1”(空闲位或停止位)之后,检测到一个“0”时,说明起始位开始,开始接受所规定的数据位和奇偶校验位及停止位。经过校验处理后,把接受到的代码数据位部分拼装成一个代码数据。一个串行字符接受完成后,接受方又继续检测传输线,监视“0”的到来和开始接受下一个串行字符。
异步串行通信是按字符传输的,发送方每发送一个字符,就用起始位通知对方,以此来重新核对收发双方的同步。
4 在用异步通信方式进行通信时,发送端需要用时钟来决定每一位对应的时间长度,接受端需要用一个时钟来测定每一位的时间长度,前一个时钟叫发送时钟,后一个叫接受时钟,这两个时钟的频率可以是位传输率的16倍,32倍,64倍。,这个倍数称为波特率因子,而位传输率称为波特率。波特率的定义为每秒传送二进制数码的位数。单位为bps,即位/秒。波特率越高,数据传输越快,但和字符的实际传输速率不同。字符的传输速率是指每秒所传输的字符桢的桢数,和字符桢格式有关。如波特率为1200bps的通信系统,若字符桢为11位(起始位1,数据位8,奇偶校验1,停止1),则字符的实际传输速率为1200/11=109.09桢/秒。每位的传输时间定义为波特率的倒数,如波特率为9600bps的通信系统,每位的传输时间为1/9600=0.104ms。
5 若波特率因子为16,当通信时,接受端在检测到电平由高到底变化以后,便开始记数(记数时钟为接受时钟),当记到第8个时钟以后,就对输入信号进行采样,如仍为低电平,则确认为起始信号,而不是干扰信号。此后每16个时钟脉冲对输入进行一次采样,直到各个信息位和停止位输入以后。
提问者对于答案的评价:
看来还要补一下计算机硬件基础。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc353723.html