目录:
一、简介
1、简介
2. 对ModBus通信议定书的基本知识
3. 表1和表2中的词语定义
二、传播信息的过程
1.1 地址码
1.2 功能码
1.3 数据区
三. 功能性机动车辆代码
三.1函数代码“02”:改为输入的一个或多个电路开关
状态
3.2 函数代码“01”:读出一个或多个电路开关的输出状态。
功能代码"03"读数 注册输入。
3.4.4 函数代码“ 05” : 输入 1 电路开关输出( 遥控)
函数代码"06": 创建一个单电路登记册 。
3.06 函数代码10:创建多路发送器
函数代码 "03" : 读事件日志
四. 误差核对(《儿童权利公约》检查)
五、讨论信息错误和通信数据
-------------------------------------------------------
“Modbus - 国家标准 - 完整版本, Modbus_ RTU 特制通信示例,以及 Modbus TCP_IP Protocol Guidelines”, 是我的100度网络磁盘的适当参考搜索。
--------------------------------------------------------------------------------------------------------------
一、简介
1、简介
《ModBus通信法》允许在PDM系列仪器/传送器和编程序列控制器、RTU、SCADA、DCS或ModBus兼容监测系统之间交流信息和数据转让,这些系统来自各种国际知名制造商,包括Schneider、Siemens、AB和GE。
在PDM系列仪器/传送器中只增加了一个基于计算机(或工程控制)的监测程序。(例如,集团国王、Intouch、Fix、synall等。 )可能是电子监视系统
根据《ModBus宪章》,数据传输有两种方法:HEX代码和ASCII代码。使用了ModBus-RTU和ModBus-ASCII协议。前者为数据传送,后者必须先将数据转换为ASCII,然后再发送。因此,ModBus-RTU协议提高了通信效率。处理简单,使用得更多。
ModBus TCP/IP是以ModBus Ethernet为基础的RTU模型扩展。
----------------------------
广泛的系统集成:
PDM系列仪器/传送器支持工业标准RS-485/422通信界面和ModBus通信协议,在国内外广泛使用。系统整合的要求包括电力、工业和监管部门。
----------------------------
通信数据类型和格式:
主要台站与该台站之间传送的通讯信息为11位数,以文字格式交换。主要台站与该台站之间传送的通讯信息为11位数:
字格式(串行数据)
|
11位二进制
|
起始位
|
1位
|
数据位
|
8位
|
奇偶校验位
|
第一位置:奇迹校准/否:无奇数校准
|
停止位
|
1个奇迹校准点,2个无奇迹校准点,2个无奇迹校准点
|
通信数据格式(信息框架)
数据长度:
|
1字节
|
1字节
|
N字节
|
CRC 代码(冗余循环代码) 16 位元的 CRC 代码(冗余循环代码)
|
1) 1字节由8位数二进制组成(均为8位数)
2) ModBus是Modicon注册商标。
3) 在本案文中,“机器产生的”指PDM和PDM。
----------------------------
用于确定 Modbus 数据框架结尾的技术: Modbus 协议基于 3. 您是否在五个字符内接收数据, 以确定是否接受在 RTU 方法下完成 。
序列数据一般为11位数格式,然后是3:5个字符为3.5*11=38:5。如果没有校验,请使用10位数的单词格式,然后是3:5个字符为..
3.5*10 = 35 个位。
波特率的定义是每秒的二进制位数,例如,每秒9,600bps. 9,600个位置,然后是38.5个二进制位数的延迟时间:
Modbus_RTU需要一个数据框架,从开始到结束至少三次(385/9.6=4.0104167 mS)。
给定时器3.5个字符(如可行则更多),然后在接收中断服务程序的序列中,为计时器的计时器登记簿零,然后重新打开。
如果在开始时没有收到最后一个字节, 当下一个字节到来时, 计时器将被重置为零 。
定时器的到来将使定时器破入定时器,表明数据收集工作已经完成。
-------------------------------------------------------
2. 对ModBus通信议定书的基本知识

