什么是Modbus

什么是Modbus

1. Modbus如何工作

Modbus是通过设备之间的几根连线来传递数据,最简单的设置就是主站和从站之间用一跟串口线相连。数据通过一串0或者1来传递,也就是位。0为正电压,1为负电压。位数据传递速度非常快,常见的传输速度为9600波特(即9600bits/s).

DB9.gif

volts.gif

2. 标准Modbus怎么存储数据

信息存储在从站的四个不同的表中。两个表存储数字量,称为线圈;两个表存储模拟量,称为寄存器。线圈和寄存器分别有一个只读,另一个可读写。每个表可存储9999个值。线圈是一位的,地址从0000到270E;寄存器是一个字的(16位,2字节)地址也是从0000到270E.

Coil/Register NumbersData AddressesTypeTable Name
1-99990000 to 270ERead-WriteDiscrete Output Coils
10001-199990000 to 270ERead-OnlyDiscrete Input Contacts
30001-399990000 to 270ERead-OnlyAnalog Input Registers
40001-499990000 to 270ERead-WriteAnalog Output Holding Registers

线圈/寄存器编号可以看做是位置的名字,它们不出现在实际发送的信息当中,数据地址(Data Address)出现在实际发送的信息中。

举个例子,第一个Holding Register的编号为40001,数据地址为0000.这两个数字的区别在于偏移量。

3. 什么是从站ID

在网络中,每一个从机分配一个唯一的设备地址,从1到247.当主机请求数据时,发送的信息的第一个字节就是从机地址,这样,从机接收到第一个字节后就知道是否忽略信息。

4. 什么是功能码

主机发送的第二个字节就是功能码。这个功能码告诉从机需要访问哪个表,是向这个表中写数据还是读数据。

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

5. 什么是CRC

CRC即循环冗余校验码(Cyclic Redundancy check),是在每一个发送的信息后面加上的两字节,用于检验发送和接受是否出错。信息中的每一个字节都用于计算CRC。接受设备同时计算CRC,然后与发送方计算的CRC进行比较,如果两者不同,则产生错误。

6. Modbus发送指令和回应的格式

Modbus发送指令和回应的格式

Data AddressesReadWrite SingleWrite Multiple
Discrete Output Coils 0xxxxFC01FC05FC15
Discrete Input Contacts 1xxxxFC02NANA
Analog Input Registers 3xxxxFC04NANA
Analog Output Holding Registers 4xxxxFC03FC06FC16

注:FC表示Function Code

eg1.
数据请求:
11 01 0013 0025 0E84
11: 从机地址 (0x11 = 17 )
01: 功能码01(读线圈状态)
0013: 线圈首地址(0x0013=19,+1偏移量=#20线圈)
0025: 要读的线圈数 (0x25 = 37, 20~56 )
0E84: CRC校验和
回应
11 01 05 CD6BB20E1B 45E6
11: 从机地址 (0x11 = 17 )
01: 功能码01(读线圈状态)
05:后面的字节数(37/8=5字节)
CD:线圈27 - 20 (1100 1101)
6B: 线圈35 - 28 (0110 1011)
B2: 线圈43 - 36 (1011 0010)
0E: 线圈51 - 44 (0000 1110)
1B: 3空格和线圈56 - 52 (0001 1011)
45E6: CRC校验和

其他例子与此类似,不再赘述。

参考资料:simplyModbus

转载于:https://www.cnblogs.com/zhengkang/p/4891131.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Modbus协议是一种通信协议,用于在工业自动化领域中的设备之间进行通信。它最初由Modicon(现在是施耐德电气公司的一部分)在1979年开发,是一种应用层协议,基于客户端-服务器模型。该协议使用串行通信(RS-232、RS-422或RS-485)或以太网通信,并且很容易实现和部署。Modbus协议通常用于控制器和外部设备之间的通信,例如传感器、执行器、PLC(可编程逻辑控制器)等。它被广泛应用于工业控制系统中,因为它简单、可靠且易于使用。 ### 回答2: Modbus协议是一种串行通信协议,用于在自动化控制系统中连接不同设备之间的通信。它最初由Schneider Electric开发,现已成为工业领域最常用的通信协议之一。 Modbus协议采用主从结构,包括一个主站和多个从站。主站是控制中心,从站是需要监控、控制或获取数据的设备。主站通过串行通信线路向从站发送请求消息,从站则向主站回复响应消息。这种点对点的通信方式使得Modbus协议在工业控制系统中具有广泛的应用。 Modbus协议支持不同的传输介质,包括串口、以太网和无线传输。在串口通信中,常用的物理层包括RS-232和RS-485。通过这些物理层接口,主站和从站可以以一种简单而可靠的方式进行通信。 Modbus协议定义了一系列读写操作码,用于主站与从站之间进行数据交换。主站可以向从站发送读取数据的请求,也可以发送写入命令来修改从站中的数据。从站则根据主站的请求,回复相应的数据。 Modbus协议具有简单、灵活和可靠的特点,使得它成为许多工业自动化设备和系统的标准通信协议。它无需复杂的配置和高级网络设置,操作简便。此外,Modbus协议支持广泛的设备和厂商,使得不同品牌的设备可以通过该协议实现互操作性。 总的来说,Modbus协议是一种用于工业控制系统的串行通信协议,能够实现不同设备之间的可靠数据交换和远程控制。它的简单性和广泛应用使得它在自动化领域中得到了广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值