莫迪康ModbusRTU讲解_第1页
莫迪康ModbusRTU讲解_第2页
莫迪康ModbusRTU讲解_第3页
莫迪康ModbusRTU讲解_第4页
莫迪康ModbusRTU讲解_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、硬件配置 参数设置 设备命令 故障分析返回顶部莫迪康ModbusRTU1、 设备简介本驱动构件用于MCGS软件通过ModbusRTU协议读写Modicon PLC设备的各种寄存器的数据; 同时也可用于对支持ModbusRTU标准协议的各类PLC、仪表、控制器数据的读写。本驱动支持01、02、03、04、05、06、15、16常用功能码,对功能码支持请参见附录1。驱动类型串口子设备,须挂接在“通用串口父设备”下才能工作通讯协议采用莫迪康ModbusRTU协议通讯方式一主一从、一主多从方式。驱动构件为主,设备为从。2、 硬件连接MCGS软件与设备通讯之前,必须保证通讯连接正确。通讯连接方式:TPC

2、与设备之间采用标准的RS485或RS232通讯。 Modicon TSX系列和Twido系列PLC的编程通讯口(Terminal Port)的通讯电缆图如下:其他设备的通讯连接,具体请参考对应设备手册。3、 设备通讯参数“通用串口父设备”通讯参数设置如下:设置项参数项通讯波特率9600 (默认值)、19200、38400数据位位数7、8(默认值)停止位位数1(默认值)、2奇偶校验位奇校验、偶校验(默认值)、无校验其中父设备通讯参数设置应与设备的通讯参数相同,否则无法正常通讯。设备通讯参数的具体设置请参见对应设备手册。4、 设备构件参数设置“莫迪康ModbusRTU”子设备参数设置如下:l 内部

3、属性:单击“查看设备内部属性”,点击按钮进入内部属性,具体设置请参看内部属性。l 最小采集周期:MCGS对设备进行操作的时间周期,单位为ms,默认为100ms,根据采集数据量的大小,设置值可适当调整。l 设备地址:必须和实际设备的地址相一致,范围为0-255,默认值为0。l 通讯等待时间:通讯数据接收等待时间,默认设置为200ms,根据采集数据量的大小,设置值可适当调整。l 快速采集次数:对选择了快速采集的通道进行快采的频率(已不使用,为与老驱动兼容,故保留,无需设置)。l 16位整数解码顺序:调整字元件的解码顺序,对于Modicon PLC及标准PLC设备,使用默认值即可。16位整数解码顺序

4、举例:0x0001012表示字元件高低字节不颠倒(默认值)表示1121表示字元件高低字节颠倒表示256l 32位整数解码顺序:调整双字元件的解码顺序,对于Modicon PLC,请设置为“2-3412”顺序解码。32位整数解码顺序举例:0x0000 000101234表示双字元件不做处理直接解码(默认值)表示112143表示双字元件高低字不颠倒,但字内高低字节颠倒表示25623412表示双字元件高低字颠倒,但字内高低字节不颠倒表示6553634321表示双字元件内4个字节全部颠倒表示1677 7216l 32位浮点数解码顺序:调整双字元件的解码顺序,对于Modicon PLC,请设置为“2-3

5、412”顺序解码。32位浮点数解码顺序举例:0x3F80 000001234表示双字元件不做处理直接解码(默认值)表示1.012143表示双字元件高低字不颠倒,但字内高低字节颠倒表示-5.78564e-03923412表示双字元件高低字颠倒,但字内高低字节不颠倒表示2.27795e-04134321表示双字元件内4个字节全部颠倒表示4.60060e-041l 校验方式:选择LRC校验值的组合方式,对于Modicon PLC及标准PLC设备,使用默认设置即可。0LH低字节,高字节 :校验结果为2个字节,低字节在前,高字节在后。1HL高字节,低字节 :校验结果为2个字节,高字节在前,低字节在后。l

6、 分块采集方式:驱动采集数据分块的方式,对于Modicon PLC及标准PLC设备,使用默认设置可以提高采集效率。0 按最大长度分块:采集分块按最大块长处理, 对地址不连续但地址相近的多个分块,分为一块一次性读取,以优化采集效率。1 按连续地址分块:采集分块按地址连续性处理,对地址不连续的多个分块, 每次只采集连续地址,不做优化处理。例如:有4区寄存器地址分别为15,7,912的数据需采集,如果选择“0按最大长度分块”,则两块可优化为地址112的数据打包1次完成采集;如果选择“1按连续地址分块”,则需要采集3次。l 4区16位写功能码选择:写4区单字时功能码的选择,这个属性主要是针对自己制作设

