搜档网
当前位置:搜档网 › ModbusTCP通讯协议

ModbusTCP通讯协议

Modbus TCP通讯协议

一、适用范围及默认规范

此Modbus TCP协议适用于EIO、ADC系列产品。协议中所有数值如无特殊说明,均为16进制。Modbus浮点数为标准的IEEE格式,Modbus 32位长整数据为4字节无符号整数(unisigned long)组态软件支持此Modbus TCP协议,可以直接使用。

二、读开关量输入

1.功能码、寄存器地址、偏移

功能码:01

地址:两个地址,分别用于读入全部开关量状态或单独读一路开关量输入状态。描述如下。

[0A]--读全部开关量输入状态。

[3C]--读第1路开关量输入状态,递增1为下一路,如3D为第二路。以此类推。地址偏移:可为任意值,建议为0000。

在使用组态软件时,正确填写地址,地址偏移填写任意值即可。

2.Modbus TCP格式(网口)

读全部开关量输入状态发送报文:[0000000000] [06] [01] [01] [000A] [0001]

读第1路开关量输入状态发送报文:[0000000000] [06] [01] [01] [003C] [0000]

[00 00 00 00 00]:Modbus TCP报文头,简化为全0即可。使用组态软件时,自动设置。

[06]:剩余数据长度,说明还剩6个字节等待接收。使用组态软件时,自动设置。

[01]:子设备ID。Modbus TCP忽略。

[01]:Modbus TCP 功能码01

[00 0A]或[00 3C]:寄存器地址,高位字节在前,低位字节在后。

[00 00]:寄存器地址偏移,设备忽略此数据,只设置寄存器地址即可工作,设置成0000即可。

读全部开关量输入状态应答报文:[00 00 00 00 00] [04] [01] [01] [01] [42]

读一路开关量输入状态应答报文:[00 00 00 00 00] [04] [01] [01] [01] [01]

[00 00 00 00 00]:Modbus TCP报文头,简化为全0即可。使用组态软件时,自动设置。

[04]:剩余数据长度,说明还剩4个字节等待接收。使用组态软件时,自动设置。

[01]:子设备ID。Modbus TCP忽略。

[01]:Modbus TCP 功能码01

[01]:返回字节数,1个字节的8个bit对应8路输入,接通/低电平时,对应的bit 置1,否则置0。8路输入设备返回01,16路输入设备返回02,以此类推。[42]或[01]:对于读全部开关量输入状态报文,此处为开关量输入状态字节,bit0对应input1,接通/低电平为1,否则为0。此处为0100 0010,说明Input2、Input7为接通或低电平状态。其他为断开或高电平状态。

对于读一路开关量输入状态报文,此字节为01说明为接通/低电平状态,00为断开/高电平状态。

三、读模拟量、温湿度输入(保持寄存器)

1.功能码、寄存器地址、偏移

功能码:03

地址:不同类型及格式的模量输入,具体描述如下。

[29]--读温湿度及传感器状态,特殊编程格式,不支持组态软件。

[2A]--读温度值,地址偏移可以为任意值,建议设置为0000。标准Modbus浮点数格式,支持组态软件。

[2B]--读湿度,地址偏移可以为任意值,建议设置为0000。标准Modbus浮点数格式,支持组态软件,

[2C]--读露点,地址偏移可以为任意值,建议设置为0000。标准Modbus浮点数格式,支持组态软件。

[46]--读模指定路数的模数通道值,地址偏移指出要读取的几路输入,最小为1,最大为设备支持的模数输入路数。标准Modbus浮点数格式,支持组态软件。[47]--一次读取全部输入通道的模数值,地址偏移为任意值,建议设置为0000,标准Modbus浮点数格式,支持组态软件。

[50]--读第1路模数值,递增1(如51)为第2路,以此类推最大为50+设备最大模拟量输入路数,地址偏移为任意值,建议设置为0000。标准Modbus浮点数格式,支持组态软件。

地址偏移:参照寄存器说明设置。

2.Modbus TCP格式(网口)

读专用格式温湿度输入发送报文:[0000000000][06][01][03][0029][0001]

读标准格式温度输入发送报文:[0000000000][06][01][03][002A][0000]

读第1路模拟量输入发送报文:[0000000000][06][01][03][0050][0000]

一次读2路模拟量输入发送报文:[0000000000][06][01][03][0046][0002]

一次读所有模拟量输入发送报文:[0000000000][06][01][03][0047][0000]

[00 00 00 00 00]:Modbus TCP报文头,简化为全0即可。使用组态软件时,自动设置。

