下载
McgsPro_BacnetIP_v6_0_0_1_20200506.rar
设备简介
本驱动构件用于MCGS软件通过BACnetIP协议读写支持BACnetIP协议设备的数据;
驱动类型 | 串口子设备,须挂接在“通用TCP/IP父设备”下才能工作 |
通讯协议 | 采用BACnetIP协议 |
通讯方式 | 一主一从、一主多从方式。驱动构件为主,设备为从。 |
1、 设备通讯参数
“通用串口父设备”通讯参数设置如下:
设置项 | 参数项 |
本地IP地址 | 200.200.200.1 |
本地端口号 | 45670 |
远程IP地址 | 200.200.200.2 |
远程端口号 | 47808 |
其中父设备通讯参数设置应与设备的通讯参数相同,否则无法正常通讯。
设备通讯参数的具体设置请参见对应设备手册。
注意端口号的设置
2、 设备构件参数设置
“莫迪康ModbusRTU”子设备参数设置如下:
l 内部属性:单击“查看设备内部属性”,点击按钮进入内部属性,具体设置请参看内部属性。
l 最小采集周期:MCGS对设备进行操作的时间周期,单位为ms,默认为200ms,根据采集数据量的大小,设置值可适当调整。
l 写属性优先级:默认为8,取值范围为1-16,表示分配给这个写操作的优先级,16为最低优先级
l 通讯等待时间:通讯数据接收等待时间,默认设置为200ms,根据采集数据量的大小,设置值可适当调整。
3、 采集通道
a、 通讯状态:
通讯状态值 | 代表意义 |
0 | 表示当前通讯正常 |
1 | 表示采集初始化错误 |
2 | 表示采集无数据返回错误 |
3 | 表示采集数据校验错误 |
4 | 表示设备命令读写操作失败错误 |
5 | 表示设备命令格式或参数错误 |
6 | 表示设备命令数据变量取值或赋值错误 |
7 | 表示接收数据异常,解码错误 |
通讯异常码 | (详见附录1) |
4、 设备命令
本设备构件提供设备命令,具体格式如下:
设备命令 | 命令格式 | 命令举例 |
读取命令
Read |
Read(寄存器名称, 寄存器地址, 属性=返回值)
|
例1.1: !SetDevice(设备0,6, “Read(AO,1,PresentValue=Data00) “)
读取AO模拟输出地址为1,1区地址10,PresentValue属性的值,放入MCGS变量Data00。 |
写入命令
Write |
Write(寄存器名称, 寄存器地址, 属性=写入值) | 例1.3: !SetDevice(设备0,6, “Write(4,10,WUB=Data00;4,40,DF=Data01) “)
将Data00,Data01的值分别以16位无符号和浮点数写入AO模拟输出地址10。 |
32位读命令
Read32 |
Read32(寄存器名称, 寄存器地址, 属性=字符返回值) | 例2.1: !SetDevice(设备0,6, “Read32(AO,10,PresentValue=strData) “)
读取 AO模拟10地址PresentValue属性放入strData中。。 |
32位写命令
Write32 |
Write32(寄存器名称, 寄存器地址, 属性=字符写入值) | 例2.2: !SetDevice(设备0,6, “Write32(AO,10,PresentValue=strData) “)
将字符变量strData的值, 写入AO模拟输出地址10的PresentValue属性中。 |
批量读取A:
ReadP |
ReadP(寄存器名称, 起始地址, 属性,属性个数n, 数据1, …..数据n [,返回状态]) | 例3.1: !SetDevice(设备0,6,”ReadP(AO,10,PresentValue,2,Data00,Data00,返回值)”)
表示读取AO模拟输出从地址10开始的2个PresentValue值,放入MCGS变量Data00和Data01 中, 结果存入变量“返回值”中。 |
批量读取B:
ReadPV |
ReadPV(寄存器名称, 起始地址, 属性类型,属性个数n, 数据1 [,返回状态]) | 例3.2: !SetDevice(设备0,6,”ReadPV(AO,10,PresentValue,5,Data00,返回值)”)
表示读取AO模拟输出从地址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,[ PresentValue][ PresentValue],3,strData)”) 表示读取AO模拟输出从地址10开始,PresentValue连续读取3组数据 (),并以相应格式解析并以逗号间隔的CSV格式存入字符变量StrData中。 |
批量写入A:
WriteP |
WriteP(寄存器名称, 起始地址, 属性类型,属性个数n, 数据1, …..数据n [,返回状态]) | 例4.1: !SetDevice(设备0,6,”Write P(AO,10,PresentValue,2,Data00,Data00,返回值)”)
表示将MCGS变量Data00,Data01的值, 写入AO模拟输出从地址10起始的两个寄存器PresentValue中, 执行结果存入变量nReturn中。 |
批量写入B:
WritePV |
WriteP(寄存器名称, 起始地址, 属性类型,属性个数n, 数据1 [,返回状态]) | 例4.2: !SetDevice(设备0,6, “WritePV(AO,10,PresentValue,5,Data00,nReturn)”)
表示将以MCGS变量Data01为起始,连续5个变量的值(即: Data00,Data01,Data02, Data03, Data04), 以写入AO模拟输出从地址10起始的两个寄存器PresentValue中, 执行结果存入变量nReturn中。。 |
批量写入C:
WriteBlock |
WriteBlock (寄存器名称, 起始地址, [属性类型1][属性类型…],读取数量n, 字符数据 [,返回状态]) | 说明: 写入的数据在指定的字符数据对象中,格式为:xxx,xxx,xxx的csv方式,每次读取时换行以回车换行结尾。其他具体格式参见ReadBlock。
例4.3: !SetDevice(设备0,6, “WriteBlock(4,10,[ PresentValue][ PresentValue],3,strData)”) 表示将strData字符变量中的CSV格式的数据,按指定格式,写入AO寄存器从地址10开始的连续地址PresentValue属性中。 |
通讯日志 | SetHiddenPro(1,属性值) | 开启通讯日志: !SetDevice(设备0,6, “SetHiddenPro(1, 1) “) |
开启错误日志: !SetDevice(设备0,6, “SetHiddenPro(1, 2) “) | ||
关闭通讯日志: !SetDevice(设备0,6, “SetHiddenPro(1, 0) “) | ||
属性获取 | GetHiddenPro(1,属性值) | 读取通讯日志状态:!SetDevice(设备0,6, “GetHiddenPro(1, Data01) “)
Data01为1时,表示通讯日志开启;为0时,表示通讯日志关闭。 |
注:通常情况下,驱动日志功能默认为关闭的;
参数说明:
寄存器名称:字符型变量,表示当前操作的寄存器,值为AI,AO,AV,BI,BO,BV,MI,MO,MV, Calendar, Command, Device, File,Group,N_C,Schedule等等,分别对应设备Analog Input,Analog Output,Analog Value,Binary Input,Binary Output,Binary Value,MultiState Input,MultiState Output,MultiStateValue,NotificationClass,Schedule。
寄存器地址:数值型变量,表示当前操作的寄存器地址,不同的设备地址范围不同,查阅相关手册确定。
属性类型: 设备对象支持的属性
返回状态:返回批量读写设备命令的执行状态(当设备命令格式错误时无效), 具体返回值意义请参见通讯状态说明, 返回状态为可选参数(以[]标记), 用户也可通过通讯状态通道判断返回结果。
批量读写说明:
1.批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),为对同类寄存器连续地址的一次性读写操作。使用时要注意变量对应寄存器地址的连续性。
2.批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),数据个数最大为512个。建议一次批量操作数据量不要过大, 否则会影响正常采集效果。
3.批量读写ReadPV和WritePV为对连续变量的操作,使用时要注意保证变量命名的索引累加的连续性。具体可参看相应“命令举例”部分。
4.批量读写ReadBlock和WriteBlock为对连续地址的读写操作,其字符变量格式为特定的CSV格式,在写入及读取解析时一定要注意符合格式要求。
通讯日志功能说明:
设备命令中提供的通讯日志功能是为了方便用户现场调试,默认为不开启状态。正常时无需开启,否则影响速度。当现场有疑难无法正常通讯时,可开启通讯日志功能,记录日志信息,将通讯过程记录以供技术人员分析。对于通讯跳变等不稳定状态,可以开启通讯错误日志记录(即:当通讯不正常时,记录通讯错误的日志,而正常通讯时不记录日志)。通讯日志默认保存为C:\BACnetIP.log (TPC下为\harddisk\ ModbusRTU.log)(TPC下为插入的U盘根目录mcgs_log 文件夹下)。
5、 常见故障分析
故障现象 | 分析 | 处理建议 |
通讯状态为
1或 2 |
采集初始化错误
或采集无数据返回
(通讯硬件连接、参数设置问题) |
1、检查TCP/IP父设备参数设置是否正确 |
2、检查端口是否被其他程序占用 | ||
3、检查通讯电缆是否正确连接 | ||
4、检测设备,并使用厂家测试程序确保通讯正常。
并确认设备设置项与帮助中要求相同。 |
||
5、检查“远程端口”和“”本地端口“”的设置是否正确 | ||
6、适当延长“通讯等待时间” | ||
7、读取数据地址超范围 | ||
通讯状态为3 | 采集数据校验错误
(只包括数据校验错误) |
1、检查父设备TCP/IP设置是否正确 |
2、适当延长“通讯等待时间” | ||
3、设备断电,重新上电,使初始化设备 | ||
4、现场干扰太大,避免周围环境干扰 | ||
通讯状态为7
|
采集数据不正确
(获取数据帧不正确) |
1、检查设备当前是否支持BACnetIP协议 |
2、适当延长“通讯等待时间” | ||
3、现场干扰太大,避免周围环境干扰 | ||
4、设备断电,重新上电,使初始化设备 | ||
通讯状态在0与非0之间跳变 | 通讯不稳定或读取地址超范围 | 1、同通讯状态为3的处理 |
2、读取数据地址超范围
(典型情况为,添加某通道后,导致通讯状态变非0) |
||
通讯状态为0,数据不正确 | 组态工程错误 | 1、新建工程测试驱动 |
2、检测通道是否连接变量 | ||
3、检测工程是否对数据进行处理 | ||
通讯速度太慢 | 通讯数据量过大或采集周期设置过长 | 1、将“采集优化”属性设置为“1-优化” |
2、减小父设备及子设备的最小采集周期
(最小可设置为20ms) |
||
3、使用设备命令,减少实时采集的数据 | ||
4、通过设备命令获取PLC延时,判断是否因PLC响应时间过长而影响采集速度。 | ||
通讯次数过多 | 5、将数据放到连续的地址块中,提高块读效率 | |
6、将不同寄存器的数据放到同一寄存器连续的地址块中,减少采集块数,提高采集效率 |
6、 特殊应用的开发
本设备构件目前只实现部分通讯功能,如需要用作其它用途或本构件不能满足要求时,可自行进行开发,《MCGS用户指南》中有关于开发设备构件的详细说明,也可以提出具体的技术要求,由我们亲自为您定制。
附表:
附录1
通讯异常码分为两部分,前两位和后两位,分别表示错误类和错误代码详见下表:
例:1:131,1为error class,31为error code表示无此设备对象
例2:31,0为error class,31为error code 表示无此设备
例3:232,2为error class,31为error code 表示设备对象无此对应属性
error class | Value |
device | 0 |
object | 1 |
property | 2 |
resources | 3 |
security | 4 |
services | 5 |
vt | 6 |
error code | Value |
other | 0 |
authentication-failed | 1 |
character-set-not-supported | 41 |
configuration-in-progress | 2 |
device-busy | 3 |
dynamic-creation-not-supported | 4 |
file-access-denied | 5 |
incompatible-security-levels | 6 |
inconsistent-parameters | 7 |
inconsistent-selection-criterion | 8 |
Invalid-array-index | 42 |
Invalid-data-type | 9 |
invalid-file-access-method | 10 |
invalid-file-start-position | 11 |
operator-name | 12 |
invalid-parameter-data-type | 13 |
invalid-time-stamp | 14 |
key-generation-error | 15 |
missing-required-parameter | 16 |
no-objects-of-specified-type | 17 |
no-space-for-object | 18 |
no-space-to-add-list-element | 19 |
no-space-to-write-property | 20 |
no-vt-sessions-available | 21 |
object-deletion-not-permitted | 22 |
object-identifier-already-exists | 23 |
operational-problem | 24 |
password-failure | 25 |
property-is-not-a-list | 26 |
read-access-denied | 27 |
security-not-supported | 28 |
service-request-denied | 29 |
timeout | 30 |
unknown-object | 31 |
unknown-property | 32 |
this enumeration was removed | 33 |
unknown-vt-class | 34 |
unknown-vt-session | 35 |
unsupported-object-type | 36 |
value-out-of range | 37 |
vt-session-already-closed | 38 |
vt-session-termination-failure | 39 |
write-access-denied | 40 |
版权声明:本文内容来源于网络搜集无法获知原创作者,仅供个人学习用途,若侵犯到您的权益请联系我们及时删除。邮箱:1370723259@qq.com