7、备的用户而设置的,这样的设备4区单字写可能只支持0x10功能码,而不支持0x06功能码。 00x06:单字写功能码使用0x06。 10x10:单字写功能码使用0x10。注意:1. “解码顺序”及“校验方式”设置:主要是针对非标准ModbusRTU协议的不同解码及校验顺序。当用户通过本驱动软件与设备通讯时,如果出现解析数据值不对,或者通讯校验错误(通讯状态为3),可与厂家咨询后对以上两项进行设置。而对于Modicon PLC及支持标准ModbusRTU的PLC及控制器等设备,一般需将“32位整数解码顺序”和“32位浮点数解码顺序”设置为“23412”。 另外,在使用本驱动与“Modbus串口数据

8、转发设备”构件通讯时,“解码顺序”及“校验方式”均需按默认值设置,否则会导致通讯失败或解析数据错误。2. “分块采集方式”设置:主要是针对非标准ModbusRTU协议设备。当用户通过本驱动软件与设备通讯时,如果按默认“0按最大长度分块”时,出现读取连续地址正常,而不连续地址不正常时,可与厂家咨询,并设置为“1按连续地址分块方式”尝试是否可正常通讯。而对于Modicon PLC及支持标准ModbusRTU的PLC及控制器等设备,直接使用默认设置即可,这样可以提高采集效率。5、 采集通道a、 通讯状态:通讯状态值代表意义0表示当前通讯正常1表示采集初始化错误2表示采集无数据返回错误3表示采集数据校

9、验错误4表示设备命令读写操作失败错误5表示设备命令格式或参数错误6表示设备命令数据变量取值或赋值错误6、 内部属性用户可通过内部属性,添加通道,本驱动构件可支持ModbusRTU寄存器类型及对应功能码如下:寄存器数据类型读取功能码写入功能码操作方式通道举例1区输入继电器BT02只读只读10001 表示1区地址10区输出继电器BT0105、15读写读写00001 表示0区地址13区输入寄存器BT、WUB、WB、WDDUB、DB、DD、DF、STR04只读只读30001 表示3区地址14区输出寄存器BT、WUB、WB、WDDUB、DB、DD、DF、STR0306、16读写读写40001 表示4区地

10、址1说明:功能码:1区、3区不支持写操作;4区在双字(32位)数据写操作或批量写入多个数据时,使用16功能码。数据类型:“STR”数据类型是专用于和MCGS“Modbus串口数据转发设备”驱动构件配合使用的,并且只能通过写通道的方式来改变“Modbus串口数据转发设备”从设备的值。具体数据类型说明请参见 附录2注意:在内部属性中添加通道时,起始地址均为1,这是遵从Modbus协议的,即所谓的“协议地址”,对于部分寄存器起始地址为0的设备,通道添加时,地址应加1处理。 7、 设备命令本设备构件提供设备命令,具体格式如下: 设备命令命令格式命令举例读取命令ReadRead(寄存器名称, 寄存器地址

11、, 数据类型=返回值)例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中。写入命令WriteWrite(寄存器名称, 寄存器地址, 数据类型=写入值)例1.

12、3: !SetDevice(设备0,6, "Write(4,10,WUB=Data00;4,40,DF=Data01) ")将Data00,Data01的值分别以16位无符号和浮点数写入4区寄存器地址10和40中。32位读命令Read32Read32(寄存器名称, 寄存器地址, 数据类型=字符返回值)例2.1: !SetDevice(设备0,6, "Read32(4,10,DUB=strData) ")读取4区寄存器中地址10的32位无符号值, 放入字符变量strData中。32位写命令Write32Write32(寄存器名称, 寄存器地址, 数据类型=

13、字符写入值)例2.2: !SetDevice(设备0,6, "Write32(DM,10,DUB=strData) ")将字符变量strData的值, 以32位无符号格式写入4区寄存器地址1中。批量读取A:ReadPReadP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1, .数据n ,返回状态)例3.1: !SetDevice(设备0,6,"ReadP(4,10,WUB,2,Data00,Data01,nReturn)")表示读取4区寄存器从地址10开始的两个16位无符号数值,放入MCGS变量Data00,Data01中, 执行结果存入变量