[06]:剩余数据长度,说明整个报文还剩6个字节。使用组态软件时,自动设置。

[01]:子设备ID。Modbus TCP忽略。

[03]:Modbus TCP 功能码03

[0029]:寄存器地址,高位字节在前,低位字节在后。参考寄存器地址说明。[0000]:寄存器地址偏移,参考寄存器地址说明

读专用格式温湿度输入应答报文:[0000000000][08] [01][03][05] [<1025><2A3B><00>]

读标准格式温度输入应答报文:[0000000000][07][01][03][04][412828F4]

读第1路模拟量输入应答报文:[0000000000][07][01][03][04][00040879]

读2路模拟量输入应答报文:[0000000000][0B][01][03][08][000408C6][00079F2C]

读所有模拟量输入应答报文:

[0000000000][0F][01][03][0C][0004077D][00079FF4][00000773]

[00 00 00 00 00]:Modbus TCP报文头,简化为全0即可。使用组态软件时,自动设置。

[08]:剩余数据长度,此处说明还剩8个字节等待接收。使用组态软件时,自动设

置。0B还剩11个字节,0F还剩15个字节。

[01]:子设备ID。Modbus TCP忽略。

[03]:Modbus TCP 功能码03

[05]:结果数据长度,由发送报文的寄存器地址决定。例如,05为5个有效数据字节。04为4个字节,一个模数通道或标准浮点数(温湿度)值用4个字节,所以返回1个通道值用4个字节。08为2个通道模数值8个字节。

[<1025><2A3B><00>]、[412828F4]或[00040879]:温湿度或模数值。描述如下。

[<1025><2A3B><00>]:非标准格式温湿度值。<1025>第1个字节为温度整数,第2个字节为温度小数。温度整数为10,小数为25,温度值为:16.37摄氏度。<2A3B>第1个字节为湿度整数,第2个字节为湿度小数。湿度整数为2A,小数为3B,湿度值为42.56%。<00>传感器状态字节:0-传感器正常,温湿度值有效。其他值为传感器错误,温湿度值无效。

[412828F4]:温度、湿度、露点数据,Modbus浮点数格式。

[00040879]:模数采样结果值,Modbus 32位长整数据。

四、单独设置一个开关量/TTL输出状态

1.功能码、寄存器地址、偏移

功能码:05

地址:1E至1E加设备最大输出路数(0起),例如第1路为1E,第8路为25。地址偏移:此功能码不需要地址偏移。

控制数据:FF00-接通或为低电平,0000-断开或高电平

2.Modbus TCP格式(网口)

设置第8路输出为接通或TTL为低电平报文:

[00 00 00 00 00][06][01][05][0025][FF00]

[00 00 00 00 00]:Modbus TCP报文头,简化为全0即可。使用组态软件时,自动设置。

[06]:剩余数据长度,说明整个报文还剩6个字节。使用组态软件时,自动设置。

[01]:子设备ID。Modbus TCP忽略。

[05]:Modbus TCP 功能码05

[0025]:寄存器地址,高位字节在前,低位字节在后。第8路=1E+07=25

[FF00]:将第8路输出设置为接通或低电平。0000为断开或高电平。

如果设备正确执行了指令,将原样返回接收到的报文,应答报文:[00 00 00 00 00][06][01][05][0025][FF00]

五、设置多个开关量/TTL输出状态

1.功能码、寄存器地址、地址偏移

功能码:0F

地址:64

控制路数(地址偏移):1至最大路数的输出

2.Modbus TCP格式(网口)

设置全部8路输出为接通/设置TTL为低电平报文:

[0000000000][08][01][0F][0064][0008][01][FF]

[00 00 00 00 00]:Modbus TCP报文头,简化为全0即可。使用组态软件时,自动设置。

[08]:剩余数据长度,说明整个报文还剩8个字节。使用组态软件时,自动设置。

[01]:子设备ID。Modbus TCP忽略。

[0F]:Modbus TCP 功能码0F

[0064]:寄存器地址,高位字节在前,低位字节在后。

[0008]:同时设置8路输出状态。

[01]:控制数据字节个数

[FF]:控制数据字节,1个字节控制8路输出,字节中置1位对应的开关量输出将控制为接通或低电平状态。如bit0=1,Outuput1为接通或低电平状态。FF为设置所有8个通道全部接通或低电平状态。

如果设备正确执行了指令,将原样返回接收到的报文,应答报文:[0000000000][08][01][0F][0064][0008][01][FF]

六、读开关量输出状态