以下是代码01 16 100 1234ABCD的含义:
在100地址,写1234 到地址01控制器。
地址领域:来自空间站的地址,例如仪器,这是其通信地址;
这就是你要做的,函数代码。因为连接的目的是读写数据, 只有两个 ModBus 函数代码通常被我们使用。就是读和
写。读
函数代码为 03, 函数代码为 16 。 必须指出, 这里的所有读数和写法都是 16 个位置, 即 WORD (包括数据地址和数据) 。,
功能码如表2。
----------------------------
表1显示了ModBus的功能代码。
|
功能码
|
名称
|
作用
|
|
1 0x01
|
读取线圈状态
|
确定一组逻辑coils (ON/OFF) 的当前状态 。
|
|
2 0x02
|
读取输入状态
|
确定一组开关输入的当前状态(ON/OFF)。
|
|
3 0x03
|
读取保持寄存器
|
从一个或多个文件夹获取当前二进制值 。
|
|
4 0x04
|
读取输入寄存器
|
从一个或多个输入库获取最新的二进制值 。
|
|
5 0x05
|
强置单线圈
|
延长逻辑卷圈断裂状态
|
| 6 0x06 |
预置单寄存器 |
装入带有适当二进制值的持有登记簿 。 |
| 7 0x07 |
读取异常状态 |
用户逻辑可以建立8个内部圈的断裂状态,其地址由控制器选择,以表明该简短信息可以被快速读取。 |
| 8 0x08 |
回送诊断校验 |
设备发送诊断核查报告,供检查,以便进行通信处理。 |
| 9 0x09 |
(484)(484)(484) |
主机程序程序员被调动起来 电脑机的逻辑被改变 |
| 10 0x0A |
问题(484) |
主机将能够与机器进行中的长期程序工作连接,以确定机器是否完成了其日常工作,只有在发出含有功能代码9的信息后,才能提供该功能代码。 |
|
11 0x0B
|
读取事件计数
|
主机可提出单一查询,以确定操作是否成功,特别是如果命令或其他答复造成通信错误。
|
|
12 0x0C
|
读取通信事件记录
|
另一方面,主机从每个ModBus服务处获得通信事件记录(例如,发送53条信息),如果处理问题,记录包含有关的错误。
|
| 13 0x0D |
(184/384 484 584) |
使主机能够模仿程序员功能,以便使用机器逻辑改变个人电脑。 |
| 14 0x0E |
索取资料的请求(184/384,484,584) |
主机将能够与当前操作员联系,并询问程序是否定期完成,该函数代码只有在含有函数13的电文后才能发送。 |
| 15 0x0F |
强置多线圈 |
连续连续的逻辑循环被拉长。 |
|
16 0x10
|
预置多寄存器
|
将单一的二进制值装入连续持有记录器链。
|
| 17 0x11 |
报告从机标识 |
安装的种类及其运行信号的状态将由主机决定。 |
| 18 0x12 |
密克罗84(884和84) |
然后主机可以模仿编程功能 并调整PC状态逻辑 |
| 19 0x13 |
重置通信链路 |
发生不可更改的错误后,您将处于已知状态,可以重置顺序字节。 |
| 20 0x14 |
检查通用参数(584L)。 |
显示扩展内存文件中的数据信息 。 |
| 21 0x15 |
584L 通用参数书写 |
将共同参数添加或编辑到扩展存储文件 。 |
| 22~64 |
保留作扩展功能备用 |
| 65~72 |
只保留用户功能。 |
更广泛的用户功能编码 |
| 73~119 |
非法功能 |
| 120~127 |
保留 |
留作内部作用 |
| 128~255 |
保留 |
用于异常应答 |
----------------------------
表2列出了ModBus的功能代码和数据类型。
| 代码 |
功能 |
数据类型 |
| 1 |
读 |
位 |
| 2 |
读 |
位 |
|
3
|
读
|
整型、
字符型
、
状态字
、
浮点型
|
| 4 |
读 |
整数、状态和浮动点数据类型 |
| 5 |
写 |
位 |
| 6 |
写 |
整数、 字符、 状态和浮点数 |
| 8 |
N/A |
“回馈反馈”的讯息反复重复。 |
| 15 |
写 |
位 |
|
16
|
写
|
整型、
字符型、
状态字、浮点型
|
----------------------------
表3、Modbus寄存器
| 寄存器种类 |
说明 |
PLC类比 |
举例说明 |
离散输入 状态DI
|
输入端口。 使用外部设置更改输入状态, 外部设置可读但不可写入 。
|
DI数字量输入
|
面板键、开关状态和断电状态
|
|
线圈状态DO
|
输出端口。 您可以配置港口的输出状态, 读取港口的输出状态, 并将其分为两个单独的执行状态, 如保留类型或边界触发类型 。
|
DO数字量 输出
|
电源关闭控制信号电磁阀门输出 LED显示等
|
保持 寄存器AO
|
部分输出参数或维护参数是随着控制器的运行而设定的。 可读可写
|
AO模拟量
|
可模拟PID运行参数和质量输出设定值。
|
输入 寄存器AI
|
当控制器在操作时,请输入从外部设备中收集的参数。 可读但不可写
|
AI模拟量输入
|
模拟量输入
|
摩布斯协议具体规定了四种基本数据类型:只读位数据DI
,
可读写位数据DO
,
只读16位数据AI
,
AO 16 位读/写数据
。这些数据分别被称为输入状态
,
线圈状态
,
输入寄存器
,
保持寄存器
。
|
DI
|
数字输入、离散输入、带有数据位置的地址,用户只能读而不是编辑。 比如面板键、开关状态和断电状态
|
|
DO
|
用户可以查找、重置和读取数字输出、卷圈输出和带有数据空格的地址。 例如电磁阀输出、电源关闭控制信号、LED显示等等。
|
|
AI
|
模拟输入, 输入登记器, 16 位地址, 仅使用用户, 不可修改, 例如, 电压读取
|
|
AO
|
模拟输出, 保存一个登记册, 一个 16 位地址, 用户可以输入或读回信息, 如控制变压器的当前值 。
|
无论对象的名称是什么,其内容是一样的;进入该对象的信号用户只能看到它不能修改,但控制输出的信号用户可以读回它。离散的
只有一个数据点和16个模拟数据点。
----------------------------
数据是我们传递的信息, 对我们来说,这是故事的结束。我们正在发送的信息, 我们要告诉电台的信息, 是100,1234, 这是..
分两部分:地址和内容。当一个站点与大楼的地址区域作比较时,号码是大楼的号码,数据中的地址是大楼的房间号码。
这是变压器的参数地址。 所以这个框架可以理解: 通知第 01, 1234号大楼的100个房间, 将100个参数写到 1 1, 1234 的变压器上。 错误检查 :
在我们的实际应用中,双方商定的许多计算方法提供了防止错误的保障,即附带核查、奇点核查、停止地点等等。
ABCD是胡思乱想的,这是无法理解的
-------------------------------------------------------
3. 表1和表2中的词语定义
1)功能码含义
读:
01_ DI: 读取内部位元输出状态, 例如 。 提醒、 异常、 故障、 奇异等
02_DO: 读取外部开关输入的状态, 例如。 相片组合输入、 中继输入等等 。
03_AO:读取内部输出内存,例如配置参数、值读数等等。
04_AI:阅读外部输入登记册;
例如,模拟温度和湿度等外部电压模拟模拟。
功能代码01和02结合使用8字节阅读,也可与功能代码04一并阅读;
coil 可以直接定义为一个变量的位数或一个变量的位数 。
写:
函数代码 05: 显示内部个体开关的状况; 例如, 相片组合输出、 中继输出等等 。
函数代码 06: 写入内部个人登记册的价值; 例如, 更改配置设置、 固定值等
函数代码 15: 记录内部多开关的状态, 如 05 。
函数代码 16: 与 06 一样, 写几个内部仓库的值 。现在是时候使用此函数代码来写一个以上的注册簿了。
12: 通信超时或错误查询
13:对机器故障和不合规定之处的调查
----------------------------
2)关于实现
创建一个可变区域,例如 Quint modbus_data [50],然后是维护和输入登记册的人,具体如下:
维护登记册:M3001-M30022//保存设置的参数,读3和写16。
插入登记册:M4001-M40028/ 保存实时数据,例如启动、运行和停止
4:00读取备用代码和误差代码。
#define M30001 modbus_data[0]
#define M30002 modbus_data[1]
…………
#define M30021 modbus_data[20]
#define M30022 modbus_data[21]
#define M40001 modbus_data[22]
#define M40002 modbus_data[23]
…………
#define M400021 modbus_data[48]
#define M400028 modbus_data[49]
对不起,Amobbs.Com/thread-339982-2-1.html提供更详细的信息。
--------------------------------------------------------------------------------------------------------------
二、传播信息的过程
当发件人(主机)向接收装置(机器)发送通信指令时,相应的地址代码从机器接收该指令,并读取基于功能代码和相关要求的信息,如果核实CRC准确无误,则开展适当的工作,并将执行结果(数据)送交接收人。返回的信息包含地址代码、功能代码、执行后数据以及《儿童权利公约》核查代码;如果发生错误,则不返回任何信息。
1.1地址码
地址代码是每个通信信息框架的第一个字节( 8 位元), 范围从 0 到 255 。 这个字节表示主机发送的信息将由服务器在用户指定地址接收 。每个计算机必须有一个独特的地址代码, 只有一台符合地址代码的机器才能对返回信息作出反应。主机提供的地址代码表示发送信息的地址,而从飞机上返回的地址代码则显示信息发送的地址代码。相应的地址编号显示信息来源。
-------------------------------------------------------
1.2功能码
在每个通信框架传输过程中,功能代码是第二个字节。《ModBus通讯法》允许对职能守则的定义从1至127不等。仅使用了PDM系列仪器/传送器功能代码的一个子集。作为主机请求发送,指示机器使用函数代码执行什么操作 。作为从机响应,机器提供的函数代码与主机给出的代码相同。它还表明,计算机对主机作出了反应,有关程序已经完成。
Modbus 部分函数代码(表1)
功能码 |
定 义 |
操 作(二进制) |
0x02 |
读开关量输入 |
输入数据,读取电路开关的全部或一个子集。 |
0x01 |
读开关量输出 |
读取电路开关的全部或一个子集的输出状态数据。 |
0x03
|
读寄存器数据
|
从一个或多个仓库读取信息 。
|
0x05 |
写开关量输出 |
它管制所有继电器的输出。 |
0x06 |
写单路寄存器 |
将二进制数据的收集放入单一的登记册。 |
0x10
|
写多路寄存器
|
将多个二进制文件放入不同的仓库 。
|
-------------------------------------------------------
1.3数据区
数据区域具体说明飞机将归还何种类型的信息以及将采取哪些行动。这些资料可以是数据(例如,交换输入/产出、模拟体积输入/产出、登记等),参考地址等等。例如,函数 03 指示主机从服务器上返回内存( 起始地址是读取登记册和读取登记册的长度) 。,返回的数据包括登记册的数据长度和内容。对于不同的从机,地址和数据细节不匹配(应提供电文表)。
PDM系列的仪器/传送器使用摩布斯通讯议定书。使用主机(PLC、RTU、PC、DCS等)通信命令(职能03)其数据记录可随时查看(附录中载有更完整的数据信息表)。PDM系列仪器和发射机可持有数百个电池(例如电流、电压、电、0-31校准等)而且是16位二进制的一次(就不同种类能源的数量而言)可读登记注册人数最多的是50人。
PDM 响应的指令格式由机器地址、 功能代码、 数据区和 CRC 代码组成。 数据区的数据为两字节长( 除电能外 ) 。
注:
1. PDM-820AC/ACM/ACM/ACR和PDM-800AC/ACM,功能代码为“03”、“06”和“10”;
2. 如果PDM通过MODBUS ASCII协议进行通信,通信数据格式如下:7个数据位置,1个停止位,选择检查。
--------------------------------------------------------------------------------------------------------------
三. 功能性机动车辆代码
3.1 函数代码“02”:读作一个或多个电路开关的输入状态。
例如,主机主机应改为地址01,开关应改为输入状态DI1-DI4。读取
警告,正向变化, 故障,异常等等。
机器数据登记册的地址和数据如下:
起始位地址
|
DI 登记册的数据(以十六进制)
|
备 注
|
0000
|
0B
|
|