• 西门子梅州PLC模块总代理
  • 西门子梅州PLC模块总代理
  • 西门子梅州PLC模块总代理

产品描述

产品规格模块式包装说明全新品牌西门值+ 包装说明 全新 - 产品规格子

西门子梅州PLC模块总代理

Modbus地址与Modbus的功能码是两个概念。根据 Modbus 通信协议,Modbus 数据的地址使用 0*x、1*x、3*x 和 4*x 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用 S7-200 的指令库时,Modbus 数据地址与 S7-200 的 I/O 和数据存储区地址间有特定的对应关系。
Modbus 地址所访问的数据,是通过各种“功能”读写而来。功能码是 Modbus 地址的底层。如果 Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。

对于01 16 1000 1234 ABCD这段代码的含义说明如下:
向地址 01的控制器1000地址处写入1234 。
地址域:就是指 从站的地址,比如一个仪表,这个地址就是它的通讯地址;
功能码:就是你要做的事情,通讯的目的 就是读写数据,所以 ModBus 功能码虽然很多,但是只有两个是我们常用的,就是读和
写。读的功能码是03,写的功能码是16。注意,这里的读写都是一次性写16个位,也就是一个WORD(包含数据地址与数据),
功能码如表2。
----------------------------
表1、ModBus功能码
功能码名称作用
1 0x01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
2 0x02读取输入状态取得一组开关输入的当前状态(ON/OFF)
3 0x03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
4 0x04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
5 0x05强置单线圈强置一个逻辑线圈的通断状态
6 0x06预置单寄存器把具体二进值装入一个保持寄存器
7 0x07读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态。
8 0x08回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴。
9 0x09编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑。
10 0x0A控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送。
11 0x0B读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时。
12 0x0C读取通信事件记录可是主机检索每台从机的ModBus事务处理通信事件记录(比如传送53条报文)。如果某项事务处理完成,记录会给出有关错误。
13 0x0D编程(184/384 484 584)可使主机模拟编程器功能修改PC从机逻辑
14 0x0E探询(184/384 484 584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送。
15 0x0F强置多线圈强置一串连续逻辑线圈的通断。
16 0x10预置多寄存器把具体的二进制值装入一串连续的保持寄存器。
17 0x11报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态。
18 0x12(884和MICRO 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整型、字符型、状态字、浮点型
8N/A重复“回路反馈”信息
15
16整型、字符型、状态字、浮点型
----------------------------
表3、Modbus寄存器
寄存器种类说明PLC类比举例说明
离散输入
状态DI
输入端口。通过外部设定改变输入状态,可读但不可写DI数字量输入面板上的按键、开关状态,电机的故障状态
线圈状态DO输出端口。可设定端口的输出状态,也可以读取该位的输出状态,可分为两种不同的执行状态,例如保持型或边沿触发型DO数字量
输出
电磁阀输出、电机的启停控制信号、
LED显示等
保持
寄存器AO
输出参数或保持参数,控制器运行时被设定的某些参数。
可读可写
AO模拟量模拟量输出设定值,PID运行参数
输入
寄存器AI
输入参数。控制器运行时从外部设备获得的参数。
可读但不可写
AI模拟量输入模拟量输入
Modbus协议定义了4种基本数据类型:只读位数据DI,可读写位数据DO,只读16位数据AI,可读写16位数据AO。这些数据分别被称为输入状态,线圈状态,输入寄存器,保持寄存器。
DI数字输入,离散输入,一个地址一个数据位,用户只能读取它的状态,不能修改。
比如面板上的按键、开关状态,电机的故障状态
DO数字输出,线圈输出,一个一个数据位,用户可以置位、复位,可以回读状态。
比如电磁阀输出,电机的启停控制信号、LED显示等
AI模拟输入,输入寄存器,一个地址16位数据,用户只能读,不能修改,比如一个电压值的读数
AO模拟输出,保持寄存器,一个地址16位数据,用户可以写,也可以回读,比如一个控制变频器的电流值
无论这些东西被叫做什么名字,其内容不外乎这几种,输入的信号用户只能看不能改,输出的信号用户控制,并可以回读。离散的
数据只有一位,模拟的数据有16位。
----------------------------
数据 就是我们传递的消息,这个对于我们来说才是较终目的。 1000 1234 就是我们传递的消息,是我们要告诉从站的内容,它又
分两部分:地址和内容。如果把从站比喻成一个大楼地址域就是大楼的门牌号,而数据里的地址就是大楼的房间号,换成变频器也
就是变频器的参数地址。所以这段帧 就是这样理解:告诉01大楼的1000房间,1234 往01变频器的1000参数写1234。差错校验:
是为了防止出错而做的保护,就是双方约定的各种计算方法,也就是我们在实际应用中的偶校验、奇校验、停止位等等。 这里的
ABCD 是随便写的,没任何意义。
-------------------------------------------------------
3、表1与表2名词解释
1)功能码含义
读:
01_DI: 读内部比特量输出状态,如告警、变位、故障、异常等。
02_DO:读外部开关量输入状态,如光耦输入、继电器输入等。
03_AO:读内部输出量的寄存器,如一些配置参数、定值的读取等。
04_AI: 读外部输入量的寄存器,如外部电压电流模拟量,温湿度等。
功能码01、02读到的位满8个组合成一个字节,可以用功能码04读取;线圈可以直接定义成一个位变量或者直接置某变量的某一位
写:
功能码05:写内部单个开关量状态;如光耦输出、继电器输出等。
功能码06:写内部单个寄存器的值;如更改配置参数、定值等。
功能码15:写内部多个开关量状态;如同05。
功能码16:写内部多个寄存器的值;如同06;对时是写多个寄存器,用此功能码。
11:通信**时或错误时询问用
12:询问从机检测到的各种故障、异常事件
----------------------------
2)关于实现
先定义一个变量区如: uint modbus_data [50],再定义那些保持寄存器和输入寄存器,如下:
保持寄存器:M30001-M300022 // 存放设置的参数,用 03读,16写
输入寄存器:M40001-M40028 // 存放实时数据,如启动、运行、停止、待机以及错误代码 ,用04读

#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]
参考:www./thread-3339982-2-1.html
--------------------------------------------------------------------------------------------------------------
二、通讯信息传输过程
当通讯命令由发送设备(主机)发送至接收设备(从机)时,符合相应地址码的从机接收通讯命令,并根据功能码及相关要求读取信息,如果CRC校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码,如果CRC校验出错就不返回任何信息。
1.1 地址码
地址码是每次通讯信息帧的**字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有一的地址码,并且只有符合地址码的从机才能响应回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。相应的地址码表明该信息来自于何处。
-------------------------------------------------------
1.2 功能码
功能码是每次通讯信息帧传送的*二个字节。ModBus通讯规约可定义的功能码为1到127。PDM系列仪表/变送器仅用到其中的一部分功能码。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为从机响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
表1 Modbus部分功能码
功能码
定 义
操 作(二进制)
0x02
读开关量输入
读取一路或多路开关量状态输入数据
0x01
读开关量输出
读取一路或多路开关量输出状态数据
0x03
读寄存器数据
读取一个或多个寄存器的数据
0x05
写开关量输出
控制一路继电器“合/分”输出
0x06
写单路寄存器
把一组二进制数据写入单个寄存器
0x10
写多路寄存器
把多组二进制数据写入多个寄存器



http://zhangqueena.b2b168.com

产品推荐