当前位置:文档之家› M340与ATV31的Modbus串行通信(Modbus通信给定速度、数字量输出控制启停)_完全通信指导

M340与ATV31的Modbus串行通信(Modbus通信给定速度、数字量输出控制启停)_完全通信指导

M340与ATV31的Modbus串行通信(Modbus通信给定速度、数字量输出控制启停)_完全通信指导
M340与ATV31的Modbus串行通信(Modbus通信给定速度、数字量输出控制启停)_完全通信指导

M340与ATV31

Modbus串行通信向导<二> ——Modbus通信给定速度、数字量输出控制启停

本向导分为两部分:

1.《快速操作指南》---Know How, 满足了客户“快速解决调试问题”的需求。

●发送快---大小在2M左右,能方便快速地通过电子邮件发给客户使用

●调试快---提供了反复调试过的完整准确的PLC通信程序,客户可直接下载

●接线快---含有实物照片的通信接线图使客户非常容易理解和模仿,并且快速完成接线

●设置快---图形化的变频器参数设置指导使客户可直接上手设置参数,不用查找手册

2.《完全通信指导》---Know Why, 满足了客户“系统学习通信知识”的需求。

●知识全---不仅给出了详细的调试步骤和详细解释,还使客户在完成通信的同时系统学习相关

的产品和通信知识

●考虑全---对客户调试可能遇到的各种突发情况给出了相关提示和解决方法

●理解易---提供了程序指令和结构的详细注释,使客户能容易的理解和学习提供的标准程序并

能在原有程序上进行扩展

第二部分

完全通信指导

重要信息

注意:在尝试安装、操作或调试设备之前,请仔细阅读下述说明并通过查看来熟悉设备。下述特别信息可能会在文本其他地方或设备上出现,提示用户潜

在的危险和注意事项,或提供阐明或简化某一过程的信息。

遵守使用说明,可能导致调试失败、人身伤害甚至设备损坏。

此符号的注意事项,以避免不必要的调试错误。

目录

1.实验简介 (4)

2.硬软件环境 (4)

3. ATV31变频器设置 (5)

3.1 操作说明 (5)

3.2 参数设置 (6)

3.2.1 控制方式 (7)

3.2.2 通信参数 (10)

4. 硬件连接 (11)

4.1 M340与ATV31的Modbus连接 (11)

4.2 M340数字量输出模块与ATV31逻辑输入端子的连接 (12)

5. PLC编程 (13)

5.1硬件组态 (13)

5.1.1 组态CPU (13)

5.1.2 组态数字量输出模块 (14)

5.1.3 组态Modbus Master (15)

5.2 ATV31 Modbus变量说明 (16)

5.2.1 ATV31 Modbus内部字 (16)

5.2.2 ATV31 DRIVERCOM流程 (17)

5.3 通信功能块 (18)

5.3.1 连续读功能块READ_VAR (19)

5.3.2 连续写功能块WRITE_VAR (20)

5.4 编程 (21)

5.4.1 时间令牌设置 (21)

5.4.2 读写从站寄存器 (22)

5.4.3 DRIVERCOM流程 (23)

6. 实验调试 (24)

6.1 计算机与PLC的连接 (24)

6.2 软件调试 (25)

6.3 ATV31常见通信故障 (26)

7. 带多台变频器 (27)

7.1 硬件连接 (27)

7.1.1 分配器模块和RJ45连接器 (27)

7.1.2 接线盒方式 (27)

7.2 软件扩展 (28)

8. 附件 (30)

8.1 M340示例程序 (30)

8.2 ATV31的Modbus用户手册 (30)

8.3 ATV31编程手册 (30)

1.实验简介

PLC通过Modbus监控变频器的运行是工业中较常见的应用,本文以施耐德M340 PLC与ATV31变频器为例,简要介绍PLC与变频器之间Modbus串行通信的过程,包括硬件接线、变频器参数设置、硬软件组态、上电调试等,实现在PLC上远程控制ATV31变频器的故障初始化,启动/停止,正转/反转,频率给定等。

本文只介绍了M340通过Modbus通信远程控制,AO给定频率的应用,关于Modbus通信控制和端子控制混合使用的情况,以及其他施耐德PLC,如Premium,TWIDO,Quantum与ATV31的Modbus 串行通信,将在本书的其他文章中介绍。

2.硬软件环境

主要软件:

Unity Pro V3.1。Unity Pro是施耐德电气支持Quantum,Premium,M340的通用编程,调试和运行的软件包。

3. ATV31变频器设置

3.1 操作说明

ATV31的前面板说明如下:

ATV31操作面板

主要操作规则:

秒)可快速滚动浏览菜单;

存储选定项,长按ENT 键,当存储数值时,显示器会闪烁。

正常显示状态:

无故障出现和无起动时,正常显示有如下几种:

-频率:SUP -菜单中所选的参数的显示(缺省选项:加到电机上的输出频率)。在电流限制模式下,显示器会闪烁。 -init:初始化顺序 -rdY:变频器就绪

-dcb:直流注入制动正在进行 -nSt:自由停车 -FSt:快速停车

-tUn:正在进行自动整定

故障显示状态:

显示器闪烁指示出现的故障,故障的具体内容以及操作,请参照8.3《ATV31编程手册》的《故障-原因-解决方案》章节。

任何初始显示状态下,均可以按ENT 键

进入设置菜单。

ENT

ENT

3.2 参数设置

ATV31的主菜单如下,所有的参数均在主菜单的子目录里面进行设置。

3.2.1 控制方式

功能访问等级设置如下:

配置给定1设置如下:

混合控制模式设置如下:本例中控制启停和频率给定分别由端子和Modbus通信设定,所以控制模式设为SEP/分离。

配置通道给定1设置如下:设置为tEr/端子控制;tEr为出厂设置。

控制类型设为两线制2C:LI1闭合正向运行,断开停车。LIx闭合反向运行,断开停车。

禁止电机缺相故障设置如下:当变频器最小输出电流大于电机额定电流时需要禁止电机缺相故障。此处是否禁止,视用户测试的状况而定。

逻辑输入反转设置如下:设置逻辑输入LI2为变频器反转,出厂设置为LI2。用户根据需要可设置逻辑输入反转为LI2/LI3/LI4/LI5/LI6。

故障复位设置如下:逻辑输入故障复位设置为LI3。用户根据需要可设置逻辑输入反转为

LI2/LI3/LI4/LI5/LI6。

3.2.2 通信参数

通信速率设置如下:

通信格式设置如下;本例中将通信格式设置为8位数据位,偶校验,1位停止位,即8E1,与出厂设置相同;用户需根据实际需要进行设置。

4. 硬件连接

4.1 M340与ATV31的Modbus 连接

只需要一根标准的RJ45双绞线作为通信电缆即可,一端插入ATV31的Modbus 通信端口,另一端插入M340 CPU 上的串口,连接如下:

RJ45双绞线; 串口定义;

2

1

4.2 M340数字量输出模块与ATV31逻辑输入端子的连接

本例采用的M340 数字量输出模块为DDM16022的数字量输出DO 信号对变频器进行启停控制,之前3.2.1 控制方式中已经对ATV31变频器做了编程,分别如下: 正转开关-LI1;闭合正转,断开停止。 反转开关-LI2;闭合反转,断开停止。 故障复位-LI3;闭合后再断开故障复位。

ATV31的控制端子设置,以及与DDM16022的接线如下:

本文中的数字量输出模块DDM16022需要外供24VDC 电源,鉴于变频器的24VDC 电源功率限制,所以采用外接24VDC 电源。此时逻辑输入配置开关必须拨到CLI/悬空(中间位置)。

由于变频器的24VDC 电源功率较小,强烈建议用户不要使用变频器的24V 直流电源为PLC 的模块供电。

5. PLC编程

本例中的PLC组态和编程全部采用Unity Pro 3.1完成。Unity Pro是施耐德电气支持Quantum,Premium,M340的通用编程、调试和运行的软件包,

PLC编程主要包括硬件组态和软件编程两个部分。

5.1硬件组态

5.1.1 组态CPU

双击打开硬件组态

5.1.2 组态数字量输出模块

5.1.3 组态Modbus Master

双击打开

通信速率

PLC做主站

数据类型

停止位

校验位Modbus功能

设置完毕后点击确认按钮

5.2 ATV31 Modbus变量说明

在M340 PLC中编写程序,将变频器的内部变量用功能块Read_var/Write_var映射到本地寄存器,通过对本地寄存器进行读写,来完成对变频器的监控。

5.2.1 ATV31 Modbus内部字

对ATV31变频器实现Modbus通信控制的状态字和控制字说明如下:

5.2.2 ATV31 DRIVERCOM流程