14、nReturn中。批量读取B:ReadPVReadPV(寄存器名称, 起始地址, 数据类型,数据个数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:ReadBlockReadBlock (寄存器名称, 起始地址, 数据类型1数据类型,读取数量n, 字符数据 ,返回

15、状态)说明: 读取数量是指读取N个数据类型中指定的数据段到字符变量中,数据类型可以有多个,之间用中括号分隔。实际连续读取个数 = 读取数量n *(数据类型1+数据类型n)返回数据“字符数据”格式为:123,456,xxx的csv方式,每次读取时以回车换行结尾。例3.3: !SetDevice(设备0,6, "ReadBlock(4,10,WUBDF,3,strData)")表示读取4区寄存器从地址10开始,按WBU,DF格式连续读取3组数据 (即: 数据格式为WUB,DF,WUB,DF,WUB,DF),并以相应格式解析并以逗号间隔的CSV格式存入字符变量StrData中。批

16、量读取D:ReadMutiRegReadMutiReg(寄存器名称, 起始地址, 数据个数n, 数据类型, 字符数据)说明: 按指定数据类型批量读取起始地址开始连续地址的n个数据到字符变量数据中,数据间以逗号间隔。例3.4: !SetDevice(设备0,6," ReadMutiReg (4, 10, 5, DF, strData)")表示读取4区寄存器从地址10开始的5个32位浮点数值,并以逗号间隔形式,放入MCGS字符串变量strData中。例如:字符变量strData = “123.4,234.5,345.6,456.7,567.8” 。批量写入A:WritePWri

17、teP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1, .数据n ,返回状态)例4.1: !SetDevice(设备0,6, "WriteP(4,10,WUB,2,Data00,Data01,nReturn)")表示将MCGS变量Data00,Data01的值, 以16位无符号形式写入4区寄存器从地址10起始的两个寄存器中, 执行结果存入变量nReturn中。批量写入B:WritePVWriteP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1 ,返回状态)例4.2: !SetDevice(设备0,6, "WritePV(4,10,WUB,5

18、,Data00,nReturn)")表示将以MCGS变量Data01为起始,连续5个变量的值(即: Data00,Data01,Data02, Data03, Data04), 以16位无符号形式写入4区寄存器从地址10起始的两个寄存器中, 执行结果存入变量nReturn中。批量写入C:WriteBlockWriteBlock (寄存器名称, 起始地址, 数据类型1数据类型,读取数量n, 字符数据 ,返回状态)说明: 写入的数据在指定的字符数据对象中,格式为:xxx,xxx,xxx的csv方式,每次读取时换行以回车换行结尾。其他具体格式参见ReadBlock。例4.3: !SetDe

19、vice(设备0,6, "WriteBlock(4,10,WUBDF,3,strData)")表示将strData字符变量中的CSV格式的数据,按指定格式,写入4区寄存器从地址10开始的连续地址中。批量写入D:WriteMutiRegWriteMutiReg(寄存器名称, 起始地址, 数据个数n, 数据类型, 字符数据)说明: 按指定数据类型将字符数据中以逗号间隔的n个数据,批量写入起始地址开始连续地址的n个数据到字符变量数据中,数据间以逗号间隔。例4.4: !SetDevice(设备0,6," WriteMutiReg (4, 10, 5, DF, strDat

20、a)")其中字符变量strData = “123.4,234.5,345.6,456.7,567.8”,表示将字符串变量strData中以逗号间隔形式的123.4等5个数据,以浮点数形式写入4区寄存器从地址10开始连续5个地址中。通讯日志SetHiddenPro(1,属性值)开启通讯日志: !SetDevice(设备0,6, "SetHiddenPro(1, 1) ")开启错误日志: !SetDevice(设备0,6, "SetHiddenPro(1, 2) ")关闭通讯日志: !SetDevice(设备0,6, "SetHidden

21、Pro(1, 0) ")属性获取GetHiddenPro(1,属性值)读取通讯日志状态:!SetDevice(设备0,6, "GetHiddenPro(1, Data01) ")Data01为1时,表示通讯日志开启;为0时,表示通讯日志关闭。读取PLC延时:!SetDevice(设备0,6, "GetHiddenPro(2, Data01) ")读取PLC实际的响应延迟时间,存入变量Data01中。读取最小采集耗时:!SetDevice(设备0,6, "GetHiddenPro(3, Data01) ")读取采集最小数据(1

22、字长数据)所用耗时,存入变量Data01中。注:通常情况下,驱动日志功能默认为关闭的;参数说明:寄存器名称:字符型变量,表示当前操作的寄存器,值为”1”,”0”,”3”,”4”,分别对应1区输入继电器、0区输出继电器、3区输入寄存器、4区输出寄存器。寄存器地址:数值型变量,表示当前操作的寄存器地址,不同的设备地址范围不同,查阅相关手册确定。数据类型: 字符型变量,表示当前操作的寄存器数据类型附录2数据:数值型变量、开关量,它是用来存储设备命令数据的MCGS变量。返回状态:返回批量读写设备命令的执行状态(当设备命令格式错误时无效), 具体返回值意义请参见通讯状态说明, 返回状态为可选参数(以标记

23、), 用户也可通过通讯状态通道判断返回结果。批量读写说明:1.批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),为对同类寄存器连续地址的一次性读写操作。使用时要注意变量对应寄存器地址的连续性。 2.批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),数据个数最大为512个。建议一次批量操作数据量不要过大, 否则会影响正常采集效果。3.批量读写ReadPV和WritePV为对连续变量的操作,使用时要注意保证变量命名的索引累加的连续性。具体可参看相应“命令举例”部分。4.批量读写ReadBlock和WriteBlock为对连续地址的读写操作,其