1.功能码、寄存器地址、偏移

此报文使用第一节的01功能码,地址不同。

功能码:01

地址:64 地址偏移:小于最大输出路数即可,建议为0000。

单独传感器标准MODBUS485通讯协议

A、读取数据(标准modbus协议) 地址默认为0x01,可以更改 1、读取数据 主机呼: 0103 00 0000 01 840A 从机答: 0103 02 XX XX XX XX 上面02,XX等均为一个字节。数据为两个字节,高位字节在前。每帧的开头和结尾至少有3。5个字节时间的间隔. 2。读设备地址 0020 CRC (4个字节)(读取:00 20 0068) 00 20 Adress CRC (5个字节) 3.写设备地址 00 10 Adress CRC (5个字节)(地址设为01:00 10 01 BD C0) 00 10CRC?(4个字节)(返回:00 1000 7C) 说明: 1.读写地址命令的地址位必须是00。 2。Adress为1个字节,范围为0-255。 用户在为主机编程时,除了站号(地址)和CRC校验码之外,其它字节的字符均采用上面的内容不变。主机格式中的读取点数为01。从机回答帧中的功能码(03)和读单元字节数(01)不变。

计算CRC码的步骤: 1、预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器; 2、把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器; 3、把寄存器的内容右移一位(朝低位),用0填补最高位,并检查右移后的移出位; 4、如果最低位为0:重复第3步(再次移位) 如果最低位为1:CRC寄存器与多项式A001(10100000 0000 0001)进行异或; 5、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; 6、重复步骤2到步骤5,进行下一步8位数据的处理; 7、最后得到的CRC寄存器即为CRC码; 8、将CRC结果放入信息帧时,将高低位交换,低位在前。 //************************************************************************************************ //**名称:CRC16 //**说明:CRC效验函数 //**形参:*p效验帧的指针帧长 datalen //**返回值:效验字 //************************************************************************************************ unsignedint CRC16(unsigned char * p, uint16 datalen ) { unsigned char CRC16Lo,CRC16Hi,CL,CH,SaveHi,SaveLo; int i,Flag; CRC16Lo =0xFF; CRC16Hi= 0xFF; CL = 0x01; CH= 0xA0; for(i=0;i>= 1 ; //高位右移一位,低位右移一位if ((SaveHi &0x01) ==0x01) //如果高位字节最后一位为1 CRC16Lo|=0x80 ; //则低位字节右移后前面补1否则自动补0 if ((SaveLo&0x01) ==0x01) //如果LSB为1,则与多项式码进行异或 { CRC16Hi^= CH;CRC16Lo ^= CL;} } }

万能协议转换器驱动驱动程序列表

D RIVER L IST FOR G3,D ATA S TATION P LUS AND M ODULAR C ONTROLLER Current as of April 2011 Ethernet Drivers ?: Port Forwarder ?: Raw TCP/IP Active ?: Raw TCP/IP Passive ?: Raw UDP/IP ?AC Tech: Simple Servo UDP ?Acromag: TCP/IP Master ?Adenus: Telnet Driver ?Allen-Bradley: DF1 Master ?Allen-Bradley: DF1 Master via PCCC/EIP ?Allen-Bradley: DF1 Slave ?Allen-Bradley: Encapsulated DF1 Master ?Allen-Bradley: Native Tag Addressing ?Allen-Bradley: Native Tags via L5K file ?Alstom: ALSPA TCP/IP Master via SRTP ?Alstom: GEM80 ESP TCP/IP Master ?BACnet: 802.3 Master ?BACnet: 802.3 Slave ?BACnet: UDP/IP Master ?BACnet: UDP/IP Slave ?Banner: PresencePLUS Data ?Banner: PresencePLUS Image* ?Beckhoff: ADS/AMS TCP ?Bristol Babcock BSAP: UDP Slave* ?Bristol Babcock BSAP: UDP ?CTI: 2500/2572 CAMP TCP/IP Master ?CTI: NITP TCP/IP Master ?EtherNet I/P: Slave Adapter ?EZ Automation: EZ TCP/IP Master ?Fatek: PLC ?Galil: TCP/IP Driver ?GE: TCP/IP Master via SRTP ?Honeywell: S9000 ?KEB: DIN66019II TCP/IP Master ?Maguire: MLAN TCP/IP ?Mitsubishi: A/Q/FX Series TCP/IP Master ?Mitsubishi: A/Q/FX Series UDP/IP Master ?Mitsubishi: FX2N Encapsulated TCP/IP Master ?Mitsubishi: Q Series TCP/IP Master ?Modbus: Device Gateway ?Modbus: Encapsulated Master ?Modbus: TCP/IP Master ?Modbus: TCP/IP Slave ?Omron: G9SP-Series via FINS ?Omron: Master via FINS ?Panasonic - Matsushita: FP Series - FP MEWTOCOL-COM TCP/IP Master ?Parker: Acroloop TCP/IP Master ?Parker: Compumotor 6K TCP/IP Master ?Phoenix Contact: nanoLC TCP ?PLC Direct Koyo: EBC UDP/IP Master ?PLC Direct Koyo: ECOM UDP/IP Master ?Schneider: PLC via Modbus TCP/IP ?Schneider - Telemecanique: TSX 57 TCP/IP Master* ?Siemens: S5 AS511 via TCP/IP Version 1.04 ?Siemens: S5 AS511 via TCP/IP Version 2.02 ?Siemens: S7 300/400 TCP/IP Master ?Siemens: S7 CP243 via ISO TCP/IP Master ?Siemens: TI 500 Series TCP/IP Master ?Toshiba: T2 PLC Master ?Toyoda: PUC TCP/IP ?Unitronics: PCOM ASCII TCP/IP Master ?Unitronics: PCOM Binary TCP/IP Master ?Yamaha: RCX Series TCP/IP Master ?Yaskawa: TCP/IP Master (Legacy Only) ?Yaskawa: TCP/IP Memobus Master ?Yaskawa: TCP/IP MP2000iec ?Yaskawa: TCP/IP Series 7 ?Yaskawa: TCP/IP Universal SMC Master ?Yokogawa: FA-M3 PLC TCP/IP Master