变频器的内部操作遵循DRIVERCOM流程,见下图:

5.3 通信功能块

在M340中用梯形图指令READ_VAR/WRITE_VAR对变频器的Modbus寄存器进行读写。

Language Extended页面中的Directly represented array variables和Allow dynamic arrays

将Directly represented array variables和

Allow dynamic arrays打勾

5.3.1 连续读功能块READ_VAR

输入助手

读取数据接收区

通信报告区

5.3.2 连续写功能块WRITE_VAR

对Read_var/Write_var功能块的详细说明,参见8.4 Unity Pro的通信块库中的read_var/write_var章节。

modbus_通讯协议_实例

上海安标电子有限公司 ——PC39A接地电阻仪通信协议 通信协议: 波特率:9600数据位:8校验位:无停止位:1 上位机(计算机): 字节号 1 2 3 4 5 6 7 8 意义ID Command 数据地址V alue CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,读:3或4,写:6 3 数据地址:2个字节,寄存器地址,读从100开始,写从200开始 4 V alue:2个字节,读:个数(以整型为单位),写:命令/ 数据(以整型为单位) 5 CRC:计算出CRC 下位机(PC39A): 读数据,若正确 字节号 1 2 3 3+N (N=个数*2) 3+N+1 3+N+2 意义ID Command=3 / 4 数据个数数据CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,收到的上位机命令 3数据个数:1个字节,返回数据个数(以字节为单位) 4 V alue:N个字节,是返回上位机的数据 5 CRC:计算出CRC 写命令,若正确 返回收到的数据: 若错误 字节号 1 2 3 4 5 意义ID Command 数据CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,收到的上位机命令或上0x80, 如收到3,返回0x83 3数据:1个字节,错误的指令 错误指令 1:表示command不存在 2:表示数据地址超限 4 CRC:计算出CRC

例如读PC39A 电流数据: 机器地址为12,电流的数据地址100,数据为15.45(A) (一个整型数据) 主机: ID Command 数据地址 V alue CRC 16进制 0x0c 0x03 0x0064 0x0001 CRC_H CRC_L 10进制 12 3 100 1 CRC_H CRC_L 从机返回 如正确: ID Command 数据个数(以字节为单位) V alue CRC 16进制 0x0c 0x03 0x002 0x0609 CRC_H CRC_L 10进制 12 3 2 1545 CRC_H CRC_L 如错误: ID Command 数据 CRC 16进制 0x0c 0x83 0x02 CRC_H CRC_L 10进制 12 131 2 CRC_H CRC_L 例如发PC39A 启动命令: 机器地址为12,命令的地址200,数据为25000(25000表示启动) 主机: ID Command 数据地址 V alue CRC 16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L 10进制 12 6 200 25000 CRC_H CRC_L 从机返回 如正确: ID Command 数据地址 V alue CRC 16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L 10进制 12 6 200 25000 CRC_H CRC_L 如错误: ID Command 数据 CRC 16进制 0x0c 0x86 0x02 CRC_H CRC_L 10进制 12 134 2 CRC_H CRC_L 0011 10000110 错误码0x83 功能码0x06错误码0x86

Modbus RTU相关常识和通信示例

Modbus RTU –基本功能 1 关于ModBus ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。 1.1 报文结构 以串行数据传输为基础,通过一位接着一位进行传送。 1.2协议数据单元(PDU) 1.2.1 Modbus PDU(协议数据单元)由功能码和实际数据两部分组成。 1.2.2 Modbus 串行通讯的消息帧 站号(站地址) 站号字段为1字节长,可能选择0~247站点。 选择0 地址表示选择所有的子机站,代表广播消息的意思。 FC(RTU功能代码) FC字段为1字节长,用以下所示的0~255的值进行定义。带有网格部分表示使用的FC。请不要使用未使用的FC。否则会成为异常应答。常用ModBus的功能码FC定义如下: 01 READ COIL STATUS 01 读取线圈状态 02 READ INPUT STATUS 02 读取离散量输入。 03 READ HOLDING REGISTER 03 读取保持寄存器。 04 READ INPUT REGISTER 04 读取输入寄存器。 05 WRITE SINGLE COIL 05 强置单线圈。 06 WRITE SINGLE REGISTER 06 预置单寄存器 15 WRITE MULTIPLE COIL 07 15 强置多线圈。 16 WRITE MULTIPLE REGISTER 16 预置多寄存器 数据区 数据字段包含所有的信息(功能代码(地址)、字节计数、数据数、数据等)。有关各消息类型(广播、查询、正常应答、异常应答) 的信息字段的详细情况; CRC校验

单独传感器标准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;} } }

modbus协议

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 modbus协议 甲方:___________________ 乙方:___________________ 日期:___________________

1 . MODBUS 规约 MODBUS规约是MODICOM 公司开发的一个为很多厂商支持的开放规约 Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通 信的。它描述了控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样 侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 标准的Modbus 口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号 位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。 控制器通信使用主一从技术,即仅设备(主设备)能初始化传输(查询)。其它设备(区设备)根据主设备查询提供的数据做出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。 主设备可单独和从设备通信, 也能以广播方式和所有从设备通信。如果单独通信,从设住回消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了匕 设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。 从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回 的数据、和错误检测域。如果在消息接收过程中发生错误,或从设备不能执行其 命令,从设备将建立错误消息并把它作为回应发送出去。 在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。 这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可 允许同时发生的传输进程。 在消息位,Modbus协议仍提供了主一从原则,尽管网络通信方法是“对等”。

Modbus 通讯协议的原理和标准

Modbus 通讯协议的原理和标准 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus 就是工业控制器的网络协议中的一种。 一、Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus 网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus 协议发出。在其它网络上,包含了Modbus 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus 网络上转输 标准的Modbus 口是使用一RS-232C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem 组网。 控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据做出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。 主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus 协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。 从设备回应消息也由Modbus 协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 2、在其它类型网络上转输 在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。 在消息位,Modbus 协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。 3、查询—回应周期 (1)查询 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03 是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。

基于Modbus协议实现单片机与PLC之间的通讯

基于Modbus协议实现单片机与PLC之间的通讯 来源:PLC&FA 作者:蔡晓燕赵兴群万遂人董鹏云 关键词:可编程控制器 Modbus 通讯协议 1 引言 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机[1]作为其核心控制器,以实现实时快速处理。PLC和单片机结合不仅可以提PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。 2 Modbus通讯协议[4] Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。 Modbus协议提供了主—从原则,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。主设备查询的格式:设备地址(或广播,此时不需要回应)、功能代码、所有要发送的数据、和一错误检测域。从设备回应消息包括确认地址、功能码、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 控制器能设置为两种传输模式:ASCII和RTU,在同样的波特率下,RTU可比ASCII方式传送更多的数据,所以采用KTU模式。 (1) 典型的RTU消息帧 典型的RTU消息帧如表1所示。

RTU消息帧的地址域包含8bit。可能的从设备地址是0...127(十进制)。其中地址0是用作广播地址,以使所有的从设备都能认识。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。 RTU消息帧中的功能代码域包含了8bits,当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为;当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应,一般是将功能码的最高位由0改为1)。 从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代 码所定义的行为。这包括了像不连续的寄存器地址,要处理项的数目,域中实际数据字节数。如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。 当选用RTU模式作字符帧时,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测(CRC)方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。 (2) 所有的Modbus功能码 Modbus的功能码定义如表2所示。

Modbus协议中文版(比较完善)

GB/T ××××—×××× 前言 -----------串行链路和TCP/IP上的MODBUS标准介绍 该标准包括两个通信规程中使用的MODBUS应用层协议和服务规范: ·串行链路上的MODBUS MODBUS串行链路取决于TIA/EIA标准:232-F和485-A。 ·TCP/IP上的MODBUS MODBUS TCP/IP取决于IETF标准:RFC793和RFC791有关。 串行链路和TCP/IP上的MODBUS是根据相应ISO层模型说明的两个通信规程。 下图强调指出了该标准的主要部分。绿色方框表示规范。灰色方框表示已有的国际标准(TIA/EIA和IETF标准)。 Modbus 协议规范 45页 MODBUS应用层MODBUS报文传输在TCP/IP 上的实现指南49页 在TCP/IP上的MODBUS映射 TCP IETF RFC 793 MODBUS报文IP IETF RFC 791 传输在串行链路 上的实现指南 45页 串行链路主站/从站以太网II/802.3 IEEE 802.2 TIA/EIA-232-F TIA/EI A-485-A 以太网物理层 MODBUS标准分为三部分。第一部分(“Modbus协议规范”)描述了MODBUS事物处理。第二部分(“MODBUS报文传输在TCP/IP上的实现指南”)提供了一个有助于开发者实现TCP/IP上的MODBUS应用层的参考信息。第三部分(“MODBUS报文传 输在串行链路上的实现指南”)提供了一个有助于开发者实现串行链路上的MODBUS 应用层的参考信息。

