硬件配置 参数设置 设备属性 通道信息 设备命令 通讯状态 附录 #西门子_S7_Smart200_以太网 1、 设备简介 本驱动构件用于MCGS软件通过以太网口读写Smart200PLC设备的各种寄存器数据。 驱动类型 以太网子设备,须挂接在“通用TCP/IP父设备”下才能工作 通讯协议 采用Smart200以太网协议 2、 硬件连接 MCGS软件与设备通讯之前,必须保证通讯连接正确。 通讯连接方式:采用RJ-45网线(直通网线或使用HUB交换),网线接线如图: 3、 设备通讯参数 “通用TCPIP父设备”通讯参数设置如下: <1> 本地IP地址:本栏需按实际情况正确填写上位机本机IP地址,默认设置为192.168.2.190。 <2> 本地端口号: 上位机数据帧发送/接收端口,默认情况下为0,建议用户不要修改默认设置值。 <3> 远端IP地址:本栏需填写以太网单元的IP地址(注意:上位机IP地址和以太网单元IP地址需要在同一个子网内,一般情况下即是要求点分四段IP表示法的前三段地址要相同),默认设置为192.168.2.1。 <4> 远端端口号: 以太网单元的数据帧接收/发送端口,和以太网单元内部设置的TCP端口号应一致,默认设置为102。 4、 设备构件参数设置 “西门子_S7_Smart200_以太网”设备参数设置如下: <1> 内部属性:本驱动不支持内部属性。 <2> 最小采集周期(ms):MCGS对设备进行操作的时间周期,单位为ms,默认为100ms,根据采集数据量的大小,设置值可适当调整。 <3> TCP/IP通讯延时:通讯时等待应答帧的延时时间,默认设置为200ms,当无法正常通讯时可适当增大。 <4> 重建TCP/IP连接等待时间[s]:指驱动通讯失败后,驱动会立刻重连网络,如果重连失败,那么驱动会等待指定的时间,直至指定通讯重连时间后再次重连网络,默认为10s。 <5> 机架号[Rack]:PLC机架号(Rack),可设定范围0-31,默认值为0。此属性一般不用设置。 <6> 槽号[Slot]:PLC槽号(Slot),可设定范围0-31,默认值为2,在和400系列PLC通讯时此属性一般要设定为3。 <7> 字符串编码:调整接收字符串数据时的编码方式,默认设置为0-ASCII。 字符串编码方式 0-ASCII ASCII窄字编码方式,包含 GB2312和GBK字符集 1-UNICODE UNICODE宽字编码方式 <8> 字符串解码顺序: 调整字符串元件的解码顺序,默认设置为0-21。 字符串解码顺序 举例:AB 0-21 表示字元件存储字符时高低位顺序颠倒 BA 1-12 表示字元件存储字符时高低位顺序不颠倒 AB <9> 字符串格式:调整字符串元件的解码顺序,默认设置为0-1200字符串格式。 字符串格式 PLC数据类型 备注 示例VSTR10_10写入ABCD 0 – 1200字符串格式 西门子1200标准字符串类型,第一个字节为字符串类型的容量,第二个字节为实际字符串的长度 建立通道长度大于写入字符串长度时,写入字符串后续的数据不清零 PLC内存之中数据内容为$10$4ABCD后续4个字节为plc先前数据,$10为字符串容量为10字节,$4表示字符串实际长度为4字节 1 – Smart字符串格式 西门子Smart200标准字符串格式,第一个字节为字符串长度 建立通道长度大于写入字符串长度时,写入字符串后续的数据不清零 PLC内存之中数据内容为$4ABCD后续5个字节为plc先前数据,$4表示字符串长度为4字节 2 – 内存地址格式 以0结尾的字符串,第一个字节为字符串的第一个字节数据 建立通道长度大于写入字符串长度时,写入字符串后续的数据清零 PLC内存之中数据内容为”ABCD\0\0\0\0\0\0”后续6个字节会被清零 备注:smart200字符串通道建立时是按照1200形式创建的,例如VSTR0_10通道,在按照1200形式读取字符串是,其实质的PLC地址为0到12,地址0和地址1为字符串通道长度和字符串实际长度地址2-地址11为实际字符串数据,但是如果设备属性之中的字符串格式为 Smart字符串格式是和内存地址格式时,字符串VSTR_10的buffer长度实际为10,地址0存放的字符串实际长度,地址1到9是具体字符串数据,因此能读取到的字符串最大长度为9;按照内存地址格式时,字符串长度的buffer实际长度也为10,但是字符串是以0结尾,所以能读取到最大的字符串长为9. 5、 通道信息 <1> 寄存器信息: 寄存器 简称 寄存器类型(位/字) 数据类型 操作方式 PLC地址表示 I输入继电器 I 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 读写 10进制 Q输出继电器 Q 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 读写 10进制 M内部继电器 M 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 读写 10进制 V数据寄存器 V 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF STR 读写 10进制 T寄存器 T 字 DUB、DB、DD、DF 读写 10进制 C寄存器 C 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 读写 10进制 AI寄存器 AI 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 只读 10进制 AQ寄存器 AQ 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 读写 10进制 SM寄存器 SM 字 BT00~BT07 BUB、BB、BD WUB、WB、WD DUB、DB、DD、DF 只读 10进制 地址范围参见 附录2 <2> 数据类型表: BTdd 位(dd范围:00-07) BUB 8位 无符号二进制 BB 8位 有符号二进制 BD 8位 2位BCD WUB 16位 无符号二进制 WB 16位 有符号二进制 WD 16位 4位BCD DUB 32位 无符号二进制 DB 32位 有符号二进制 DD 32位 8位BCD DF 32位 浮点数 STR 字符串 1) 位序号:BT00、BT01---BT07; 2) 数值类型:BB、BUB、BD、WUB、WB、WD、DUB、DB、DD、DF、STR; 3) 第一个字母表示数据的长度,B表示是字节数据,W表示是字数据,D表示是双字数据; 4) 最后一个或两个字母表示数据类型,B表示二进制数,D表示BCD码,F表示浮点数; 5) 字符中二进制数中带U表示无符号数,不带U的表示有符号数。 6) Smart的字符串通道在写入长度小于建立字符串通道长度时, 写入字符仅覆盖PLC写入长度的区域,后续区域不覆盖 6、 设备命令 本设备构件提供设备命令,用于PLC进行相应的读写操作,设备命令的格式如下: 设备命令 命令介绍 Read 格式1 Read(寄存器名称, 寄存器地址, 数据类型=读取值) 用途 按照指定数据格式读取寄存器某一地址数值。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 读取值 参数可以为数值型变量、开关型变量。 例1 !SetDevice(设备0, 6, "Read(M,10,BT00=Data01)") 读取寄存器M10.0的数值,放入变量Data01。 例2 !SetDevice(设备0, 6, "Read(V,20,WUB=Data01)") 读取V寄存器中地址20的16位无符号值,放入数值型变量Data01。 Write 格式1 Write(寄存器名称, 寄存器地址, 数据类型=写入值) 用途 将数值以指定数据格式写入寄存器某一地址中。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 写入值 参数可以为数值型变量、开关型变量、数值常量。 例1 !SetDevice(设备0, 6, "Write(M,10,BT00=Data01)") 将数值型变量Data01的值写入寄存器M10.0。 例2 !SetDevice(设备0, 6, "Write(V,10,WUB=Data01)") 将数值型变量Data01的值,以16位无符号格式写入寄存器V10。 Read32 格式1 Read32(寄存器名称, 寄存器地址, 数据类型=读取值) 用途 按照指定数据格式读取寄存器某一地址数值,将读取值放入字符串变量。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 读取值 参数可以为字符串变量名,注该参数为字符型变量。 例1 !SetDevice(设备0, 6, "Read32(M,10,BT00=strData) ") 读取寄存器M10.0的数值,放入字符型变量strData。 例2 !SetDevice(设备0, 6, "Read32(V,40,DUB=strData) ") 读取V寄存器中地址40的32位无符号值,放入字符型变量strData。 Write32 格式1 Write32(寄存器名称, 寄存器地址, 数据类型=写入值) 用途 读取字符串变量值,将该值按照指定数据格式写入寄存器某一地址中。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 写入值 参数可以为字符串变量名、字符串常量,注该参数为字符串变量名或字符串常量。 例1 !SetDevice(设备0, 6, "Write32(M,10,BT00=strData)") 将字符变量strData的值,写入寄存器M10.0。 例2 !SetDevice(设备0, 6, "Write32(V,40,DUB=strData)") 将字符变量strData的值,以32位无符号格式写入寄存器V40。 ReadP 格式1 ReadP(寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 读取值1, 读取值2,.., 读取值n) 格式2 ReadP(寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 读取值1, 读取值2,.., 读取值n, 返回值) 用途 从寄存器指定地址开始,按照指定数据类型连续读取n个数值,将读取值分别存放入变量,注读取值变量个数与操作个数值相同。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 操作个数 参数可以为开关型变量、数值型变量、数值常量。 读取值 参数可以为开关型变量、数值型变量。 返回值4 参数可以为开关型变量、数值型变量。 例1 !SetDevice(设备0,6,"ReadP(V,10,WUB,2,Data01,Data02)") 表示读取V寄存器从地址10开始的两个16位无符号数值,放入数值型变量Data01、Data02。 例2 !SetDevice(设备0,6,"ReadP(V,10,WUB,2,Data01,Data02, nReturn)") 表示读取V寄存器从地址10开始的两个16位无符号数值,放入数值型变量Data01、Data02,执行结果存入变量nReturn。 WriteP 格式1 WriteP(寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 写入值1, 写入值2,..,写入值n) 格式2 WriteP(寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 写入值1, 写入值2,..,写入值n,返回值) 用途 从寄存器指定地址开始,按照指定数据类型连续写入n个数值,注写入值变量个数与操作个数值相同。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 操作个数 参数可以为开关型变量、数值型变量、数值常量。 写入值 参数可以为开关型变量、数值型变量、数值常量。 返回值4 参数可以为开关型变量、数值型变量。 例1 !SetDevice(设备0,6,"WriteP(V,10,WUB,2,Data01,Data02)") 表示将数值型变量Data01、Data02的值,以16位无符号形式写入V寄存器从地址10起始的两个寄存器。 例2 !SetDevice(设备0,6,"WriteP(V,10,WUB,2,Data01,Data02,nReturn)") 表示将数值型变量Data01、Data02的值,以16位无符号形式写入V寄存器从地址10起始的两个寄存器,执行结果存入变量nReturn。 ReadPV 格式1 ReadPV (寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 读取值) 格式2 ReadPV (寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 读取值, 返回值) 用途 从寄存器指定地址开始,按照指定数据类型连续读取n个数值,将读取值分别放入以“读取值”为起始,连续n个变量中,因该命令是将读取数值分别放入“读取值”为起始的连续n个变量中,使用时注意变量对应寄存器地址的连续性。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 操作个数 参数可以为开关型变量、数值型变量、数值常量。 读取值 参数可以为开关型变量、数值型变量,注该参数为变量。 返回值4 参数可以为开关型变量、数值型变量。 例1 !SetDevice(设备0,6,"ReadPV(V,10,WUB,5,Data01)") 表示读取V寄存器从地址10开始的5个16位无符号数值,放入数值型变量Data01为起始,连续5个变量(即:Data01、Data02、Data03、Data04、Data05)。 例2 !SetDevice(设备0,6,"ReadPV(V,10,WUB,5,Data01,nReturn)") 表示读取V寄存器从地址10开始的5个16位无符号数值,放入数值型变量Data01为起始,连续5个变量(即:Data01、Data02、Data03、Data04、Data05),执行结果存入变量nReturn。 WritePV 格式1 WritePV (寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 写入值) 格式2 WritePV (寄存器名称, 寄存器起始地址, 数据类型, 操作个数n, 写入值, 返回值) 用途 读取以“写入值”为起始,连续n个的变量数值,将读取值从寄存器指定地址开始,按照指定数据类型分别写入n个寄存器中,因该命令是读取以 “写入值”为起始的连续n个变量数值,使用时注意变量对应寄存器地址的连续性。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 操作个数 参数可以为开关型变量、数值型变量、数值常量 写入值 参数可以为开关型变量、数值型变量,注该参数为变量。 返回值4 参数可以为开关型变量、数值型变量。 例1 !SetDevice(设备0, 6,"WritePV(V,10,WUB,5,Data01)") 表示将以数值型变量Data01为起始,连续5个变量的值(即: Data01、Data02、Data03、Data04、Data05), 以16位无符号形式写入V寄存器从地址10起始的五个寄存器。 例2 !SetDevice (设备0, 6,"WritePV(V,10,WUB,5,Data01,nReturn)") 表示将以数值型变量Data01为起始,连续5个变量的值(即: Data01、Data02、Data03、Data04、Data05), 以16位无符号形式写入V寄存器从地址10起始的五个寄存器,执行结果存入变量nReturn。 ReadBlock 格式1 ReadBlock (寄存器名称, 寄存器起始地址, [数据类型1][数据类型2][数据类型n], 操作个数n, 写入变量) 格式2 ReadBlock (寄存器名称, 寄存器起始地址, [数据类型1][数据类型2][数据类型n], 操作个数n, 写入变量,返回值) 用途 从寄存器指定地址开始,按照指定数据类型格式连续读取n组数据,将读取值以特定CSV5格式存入字符变量中。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 操作个数 参数可以为开关型变量、数值型变量、数值常量。 写入值 参数可以为字符串变量,注该参数为字符型变量。 返回值4 参数可以为开关型变量、数值型变量。 例1 !SetDevice(设备0, 6, "ReadBlock(V,10,[WUB][DF],3,strData)") 表示读取V寄存器从地址10开始,按WBU,DF格式连续读取3组数据 (即:数据格式为WUB、DF、WUB、DF、WUB、DF),并以相应格式解析并以逗号间隔的CSV格式存入字符变量strData。 例2 !SetDevice(设备0, 6, "ReadBlock(V,10,[WUB][DF],3,strData,nReturn)") 表示读取V寄存器从地址10开始,按WBU,DF格式连续读取3组数据(即:数据格式为WUB、DF、WUB、DF、WUB、DF),并以相应格式解析并以逗号间隔的CSV格式存入字符变量strData,执行结果存入变量nReturn。 WriteBlock 格式1 WriteBlock (寄存器名称, 寄存器起始地址, [数据类型1][数据类型2][数据类型n], 操作个数n, 写入值) 格式2 WriteBlock (寄存器名称, 寄存器起始地址, [数据类型1][数据类型2][数据类型n], 操作个数n, 写入值, 返回值) 用途 将字符串变量中的数据,以指定格式解析并按照指定数据类型格式,写入寄存器指定地址开始的连续地址中。 注字符串变量数据格式为特定csv5格式。 参数 寄存器名称1 参数可以为字符型变量、字符串常量,使用寄存器简称。 寄存器地址2 参数可以为开关型变量、数值型变量、数值常量。 数据类型3 参数可以为字符型变量、字符串常量。 操作个数 参数可以为开关型变量、数值型变量、数值常量。 写入值 参数可以为字符串变量。 返回值4 参数可以为开关型变量、数值型变量。 例1 !SetDevice(设备0, 6, "WriteBlock(V,10,[WUB][DF],3,strData)") 表示将strData字符变量中的CSV格式的数据,按指定格式,写入V寄存器从地址10开始的连续地址。 例2 !SetDevice(设备0, 6, "WriteBlock(V,10,[WUB][DF],3,strData,nReturn)") 表示将strData字符变量中的CSV格式的数据,按指定格式,写入V寄存器从地址10开始的连续地址, 执行结果存入变量nReturn。 SETRETRYCOUNT 格式1 SETRETRYCOUNT (写入值) 用途 设置采集重试次数。 参数 写入值 参数可以为开关型变量、数值型变量、字符型变量、常量。 例1 !SetDevice(设备0, 6, " SETRETRYCOUNT (3)") 表示设置采集重试次数为3 次。 GETRETRYCOUNT 格式1 GETRETRYCOUNT (读取值) 用途 获取采集重试次数值。 参数 读取值 参数可以为开关型变量、数值型变量、字符型变量。 例1 !SetDevice(设备0, 6, " GETRETRYCOUNT (nCount)") 表示获取采集重试次数,将获取值放入数值变量nCount。 说明: <1> 寄存器名称:字符型变量,表示当前操作的寄存器,使用寄存器简称,寄存器对应简称参看通道信息。 <2> 寄存器地址:数值型变量,表示当前操作的寄存器地址,查阅相关手册确定。 <3> 数据类型: 字符型变量,表示当前操作的寄存器数据类型。 <4> 返回状态: 返回批量读写设备命令的执行状态(当设备命令格式错误时无效),返回值的意义请参见通讯状态说明,返回状态为可选参数,用户也可通过通讯状态通道查看返回结果。 <5> 指定CSV格式:每条数据以回车换行分隔,数据内部以逗号分隔; 以WriteBlock为例:!SetDevice(设备0,6, "WriteBlock(V,10,[WUB][WD],3,strData)"),strData数据内容为 213,3213 23,0 213,32 批量读写说明: <1> 批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),为对同类寄存器连续地址的一次性读写操作,使用时注意变量对应寄存器地址的连续性。 <2> 批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),数据个数最大为512个,建议一次批量操作数据量不要过大,否则会影响正常采集效果。 7、 采集通道 <1> 通讯状态: 通讯状态值 代表意义 0 表示当前通讯正常 -1 表示驱动加载失败 -2 表示通讯端口打开失败 1 表示采集初始化错误 2 表示采集无数据返回错误 3 表示采集数据校验错误 4 表示设备命令读写操作失败错误 5 表示设备命令格式或参数错误 6 表示设备命令数据变量取值或赋值错误 7 表示PLC错误,数据没有准备好 8 表示收到数据帧(但其中部分数据存在错误) 9 表示收到数据帧(但数据有错误) 10 表示收到错误帧 <2> 常见故障分析: 故障现象 分析 处理建议 通讯状态为 -1 驱动文件缺失 1、重新安装驱动 通讯状态为 -2 通讯端口打开失败 1、 检查TCPIP父设备IP地址是否正确 通讯状态为 1或 2 采集初始化错误 或采集无数据返回 (通讯硬件连接、参数设置问题) 1、检查“IP地址”、“端口号”设置是否正确 2、检查通讯线是否正确连接 3、检查通讯电缆是否正确连接 4、检测设备,并使用厂家测试程序确保通讯正常。 并确认设备设置项与帮助中要求相同。 5、检查“槽号”、“机架号”与PLC设置是否一致 6、适当延长“通讯等待时间” 7、读取数据地址超范围 通讯状态为3 采集数据校验错误 (包括应答数据不完整或校验错误两种情况) 1、适当延长“通讯等待时间” 2、设备断电,重新上电,使初始化设备 3、现场干扰太大,避免周围环境干扰 4、检查连接设置 通讯状态为7 PLC数据未准备好 适当增加“通讯等待时间” 通讯状态为8 部分通道配置问题 (多为寄存器地址超出范围) 可能存在配置数据地址越界等错误,此时有问题通道值显示可能的错误值及意义如下: -1-硬件错误 -3-非法寄存器访问 -5-错误的寄存器地址 -6-不支持的数据类型 -10-寄存器不存在或长度错误 1、此时请检查所添加寄存器及地址是否存在问题,以及对应型号PLC是否支持。 通讯状态为 9或10 返回错误帧 1、确认PLC相关设置是否正确 通讯状态在0与非0之间跳变 通讯不稳定或读取地址超范围 1、同通讯状态为3的处理 2、读取数据地址超范围 (典型情况为,添加某通道后,导致通讯状态变非0) 通讯状态为0,数据不正确 组态工程错误 1、新建工程测试驱动 2、检测通道是否连接变量 3、检测工程是否对数据进行处理 通讯速度太慢 通讯数据量过大或采集周期设置过长 1、将“采集优化”属性设置为“1-优化” 2、减小父设备及子设备的最小采集周期 (最小可设置为20ms) 3、使用设备命令,减少实时采集的数据 通讯次数过多 4、将数据放到连续的地址块中,提高块读效率 5、将不同寄存器的数据放到同一寄存器连续的地址块中,减少采集块数,提高采集效率 附表: 附录1 PLC参数设置 <1> 新建工程,选择合适的PLC后,点击项目列表中“通信”弹出通信窗口,点击“查找CPU”按钮,找到CPU后,点击“确定”。如图: <2> 点击项目列表下“通信”,在通信窗口点击“设置”按钮设置IP地址等。如图: 附录2 CPU SR20寄存器参考地址范围表: CPU型号 I输入寄存器 Q输出寄存器 M位寄存器 V数据寄存器 SR20 0~31 0~31 0~31 0~8191 注:具体不同型号的PLC,其地址范围请参考对应用户手册。 附录3 通讯状态设置 <1> 新建工程,双击设备窗口,进入“设备组态:设备窗口”,点击“工具箱”弹出设备管理,以ModbusRTU为例,添加驱动到设备窗口。如图: <2> 双击设备进入设备编辑窗口,双击“通讯状态”通道,双击数据库变量为通讯状态连接变量,连接变量后,点击“确认”按钮。如 <3> Smart200字符串通道添加如下,Smart200只有V区才支持字符串通道,通道建立如下,字符串长度在扩展属性设置中设置 -------------------------------------------------------------------------------- 返回顶部