modbus协议及modbus_RTU的C51程序

查看完整版本: [-- modbus协议及modbus RTU的C51程序--] 电子工程师之家-> 51单片机论坛-> modbus协议及modbus RTU的C51程序[打印本页]登录-> 注册-> 回复主 题-> 发表主题 一线工人2007-11-15 21:44 modbus协议及modbus RTU的C51程序 完整的程序请下载[attachment=1488] Modbus通讯协议 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modbus 协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。 Modbus 协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。 下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU 协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。

ZNJC2 RS485通讯 modbus 协议

_ MODBUS 通讯协议说明 1. 通讯相关的参数 2.通讯说明 2.1 数据格式说明 控制器采用RS-485总线,协议符合ModBus 规约,数据格式有标准MODBUS-RTU 、 非标准MODBUS-RTU(16进制)和ASC(ASC Ⅱ码)3种格式。 数据传输均采用8位数据位、1位停止位、无奇偶校验位。波特率可设为2400、4800、9600和19200 bit/s 。 通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义与RTU 通讯规约相兼容: 2.2 非标准MODBUS-RTU(16进制)数据格式详细说明 下面以RTU(16进制)数据格式进行详细说明,ASC Ⅱ码数据格式只是把16进制代码 转换成ASC Ⅱ码字符。 地址码:这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。 功能码:通讯传送的第二个字节。ModBus 通讯规约定义功能号为01H 到7FH 。本控制器利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的

最高位 (比如功能码大于7FH),则表明从机没有响应操作或发送出错。 数据区:数据区是根据不同的功能码而不同。 CRC码:二字节的错误检测码。 当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。 2.2.2 信息帧格式: (1)地址码: 地址码是信息帧的第一字节(8位),从1到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的 从机才能响应回送。当从机回送信息时,相当的地址码表明该信息来自于何处。 (2)功能码: 主机发送的功能码告诉从机执行什么任务。表2列出的功能码都有具体的含义及操作。 (3 数据区包含需要从机执行什么动作或由从机采集的返送信息。这些信息可以是数值、参考地址等等。例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器 的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。 (4)错误校验码: 主机或从机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程 中出错的信息不起作用。这样增加了系统的安全和效率。错误校验采用CRC-16校验方法。 注: 信息帧的格式都基本相同:地址码、功能码、数据区和错误校验码。 2.2.3 错误校验 参与冗余循环码(CRC)计算的包括:地址码、功能码、数据区的字节。 冗余循环码包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的 CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。 CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。 在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一字节,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。 这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。 计算CRC码的步骤为: (1).预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器; (2).把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器; (3).把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位(注意:这时的最低位指移位前 的最低位,不是移位后的最低位); (4).如果最低位为0:重复第3步(再次移位)

Modbus RTU通讯协议

要实现Modbus RTU通信, 一、需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。 Modbus RTU从站指令库只支持CPU上的通信0口(Port0) 基本步骤: 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. 西门子编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用 MBUS_SLAVE,并指定相应参数。 关于参数的详细说明,可在子程序的局部变量表中找到; 调用Modbus RTU通信指令库图中参数意义如下: a. 模式选择:启动/停止Modbus,1=启动;0=停止 b. 从站地址:Modbus从站地址,取值1~247 c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200 d. 奇偶校验:0=无校验;1=奇校验;2=偶校验 e. 延时:附加字符间延时,缺省值为0 f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128, 缺省值为128 g. 最大AI字数:参与通信的最大AI通道数,可为16或32 h. 最大保持寄存器区:参与通信的V存储区字(VW) i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式) j. 初始化完成标志:成功初始化后置1

