MODBUS地址表
- 格式:xls
- 大小:31.50 KB
- 文档页数:2
modbus地址对应表Modbus是一种串行通信协议,由Modicon公司(现在的施耐德电气Schneider Electric)于1979年发布,用于可编程逻辑控制器(Programmable logic controllers,PLCs)。
Modbus事实上已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。
在工业应用场景中使用Modbus的主要原因是:考虑到Modbus本就为了工业应用而开发,公开发布,并且无版权要求,易于部署和维护,未对供应商修改移动本地比特或字节施加限制。
Modbus支持多个设备连接到同一网络上进行通信,例如,一个能测量温度和湿度并将结果传送给计算机的装置。
在数据采集与监视控制(Supervisory control and data acquisition, SCADA)系统中,Modbus常用于连接监控计算机与远程终端设备(Remote terminal unit,RTU)。
许多数据类型是根据梯形逻辑及其驱动继电器在工业上的使用而得名的:单比特物理输出称为线圈,单比特物理输入称为离散输入或触点。
自2004年4月施耐德电气将权利转让给Modbus组织以来,该组织一直管理着Modbus协议的开发和更新。
Modbus组织是一个倡导持续使用该技术的协会,其由兼容Modbus设备的用户和供应商组成。
Modbus协议目前存在多个用于串行端口、以太网和其他支持互联网协议套件的网络版本。
Modbus协议有许多变体:Modbus RTU —这用于串行通信,并采用数据的紧凑二进制表示进行协议通信。
RTU格式使用带有循环冗余校验的校验和的命令/数据作为错误校验机制,以确保数据的可靠性。
Modbus RTU是Modbus 最常见的实现方式。
Modbus RTU消息必须连续传输,不能有字符间的延迟。
Modbus消息由空闲(静默)时段构成(分隔)。
Modbus ASCII —用于串行通信,并利用ASCII字符进行协议通信。
modbus地址对应表曾经做过单片机和以下20种PLC的Modbus RTU串口通信,现将这20种PLC输入、输出和寄存器元件与Modbus编号地址对应表分享出来。
三菱FX3G-40MR/ES-A、西门子S7-200 CPU226 AC/DC/RLY、欧姆龙CP1H-X40DR-A、松下AFPX-C40R、台达DVP-12SA2、信捷XC5-48、永宏FBs-40MC、产电XBC-DR40S、汇川H2u-2416MT-XP、英威腾IVC2H-1616MAT6、基恩士KV-N40AR、施耐德电气TM218LDAE40DRPHN、海为H40S2R系列、维控LX3V1212MT系列、和利时LE5109、台安AP-340BR-A、罗克韦尔1766-L32BWA、合信CTH200系列CPU H226L、富士SPE NW0P40R-31、步科K508-40AR。
,三菱X元件支持Modbus之02功能码;Y元件支持Modbus之01、05、15功能码;D元件支持Modbus之03、06、16功能码。
西门子I元件支持Modbus之02功能码;Q元件支持Modbus之01、05、15功能码;V元件支持Modbus之03、06、16功能码。
欧姆龙CIO0元件支持Modbus之02功能码;CIO100元件支持Modbus之01、05、15功能码;D元件支持Modbus之03、06、16功能码。
松下X元件支持Modbus之02功能码;Y元件支持Modbus之01、05、15功能码;DT元件支持Modbus之03、06、16功能码。
台达X元件支持Modbus之02功能码;Y元件支持Modbus之01、05、15功能码;D元件支持Modbus之03、06、16功能码。
信捷X元件支持Modbus之02功能码;Y元件支持Modbus之01、05、15功能码;D元件支持Modbus之03、06、16功能码。
永宏X元件支持Modbus之02功能码;Y元件支持Modbus之01、05、15功能码;D元件支持Modbus之03、06、16功能码。
MODBUS常用功能码备查
表1 ModBus功能码
功能码名
称作用
01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02 读取输入状态取得一组开关输入的当前状态(ON/OFF)
03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
05 强置单线圈强置一个逻辑线圈的通断状态
06 预置单寄存器把具体二进值装入一个保持寄存器
15 强置多线圈强置一串连续逻辑线圈的通断
16 预置多寄存器把具体的二进制值装入一串连续的保持寄存器
表2 ModBus功能码与数据类型对应表
代码功能数据类
型
对应地址
01 读位
0000X
02 读位
1000X
03 读整型、字符型、状态字、浮点型4000X
04 读整型、状态字、浮点
型3000X
05 写位
0000X
06 写整型、字符型、状态字、浮点型4000X
15 写位
0000X
16 写整型、字符型、状态字、浮点型4000X
(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)。
modbus地址对应表
Modbus协议定义的寄存器地址是5位十进制地址,即:
线圈(DO)地址:00000~09999
触点(DI)地址:10000~19999
输入寄存器(AI)地址:30000~39999
输出寄存器(AO)地址:40000~49999
由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址。
在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus比其他通信协议使用的更广泛的主要原因有:
对供应商来说,修改移动本地的比特或字节没有很多限制
Modbus允许多个(大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。
在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。
CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。
此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。
如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200 CPU做Modbus主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
详情请参考《S7-200系统手册》之相关章节。
要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0口(Port0)。
参考:Modbus RTU 主站指令库基本步骤:1.检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。
2.检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLA VE两个子程序。
如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;图1. 指令树中的库指令3.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLA VE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;图2. 调用Modbus RTU通信指令库图中参数意义如下:a.模式选择:启动/停止Modbus,1=启动;0=停止b.从站地址:Modbus从站地址,取值1~247c.波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d.奇偶校验:0=无校验;1=奇校验;2=偶校验e.延时:附加字符间延时,缺省值为0f.最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g.最大AI字数:参与通信的最大AI通道数,可为16或32h.最大保持寄存器区:参与通信的V存储区字(VW)i.保持寄存器区起始地址:以&VBx指定(间接寻址方式)j.初始化完成标志:成功初始化后置1k.初始化错误代码l.Modbus执行:通信中时置1,无Modbus 通信活动时为0。
●00001 ~ 09999 :离散量输出继电器编号●10001 ~ 19999 :离散量输入继电器编号●30001 ~ 39999 :模拟量输入寄存器编号●40001 ~ 49999 :保持型输出寄存器编号二、3区是读模拟量输入寄存器,4区是用于写数据到输出寄存器。
通讯帧里的设备地址=(4位十进制设备编号-1)转换成16进制如用功能码02读取1区中编号为10012的输入继电器的状态,通讯帧里的设备地址就要转换成:0012-1=(0011)十进制=(000B)十六进制MODBUS协议整理——功能码简述1.MODBUS功能码简述下表列出MODBUS支持的部分功能代码:以十进制表示。
表1.1 MODBUS部分功能码1.1功能码说明功能码可以分为位操作和字操作两类。
位操作的最小单位为BIT,字操作的最小单位为两个字节。
【位操作指令】读线圈状态01H,读(离散)输入状态02H,写单个线圈06H和写多个线圈0FH。
【字操作指令】读保持寄存器03H,写单个寄存器06H,写多个保持寄存器10H。
1.2寄存器地址分配表1.2 MODBUS寄存器地址分配1.3寄存器种类说明表1.3 MODBUS寄存器种类说明1.4 PLC地址和协议地址区别PLC地址可以理解为协议地址的变种,在触摸屏和PLC编程中应用较为广泛。
1.4.1 寄存器PLC地址寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本显示器。
PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型。
第一位数字和寄存器类型的对应关系如表1所示。
PLC地址例如40001、30002等。
1.4.2 寄存器协议地址寄存器协议地址指指通信时使用的寄存器地址,例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。
再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002,虽然两个PLC寄存器寄存器通信时使用相同的地址,但是需要使用不同的命令访问,所以访问时不存在冲突。
Modbus协议定义的寄存器地址是5位十进制地址,即:
线圈(DO)地址:00000~09999
触点(DI)地址:10000~19999
输入寄存器(AI)地址:30000~39999
输出寄存器(AO)地址:40000~49999
由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址。
在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus比其他通信协议使用的更广泛的主要原因有:
对供应商来说,修改移动本地的比特或字节没有很多限制
Modbus允许多个(大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。
在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。
CPU上的通信口(Porto )支持Modbus RTU从站通信协议S7-200 CPU上的通信口PortO可以支持Modbus RTI协议,成为Modbus RTL从站。
此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。
如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200 CPU做Modbus主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
详情请参考《S7-200系统手册》之相关章节。
要实现ModbusRTl通信,需要STEP7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP7-Micro/WIN32 V3.2 Instruction Library (指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0 口(Port0)。
参考:Modbus RTU主站指令库基本步骤:1. 检查Micro/WIN 的软件版本,应当是STEP 7-Micro/WIN V3.2 以上版本。
2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT 和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2 的Instruction Library (指令库)软件包;图 1. 指令树中的库指令3. 编程时使用SM0.1 调用子程序MBUS_INIT 进行初始化,使用SM0.0 调用MBUS_SLAVE ,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;图中参数意义如下:a. 模式选择:启动/停止Modbus, 1=启动;0=停止b. 从站地址:Modbus从站地址,取值1~247c. 波特率:可选1200,2400,4800,9600, 19200,38400, 57600,115200d. 奇偶校验:0=无校验;仁奇校验;2=偶校验e. 延时:附加字符间延时,缺省值为0f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g. 最大AI字数:参与通信的最大AI通道数,可为16或32h. 最大保持寄存器区:参与通信的V存储区字(VW)i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)j. 初始化完成标志:成功初始化后置1k. 初始化错误代码l. Modbus执行:通信中时置1,无Modbus通信活动时为0。
序号描述寄存器地址字数数据格式类型读03H写1H07标示符备注1 当前组合有功总电能0x10002 XX XX XX . XX kWh bcd √000000002 当前组合有功费率1电能0x1002 2 XX XX XX . XX kWh bcd √000001003 当前组合有功费率2电能0x1004 2 XX XX XX . XX kWh bcd √000002004 当前组合有功费率3电能0x1006 2 XX XX XX . XX kWh bcd √000003005 当前组合有功费率4电能0x1008 2 XX XX XX . XX kWh bcd √000004006 当前正向有功总电能0x100A 2 XX XX XX . XX kWh bcd √000100007 当前正向有功费率1电能0x100C 2 XX XX XX . XX kWh bcd √000101008 当前正向有功费率2电能0x100E 2 XX XX XX . XX kWh bcd √000102009 当前正向有功费率3电能0x1010 2 XX XX XX . XX kWh bcd √0001030010 当前正向有功费率4电能0x1012 2 XX XX XX . XX kWh bcd √0001040011 当前反向有功总电能0x1014 2 XX XX XX . XX kWh bcd √0002000012 当前反向有功费率1电能0x1016 2 XX XX XX . XX kWh bcd √0002010013 当前反向有功费率2电能0x1018 2 XX XX XX . XX kWh bcd √0002020014 当前反向有功费率3电能0x101A 2 XX XX XX . XX kWh bcd √0002030015 当前反向有功费率4电能0x101C 2 XX XX XX . XX kWh bcd √0002040016 当前组合1无功总电能0x101E 2 XX XX XX . XX kvarh bcd √0003000017 当前组合2无功总电能0x1020 2 XX XX XX . XX kvarh bcd √0004000018 当前第一象限无功总电能0x1022 2 XX XX XX . XX kvarh bcd √0005000019 当前第二象限无功总电能0x1024 2 XX XX XX . XX kvarh bcd √0006000020 当前第三象限无功总电能0x1026 2 XX XX XX . XX kvarh bcd √0007000021 当前第四象限无功总电能0x1028 2 XX XX XX . XX kvarh bcd √00080000 22 当前A相正向有功电能0x102A 2 XX XX XX . XX kWh bcd √0015000023 当前A相反向有功电能0x102C 2 XX XX XX . XX kWh bcd √001600000x102E 2 XX XX XX . XX kvarh bcd √00170000 24 当前A相组合无功1电能0x1030 2 XX XX XX . XX kvarh bcd √00180000 25 当前A相组合无功2电能0x1032 2 XX XX XX . XX kvarh bcd √00190000 26 当前A相第一象限无功电能0x1034 2 XX XX XX . XX kvarh bcd √001A0000 27 当前A相第二象限无功电能0x1036 2 XX XX XX . XX kvarh bcd √001B0000 28 当前A相第三象限无功电能29 当前A相第四象限无功0x1038 2 XX XX XX . XX kvarh bcd √001C0000 电能30 当前B相正向有功电能0x103A 2 XX XX XX . XX kWh bcd √0029000031 当前B相反向有功电能0x103C 2 XX XX XX . XX kWh bcd √002A000032 当前B相组合无功1电0x103E 2 XX XX XX . XX kvarh bcd √002B0000 能0x1040 2 XX XX XX . XX kvarh bcd √002C0000 33 当前B相组合无功2电能0x1042 2 XX XX XX . XX kvarh bcd √002D0000 34 当前B相第一象限无功电能35 当前B相第二象限无功0x1044 2 XX XX XX . XX kvarh bcd √002E0000 电能0x1046 2 XX XX XX . XX kvarh bcd √002F0000 36 当前B相第三象限无功电能37 当前B相第四象限无功0x1048 2 XX XX XX . XX kvarh bcd √00300000 电能38 当前C相正向有功电能0x104A 2 XX XX XX . XX kWh bcd √003D000039 当前C相反向有功电能0x104C 2 XX XX XX . XX kWh bcd √003E00000x104E 2 XX XX XX . XX kvarh bcd √003F0000 40 当前C相组合无功1电能0x1050 2 XX XX XX . XX kvarh bcd √00400000 41 当前C相组合无功2电能0x1052 2 XX XX XX . XX kvarh bcd √00410000 42 当前C相第一象限无功电能0x1054 2 XX XX XX . XX kvarh bcd √00420000 43 当前C相第二象限无功电能0x1056 2 XX XX XX . XX kvarh bcd √00430000 44 当前C相第三象限无功电能0x1058 2 XX XX XX . XX kvarh bcd √00440000 45 当前C相第四象限无功电能46 当前正向有功总最大需0x105A 4 XX.XXXX. kw bcd √01010000量及发生时间YYMMDDhhmm 年月日时分47 当前反向有功总最大需量及发生时间0x105E 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0102000048 当前组合无功1总最大需量及发生时间0x1062 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0103000049 当前组合无功2总最大需量及发生时间0x1066 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0104000050 当前第一象限无功总最大需量及发生时间0x106A 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0105000051 当前第二象限无功总最大需量及发生时间0x106E 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0106000052 当前第三象限无功总最大需量及发生时间0x1072 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0107000053 当前第四象限无功总最大需量及发生时间0x1076 4 XX.XXXX. kwYYMMDDhhmm 年月日时分bcd √0108000054 A相电压0x107A 1 XXX.X V bcd √0201010055 B相电压0x107B 1 XXX.X V bcd √0201020056 C相电压0x107C 1 XXX.X V bcd √0201030057 A相电流0x107D 2 XX XXX . XXX A bcd √0202010058 B相电流0x107F 2 XX XXX . XXX A bcd √0202020059 C相电流0x1081 2 XX XXX . XXX A bcd √0202030060 瞬时总有功功率0x1083 2 XX XX . XXXX kW bcd √0203000061 瞬时A相有功功率0x1085 2 XX XX . XXXX kW bcd √0203010062 瞬时B相有功功率0x1087 2 XX XX . XXXX kW bcd √0303020063 瞬时C相有功功率0x1089 2 XX XX . XXXX kW bcd √0203030064 瞬时总无功功率0x108B 2 XX XX .XXXX kvar bcd √0204000065 瞬时A相无功功率0x108D 2 XX XX .XXXX kvar bcd √0204010066 瞬时B相无功功率0x108F 2 XX XX .XXXX kvar bcd √0204020067 瞬时C相无功功率0x1091 2 XX XX .XXXX kvar bcd √0204030068 总功率因数0x1093 1 X.XXX bcd √0206000069 A相功率因数0x1094 1 X.XXX bcd √0206010070 B相功率因数0x1095 1 X.XXX bcd √0206020071 C相功率因数0x1096 1 X.XXX bcd √02060300bcd √√04000101 72 日期及星期0x1097 2 YYMMDDWW年月日星期73 时间0x1099 2 00Bbmmss 时分秒bcd √√0400010274 两套时区表切换时间0x109B 3 00YYMMDDhhmm bcd √0400010675 两套日时段表切换时间0x109E 3 00YYMMDDhhmm bcd √0400010776 表地址0x10A1 1 XX XX bcd √√77 表序列号0x10A2 3 XX XX XX XX XX XX bcd √0400040278 电表有功常数0x10A5 2 XX XXXXXX bcd √0400040979 电表无功常数0x10A7 2 XX XXXXXX bcd √0400040A80 通讯口1通讯速率字0x10A9 1 XX bcd √√0400070381 通讯口2通讯速率字0x10AA 1 XX bcd √√04000704。