H2U的modbus通讯标准测试流程
- 格式:pdf
- 大小:170.05 KB
- 文档页数:6
H2U PLC 采用Modbus 通讯的标准流程文档目的目的::H2UPLC 与第三方设备通过Modbus RTU 方式实现通讯。
方法方法::1、 H2U 通过设置RS modbus RTU 主站模式;2、 第三方设备设置通讯波特率,数据位,停止位,校验位;3、 了解第三方设备支持的Modbus 通讯功能码,了解第三方Modbus 寄存器地址; 工具工具::1、 自发自收串口模块;2、RS232转RS485模块(无源的即可); 2、 Modscan 软件(需要包含Modsim 功能) 具体步骤具体步骤::1、 首先确认电脑自带的RS232口是正常的。
a) 通过自发自收模块;b) 通过电脑与第三方确定的串口设备测试(比如下载PLC 程序) 2、 使用Autoshop 编写通讯指令,设定COM1(鉴于COM0在使用RS485需要断开JP0,与下载程序冲突,此处仅以COM1为例)为modbus RTU 主站模式。
a) 参考手册《《H2U 系列PLC 指令及编程手册V1.00》Modbus 章节。
简要可参照如下: 物理端口图物理端口图::COM1:支持Modbus RTU 从站;或者Modbus ASC 从站协议 也支持Modbus RTU 主站,或者Modbus ASC 主站协议Modbus RTU 或者A SC 从站编程从站编程客户需要在单片机内编写Modbus RTU 或者ASC 的从站协议(具体协议编写规则请见附件MOBUS 协议的文档)H2UPLC 支持Modbus 协议功能码:0x01,0x03, 0x05, 0x06, 0x10;可以读写的线圈为:M,S,T,C,X(只读),Y 等变量;寄存器为:D,T,C。
各变量的Modbus 地址:主站编程实现:COM1的Modbus RTU或者ASC主站编程实现D8126=20H(RTU模式),若ACS则设定为30H,此处以Modbus RTU为例设定通讯格式:数据位,停止位,校验,波特率;D8120设定通讯格式如设定:波特率:9600;停止位:2位;无校验;8位数据位;则D8120=10001001 如设定B=89 H;设定第三方设备的从站地址:比如34(为0~255之间,一般请不要设为0)例子程序例子程序::程序指令说明:例子程序例子程序:: 写寄存器写寄存器::读寄存器读寄存器RS 指令可以同时使用多次,而不必关心发送接收切换,此处汇川底层已经做了协调。
MODBUS-RTU串⾏链路通信协议及测试⽅法1 前⾔MODBUS是⼀项应⽤层报⽂传输协议,是⼀个请求/应答协议,提供功能码规定的服务,⽤于在通过不同类型的总线或⽹络连接的设备之间的客户机/服务器通信。
Modbus 串⾏链路系统可以使⽤异步串⾏链路(EIA/TIA-232-E、EIA-422、EIA/TIA-485-A等)进⾏通信。
本⽂介绍如何使⽤格西烽⽕通信测试软件编写测试项⽬,进⾏调试和测试Modbus通信节点。
2 通信协议2.1 术语MODBUS通信协议MODBUS是OSI 模型第7层上的应⽤层报⽂传输协议,它在连接⾄不同类型总线或⽹络的设备之间提供客户机/服务器通信。
2.2 通信接⼝⽀持EIA/TIA-232-E、EIA-422、EIA/TIA-485-A等串⾏接⼝,⽀持多点连接,要求9600bps,推荐19200bps,选择实现1200bps,2400bps,4800bp等其他速率。
2.3 数据链路层Modbus串⾏链路协议是⼀个主-从协议。
在同⼀时刻,只有⼀个主节点连接于总线,⼀个或多个⼦节点连接于同⼀个串⾏总线。
Modbus通信总是由主节点发起。
⼦节点在没有收到来⾃主节点的请求时,从不会发送数据。
⼦节点之间从不会互相通信。
主节点在同⼀时刻只会发起⼀个Modbus事务处理。
主节点以两种模式对⼦节点发出Modbus请求。
单播模式:主节点以特定地址访问某个⼦节点,⼦节点接到并处理完请求后,⼦节点向主节点返回⼀个报⽂(⼀个应答)。
在这种模式,⼀个Modbus事务处理包含 2 个报⽂,⼀个来⾃主节点的请求,⼀个来⾃⼦节点的应答。
⼴播模式:主节点向所有的⼦节点发送请求。
对于主节点⼴播的请求没有应答返回。
⼴播请求⼀般⽤于写命令。
所有设备必须接受⼴播模式的写功能。
地址0是专门⽤于表⽰⼴播数据的。
2.3.1 帧格式Modbus应⽤协议定义了简单的独⽴于其下⾯通信层的协议数据单元(PDU-Protocol Data Unit)。
Modbus通讯注意事项及测试经常看到有很多同学在做Modbus通讯时,不知道如何设置参数,同时,如果通讯失败后,如何判断失败原因。
本文将重点介绍Modbus通讯的几个常见注意事项、通讯超时时间计算及常用的Modbus通讯测试工具。
很多同学在做Modbus通讯时,需要连续读取多个现场设备的数据,虽然也编写了Modbus轮询的程序,但是有时还是无法正常通讯。
有时虽然能够保证通讯,但是所有现场设备的轮询周期很长。
本文将从MBUS_CTRL的超时时间参数设置来说明超时时间设置的重要性。
一、通讯地址设定利用Modbus协议可以实现设备间的数据交换。
Modbus通讯理论上支持4种Modicon PLC地址,即0*、1*、3* 和4*四种,分别表示开出(中间线圈)、开入、模入、模出(中间寄存器)等数据地址。
与西门子或其它设备中的开入、开出、模入、模出地址完全不对应。
可以理解为0*和1*对应位地址的读写操作,3* 和4*字地址的读写操作。
此处0*、1*、3* 和4*表示长度有的为5位数字、有的为6位,其实和Modbus通讯无关,只是和软件的表示方式有关。
按照Modbus通讯时最常用的是RTU读请求格式:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)可见,只需设置起始从站数据区起始地址和通讯长度即可。
特别注意,Modbus地址遵从IEC1的地址标准(最小地址为*1),西门子遵从IEC0的标准(最小地址为0,如M0.0)。
因此,不同标准的地址做通讯时需要做地址变换,即加1的操作。
二、通讯故障诊断在做Modbus通讯时经常会出现通讯失败的现象,如果判断是程序问题还是别的问题,其实完全可以利用常见的Modbus测试软件来判断。
常见的Modbus测试软件有Modscan和Modsim。
也可以使用常见的串口调试工具软件,如SSCOM42等。
其中Modscan软件可以读取Modbus从站的数据,如果利用Modscan软件可以建立连接,但是设备间直连后无法通讯,问题可以在RS485极化、主站上。
关于H2U与MD280通讯的编程说明关于H2U与MD280通讯的编程说明 (1)使用MD280通讯功能的要点说明 (1)通讯信号线的连接方法 (2)MD280应用MODBUS协议的参数约定 (2)H2U与MD280通讯举例 (6)使用MD280通讯功能的要点说明1.汇川的MD280、MD320变频器采用的是MODBUS-RTU协议,H2U系列PLC内部自带MODBUS-RTU协议,而且是准备好通讯数据后,一个指令就可以实现通讯,这与三菱的编程方法是不同的。
2.MD280变频器的命令源(即启动、停止的命令输入口)有三个:面板、输入端子、通讯口,由功能码F0-00决定,出厂时默认为0,即“面板”的RUN和STOP按键决定。
若需要用通讯端口作起停控制,需改F0-00=2,可以在面板上改,也可以用通讯方法改。
3.MD280变频器的运行频率,更有11个来源可供选则,由功能码F0-01决定,若要设定成由通讯控制,需改F0-01=8,可以在面板上改,也可以用通讯方法改。
注意,下发的“频率值”并不是以0.01Hz为量纲的数据,而是相对于“最大频率”(F0-04)的百分值,K10000为满刻度,需要折算一下,例如变频器最大频率为50.00Hz,希望以40.00Hz运行,需要发送的数据为40.00×K10000/50.00=K8000。
4.MD280变频器在出厂时,或作过功能码初始化操作后,通讯相关的几项设置是:●通讯波特率:FA-00=5,即9600bps●数据格式:FA-01=0,即无校验●通讯地址(本机站号):FA-02=1,即#1●因为是MODBUS-RTU协议,默认为8位数据位,2位停止位,无相应功能码设定或修改。
●通讯超时时间:FA-04=0,即该功能无效。
当将FA-04设为非0值,就开启了这个功能,按设定的时间进行判断,当MD280失去与通讯主机的联系,持续的时间超过该设定值,MD280就会自动停机,并告警。
1、打开connection,新建项目,将所有程序相关的文件保存到同一个文件夹中
2、
新建一个485通讯项,注意右侧信息必须严格校对匹配。
根据需求新建一个modbus项
3、
在此我们以holding 为例
4、
寄存器是否需要加减可以通过测试来确定
5、
注意:如果临时创建的变量,需要build之后才能出现6、
7、
8、
敲黑板!!!划重点!!!
9、下载下去之后,不要重启PLC,此时所有连接提示Error。
需要首先断开Device与PLC的连接,再断开Applcation的连接。
紧接着,重新连接Application即可!!
10、此时通讯成功,变量已被赋值!
P.S.关于PLC与电脑连接的时候,PLC可以是主站,因为TCP协议无视主从站。
4xxxx 代表的是保持寄存器,既可以读也可以写
03 功能码是读保持寄存器
06 16功能码写保持寄存器
3xxxx 代表的是输入寄存器,是只读寄存器
04功能码读输入寄存器
协议规定保持寄存器可读写,输入寄存器只读。
也就是说,写在寄存器最前面的数字告诉我们这是什么寄存器,功能码告诉我们的是这个命令可以做什么,所以说功能码所对应的寄存器是特定的!
疑问:我们在写寄存器地址的时候,需要写什么地址?。
H2U/H1U系列PLC内置MODBUS从站通讯协议说明目录概述: (1)1. MODBUS通讯帧格式说明 (2)1.1命令码0x01(01):读线圈 (2)1.2命令码0x03(03):读寄存器 (3)1.3 命令码0x05(05):写单线圈 (4)1.4 命令码0x06(06):写单个寄存器 (5)1.5 命令码0x0f(15):写多个线圈 (6)1.6 命令码0x10(16):写多个寄存器 (7)1.7 错误响应帧 (8)2. 变量编址 (9)2.1 线圈编址 (9)2.2 寄存器编址 (9)概述:本文档旨在说明将H2U/H1U系列PLC作为MODBUS从站进行访问时,需采用的通讯格式进行说明,并对访问其中各种软元件的索引编址方式进行了说明,便于MODBUS主站侧的编程。
H2U/H1U作为MODBUS从站时,支持MODBUS的0x01,0x03,0x05,0x06,0x0f,0x10等通讯操作命令;通过这些目录,可读写PLC的线圈有M,S,T,C,X(只读),Y 等变量;寄存器变量有D,T,C。
1. MODBUS通讯帧格式说明1.1命令码0x01(01):读线圈请求帧格式:从机地址+0x01+线圈起始地址+线圈数量+CRC检验序号数据(字节)意义字节数量说明1 从机地址1个字节取值1~247,由D8121设定2 0x01(命令码)1个字节读线圈3 线圈起始地址2个字节高位在前,低位在后,见线圈编址4 线圈数量2个字节高位在前,低位在后(N)5 CRC校验2个字节高位在前,低位在后响应帧格式:从机地址+0x01+字节数+线圈状态+CRC检验序号数据(字节)意义字节数量说明1 从机地址1个字节取值1~247,由D8121设定2 0x01(命令码)1个字节读线圈3 字节数1个字节值:[(N+7)/8]4 线圈状态[(N+7)/8]个字节每8个线圈合为一个字节,最后一个若不足8位,未定义部分填0。