[N32L43X评测] 6.USART实现ModbusRTU从站
[复制链接]
MODBUS协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络、总线可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为MODBUS Master,从设备方使用的协议称为MODBUS Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。MODBUS通讯物理接口可以选用串口(包括RS232、RS485和RS422),也可以选择以太网口
通信遵循以下的过程:
主设备向从设备发送请求
从设备分析并处理主设备的请求,然后向主设备发送结果
如果出现任何差错,从设备将返回一个异常功能码
MODBUS的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单播;从站响应指令,并按要求应答,或者报告异常。当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯
MODBUS有三种通信方式:
以太网:对应的通信模式是MODBUS TCP/IP
异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等):对应的通信模式是MODBUS RTU或MODBUS ASCII
高速令牌传递网络:对应的通信模式是MODBUS PLUS
MODBUS协议的报文(或帧)的基本格式是:表头 + 功能码 + 数据区 + 校验码
功能码和数据区在不同类型的网络都是固定不变的,表头和校验码则因网络底层的实现方式不同而有所区别。表头包含了从站的地址,功能码告诉从站要执行何种功能,数据区是具体的信息
对于不同类型的网络,MODBUS的协议层实现是一样的,区别在于下层的实现方式,常见的有TCP/IP和串行通讯两种
MODBUS TCP基于以太网和TCP/IP协议,MODBUS RTU和MODBUS ASCII则是使用异步串行传输(通常是RS-232/422/485)
在工业控制领域,工业仪表间的通信比较常用的是基于MODBUS RTU的485口通信,MODBUS RTU协议需要用时间间隔来判断一帧报文的开始和结束,协议规定的时间为3.5个字符周期,就是说一帧报文开始前,必须有大于3.5个字符周期的空闲时间,一帧报文结束后,也必须要有3.5个字符周期的空闲时间;同时一帧报文中,字符间空闲时间大于1.5字符周期
针对3.5个字符周期,其实是一个具体时间,但是这个时间跟波特率相关。在串口通信中,1个字符包括1位起始位、8位数据位(一般情况)、1位校验位(或者没有)、1位停止位(一般情况下),因此1个字符包括11个位,那么3.5个字符就是38.5个位,波特率表示的含义是每秒传输的二进制位的个位,在波特率为9600的情况下,3.5个字符周期=1000ms/9600bit*38.5bit=4.0104167ms
MODBUS RTU详解可参考:
MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b3.pdf
(1.67 MB, 下载次数: 0)
|