自由口需要讲的内容已经给大家全部讲完了,RS485通讯中的基础知识也全部给大家梳理了一遍,那么从本篇文章开始我就具体和大家把RS485通讯中的modbus RTU协议和大家具体讲解一下, 首先大家要明确一点,目前为止modbus RTU协议是在工业控制中RS485硬件层面最常用的协议之一,我这里的目标主要有两点,第一帮助大家掌握S7-200modbus库的使用,第二帮助大家搞清楚modbus RTU协议的报文格式。 我们首先熟悉一下modbusRTU 协议的特点。 1) modbus RTU是一种主从、半双工通讯方式协议,整个网络中只能有一个主站存在,主站在modbusRTU网络中没有地址,从站的实际地址范围是1~247 2) modbus RTU协议的报文长度是不固定的,报文与报文之间最小间隔是3.5个字符传输时间长度。 3) modbus RTU协议的校验方式是crc校验。 3 modbus库介绍3.1 主站指令 图3-1 MBUS_CTRL指令: EN:使能,要保证每一周期都使能(sm0.0)。 Mode:模式选择,1 = modbus协议,0 = PPI协议 Baud:波特率设定。 Parity:字符校验,0 = 无校验;1 = 奇校验;2 = 偶校验 Timeout:超时。主站等待从站响应的时间,以毫秒为单位,允许设置范围为1~32767. Done:初始化完成标志位,初始化完成此位自动置1。 Error:如果初始化错误,存放错误代码。 图3-2 MBUS_MSG指令: EN:使能,同一时刻只能有一个读写功能。 First:读写请求,要使用沿触发。 Slave:从站地址,范围1 ~247 RW:读写操作,0 = 读,1 = 写。 Addr:读写从站的数据地址。 Count:数据个数(位或者字的个数)。注意最大数据量为120个字。 DataPtr:数据缓冲区首地址(指针类型)。如果是读指令,读回的数据放到这个数据区中;如果是写指令,要写出的数据放到这个数据区中。 Done:读写功能完成位。功能完成此为置1。 Error:读写功能错误代码。Done位为1时有效。 图3-3 MBUS_INIT指令: EN:初始化,首次扫描执行一次(SM0.1) Mode:模式,0 = PPI,1 = Modbus Addr:从站地址,取值1 ~247。 Baud:波特率。 Parity:奇偶校验。 Delay:附加字符间延时。 MaxAIQ:参与通信的最大I/O点数,S7-200的I/O映像区为128/128缺省值为128。 MaxAI:参与通信的最大AI通道数。 MaxHold:参与通信的V存储区字节(VW)。 HoldStart:保持寄存器区起始地址(指针形式)。 Done:初始化完成标志位。 Error:如果初始化错误存放错误代码。 图3-4 MBUS_SLAVE指令: EN:使能。每次扫描执行(sm0.0) Done:通讯中时置1,不处于通讯过程中时为0。 Error:存放错误代码, 0 = 无错误。 本帖隐藏的内容 |
|