在工业控制系统中,存在各种控制器终端,它们都有许多离散形式的输入输出量、开关状态量、线圈通断控制量,或者需要其他设备输入到内部寄存器的指令值、内部寄存器保存的中间控制量值、物理量值等。
Modbus是一个工业通信总线协议,在多个控制器中进行传输,消息内容是关于工业控制的指令和数据。Modbus是一种标准的通信协议,有规范的国标和世界标准,不同品牌的控制器可以组成Modbus网络,进行集中监控。
它属于一种互联通信网络,符合OSI模型并处于顶层——应用层,即只规定了消息(Message)的格式和各区域的功能、含义,而对于数据链路层、物理层没有规定。Modbus协议并不关心经过何种类型的网络线路进行通信,但通常用到的网络线路是串行网络(如RS-232\485)和TCP/IP。
Modbus协议的主要内容:
①主控制器如何请求访问其他从设备;
②从设备如何响应主设备的访问请求;
③怎样判断错误并记录。
1.标准ModBus传输
串行链路的RS-232是Modbus的标准电气接口。由串口规定连接口的针脚、电缆、信号位、传输波特率、奇偶校验;Modbus负责规定消息的格式、含义。
标准的Modbus采用主从通信技术:一主多从:主机就相当于客户机(client),从机相当于服务器(server)。主机发出查询访问请求,相应的从机进行回应(分无差错状态和异常状态);或者主机发出广播,从机不作回应。


Modbus协议规定了:
①主设备查询消息的格式:
设备(或广播)地址、功能码、要发送的数据、错误检测域。
②从设备回应消息的格式:
确认要行动的域、要返回的数据、错误检测域。
③在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立错误消息并作为回应发送给主机。
2.查询-回应周期
主设备发出查询消息,从设备接收查询并发出响应消息,主设备接收响应,由此完成一个通信周期。
①查询
查询消息中,功能码告诉地址对应的从设备执行何种功能;数据段包含从设备执行功能所需的附加信息,例如功能码03要求从设备读保持寄存器并返回其内容,数据段包含从哪个寄存器开始读、要读的寄存器数量;错误检测域为从设备提供了一种验证消息内容是否正确的方法。
②响应
若从设备产生正常的响应,响应消息中的功能码是对查询消息中的功能码的回应;数据段包含从设备读取的数据——寄存器值或状态。若有错误发生,功能码用于标明响应消息是错误的,数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。