GB/T ××××—××××第一部分:Modbus协议 1

Modbus标准通讯协议格式

Modbus通讯协议 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网络协议发送出去即可。所以在这里我仅介绍一下

用VB实现Modbus RTU串行通讯工程实例

用VB实现Modbus RTU串行通讯工程实例 声明:网上看到的,觉得不错,稍微整理了一下分享给大家。 用VB实现Modbus RTU串行通讯 在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus 协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和Twido PLC间的通讯进行说明。 对于大部分应用,Twido PLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。 VB程序通过利用MSComm控件很容易就能够实现。 1.通讯口初始化: MSComm1.Settings = "9600,n,8,1" https://www.doczj.com/doc/9814001640.html,mPort = 1 MSComm1.SThreshold = 0 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True 2. CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字符串的CRC校验码。 Function crc16_1(ByRef cmdstring() As Byte, ByVal j As Integer) Dim data As Integer Dim i As Integer Addressreg_crc = &HFFFF For i = 0 To j Addressreg_crc = Addressreg_crc Xor cmdstring(i) For j = 0 To 7 data = Addressreg_crc And &H1

MODBUS协议解析

MODBUS协议解析 Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。目前,可以通过下列三种方式实现Modbus通信: 以太网上的TCP/IP; 各种介质(有线:EIA/TIA-232-F、EIA-422、EIA/TIA-485-A;光纤、无线等)上的异步串行传输; Modbus PLUS,一种高速令牌传递网络。 作为中国国家标准的“基于Modbus协议的工业自动化网络规范”在描述Modbus应用协议的基础上,提供了Modbus应用协议在串行链路和TCP/IP上的实现指南。 Modbus 通信线 Modbus数据单元 Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU),特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。启动Modbus事务处理的客户机创建Modbus PDU,其中的功能码向服务器指示将执行哪种操作,功能码后面是含有请求和响应参数的数据域。 通用Modbus帧 当Modbus应用在串行链路上时,Modbus ADU的地址域只含有从站地址,而差错校验码是根据报文内容执行“冗余校验”计算的结果,根据使用的传输模式(RTU或ASCII)采用不同的计算方法。 串行链路上的Modbus帧 当Modbus应用在TCP/IP上时,将使用一种专用报文头——MBAP报文头(Modbus应用协议报文头)来识别Modbus应用数据单元。 TCP/IP上的Modbus帧

Modbus标准功能码 Modbus协议定义了三种功能码: 公共功能码:被确切定义的、唯一的功能码,由Modbus-IDA组织确认、可进行一致性测试且已在MB IETF RFC中归档 用户定义的功能码:用户无需Modbus-IDA组织的任何批准就可以选择和实现的功能码,但是不能保证被选功能码的使用是唯一的 保留功能码:某些公司在传统产品上现行使用的功能码,不作为公共使用。 公共功能码定义如下表所示。 Modbus通信原理 Modbus是一种简单的客户机/服务器型应用协议,其通信遵循以下的过程: 客户端准备请求并向服务器发送请求; 服务器分析并处理客户端的请求,然后向客户端发送结果; 如果出现任何差错,服务器将返回一个异常功能码。 Modbus事务处理 统一的标准 Modbus串行链路、Modbus PLUS和Modbus TCP/IP使用的是一种统一的应用协议,因而使得信息从一个网络传输到另一个网络而不需改变通讯协议成为了可能。 当Modbus在TCP/IP上实施时,用户还可以从IP路由功能中得益,使得分布于世界任何地方的设备之间都可以进行通讯。施耐德电气还提供了全套的网关,用于实现Modbus TCP/IP网络与现有的Modbus PLUS 或Modbus串行链路网络之间的互连。 IANA委员会给施耐德电气公司分配了已为大家熟知的TCP 502端口,以专为Modbus协议保留。由此可见,Modbus协议现在已经成为Internet标准。Modbus和Modbus TCP/IP 也被IEC 61158国际标准承认为一种现场总线,同时它们还是由ITEI管理的中国国家标准。 Modbus拥有著名的TCP端口502 Modbus TCP/IP是唯一个被分配到互联网端口的工业以太网专题">工业以太网协议! 23 -Telnet 远程登录协议 21 -FTP 文件传输协议 161 -SNMP 简单网络管理协议 25 -SMTP 简单邮件传输协议 53 -DNS 域名解析服务

