电 话:0755-27863286
传 真:0755-27889375
地 址:深圳市宝安49区海汇路华创达
文化科技产业园D306 ,B502
Modbus 是什么?
Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
Modbus具有以下几个特点:
(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。
(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。
(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。
Modbus协议分ASCII,RTU和TCP三种类型。
Modbus-ASCII使用的是ASCII码作为通信数据,一般是用于RS-232、RS-485进行传输;
Modbus-RTU使用的是十六进制作为通信数据,一般是用于RS-232、RS-485进行传输;
Modbus-TCP是基于以太网TCP/IP的TCP传输,分为服务端和客户端;
在网络中,每一个从机分配一个唯一的设备地址,从1到247.当主机请求数据时,发送的信息的第一个字节就是从机地址,这样,从机接收到第一个字节后就知道是否忽略信息。
主机发送的第二个字节就是功能码。这个功能码告诉从机需要访问哪个表,是向这个表中写数据还是读数据。
Fun CodeActionTable Name
01(01 hex)ReadDiscrete Output Coils
05(05 hex)Write singleDiscrete Output Coil
15(0F hex)Write multipleDiscrete Output Coils
02(02 hex)ReadDiscrete Input Contacts
04(04 hex)ReadAnalog Input Registers
03(03 hex)ReadAnalog Output Holding Registers
06(06 hex)Write singleAnalog Output Holding Register
16(10 hex)Write multipleAnalog Output Holding Registers
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。
查询回应周期
(1)查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
(2)回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:像寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。
CRC即循环冗余校验码(Cyclic Redundancy check),是在每一个发送的信息后面加上的两字节,用于检验发送和接受是否出错。信息中的每一个字节都用于计算CRC。接受设备同时计算CRC,然后与发送方计算的CRC进行比较,如果两者不同,则产生错误。