24、字符变量格式为特定的CSV格式,在写入及读取解析时一定要注意符合格式要求。 通讯日志功能说明:设备命令中提供的通讯日志功能是为了方便用户现场调试,默认为不开启状态。正常时无需开启,否则影响速度。当现场有疑难无法正常通讯时,可开启通讯日志功能,记录日志信息,将通讯过程记录以供技术人员分析。对于通讯跳变等不稳定状态,可以开启通讯错误日志记录(即:当通讯不正常时,记录通讯错误的日志,而正常通讯时不记录日志)。通讯日志默认保存为C:ModbusRTU.log (TPC下为harddisk ModbusRTU.log)。当文件大于6M时自动清空。日志格式举例说明如下:设备地址行号操作时间发/收时间发/收

25、次数字节长度耗时发送或接收内容Address:01Line001(2007-12-05 16:21:51)1289961Send0/Revc08 Byte20ms010200000001B9CA属性获取功能说明:使用设备命令中提供的属性获取功能,可以获得通讯日志状态、PLC延时、最小采集耗时等数据。其中:通讯日志状态:读回值为1时,表示通讯日志开启;读回值为2时,表示开启错误日志;为0时,表示通讯日志关闭。PLC延时:为PLC实际的响应延迟时间,即:驱动读写指令帧发出后到PLC响应并开始返回数据帧所用的时间。最小采集耗时:为采集最少数据(1字长数据)所耗费的时间,最小采集耗时=发指令帧耗时+

26、PLC延时+接收数据帧耗时。 用户在调试时,可根据PLC延时、最小采集耗时判断PLC的实际响应时间,并结合驱动通讯日志判断采集速度是否正常。如数据值过大,说明PLC可能因程序过大而导致响应时间过长,影响采集速度。解决方法为优化PLC程序,提高PLC响应时间。8、 常见故障分析故障现象分析处理建议通讯状态为1或 2采集初始化错误或采集无数据返回(通讯硬件连接、参数设置问题)1、检查串口父设备参数设置是否正确2、检查串口是否被其他程序占用3、检查通讯电缆是否正确连接4、检测设备,并使用厂家测试程序确保通讯正常。并确认设备设置项与帮助中要求相同。5、检查“设备地址”与PLC设置是否一致6、适当延长“

27、通讯等待时间”7、读取数据地址超范围通讯状态为3采集数据校验错误(包括应答数据不完整或校验错误两种情况)1、检查父设备串口校验位设置是否正确2、适当延长“通讯等待时间”3、设备断电,重新上电,使初始化设备4、通讯电缆太长,做短距离测试5、现场干扰太大,避免周围环境干扰6、通讯信号变弱,使用有源RS232/485模块通讯状态在0与非0之间跳变通讯不稳定或读取地址超范围1、同通讯状态为3的处理2、读取数据地址超范围 (典型情况为,添加某通道后,导致通讯状态变非0)通讯状态为0,数据不正确组态工程错误1、新建工程测试驱动2、检测通道是否连接变量3、检测工程是否对数据进行处理通讯速度太慢通讯数据量过大

28、或采集周期设置过长1、将“采集优化”属性设置为“1-优化”2、减小父设备及子设备的最小采集周期(最小可设置为20ms)3、使用设备命令,减少实时采集的数据4、通过设备命令获取PLC延时,判断是否因PLC响应时间过长而影响采集速度。通讯次数过多5、将数据放到连续的地址块中,提高块读效率6、将不同寄存器的数据放到同一寄存器连续的地址块中,减少采集块数,提高采集效率9、 特殊应用的开发本设备构件目前只实现部分通讯功能,如需要用作其它用途或本构件不能满足要求时,可自行进行开发,MCGS用户指南中有关于开发设备构件的详细说明,也可以提出具体的技术要求,由我们亲自为您定制。附表:附录1本驱动构件支持的寄存器及功能码说明如下:寄存器读取功能码写入功能码功能码说明1区输入继电器0202: 读取输入状态0区输出继电器01051501: 读取线圈状态05: 强制单个线圈15: 强制多个线圈3区输入寄存器0404: 读输入寄存器4区输出寄存器03061603: 读保持寄

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论