(完整版)MODBUS通讯协议-RTU要点

Modbus 通讯协议 (RTU传输模式)本说明仅做内部参考,详细请参阅英文版本。

第一章Modbus协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。 1.1 传输方式 传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以RTU 模式在Modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,每个信息必须连续传输下面定义了与Modebus 协议– RTU方式相兼容的传输方式。 代码系统 ?8位二进制,十六进制数0...9,A...F ?消息中的每个8位域都是一个两个十六进制字符组成 每个字节的位 ?1个起始位 ?8个数据位,最小的有效位先发送 ?1个奇偶校验位,无校验则无 ?1个停止位(有校验时),2个Bit(无校验时) 错误检测域 ?CRC(循环冗长检测)

PLC的MODBUS通信实例

PLC的MODBUS通信实例 随着工业时代的发展,工业自动化控制已进入网络时代,工业控制器连网也为网络管理提供了方便。MODBUS通信就是工业控制器的网络协议中的一种。 关键词:MOBUS通信协议,RS485,奥越信CPU,程序设计 一、MODBUS 简介 MODBUS是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。当现代的控制领域持续不断的产生和应用诸如现场总线和网状网络等先进概念的时候,MODBUS的简单性以及它的便于在许多通讯媒介上实施 应用的特点一直使它受到最广泛的支持,并且成为全球应用最广泛的工业协议。通过此协议,控制器经由网络(例如以太网)和其它设备之间可以通信,此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC、DCS、变频器、智能仪表等都 在使用MODBUS协议作为他们之间的通讯标准,它可应用于各种数据采集和过程监控。 二、MODBUS协议库 1、使用MOBUS协议的部分要求 A、初始化MODBUS从站协议占用PortO作为MODBUS从站协议通信,MODBUS从站协议只支持端口0通信,所以选择奥越信的双通信的CPU,可以把Port1作为编程通信口,以便于调试;如果只有单通信口的话,可把CPU打到STOP模式在编程。 B、MODBUS从站协议指令的变量要求799字节的V区域,该区域的起始地址由用户指定,保留给MODBUS使用,程序中不可以使用库存储区占用的地址。 C、可参照S7-200编程手册中了解MODBUS指令的设置与编写。 2、MODBUS协议允许在各种网络体系结构内进行简单通信。如图所示:

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

很好的威纶通MODBUSRTU通讯协议与变频器通讯案例

很好的威纶通 M O D B U S R T U通讯协议与变频器通讯案例 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

本文研究的是触摸屏通过MODBUS RTU通讯协议与变频器通讯实现变频器的控制。触摸屏采用威纶通TK6070IP,变频器用汇川MD380通用系列。通过触摸屏编程软件,编辑控制画面实现变频器的启动、停止、速度调节、多段速速度设置,通过宏指令实现工程值与实际值的转换。 一、MODBUS RTU 简介: 为了在自动化系统之间、自动化系统和所连接的分散的现场设备之间进行信息交换,如今串行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技术,可以节省多至40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设备的所有相关信息,比如输入和输出数据、参数、诊断数据。过去使用的现场总线往往是制造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和标准化的。这就意味者用户可以以最合理的价格选择最好的产品,而不用依赖于每个独立的制造商。Modbus RTU是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总线协议,在全世界范围内,Modbus得到了成功的应用。应用领域包括生产过程中的自动化、过程控制和楼宇自控。MODBUS RTU通讯协议的报文如图1。 图1 MODBUS RTU 通讯协议的报文功能码如下: 01H 读取线圈状态。从执行机构上读取线圈(单个位)的内容; 02H 读取离散量输入。从执行机构上读取离散量输入(多个位)的内容; 03H 读取保持寄存器。从执行机构上读取保持寄存器(16位字)的内容; 04H 读取输入寄存器。从执行机构上读取输入寄存器(16位字)的内容; 05H 强置单线圈。写数据到执行机构的线圈(单个位)为“通”(“1”)或“断”(“0”); 06H 预置单寄存器。写数据到执行机构的单个保持寄存器(16位字); 0FH 强置多线圈。写数据到执行机构的几个连续线圈(单个位)为“通”(“1”) 或“断”(“0”); 10H 预置多寄存器。写数据到执行机构的几个连续的保持寄存器(16位字)。 二、威纶通编程软件介绍: EB8000软件中MODBUS协议的设备类型为0x、1x、3x、4x、5x、6x,还有 3x_bit,4x_bit,6x_bit,0x_multi_coils等,下面分别说明这些设备类型在MODBUS协议中支持哪些功能码。 0x:是一个可读可写的设备类型,相当于操作PLC的输出点。该设备类型读取位状态的时候,发出的功能码是01H,写位状态的时候发出的功能码是05H。写多个寄存器时发出的功能码是0fH。