MODBUS协议(功能码及报文解析)

MODBUS协议 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。M odbus比其他通信协议使用的更广泛的主要原因有: 公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remote terminal unit (RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行[1]。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serial communication)方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP 变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。 Modbus 有一个扩展版本 Modbus Plus(Modbus+或者MB+),不过此协定是Modicon专有的,和 Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。 Modbus协议是一个 master/slave 架构的协议。有一个节点是master 节点,其他使用Modbus协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址 0例外,指定地址 0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个RTU改变

HS通讯协议转换模块

◆HSC-系列 1.1、HSC-DPM-通讯协议转换模块(Profibus-DP转Modbus) HSC-DPM用于 Profibus 现场总线与Modbus 设备之间交换数据,采用 Profibus 专用芯片,支持所有Profibus-dp 现场总线系统。 主要特点 ● 通讯 1 口:Profibus-DP 从站通讯方式,支持连接到 PLC、DCS、计算机等多种主站; ●通讯口 2:Modbus RTU/ASCII 主/从可选 ● Profibus-DP 通讯速率:9.6Kbps~6 Mbps 自适应波特率选择; ● Modbus 通讯速率:4.8Kbps~115.2bps 用户参数软件设置(Hsconfig); ● 连接从 Modbus 设备数量:最多 10 个; ● 交换数据:可选指定范围的交换数据量,具备通讯故障信息输出(占 1 个输入字); ●通讯回路相互隔离,隔离电压 1KV 且均带 TVS 防雷击、过流自恢复保险保护; ● 24VDC 输入电源极性保护。 HSC-DPM应用示意图 1.2、HSC-CAM (CAN 转MODBUS) 1.3、HSC-CCM(CC-LINK转MODBUS CAN 转MODBUS) 2、HSC-OTE (Profibus-dp/RS485) 电气接口转换光纤接口模块 用于Profibus/RS485 现场总线,将电气通讯接口转换为光纤通讯(单模、多模),提高分布式IO系统的抗干扰性能和通讯距离,支持Profibus-dp现场总线系统和普通 RS-485 的透明高速传输。

主要参数 ●多模 62.5/125um、50/125um 传输距离 0 ~ 4km ●单模 9/125、10/125、8.3/125um 传输距离 0 ~ 12km ●通讯速率 0~5MBps 可选 ●光纤接口 标配 ST 接头(可选配 SC、 FC 接头) ●通讯回路相互隔离,隔离电压 1KV 且均带 TVS 防雷击、过流自恢复保险保护; ●电源输入DC 9~30V 宽范围电源输入、防雷击和电源反接保护。 ●工作温度 -40 ~ + 85 ℃ HSC-OTE应用示意图 HSC-DPM和HSC-OTE尺寸图

什么是ModBusRTU通讯协议

什么是ModBusRTU通讯协议 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave 端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。 对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP 网络协议发送出去即可。 (一)、通讯传送方式: 通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义也与ModBusRTU通讯规约相兼容: 初始结构= ≥4字节的时间 地址码= 1 字节 功能码= 1 字节 数据区= N 字节 错误校检= 16位CRC码

MODBUS-RTU通讯协议简介

MODBUS-RTU通讯协议简介 2008-10-10 17:27 1.1 Modbus协议简述 ACRXXXE系列仪表使用的是Modbus-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。 Modbus协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。 1.2 查询—回应周期 1.2.1 查询 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。 1.2.2 回应 如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。 1.3 传输方式 传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与Modbus 协议– RTU方式相兼容的传输方式。 每个字节的位: · 1个起始位 · 8个数据位,最小的有效位先发送 ·无奇偶校验位 · 1个停止位 错误检测(Error checking):CRC(循环冗余校验) 1.4 协议 当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。 1.4.1 数据帧格式 Address Function Data Check 8-Bits 8-Bits N x 8-Bits 16-Bits 1.4.2 地址(Address)域 地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0~255,

RS485通信和Modbus协议实例分析

18.1 RS485通信 实际上在RS485之前RS232就已经诞生,但是RS232有几处不足的地方: 1、接口的信号电平值较高,达到十几V,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。 2、传输速率有局限,不可以过高,一般到几十Kb/s就到极限了。 3、接口使用信号线和GND与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。 4、传输距离有限,最多只能通信几十米。 5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。 针对RS232接口的不足,就不断出现了一些新的接口标准,RS485就是其中之一,他具备以下的特点:1、我们在讲A/D的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。而RS485就是一种差分通信方式,它的通信线路是两根,通常用A和B或者D+和D-来表示。逻辑“1”以两线之间的电压差为+(0.2~6)V表示,逻辑“0”以两线间的电压差为-(0.2~6)V来表示,是一种典型的差分通信。 2、RS485通信速度快,最大传输速度可以达到10Mb/s以上。 3、RS485内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。 4、传输距离最远可以达到1200米左右,但是他的传输速率和传输距离是成反比的,只有在100Kb/s 以下的传输速度,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。 5、可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。 RS485的接口非常简单,和RS232所使用的MAX232是类似的,只需要一个RS485转换器,就可以直接和我们单片机的UART串行接口连接起来,并且完全使用的是和UART一致的异步串行通信协议。但是由于RS485是差分通信,因此接收数据和发送数据是不能同时进行的,也就是说它是一种半双工通信。那我们如何判断什么时候发送,什么时候接收呢? RS485类的芯片很多,这节课我们以MAX485为例讲解RS485通信,如图18-1所示。 图18-1 MAX485硬件接口 MAX485是美信(Maxim)推出的一款常用RS485转换器。其中5脚和8脚是电源引脚,6脚和7脚就是485通信中的A和B两个引脚,而1脚和4脚分别接到我们单片机的RXD和TXD引脚上,直接使用单片机UART进行数据接收和发送。而2脚和3脚就是方向引脚了,其中2脚是低电平使能接

通信协议转换器介绍

目前在企业信息化、楼宇BAS、工控项目中监控设备种类繁多,系统联网中通信协议的多样化问题,越来越突出,已严重影响到自动化系统的性能、工期、成本和系统稳定,解决自动化系统通信协议的转换及通信标准化的问题意义重大。 PC-GATEWAY网关服务器的核心软件是一个脱离于具体硬件设备的接口通信服务平台,依据其开放的实时数据库,可以简化系统中异种协议的转换和系统联网过程,异种协议容易接入并可转换为标准协议(如OPC方式)并与其它系统联网。 PC-GATEWAY网关服务器运行软件可运行于桌面操作系统或嵌入式操作系统中,适用于电力自动化系统及工业自动化系统。可广泛应用于发电、变电、化工、石油、楼宇、水利、冶金、机械、交通、环保等领域的企业信息化项目中。 主要功能: ◆ 实时数据采集和处理,不但可以实现串口、以太网、现场总线物理层的通信协议转换、同时在数据链路协议层的通信协议也可以相互转换; ◆ 具备将非标准通信协议转化为标准通信协议的功能,具有开放性的OPC接口; 应用方式 ◆ 网络通信数据网关:支持SNMP协议的代理与服务,方便联网; ◆ 实时数据接口站:计量现场数据管理采集站; ◆ 楼宇IBMS系统设备集成网关:实现楼宇不同厂家设备与子系统连接; ◆ 电力数据通信网关:作为电力通信前置机实现规约转换;

PC-GATEWAY产品适用于不断更新且快速变化的数据及事件处理,能够以各种方式对数据库进行各种操作,包括:数据运算处理、历史数据存储、统计处理、报警处理、服务请求等。 PC-GATEWAY产品利用实时技术为实时数据库提供时间驱动调度和资源分配算法,针对不同的应用需求和特点,采用L树索引技术、专用的内存分配和管理方法、数据字典和结构化的设计,并采用了多线程和并行处理方式等技术。 通信协议转换部分 特点: ◆ 支持串口、以太网、现场总线等多种通信方式; ◆ 提供端到端的“协议转发”方案,灵活可扩展通信口多达32个; ◆ 支持故障容错,集高可靠性、可扩展性、灵活性于一体; ◆ 支持多转多的协议转换模式,方便不同系统共享相同数据; ◆ 高效稳定的软件内核,高速数据交换通道; ◆ 支持OPC方式数据转换; ◆ 对于不便公开的保密协议,用户可利用驱动开发包自行开发采集设备的驱动程序;

Modbus+RTU+标准通讯协议格式

HLP_SV Modbus RTU 标准通讯协议格式 通信资料格式 Address Function Data CRC check 8 bits 8 bits N×8bits 16bits 1)Address通讯地址:1-247 2)Function:命令码8-bit命令 01 读线圈状态 上位机发送数据格式: ADDRESS 01 ADDRH ADDRL NUMH NUML CRC 注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1);NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数) 正确时变频器返回数据格式: ADDRESS 01 BYTECOUNT DA TA1 DA TA2 DA TA3 DA TAN CRC 注: BYTECOUNT:读取的字数 错误时变频器返回数据格式: ADDRESS 0X81 Errornum CRC 注: Errornum为错误类型代码 如:要检测变频器的输出频率 应发送数据:01 01 00 30 00 10 3D C9(16进制) 变频器返回数据:01 01 02 00 20 B8 24(16进制) 发送数据:0030hex(线圈地址49) 返回的数据位为“0020”(16进制),高位与低位互换,为2000。即输出频率为 303(Max Ref)的50%。关于2000对应50%,具体见图1。

03读保持寄存器 上位机发送数据格式: ADDRESS 03 ADDRH ADDRL NUMH NUML CRC 注:ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数) ADDR=Parameter Numbe r×10-1 正确时变频器返回数据格式: ADDRESS 03 BYTECOUNT DA TA1 DA TA 2 DA TA 3 DA TAN CRC 注: BYTECOUNT:读取的字节数 错误时变频器返回数据格式: ADDRESS 0X83 Errornum CRC 如:要读变频器参数303的设定值 应发送数据:01 03 0B D5 00 02 95 BC (16进制) Parameter 303(3029)=0BD5HEX 变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B 返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000, 表示303设置值为60.000 ※当参数值为双字时,NUM的值必须等于2。否则无法读取或读取错误。 05 写单个线圈状态 上位机发送数据格式: ADDRESS 05ADDRH ADDRL DA TAH DA TAL CRC 注:ADDR: 0 ---- 0XFFFF(ADDR=线圈地址-1);DATA=0000HEX(OFF) OR FF00(ON) HEX 正确时变频器返回数据格式: ADDRESS 05 DATAH DATAL BYTECOUNT CRC 错误时变频器返回数据格式: ADDRESS 0X85 Errornum CRC 如:要使写参数为写入RAM和EEPROM 应发送数据:01 05 00 40 FF 00 CRC(16进制) 变频器返回数据:01 05 FF 00 00 01 CRC(16进制) 发送数据:0040hex(线圈地址65) 06 写单个保持寄存器值(只能写参数值为单个字的参数) 上位机发送数据格式: ADDRESS 06 ADDRH ADDRL DA TAH DA TAL CRC 注:ADDR: ADDR=Parameter Numbe r×10-1 正确时变频器返回数据格式: ADDRESS 06 ADDRH ADDRL DA TAH DA TAL CRC 错误时变频器返回数据: ADDRESS 0X86 Errornum CRC 如:要对变频器参数101写入1 应发送数据:01 06 00 03 F1 00 01 19 BD(16进制) 变频器返回数据:01 06 03 F1 00 01 19 BD(16进制) PARAMETER 101(1009)=03F1 HEX

RS485通信和Modbus协议

在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于 工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。除此之外,RS232接口只能实现点对点通信,不具备联网功能,最大传输距离也只能达到几十米,不能满足远距离通信要求。而RS485则解决了这些问题,数据信号采用差分传输方式,可以有效的解决共模干扰问题,最大距离可以到1200米,并且 允许多个收发设备接到同一条总线上。随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,本节课我们要讲解一下RS485通信和Modbus协议。 单单使用一块KST-51开发板是不能够进行RS485实验的,应很 多同学的要求,把这节课作为扩展课程讲一下,如果要做本课相关实验,需要自行购买USB转485通信模块。 18.1 RS485通信 实际上在RS485之前RS232就已经诞生,但是RS232有几处不足的地方: 1、接口的信号电平值较高,达到十几V,容易损坏接口电路的 芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。 2、传输速率有局限,不可以过高,一般到几十Kb/s就到极限了。 3、接口使用信号线和GND与其他设备形成共地模式的通信,这 种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。 4、传输距离有限,最多只能通信几十米。 5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。 针对RS232接口的不足,就不断出现了一些新的接口标准,RS485就是其中之一,他具备以下的特点: 1、我们在讲A/D的时候,讲过差分信号输入的概念,同时也介 绍了差分输入的好处,最大的优势是可以抑制共模干扰。尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。而RS485就是一种差分通信方式,它的通信线路是两根,通常用A和B或者D+和D-来表示。逻辑“1”以两线之间的电压差为+(0.2~6)V表示,逻辑“0”以两线间的电压差为 -(0.2~6)V来表示,是一种典型的差分通信。 2、RS485通信速度快,最大传输速度可以达到10Mb/s以上。 3、RS485内部的物理结构,采用的是平衡驱动器和差分接收器 的组合,抗干扰能力也大大增加。

