例1.2: !SetDevice(设备0,6, \读取寄存器4区地址1的16位无符号值, 和地址40的浮点数值,放入MCGS变量Data00,Data01中。 写入命令 Write Write(寄存器名称, 寄存器地址, 数据类型=写入值) 例1.3: !SetDevice(设备0,6, \将Data00,Data01的值分别以16位无符号和浮点数写入4区寄存器地址10和40中。 32位读命令 Read32 Read32(寄存器名称, 寄存器地址, 数据类型=字符返回值) 32位写命令 Write32 Write32(寄存器名称, 寄存器地址, 数据类型=字符写入值) 批量读取A: ReadP ReadP(寄存器名称, 起始地址, 数据类型,数据例2.1: !SetDevice(设备0,6, \读取4区寄存器中地址10的32位无符号值, 放入字符变量strData中。 例2.2: !SetDevice(设备0,6, \将字符变量strData的值, 以32位无符号格式写入4区寄存器地址1中。 例3.1: !SetDevice(设备0,6,\个数n, 数据1, …..数据n 表示读取4区寄存器从地址10开始的两个16位无符号数值,放入 [,返回状态]) 批量读取B: ReadPV ReadPV(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1 [,返回状态]) MCGS变量Data00,Data01中, 执行结果存入变量nReturn中。 例3.2: !SetDevice(设备0,6,\返回值)\表示读取4区寄存器从地址10开始的5个16位无符号数值,放入MCGS变量Data00为起始,连续5个变量(即: Data00,Data01,Data02,Data03,Data04) 中, 结果存入变量“返回值”中。 批量读取C: ReadBlock ReadBlock (寄存器名称, 说明: 读取数量是指读取N个数据类型中指定的数据段到字符起始地址, [数据类型1][数据类型…],读取数量n, 字符数据 [,返回状态]) 变量中,数据类型可以有多个,之间用中括号分隔。 实际连续读取个数 = 读取数量n *(数据类型1+数据类型n) 返回数据“字符数据”格式为:123,456,xxx的csv方式,每次读取时以回车换行结尾。 例3.3: !SetDevice(设备0,6, \表示读取4区寄存器从地址10开始,按WBU,DF格式连续读取3组数据 (即: 数据格式为WUB,DF,WUB,DF,WUB,DF),并以相应格式解析并以逗号间隔的CSV格式存入字符变量StrData中。 批量读取D: ReadMutiReg(寄存器名说明: 按指定数据类型批量读取起始地址开始连续地址的n个数据到字符变量数据中,数据间以逗号间隔。 例3.4: !SetDevice(设备0,6,\表示读取4区寄存器从地址10开始的5个32位浮点数值,并以逗号间隔形式,放入MCGS字符串变量strData中。 例如:字符变量strData = “123.4,234.5,345.6,456.7,567.8” 。 批量写入A: WriteP WriteP(寄存器名称, 起始地址, 数据类型,数据例4.1: !SetDevice(设备0,6, \ReadMutiReg 称, 起始地址, 数据个数n, 数据类型, 字符数据) 个数n, 数据1, …..数据n 表示将MCGS变量Data00,Data01的值, 以16位无符号形式写入[,返回状态]) 4区寄存器从地址10起始的两个寄存器中, 执行结果存入变量nReturn中。 批量写入B: WritePV WriteP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1 [,返回状态]) 例4.2: !SetDevice(设备0,6, \表示将以MCGS变量Data01为起始,连续5个变量的值(即: Data00,Data01,Data02, Data03, Data04), 以16位无符号形式写入4区寄存器从地址10起始的两个寄存器中, 执行结果存入变量nReturn中。 批量写入C: WriteBlock WriteBlock (寄存器名称, 说明: 写入的数据在指定的字符数据对象中,格式为:xxx,xxx,起始地址, [数据类型1][数据类型…],读取数量n, 字符数据 [,返回状态]) xxx的csv方式,每次读取时换行以回车换行结尾。其他具体格式参见ReadBlock。 例4.3: !SetDevice(设备0,6, \表示将strData字符变量中的CSV格式的数据,按指定格式,写入4区寄存器从地址10开始的连续地址中。 批量写入D: WriteMutiReg(寄存器名说明: 按指定数据类型将字符数据中以逗号间隔的n个数据,批量写入起始地址开始连续地址的n个数据到字符变量数据中,数据间以逗号间隔。 例4.4: !SetDevice(设备0,6,\其中字符变量strData = “123.4,234.5,345.6,456.7,567.8”,表示将字符串变量strData中以逗号间隔形式的123.4等5个数据,以浮WriteMutiReg 称, 起始地址, 数据个数n, 数据类型, 字符数据) 点数形式写入4区寄存器从地址10开始连续5个地址中。 通讯日志 SetHiddenPro(1,属性值) 属性获取 GetHiddenPro(1,属性值) 开启通讯日志: !SetDevice(设备0,6, \SetHiddenPro(1, 1) \ 开启错误日志: !SetDevice(设备0,6, \SetHiddenPro(1, 2) \ 关闭通讯日志: !SetDevice(设备0,6, \SetHiddenPro(1, 0) \ 读取通讯日志状态:!SetDevice(设备0,6, \etHiddenPro(1, Data01) \ Data01为1时,表示通讯日志开启;为0时,表示通讯日志关闭。 读取PLC延时:!SetDevice(设备0,6, \etHiddenPro(2, Data01) \ 读取PLC实际的响应延迟时间,存入变量Data01中。 读取最小采集耗时:!SetDevice(设备0,6, \etHiddenPro(3, Data01) \ 读取采集最小数据(1字长数据)所用耗时,存入变量Data01中。 注:通常情况下,驱动日志功能默认为关闭的; 参数说明:
寄存器名称:字符型变量,表示当前操作的寄存器,值为”1”,”0”,”3”,”4”,分别对应[1区]输入继电器、[0区]输出继电器、[3区]输入寄存器、[4区]输出寄存器。
寄存器地址:数值型变量,表示当前操作的寄存器地址,不同的设备地址范围不同,查阅相关手册确定。 数据类型: 字符型变量,表示当前操作的寄存器数据类型附录2 数据:数值型变量、开关量,它是用来存储设备命令数据的MCGS变量。
返回状态:返回批量读写设备命令的执行状态(当设备命令格式错误时无效), 具体返回值意义请参见通讯状态说明, 返回状态为可选参数(以[]标记), 用户也可通过通讯状态通道判断返回结果。
批量读写说明:
1.批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),为对同类寄存器连续地址的一次性读写操作。使用时要注意变量对应寄存器地址的连续性。
2.批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),数据个数最大为512个。建议一次批量操作数据量不要过大, 否则会影响正常采集效果。
3.批量读写ReadPV和WritePV为对连续变量的操作,使用时要注意保证变量命名的索引累加的连续性。具体可参看相应“命令举例”部分。
4.批量读写ReadBlock和WriteBlock为对连续地址的读写操作,其字符变量格式为特定的CSV格式,在写入及读取解析时一定要注意符合格式要求。 通讯日志功能说明:
设备命令中提供的通讯日志功能是为了方便用户现场调试,默认为不开启状态。正常时无需开启,否则影响速度。当现场有疑难无法正常通讯时,可开启通讯日志功能,记录日志信息,将通讯过程记录以供技术人员分析。对于通讯跳变等不稳定状态,可以开启通讯错误日志记录(即:当通讯不正常时,记录通讯错误的日志,而正常通讯时不记录日志)。通讯日志默认保存为C:\\ModbusRTU.log (TPC下为\\harddisk\\ ModbusRTU.log)。当文件大于6M时自动清空。
日志格式举例说明如下: 设备地址 行号 操作时间 发/收时间 发/收次数 字节长度 Address:01 Line001 属性获取功能说明:
使用设备命令中提供的属性获取功能,可以获得通讯日志状态、PLC延时、最小采集耗时等数据。 其中:通讯日志状态:读回值为1时,表示通讯日志开启;读回值为2时,表示开启错误日志;为0时,表示通讯日志关闭。
PLC延时:为PLC实际的响应延迟时间,即:驱动读写指令帧发出后到PLC响应并开始返回数据帧所用的时间。
最小采集耗时:为采集最少数据(1字长数据)所耗费的时间,最小采集耗时=发指令帧耗时+ PLC延时+接收数据帧耗时。
用户在调试时,可根据PLC延时、最小采集耗时判断PLC的实际响应时间,并结合驱动通讯日志判断采集速度是否正常。
如数据值过大,说明PLC可能因程序过大而导致响应时间过长,影响采集速度。解决方法为优化PLC程序,提高PLC响应时间。
(2007-12-05 16:21:51) [1289961] Send0/Revc0 [8 Byte] [20ms] 010200000001B9CA 耗时 发送或接收内容 8、 常见故障分析
故障现象 通讯状态为 1或 2 分析 采集初始化错误 或采集无数据返回 (通讯硬件连接、参数设置问题) 处理建议 1、检查串口父设备参数设置是否正确 2、检查串口是否被其他程序占用 3、检查通讯电缆是否正确连接 4、检测设备,并使用厂家测试程序确保通讯正常。 并确认设备设置项与帮助中要求相同。 5、检查“设备地址”与PLC设置是否一致 6、适当延长“通讯等待时间” 7、读取数据地址超范围 通讯状态为3 采集数据校验错误 (包括应答数据不完整或校验错误两种情况) 1、检查父设备串口校验位设置是否正确 2、适当延长“通讯等待时间” 3、设备断电,重新上电,使初始化设备 4、通讯电缆太长,做短距离测试 5、现场干扰太大,避免周围环境干扰
相关推荐: