昆仑通态 莫迪康ModbusRTU讲解
- 格式:pdf
- 大小:350.61 KB
- 文档页数:15
昆仑通态ModbusTcp通讯总结
1、Modbus 地址
通常Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。
Modbus Master 协议库把标准的Modbus 地址映射为所谓Modbus 功能号,读写从站的数据。
Modbus Master 协议库支持如下地址:
00001 - 09999:数字量输出(线圈)
10001 - 19999:数字量输入(触点)
30001 - 39999:输入数据寄存器(通常为模拟量输入)
40001 - 49999:数据保持寄存器
2、主站和从站配置
上图:主站(客户机),这里为触屏电脑(TPC1062K),读取从站(WNC 采集器或者测试过程中使用的PC机),设置本地IP地址为:192.168.0.2,端口号为3000。
从站(服务器),产生变化数据的源端,这里是利用PC机来模拟(WNC 采集器)。
上图中读写4区通道D40001和D40002是按双字节操作读取第1和第2通道(Modbus中是以双字节为一个通道单元,WUB代表Word unsigned binary)。
上图中读写4区通道D40003和D40005是按四字节操作读取第3和第5通道(Modbus中是以双字节为一个通道单元,第3通道实际包括了第3和第4通道;第5通道实际包含了第5和第6通道,DF代表double word float)。
3、ModbusTcp主从站通讯测试视频
测试视频进入网页中下载:TPC1062K的ModbusTcp 测试视频.mp4。
深圳市综科智控科技开发有限公司——综合科技,智慧控制ZK系列产品与昆仑通态通信【】绝密【】NDA【X】公开目录目录第 1 章485 设备与昆仑通态MCGS通讯 (2)1.1DI/DO/AI/AO 接入 (2)1.1.1添加设备 (3)1.2读取DI 状态 (6)1.3输出/读取DO 状态 (8)1.4读取AI 值 (9)第 2 章以太网设备与昆仑通态通讯 (10)2.1DI/DO/AI/AO 接入 (10)2.1.1添加设备 (11)2.2读取DI 状态 (14)2.3输出/读取DO 状态 (16)2.4读取AI 值 (18)第 1 章485 设备与昆仑通态MCGS通讯1.1DI/DO/AI/AO 接入以 ZKA-4088-RS485 为例,介绍综科智控 485 设备与昆仑通态MCGS通讯的步骤设置。
ZKA-4088-RS485 是 8 路数字量输入(DI),8 路数字量输出(DO),4 路模拟量输入设备(AI,0/4-20mA),485 通信总线。
以 ZKA-4088-RS485 出厂默认通讯参数如下:站号:01波特率:115200数据格式:8,N,1与电脑连接的端口:客户查看电脑设备管理器中的COM口,选择实际使用的端口1.1.1添加设备在文件>新建项目选址设备并确定,在弹出的窗口选址设备窗口,双击设备窗口击工具箱按钮>双击通用串口父设备双击“莫迪康 Modbus RTU ”双击“通用串口父设备”,对串口参数进行设置1.2读取DI 状态ZKA-4088-RS485的8路DI 寄存器为10001~10008:启动设备调试查看调试数据,10001 值为1,即X1输入通道闭合。
1.3 输出/读取 DO 状态ZKA-4088-RS485 的 8路 DO 寄存器为 00001~00008:寄存器 00001 数据为 1,即 输出点Y1 继电器闭合。
1.4 读取 AI 值ZKA-4088-RS485 的 4 路 AI (模拟量输入)寄存器为 30001~30008,因为ZKA 模块采用的是32位AD 芯片,所以每个模拟量通道占用 2 个寄存器,共4 个字节(32bit ),其中高两个字节为采集结果的高16bit ,低两个字为采集结果的低16bit ,模块出厂时为保证高精度,滤波后输出16bit ,所以用户实际使用时只需要读取低16bit 采集结果即可,也就是读取通道地址0002,0004,0006,0008地址上的数据,数据类型为 无符号整型。
深圳市综科智控科技开发有限公司——综合科技,智慧控制ZK系列产品与昆仑通态通信【】绝密【】NDA【X】公开目录目录第 1 章485 设备与昆仑通态MCGS通讯 (2)1.1DI/DO/AI/AO 接入 (2)1.1.1添加设备 (3)1.2读取DI 状态 (6)1.3输出/读取DO 状态 (8)1.4读取AI 值 (9)第 2 章以太网设备与昆仑通态通讯 (10)2.1DI/DO/AI/AO 接入 (10)2.1.1添加设备 (11)2.2读取DI 状态 (14)2.3输出/读取DO 状态 (16)2.4读取AI 值 (18)第 1 章485 设备与昆仑通态MCGS通讯1.1DI/DO/AI/AO 接入以 ZKA-4088-RS485 为例,介绍综科智控 485 设备与昆仑通态MCGS通讯的步骤设置。
ZKA-4088-RS485 是 8 路数字量输入(DI),8 路数字量输出(DO),4 路模拟量输入设备(AI,0/4-20mA),485 通信总线。
以 ZKA-4088-RS485 出厂默认通讯参数如下:站号:01波特率:115200数据格式:8,N,1与电脑连接的端口:客户查看电脑设备管理器中的COM口,选择实际使用的端口1.1.1添加设备在文件>新建项目选址设备并确定,在弹出的窗口选址设备窗口,双击设备窗口击工具箱按钮>双击通用串口父设备双击“莫迪康 Modbus RTU ”双击“通用串口父设备”,对串口参数进行设置1.2读取DI 状态ZKA-4088-RS485的8路DI 寄存器为10001~10008:启动设备调试查看调试数据,10001 值为1,即X1输入通道闭合。
1.3 输出/读取 DO 状态ZKA-4088-RS485 的 8路 DO 寄存器为 00001~00008:寄存器 00001 数据为 1,即 输出点Y1 继电器闭合。
1.4 读取 AI 值ZKA-4088-RS485 的 4 路 AI (模拟量输入)寄存器为 30001~30008,因为ZKA 模块采用的是32位AD 芯片,所以每个模拟量通道占用 2 个寄存器,共4 个字节(32bit ),其中高两个字节为采集结果的高16bit ,低两个字为采集结果的低16bit ,模块出厂时为保证高精度,滤波后输出16bit ,所以用户实际使用时只需要读取低16bit 采集结果即可,也就是读取通道地址0002,0004,0006,0008地址上的数据,数据类型为 无符号整型。
ITCP模块与昆仑通态(mcgs)连接说明1.概述ITCP是基于以太网和MODBUS TCP协议标准的数据采集模块。
包括了开关量输入、开关量输出、温度采集、电压电流信号采集、电压电流信号输出和继电器输出模块,可以适应大部分应用工况.2.硬件准备ITCP系列模块电脑网线交换机(连接多台ITCP时需要用到)3.软件准备昆仑通态MCGS通用版6。
04.硬件连接图5.连接步骤打开MCGS组态环境软件,进入到开发界面5.1. 新建设备打开设备管理器,增加“通用TCP/IP父设备”和“莫迪康MODBUS_TCP”,路径见下图所示。
点击“确定"按钮,回到“设备工具箱"窗口,依次双击设备工具箱中的“通用TCP/IP父设备”和“莫迪康MODBUS_TCP”,增加设备完毕,如下图。
双击设备窗口中的“通用TCP/IP父设备”配置“通用TCP/IP父设备”参数,网络类型选择1—tcp,远程IP地址设置为ITCP的IP地址,出厂默认是192。
168.1.30,远程端口号设置为ITCP模块的端口号,默认是502。
设置好后如下图。
点“确定”按钮完成TCP/IP父设备的配置,然后双击设备窗口中的“莫迪康MODBUS_TCP”配置ITCP的设备属性.配置PLC地址为1,如下图。
点击内部属性,弹出内部属性设置窗口,如下图.ITCP模块的开关量输入的寄存器地址从10001开始,DI0(开关量输入通道0)的地址为10001,DI1的寄存器地址为10002,以此类推。
ITCP模块的开关量输出和继电器输出通道的起始地址为0513,DO0(开关量输出通道0或者继电器输出通道0)的寄存器地址为0513,DO1的地址为0514,以此类推.ITCP模块的模拟量输入通道包括温度采集通道和电流、电压信号采集通道,寄存器地址从30065开始。
AI0(电压电流信号或者温度信号通道)的寄存器地址为30065,AI1的地址为30066以此类推。
如何在MCGS中使用莫迪康-RTU设备构件:基本步骤:串口父设备属性设置:莫迪康-RTU设备属于子设备,必须挂在串口父设备下工作。
父设备用来设置设置串行口的参数。
请设置成波特率9600,8位数据位,1位停止位,偶校验莫迪康-RTU参数设置:要使MCGS能正确操作莫迪康-RTU设备,请按如下的步骤来使用和设置本构件的属性:设备名称:可根据需要来对设备进行重新命名,但不能和设备窗口中已有的其它设备构件同名。
采集周期:为运行时,MCGS对设备进行操作的时间周期,单位为毫秒,一般在静态测量时设为1000ms,在快速测量时设为200ms。
仪表地址:为总线上挂的莫迪康PLC的地址。
初始工作状态:用于设置设备的起始工作状态,设置为启动时,在进入MCGS运行环境时,MCGS即自动开始对设备进行操作,设置为停止时,MCGS不对设备进行操作,但可以用MCGS的设备操作函数和策略在MCGS运行环境中启动或停止设备。
内部属性内部属性用于设置PLC的读写通道,以便后面进行设备通道连接,从而把设备中的数据送入实时数据库中的指定数据对象或把数据对象的值送入设备指定的通道输出。
莫迪康-RTU设备构件把寄存器的通道分为只读,只写,读写三种情况,只读用于把莫迪康-RTU中的数据读入到MCGS的实时数据库中,只写通道用于把MCGS实时数据库中的数据写入到莫迪康-RTU中,读写则可以从莫迪康-RTU中读数据,也可以往PLC中写数据。
当第一次启动设备工作时,把莫迪康-RTU中的数据读回来,以后若MCGS不改变寄存器的值则把莫迪康-RTU中的值读回来显示。
若MCGS要改变当前值则把值写到莫迪康-RTU中,这种操作的目的是,用户PLC程序中有些通道的数据在计算机第一次启动,或计算机中途死机时不能复位,另外可以节省变量的个数。
本设备构件可操作PLC的:1输入继电器(位操作只读) ;0输出继电器(或线圈)(位操作,可读可写);3输入寄存器(只读);4输出寄存器(字,双字,可读可写)这是标准的MODBUS 协议格式。
什么是MODBUS?MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。
目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。
常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。
一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。
在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。
更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。
MODBUS-RTU通讯协议简介在本章主要讲述如何利用软件通过通讯口来操控该系列仪表。
本章内容的掌握需要您具有MODBUS协议的知识储备并且通读了本册其它章节所有内容,对本产品功能和应用概念有较全面了解。
本章内容包括:MODBUS协议简述,通讯应用格式详解,本机的应用细节及参量地址表。
1.1MODBUS协议简述ACRXXXE系列仪表使用的是MODBUS-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。
MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。
首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
MODBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
modbusrtu说明modbus?關於modbus RTU的使用說明先前留下了一些關於modbus的文章卻好像沒有留下一點關於modbus基礎的介紹modbus是一種工業控制常用的通訊協定,他定義了一個標準的通訊封包格式,而非一種通訊技術,最早modbus是使用於PLC上,漸漸的許多工控設備也開始採用modbus作為一種標準的通訊格式。
而modbus也產生出了許多不同的形態,如modbus RTU為最原始的以二進制方式表示也有使用ASCII的modbus ASCII,以及modbus TCP/IP等等型態,其不同的差異只有在於部分的格式不同(ASCII採用字元編碼方式傳送)在低階的硬體控制中,最常使用的莫過於modbus RTU這種以二進制方式傳送的通訊是最簡單不過的,在RS485(TTL485)中經常可以看到modbus的通訊協定其原因為modbus本身也具有master與slave的架構,在一個並聯(RS485)的通訊環境中,有一節點(設備)為master,由該master向其他slave通訊,進行通訊、控制等。
modbus提供許多操作功能碼,其詳細的定義了這些功能的作用以及格式這邊所提到,定義,指的只是一個規則,我們在寫程式或在使用時就必須遵照這些規則進行,就等於是在實行標準的modbus協議。
以下是我簡單介紹的modbus RTU的使用方式1.讀/寫位址表(Mapping table):在使用modbus協定中,要讀取或寫入設備,通常必須先知道欲控制或讀取設備之記憶體暫存器位置表,不同的產品、設備,都會有自己的位址表,基本上是不會相同的,標準中每個地址的長度以1word表示,每個位址所代表的資料量為1word 等於1 address = 1 word data但在實際用途上,經常性的資料範圍會有大於1word的時候,所以有些人則會連續定義兩個2 address做為1個資料的內容存放空間,所以,在使用modbus RTU前,必須先了解該設備的位址表,才有辦法讀取或控制自己要的內容2.Slave address/Slave ID 設備端ID當要讀寫slave時,必須先知道該設備的address/ID,至於這個ID要從何得知?通常就要問負責該設備的人,或者設計者,或者原廠公司,或者熟悉他的人0x03功能碼(function code)所定義的功能為讀取多個暫存器,用來讀取一連續位址的資料。
硬件配置参数设置设备命令故障分析#莫迪康ModbusRTU1、设备简介本驱动构件用于MCGS软件通过ModbusRTU协议读写Modicon PLC设备的各种寄存器的数据;同时也可用于对支持ModbusRTU标准协议的各类PLC、仪表、控制器数据的读写。
本驱动支持01、02、03、04、05、06、15、16常用功能码,对功能码支持请参见附录1。
驱动类型串口子设备,须挂接在“通用串口父设备”下才能工作通讯协议采用莫迪康ModbusRTU协议通讯方式一主一从、一主多从方式。
驱动构件为主,设备为从。
2、硬件连接MCGS软件与设备通讯之前,必须保证通讯连接正确。
通讯连接方式:TPC与设备之间采用标准的RS485或RS232通讯。
Modicon TSX系列和Twido系列PLC的编程通讯口(Terminal Port)的通讯电缆图如下:其他设备的通讯连接,具体请参考对应设备手册。
3、设备通讯参数“通用串口父设备”通讯参数设置如下:设置项参数项返回顶部通讯波特率9600 (默认值)、19200、38400数据位位数7、8(默认值)停止位位数1(默认值)、2奇偶校验位奇校验、偶校验(默认值)、无校验其中父设备通讯参数设置应与设备的通讯参数相同,否则无法正常通讯。
设备通讯参数的具体设置请参见对应设备手册。
4、设备构件参数设置“莫迪康ModbusRTU”子设备参数设置如下:●内部属性:单击“查看设备内部属性”,点击按钮进入内部属性,具体设置请参看内部属性。
●最小采集周期:MCGS对设备进行操作的时间周期,单位为ms,默认为100ms,根据采集数据量的大小,设置值可适当调整。
●设备地址:必须和实际设备的地址相一致,范围为0-255,默认值为0。
●通讯等待时间:通讯数据接收等待时间,默认设置为200ms,根据采集数据量的大小,设置值可适当调整。
●快速采集次数:对选择了快速采集的通道进行快采的频率(已不使用,为与老驱动兼容,故保留,无需设置)。
硬件配置参数设置设备命令故障分析#莫迪康ModbusRTU1、设备简介本驱动构件用于MCGS软件通过ModbusRTU协议读写Modicon PLC设备的各种寄存器的数据;同时也可用于对支持ModbusRTU标准协议的各类PLC、仪表、控制器数据的读写。
本驱动支持01、02、03、04、05、06、15、16常用功能码,对功能码支持请参见附录1。
驱动类型串口子设备,须挂接在“通用串口父设备”下才能工作通讯协议采用莫迪康ModbusRTU协议通讯方式一主一从、一主多从方式。
驱动构件为主,设备为从。
2、硬件连接MCGS软件与设备通讯之前,必须保证通讯连接正确。
通讯连接方式:TPC与设备之间采用标准的RS485或RS232通讯。
Modicon TSX系列和Twido系列PLC的编程通讯口(Terminal Port)的通讯电缆图如下:其他设备的通讯连接,具体请参考对应设备手册。
3、设备通讯参数“通用串口父设备”通讯参数设置如下:设置项参数项返回顶部通讯波特率9600 (默认值)、19200、38400数据位位数7、8(默认值)停止位位数1(默认值)、2奇偶校验位奇校验、偶校验(默认值)、无校验其中父设备通讯参数设置应与设备的通讯参数相同,否则无法正常通讯。
设备通讯参数的具体设置请参见对应设备手册。
4、设备构件参数设置“莫迪康ModbusRTU”子设备参数设置如下:●内部属性:单击“查看设备内部属性”,点击按钮进入内部属性,具体设置请参看内部属性。
●最小采集周期:MCGS对设备进行操作的时间周期,单位为ms,默认为100ms,根据采集数据量的大小,设置值可适当调整。
●设备地址:必须和实际设备的地址相一致,范围为0-255,默认值为0。
●通讯等待时间:通讯数据接收等待时间,默认设置为200ms,根据采集数据量的大小,设置值可适当调整。
●快速采集次数:对选择了快速采集的通道进行快采的频率(已不使用,为与老驱动兼容,故保留,无需设置)。
ITCP模块与昆仑通态(mcgs)连接说明1.概述ITCP是基于以太网和MODBUS TCP协议标准的数据采集模块。
包括了开关量输入、开关量输出、温度采集、电压电流信号采集、电压电流信号输出和继电器输出模块,可以适应大部分应用工况。
2.硬件准备ITCP系列模块电脑网线交换机(连接多台ITCP时需要用到)3.软件准备昆仑通态MCGS通用版6.04.硬件连接图5.连接步骤打开MCGS组态环境软件,进入到开发界面5.1. 新建设备打开设备管理器,增加“通用TCP/IP父设备”和“莫迪康MODBUS_TCP”,路径见下图所示。
点击“确定”按钮,回到“设备工具箱”窗口,依次双击设备工具箱中的“通用TCP/IP父设备”和“莫迪康MODBUS_TCP”,增加设备完毕,如下图。
双击设备窗口中的“通用TCP/IP父设备”配置“通用TCP/IP父设备”参数,网络类型选择1-tcp,远程IP地址设置为ITCP的IP地址,出厂默认是192.168.1.30,远程端口号设置为ITCP模块的端口号,默认是502。
设置好后如下图。
点“确定”按钮完成TCP/IP父设备的配置,然后双击设备窗口中的“莫迪康MODBUS_TCP”配置ITCP的设备属性。
配置PLC地址为1,如下图。
点击内部属性,弹出内部属性设置窗口,如下图。
ITCP模块的开关量输入的寄存器地址从10001开始,DI0(开关量输入通道0)的地址为10001,DI1的寄存器地址为10002,以此类推。
ITCP模块的开关量输出和继电器输出通道的起始地址为0513,DO0(开关量输出通道0或者继电器输出通道0)的寄存器地址为0513,DO1的地址为0514,以此类推。
ITCP模块的模拟量输入通道包括温度采集通道和电流、电压信号采集通道,寄存器地址从30065开始。
AI0(电压电流信号或者温度信号通道)的寄存器地址为30065,AI1的地址为30066以此类推。
ITCP模块的模拟量输出为电压电流信号输出通道,起始寄存器地址为40097。
Modbus使用说明详解北京昆仑通态2009-2-10目录前言 (3)一、Modbus协议简介 (4)1、Modbus协议主从响应过程 (4)2、Modbus的寄存器区和常用功能码 (4)二、Modbus协议帧格式 (5)1、ModbusRTU: (5)2、ModbusASCII: (5)3、ModbusTCP: (5)4、RTU、TCP、ASCII协议格式区别 (6)三、MCGS嵌入版Modbus相关驱动构件介绍 (7)1、Modbus驱动分类 (7)2、组态及通讯组网方式 (8)3、非标准Modbus兼容处理 (9)4、MCGS驱动特殊处理 (11)5、易用性接口支持 (14)四、Modbus驱动构件的基本使用 (15)1、驱动选择和添加 (15)2、驱动设置和使用 (16)3、驱动设备调试 (20)4、模拟运行测试 (21)5、设备调试与模拟运行、实际运行区别 (21)6、Modbus驱动使用注意事项 (22)五、数据转发设备(从站)与主站的配合使用 (23)1、与第三方Modbus主站数据交互 (23)2、与MCGS通网版软件或TPC触摸屏数据交互 (23)六、Modbus驱动常见问题处理 (24)1、Modbus主站驱动问题 (24)2、Modbus从站驱动问题: (25)七、Modbus协议分析技巧: (26)附录1: Modbus协议格式 (27)附录2: Modicon PLC通讯接线图 (29)前言Modbus协议,是由Modicon公司开发设计的一种通讯协议,目前已经作为一种标准,在工业领域被广为应用。
许多PLC、DCS、智能仪表等工业设备都使用Modbus协议作为其通讯协议标准。
MCGS软件及TPC触摸屏支持标准ModbusRTU、ASCII、TCP协议,并以此作为与其他软件及设备互通的标准的通讯协议。
但目前由于很多使用MCGS的用户对Modbus协议并不十分了解,在使用MCGS的Modbus主从站驱动构件进行通讯时,常遇到很多问题而不知道如何有效解决。
MODBUSRTU协议解析MODBUS是一种用于工业自动化控制系统中的通信协议,用于在主从设备之间传输数据。
其中,RTU(远程终端单元)是MODBUS协议的一种传输模式,用于串行通信。
下面将对MODBUSRTU协议进行详细解析。
起始位:一个低电平的空闲时间,用于同步通信。
从设备地址:用于唯一标识从设备,允许1至247的地址。
功能码:用于说明请求是读取数据还是写入数据,具体指定操作类型。
数据:根据功能码的不同,数据可用于传输读取的数据或要写入的数据。
差错检验:包括CRC(循环冗余校验)或LRC(纵向冗余校验),用于检测数据传输过程中是否出现错误。
通信流程:1.主设备向从设备发送一个帧(请求)。
2.从设备接收请求并执行相应操作。
3.从设备将响应信息打包成一个帧(响应)发送给主设备。
4.主设备接收响应信息,并根据需要进行解析和处理。
MODBUSRTU协议的功能码包括读取和写入操作,以及控制操作码。
读取操作码(0x03)用于请求从设备发送数据。
主设备发送一个读取请求,并提供需要读取的数据的地址和数量。
从设备接收到请求后,将请求数据打包成响应帧发送给主设备。
写入操作码(0x06)用于请求向从设备写入数据。
主设备发送一个写入请求,并提供要写入的数据的地址和数据值。
从设备接收到请求后,将请求数据写入到相应的地址。
控制操作码(0x10)用于向从设备发送控制命令。
主设备发送一个控制请求,并提供需要控制的功能码和相应的参数。
从设备接收到请求后,将根据控制命令执行相应操作。
MODBUSRTU协议的差错检验是通过CRC或LRC来验证数据的完整性。
CRC是通过生成多项式计算得到的,它对数据进行编码并附加到数据帧末尾。
接收端根据接收到的数据和CRC值进行校验。
LRC是将数据逐字节相加,并对结果取反。
总结:MODBUSRTU协议是一种常用于工业自动化控制系统的通信协议,采用串行通信。
它使用从设备地址、功能码、数据及差错检验等内容构成数据帧。
莫迪康 ModbusRtu概述1、ModbusRtu是一个通用的Modbus(RTU)串口驱动程序,用户可以通过配置KVModbusRtuEx.ini来定制协议的打包规则。
2、标准的ModbusRTU协议已经在文件KVModbusRtuEx.ini中配置,用户可以直接定义为这种设备类型,而不需要修改INI配置文件。
3、组态王支持与所有支持Modbus协议的设备通过串口RS232/RS485/RS422进行通讯,使用的协议为通用协议ModbusRtu,详情请参考:Modbus协议参考手册。
硬件连接与配置1、组态王与ModbusRtu间硬件可以使用标准的RS232、RS422或者RS485串口连接,使用RS485连接如下图所示:2、配置说明:1)、各个不同型号的Modbus协议的打包规则,在KVModbusRtuEx.ini中设置。
2)、设备使用前,设置通讯参数和组态王工程中的设置一致。
组态王设置1、定义组态王设备组态王定义设备时一般设备选择:[PLC] > [莫迪康] > [Modbus(RTU)] > [串行]如果是特殊设备,根据设备类型选择正确的型号。
2、设备地址及通讯参数定义设备地址格式:Address[:Delay][:Delay2]Address 1-247 设备地址Delay 0-60000 发送每条命令帧后的延迟时间(毫秒)Delay2 0-100000 发送每条命令帧前的延迟时间(毫秒)例如: 1:300:500若Delay/Delay2为0,或者不输入Delay/Delay2 ,驱动里发送命令帧后/前就不会有延迟。
建议的通讯参数:无需设置通讯参数,视具体设备而定3、组态王数据词典-IO变量定义1)、组态王中寄存器列表2)、寄存器特殊说明:1.SwapF寄存器:在MODBUS规约驱动中,SwapF寄存器用于改变FLOAT型数据的字节顺序,SwapL寄存器用于改变LONG型数据的字节顺序,只有0,1, 2, 3四种取值。
Modbus-RTU详解(转载)Modbus ⼀个⼯业上常⽤的通讯协议、⼀种通讯约定。
Modbus协议包括RTU、ASCII、TCP。
其中MODBUS-RTU最常⽤,⽐较简单,在单⽚机上很容易实现。
虽然RTU⽐较简单,但是看协议资料、⼿册说得太专业了,起初很多内容都很难理解。
所谓的协议是什么?就是互相之间的约定嘛,如果不让别⼈知道那就是暗号。
现在就来定义⼀个新的最简单协议。
例如,协议: “A” --“LED灭”“B” --“报警”“C” --“LED亮”单⽚机接收到“A”控制⼀个LED灭,单⽚机接收到“B”控制报警,单⽚机接收到“A”控制⼀个LED亮。
那么当收到对应的信息就执⾏相应的动作,这就是协议,很简单吧。
先来简单分析⼀条MODBUS-RTU报⽂,例如:01 06 00 01 00 17 98 0401 06 00 01 00 17 98 04从机地址功能号数据地址数据 CRC校验这⼀串数据的意思是:把数据 0x0017(⼗进制23) 写⼊ 1号从机地址 0x0001数据地址。
先弄明⽩下⾯的东西。
1、报⽂⼀个报⽂就是⼀帧数据,⼀个数据帧就⼀个报⽂:指的是⼀串完整的指令数据,就像上⾯的⼀串数据。
2、CRC校验意义:例如上⾯的 98 04 是它前⾯的数据(01 06 00 01 00 17)通过⼀算法(见附录2,很简单的)计算出来的结果,其实就像是计算累加和那样。
(累加和:就是010*********加起来的值,然后它的算法就是加法)。
作⽤:在数据传输过程中可能数据会发⽣错误,CRC检验检测接收的数据是否正确。
⽐如主机发出01 06 00 01 00 17 98 04,那么从机接收到后要根据01 06 00 01 00 17 再计算CRC校验值,从机判断⾃⼰计算出来的CRC校验是否与接收的CRC校验(98 04主机计算的)相等,如果不相等那么说明数据传输有错误这些数据不能要。
3、功能号意义:modbus 定义。
Modbus RTU(Remote Terminal Unit)是一种在串行通信中使用的协议,它是Modbus协议族中的一种。
Modbus协议由Modicon公司(现为施耐德电气的一部分)于1979年为使用其可编程逻辑控制器(PLC)而开发。
Modbus已经成为工业领域中广泛使用的一种开放式通信协议。
Modbus RTU主要特点如下:1.串行通信:Modbus RTU通过串行线(如RS-485、RS-232)进行数据传输,适用于距离较远、数据传输速度不是非常高的场合。
2.二进制传输:与ASCII模式相比,RTU模式下的数据以二进制形式传输,效率更高。
3.帧结构:Modbus RTU消息由地址域、功能码、数据和校验和组成。
地址域指定从站地址,功能码定义操作类型,数据域包含指令或数据,校验和用于错误检测。
4.主从架构:Modbus RTU采用主从架构,一个主站(通常是控制系统中的计算机)控制多个从站(如传感器、执行器等)。
主站发起请求,从站响应请求。
5.请求/响应模型:主站发送请求给从站,从站处理请求并返回响应。
如果从站无法处理请求或请求有误,它会返回异常响应。
6.定时静默间隔:Modbus RTU消息之间需要有一个最小的静默间隔,这个间隔用于区分连续的两个消息。
这个间隔是基于波特率的,通常是3.5个字符时间长度。
Modbus RTU消息解析:•地址域:1个字节,用于指定从站的地址(0-247)。
地址255通常保留用于广播。
•功能码:1个字节,指示主站请求的操作类型,如读取寄存器、写入单个寄存器等。
•数据域:变长,根据功能码的不同,可能包含要读取或写入的寄存器的地址、数量以及实际的数据值。
•校验和:2个字节,通常使用CRC(循环冗余检查)算法来检验消息的完整性。
在实际应用中,解析Modbus RTU消息涉及以下几个步骤:1.接收消息:监听串行端口并接收数据。
2.检查静默间隔:确保消息之间有足够的间隔,以区分不同的消息。
硬件配置参数设置设备命令故障分析#莫迪康ModbusRTU1、设备简介本驱动构件用于MCGS软件通过ModbusRTU协议读写Modicon PLC设备的各种寄存器的数据;同时也可用于对支持ModbusRTU标准协议的各类PLC、仪表、控制器数据的读写。
本驱动支持01、02、03、04、05、06、15、16常用功能码,对功能码支持请参见附录1。
驱动类型串口子设备,须挂接在“通用串口父设备”下才能工作通讯协议采用莫迪康ModbusRTU协议通讯方式一主一从、一主多从方式。
驱动构件为主,设备为从。
2、硬件连接MCGS软件与设备通讯之前,必须保证通讯连接正确。
通讯连接方式:TPC与设备之间采用标准的RS485或RS232通讯。
Modicon TSX系列和Twido系列PLC的编程通讯口(Terminal Port)的通讯电缆图如下:其他设备的通讯连接,具体请参考对应设备手册。
3、设备通讯参数“通用串口父设备”通讯参数设置如下:设置项参数项返回顶部通讯波特率9600 (默认值)、19200、38400数据位位数7、8(默认值)停止位位数1(默认值)、2奇偶校验位奇校验、偶校验(默认值)、无校验其中父设备通讯参数设置应与设备的通讯参数相同,否则无法正常通讯。
设备通讯参数的具体设置请参见对应设备手册。
4、设备构件参数设置“莫迪康ModbusRTU”子设备参数设置如下:●内部属性:单击“查看设备内部属性”,点击按钮进入内部属性,具体设置请参看内部属性。
●最小采集周期:MCGS对设备进行操作的时间周期,单位为ms,默认为100ms,根据采集数据量的大小,设置值可适当调整。
●设备地址:必须和实际设备的地址相一致,范围为0-255,默认值为0。
●通讯等待时间:通讯数据接收等待时间,默认设置为200ms,根据采集数据量的大小,设置值可适当调整。
●快速采集次数:对选择了快速采集的通道进行快采的频率(已不使用,为与老驱动兼容,故保留,无需设置)。
●16位整数解码顺序:调整字元件的解码顺序,对于Modicon PLC及标准PLC设备,使用默认值即可。
16位整数解码顺序举例:0x0001 0―12 表示字元件高低字节不颠倒(默认值)表示11―21 表示字元件高低字节颠倒表示256●32位整数解码顺序:调整双字元件的解码顺序,对于Modicon PLC,请设置为“2-3412”顺序解码。
32位整数解码顺序举例:0x0000 0001 0―1234 表示双字元件不做处理直接解码(默认值)表示11―2143 表示双字元件高低字不颠倒,但字内高低字节表示256颠倒表示65536 2—3412 表示双字元件高低字颠倒,但字内高低字节不颠倒3—4321 表示双字元件内4个字节全部颠倒表示1677 7216●32位浮点数解码顺序:调整双字元件的解码顺序,对于Modicon PLC,请设置为“2-3412”顺序解码。
32位浮点数解码顺序举例:0x3F80 0000 0―1234 表示双字元件不做处理直接解码(默认值)表示1.01―2143 表示双字元件高低字不颠倒,但字内高低字节表示-5.78564e-039颠倒表示2.27795e-041 2—3412 表示双字元件高低字颠倒,但字内高低字节不颠倒3—4321 表示双字元件内4个字节全部颠倒表示4.60060e-041 ●校验方式:选择LRC校验值的组合方式,对于Modicon PLC及标准PLC设备,使用默认设置即可。
0—LH[低字节,高字节] :校验结果为2个字节,低字节在前,高字节在后。
1—HL[高字节,低字节] :校验结果为2个字节,高字节在前,低字节在后。
●分块采集方式:驱动采集数据分块的方式,对于Modicon PLC及标准PLC设备,使用默认设置可以提高采集效率。
0—按最大长度分块:采集分块按最大块长处理, 对地址不连续但地址相近的多个分块,分为一块一次性读取,以优化采集效率。
1—按连续地址分块:采集分块按地址连续性处理,对地址不连续的多个分块, 每次只采集连续地址,不做优化处理。
例如:有4区寄存器地址分别为1~5,7,9~12的数据需采集,如果选择“0-按最大长度分块”,则两块可优化为地址1~12的数据打包1次完成采集;如果选择“1-按连续地址分块”,则需要采集3次。
●4区16位写功能码选择:写4区单字时功能码的选择,这个属性主要是针对自己制作设备的用户而设置的,这样的设备4区单字写可能只支持0x10功能码,而不支持0x06功能码。
0—0x06:单字写功能码使用0x06。
1—0x10:单字写功能码使用0x10。
注意:1.“解码顺序”及“校验方式”设置:主要是针对非标准ModbusRTU协议的不同解码及校验顺序。
当用户通过本驱动软件与设备通讯时,如果出现解析数据值不对,或者通讯校验错误(通讯状态为3),可与厂家咨询后对以上两项进行设置。
而对于Modicon PLC及支持标准ModbusRTU的PLC及控制器等设备,一般需将“32位整数解码顺序”和“32位浮点数解码顺序”设置为“2-3412”。
另外,在使用本驱动与“Modbus串口数据转发设备”构件通讯时,“解码顺序”及“校验方式”均需按默认值设置,否则会导致通讯失败或解析数据错误。
2.“分块采集方式”设置:主要是针对非标准ModbusRTU协议设备。
当用户通过本驱动软件与设备通讯时,如果按默认“0-按最大长度分块”时,出现读取连续地址正常,而不连续地址不正常时,可与厂家咨询,并设置为“1-按连续地址分块方式”尝试是否可正常通讯。
而对于Modicon PLC及支持标准ModbusRTU的PLC及控制器等设备,直接使用默认设置即可,这样可以提高采集效率。
5、采集通道a、通讯状态:通讯状态值代表意义0 表示当前通讯正常1 表示采集初始化错误2 表示采集无数据返回错误3 表示采集数据校验错误4 表示设备命令读写操作失败错误5 表示设备命令格式或参数错误6 表示设备命令数据变量取值或赋值错误6、内部属性用户可通过内部属性,添加通道,本驱动构件可支持ModbusRTU寄存器类型及对应功能码如下:寄存器数据类型读取功能码写入功能码操作方式通道举例[1区]输入继电器BT 02 —只读只读10001 表示1区地址1[0区]输出继电器BT 01 05、15 读写读写00001 表示0区地址1[3区]输入寄存器BT、WUB、WB、WDDUB、DB、DD、DF、STR 04 —只读只读30001 表示3区地址1[4区]输出寄存器BT、WUB、WB、WDDUB、DB、DD、DF、STR 03 06、16 读写读写40001 表示4区地址1说明:功能码:[1区]、[3区]不支持写操作;[4区]在双字(32位)数据写操作或批量写入多个数据时,使用16功能码。
数据类型:“STR”数据类型是专用于和MCGS“Modbus串口数据转发设备”驱动构件配合使用的,并且只能通过写通道的方式来改变“Modbus串口数据转发设备”从设备的值。
具体数据类型说明请参见附录2注意:在内部属性中添加通道时,起始地址均为1,这是遵从Modbus协议的,即所谓的“协议地址”,对于部分寄存器起始地址为0的设备,通道添加时,地址应加1处理。
7、设备命令本设备构件提供设备命令,具体格式如下:设备命令命令格式命令举例读取命令Read Read(寄存器名称,寄存器地址, 数据类型=返回值)例 1.1: !SetDevice(设备0,6,"Read(0,1,BT00=Data00;1,10,BT00=Data01) ")读取0区地址为1,1区地址10的继电器值,放入MCGS变量Data00,Data01中。
例 1.2: !SetDevice(设备0,6,"Read(4,10,WUB=Data00;4,40,DF=Data01) ")读取寄存器4区地址1的16位无符号值, 和地址40的浮点数值,放入MCGS变量Data00,Data01中。
写入命令Write Write(寄存器名称,寄存器地址, 数据类型=写入值)例 1.3: !SetDevice(设备0,6,"Write(4,10,WUB=Data00;4,40,DF=Data01) ")将Data00,Data01的值分别以16位无符号和浮点数写入4区寄存器地址10和40中。
32位读命令Read32 Read32(寄存器名称, 寄存器地址,数据类型=字符返回值)例 2.1: !SetDevice(设备0,6,"Read32(4,10,DUB=strData) ")读取4区寄存器中地址10的32位无符号值, 放入字符变量strData中。
32位写命令Write32 Write32(寄存器名称, 寄存器地址,数据类型=字符写入值)例 2.2: !SetDevice(设备0,6,"Write32(DM,10,DUB=strData) ")将字符变量strData的值, 以32位无符号格式写入4区寄存器地址1中。
批量读取A: ReadP ReadP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1, …..数据例 3.1: !SetDevice(设备0,6,"ReadP(4,10,WUB,2,Data00,Data01,nReturn)")表示读取4区寄存器从地址10开始的两个16位无符号数值,放入n [,返回状态]) MCGS变量Data00,Data01中, 执行结果存入变量nReturn中。
批量读取B: ReadPV ReadPV(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1 [,返回状态])例 3.2:!SetDevice(设备0,6,"ReadPV(4,10,WUB,5,Data00,返回值)")表示读取4区寄存器从地址10开始的5个16位无符号数值,放入MCGS变量Data00为起始,连续5个变量(即: Data00,Data01,Data02,Data03,Data04) 中,结果存入变量“返回值”中。
批量读取C: ReadBlock ReadBlock (寄存器名称, 起始地址,[数据类型1][数据类型…],读取数量n, 字符数据[,返回状态])说明: 读取数量是指读取N个数据类型中指定的数据段到字符变量中,数据类型可以有多个,之间用中括号分隔。
实际连续读取个数= 读取数量n *(数据类型1+数据类型n)返回数据“字符数据”格式为:123,456,xxx的csv方式,每次读取时以回车换行结尾。
例 3.3: !SetDevice(设备0,6,"ReadBlock(4,10,[WUB][DF],3,strData)")表示读取4区寄存器从地址10开始,按WBU,DF格式连续读取3组数据(即: 数据格式为WUB,DF,WUB,DF,WUB,DF),并以相应格式解析并以逗号间隔的CSV格式存入字符变量StrData中。