MODBUS_RTU通讯协议

精品文档 . ?MODBUS通讯协议 使用手册

1. RTU 方式通讯协议 1.1. 硬件采用RS -485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。 1. 2. 数据帧10位,1个起始位,8个数据位,1个停止位,无校验。 波特率:9600;19200 38400 1.3. 功能码03H : 读寄存器值 主机发送: 第1字节 ADR : 从机地址码(=001~254) 第2字节 03H : 读寄存器值功能码 第3、4字节 : 要读的寄存器开始地址 要读FCC 下挂仪表, 第5、6字节 : 要读的寄存器数量 第7、8字节 : 从字节1到6的CRC16校验和 从机回送: 第1字节 ADR : 从机地址码(=001~254) 第2字节 03H : 返回读功能码 第3字节 : 从4到M (包括4及M )的字节总数 第4到M 字节 : 寄存器数据 第M +1、M+2字节 : 从字节1到M 的CRC16校验和 当从机接收错误时,从机回送: 第1字节 ADR : 从机地址码(=001~254) 第2字节 83H : 读寄存器值出错 第3字节 信息码 : 见信息码表 第4、5字节 : 从字节1到3的CRC16校验和 1.4. 功能码06H : 写单个寄存器值 主机发送:

当从机接收正确时,从机回送: 当从机接收错误时,从机回送: 第1字节 ADR :从机地址码(=001~254) 第2字节 86H :写寄存器值出错功能码 第3字节 错误数息码 : 见信息码表 第4、 5字节 : 从字节1到3的CRC16校验和 1.5. 功能码10H : 连续写多个寄存器值 当从机接收正确时,从机回送: 当从机接收错误时,从机回送: 第1字节 ADR : 从机地址码(=001~254) 第2字节 90H : 写寄存器值出错 第3字节 错误信息码 : 见信息码表

三菱FX3U 与ModbusRTU协议通讯

Modbus是Modicon公司为其PLC与主机之间的通讯而发明的串行通讯协议。其物理层采用RS232、485等异步串行标准。由于其开放性而被大量的PLC及RTU厂家采用。Modbus通讯方式采用主从方式的查询-相应机制,只有主站发出查询时,从站才能给出响应,从站不能主动发送数据。主站可以向某一个从站发出查询,也可以向所有从站广播信息。从站只响应单独发给它的查询,而不响应广播消息。MODBUS通讯协议有两种传送方式:RTU方式和ASCII方式。三菱700系列变频器能够从RS-485端子使用ModbusRTU 通讯协议,进行通讯运行和参数设定。 对象: 1. 三菱PLC:FX2N+FX2N-485-BD 2. 三菱变频器:F700系列,A700系列。 两者之间通过网线连接,具体参照下图。 FX2N-485-BD与n台变频器的连接图

一.三菱变频器的设置 PLC与变频器之间进行通讯时,通讯规格必须在变频器中进行设定,每次参数初始化设定后,需复位变频器或通断变频器电源。 参数号名称设定值说明 Pr331 通讯站号 1 设定变频器站号为1 Pr332 通讯速度 96 设定通讯速度为9600bps Pr334 奇偶校验停止位长 2 偶校验,停止位长1位 Pr539 通讯校验时间 9999 不进行通讯校验 Pr549 协议选择 1 ModbusRTU协议 Pr551 PU模式操作权选择 2 PU运行模式操作权作为PU接口进行ModbusRTU协议通讯时,Pr551必须设置为2,Pr340设置为除0以外的值,Pr79设置为0或2或6。通过RS-485端子进行ModbusRTU协议通讯时,必须在NET网络模式下运行。 一.三菱PLC的设置 对通讯格式D8120进行设置 D8120设置值为0C87,即数据长度为8位,偶校验停止位1位,波特率9600pbs,无标题符和终结符。 修改D8120设置后,确保通断PLC电源一次。 二.通讯程序 采用ModbusRTU协议与变频器通讯的部分PLC程序如下:

相关主题