西门子S7200与变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解 西门子S7200PLC简介 西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。来自西门子的S7 - 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。 Modbus通讯协议简介 Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。 ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。 ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。 1 MODBUS RTU协议在S7-200中的应用原理 1.1 MODBUS RTU协议与S7-200相互关系简介 S7-200 CPU上的通讯口Port0可以支持MODBUS RTU协议,成为MODBUS RTU从站。此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。 想在S7-200 CPU与其他支持MODBUS RTU的设备使用MODBUS RTU协议通讯,需要由有S7-200 CPU做MODBUS主站。S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。 2 从站指令的用法: S7-200控制系统应用中,MODBUS RTU从站指令库只支持CPU上的通讯0口(Port0)。要

modbus协议下上位机编程实例

竭诚为您提供优质文档/双击可除modbus协议下上位机编程实例 篇一:modbus协议下的上位机地址 Rs485采取流量计数据,经串口com1的2号地址读到int ouch中来,双字40001、40002为浮点型瞬时流量,读到上位机项目为40001F双字40004、40005为长整型累计流量,读到上位机项目为40004l 驱动设置与intouch标记名的设置 驱动设置: 项目名设置 注:在不修改驱动设置的情况下,s=s1+s2*65535 s=s2+s1*65535 根据各个厂家的仪表,上面工式有区别,设计时各个测试一下。 篇二:modbus通讯协议实例 上海安标电子有限公司 ——pc39a接地电阻仪通信协议 通信协议:

波特率:9600数据位:8校验位:无停止位:1 上位机(计算机): 注:1id:1个字节,由单机来定(0~255) 2command:1个字节,读:3或4,写:6 3数据地址:2个字节,寄存器地址,读从100开始,写从200开始4Value:2个字节,读:个数(以整型为单位),写:命令/数据(以整型为单位)5cRc:计算出cRc下位机(pc39a ):注:1id:1个字节,由单机来定(0~255) 2command:1个字节,收到的上位机命令 3数据个数:1个字节,返回数据个数(以字节为单位)4Value:n个字节,是返回上位机的数据5cRc:计算出cRc 写命令,若正确返回收到的数据:若错误注:1id:1个字节,由单机来定(0~255) 2command:1个字节,收到的上位机命令或上0x80, 如收到3,返回0x83 3数据:1个字节,错误的指令错误指令 1:表示command不存在2:表示数据地址超限 4cRc:计算出cRc 例如读pc39a电流数据: 机器地址为12,电流的数据地址100,数据为15.45(a)(一个整型数据)

S7-200实现Modbus通信范例(绝对精华)

说明: 使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。 这个例子是关于Modbus功能码6的(写从站保持寄存器),也可以作为其他所支持的功能码:1, 2, 3, 4, 5, 15 和16 的基本参数设置步骤。 要求: 要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库。 Modbus主站协议只支持STEP 7 Micro/Win V4.0 SP5及其以上版本.。 1. 硬件设置 2. 参数匹配 3. 指令库的存储地址 4. 保持寄存器值得传输 1. 硬件设置 例程中的Modbus通讯是在两个S7-200 CPU的0号通讯口间进行的(最好每个CPU 都有两个通讯口)。在主站侧也可以选择相应库文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通过1号通讯口通信。通讯口1与Micro/WIN建立PG或PC连接,两个CPU的通讯口0通过PPI电缆进行连接(电缆的针脚连接为2,3,7,8)。

图. 01 2. 参数匹配 对于MODBUS通讯, 主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG", 从站侧需要程序库 "MBUS_INIT" and "MBUS_SLAVE"。 在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。 必须要保证主站与从站的“Baud”和"Parity"的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致 (见图. 02)。 Micro/WIN“系统块”中设置的0通讯口的波特率与MODBUS协议无关("Mode" = "1")。 图. 02 下面的表格列出了程序块各个参数选项及其意义 主站

相关主题
文本预览
相关文档 最新文档