1 驱动简介
驱动类型 | 网口子设备,必须挂接在TCP/IP父设备下才能正常工作 |
通讯协议 | SLMP协议二进制通讯(3E帧) |
通讯方式 | 一主一从或多主一从 |
本驱动构件使用主从模式,FX-5 PLC的CPU模块作为从设备,TPC触摸屏为主设备。驱动构件为TCP/IP子设备,使用该构件需要将构件挂接在通用TCP/IP父设备下
2 驱动父设备参数配置
参数名称 | 属性值 |
网络类型 | 0 --- UDP 1 --- TCP |
服务器/客户设置 | 0 --- 客户端 1 --- 服务器 |
本地IP地址 | 192.168.3.4 |
本地端口号 | 0 |
远程IP地址 | 192.168.3.250 |
远程端口号 | 4999 |
A.网络类型;主要用于配置网络通信的协议栈,该项需要与通讯的三菱FX5系列的PLC配置一致。
B.服务器/客户设置;使用FX5-ETHERNET驱动必须将该项配置为0 --- 客户端,指定FX5-ETHERNET驱动工作模式为主模式.
C.本地IP地址;该项主要用于配置驱动工作的主机的IP地址
D.本地端口号;设置为0,父设备会自动为驱动自动分配一个端口号。端口号设置最好大于4000,防止设置端口号为系统使用的端口号导致通讯失败。
E.远程IP地址;该项IP地址必须配置为通讯目标PLC(三菱FX5系列PLC)的IP地址。
F.远程端口号;配置该项值为通讯目标PLC(三菱FX5系列PLC)的端口号。
以上通讯参数必须配置正确才能使用驱动与三菱FX5系列PLC通讯正常。
3 驱动子设备参数配置
参数名称 | 单位 | 属性值 |
最小采集周期 | 毫秒 | 100(默认) |
通讯等待时间 | 毫秒 | 200(默认) |
分块采集方式 | - | 0—按最大长度分块(默认)、1--4-按连续地址分块 |
A.最小采集周期;设置采集的速度,适当减小设定值可以提高采集数据的实时性,默认设置为100ms。
B.通讯等待时间;指定驱动发出数据请求后最多等待多长时间返回数据。如果超过指定时间未返回数据,
那么驱动判断无数据返回,通讯失败。指定该项值小于设备响应时间会导致通讯失败。
C.分块采集方式;默认配置为按最大长度分块。该项值主要影响通讯采集数据的分块方式。一般设置为0。
4 驱动特性
驱动寄存器地址编号
驱动寄存器地址编号规则与PLC编程软件GX Works 3一致
A. X、Y继电器采用8进制编号。 X0011表示X输入继电器的第9个点(X0000为第0个点)。在设备命令和采集通道中都采用8进制编号。使用非八进制输入,结果未定义。
Q SetDevice(设备0,6, “Write(X, 9, BT=data0)“) “9”为非8进制数
R SetDevice(设备0, 6, “Write(X, 11, BT=data0)”) “11”为8进制数表示地址9
B. B/SB继电器、W/SW继电器采用十六进制编号。B0010表示B链接继电器的第16个点(B0000为第0个点)在设备命令和采集通道中都采用16进制编号。使用非16进制输入,结果未定义。
Q SetDevice(设备0,6, “Write(B, 1R, BT=data0)“) “1R”为非十六进制
R SetDevice(设备0, 6, “Write(B, 1F, BT=data0)”) “1F”为16进制数表示地址31
C . 其他寄存器编号使用十进制编号
2. 继电器/寄存器支持的数据
序号 | 寄存器名称 | 说明 | 数据类型 |
1 | X | 输入 | BT |
2 | Y | 输出 | BT |
3 | M | 内部继电器 | BT |
4 | L | 锁存继电器 | BT |
5 | F | 报警器 | BT |
6 | B | 链接继电器 | BT |
7 | S | 步进继电器 | BT |
8 | D | 数据寄存器 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
9 | W | 链接寄存器 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
10 | TS | 定时器触点 | BT |
11 | TC | 定时器线圈 | BT |
12 | TN | 定时器当前值 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
13 | SS | 累计定时器触点 | BT |
14 | SC | 累计定时器线圈 | BT |
15 | SN | 累计定时器当前值 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
16 | CS | 计数器触点 | BT |
17 | CC | 计数器线圈 | BT |
18 | CN | 计数器当前值 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
19 | LCS | 长计数器触点 | BT |
20 | LCC | 长计数器线圈 | BT |
21 | LCN | 长计数器当前值 | BT00-BT31,DUB,DB,DD,DF |
22 | SB | 链接特殊继电器 | BT |
23 | SW | 链接特殊寄存器 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
24 | SM | 特殊继电器 | BT |
25 | SD | 特殊寄存器 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
26 | Z | 变址寄存器 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
27 | LZ | 长变址寄存器 | BT00-BT31,DUB,DB,DD,DF |
28 | R | 文件寄存器 | BT00-BT15,WUB,WB,WD,DUB,DB,DD,DF |
数据类型符号表
BTdd | 位(dd范围:00-31) |
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位浮点数 |
3. 设备命令简介
设备命令 | 命令使用 | |
读取命令Read | 格式 | Read(寄存器名称, 寄存器地址, 数据类型=返回值) |
例子1 | !SetDevice(设备0, 6,“Read(X,0,BT00=Data00;Y,1,BT00=Data01)”) | |
读取X0和Y1寄存器的值,放入MCGS变量Data00,Data01中。 | ||
例子2 | !SetDevice(设备0, 6,“Read(D,10,WUB=Data00;D,30,DF=Data01)”) | |
读取D寄存器中地址10的16位无符号值,D寄存器中地址30的浮点数值,放入MCGS变量Data00,Data01中。 | ||
写入命令Write | 格式 | Write(寄存器名称, 寄存器地址, 数据类型=写入值) |
例子3 | !SetDevice(设备0, 6,“Write(D,10,WUB=Data00;D,30,DF=Data01)”) | |
将Data00,Data01的值分别以16位无符号和浮点数写入寄存器D10,D30中。 | ||
32位读命令Read32 | 格式 | Read32(寄存器名称, 寄存器地址, 数据类型=字符返回值) |
例子4 | !SetDevice(设备0, 6, “Read32(D,10,DUB=strData) ") | |
读取D寄存器中地址10的32位无符号值,放入字符变量strData中。 | ||
32位写命令Write32 | 格式 | Write32(寄存器名称, 寄存器地址, 数据类型=字符写入值) |
例子5 | !SetDevice(设备0, 6,“Write32(D,10,DUB=strData) “) | |
将字符变量strData的值,以32位无符号格式写入寄存器D10中。 | ||
批量读取A:ReadP | 格式 | ReadP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1, …..数据n [,返回状态]) |
例子6 | !SetDevice(设备0, 6,"ReadP(D,10,WUB,2,Data00,Data01,nReturn)") | |
表示读取D寄存器从地址10开始的两个16位无符号数值,放入MCGS变量Data00,Data01中,执行结果存入变量nReturn中。 | ||
批量读取B:ReadPV | 格式 | ReadPV(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1 [,返回状态]) |
例子7 | !SetDevice(设备0, 6, “ReadPV(D,10,WUB,5,Data00,返回值)”) | |
表示读取D寄存器从地址10开始的5个16位无符号数值,放入MCGS变量Data00为起始,连续5个变量(即:Data00,Data01,Data02,Data03,Data04) 中,结果存入变量“返回值”中。 | ||
批量读取C:ReadBlock | 格式 | ReadBlock (寄存器名称, 起始地址, [数据类型1][数据类型…],读取数量n, 字符数据 [,返回状态]) |
例子8 | !SetDevice(设备0, 6, “ReadBlock(D,10,[WUB][DF],3,strData)”) | |
表示读取D寄存器从地址10开始,按WBU,DF格式连续读取3组数据 (即: 数据格式为WUB,DF,WUB,DF,WUB,DF),并以相应格式解析并以逗号间隔的CSV格式存入字符变量StrData中。 说明:读取数量是指读取N个数据类型中指定的数据段到字符变量中,数据类型可以有多个,之间用中括号分隔。 实际连续读取个数 = 读取数量n *(数据类型1+数据类型n) 返回数据“字符数据”格式为:123,456,xxx的csv方式,每次读取时以回车换行结尾。 | ||
批量写入A:WriteP | 格式 | WriteP(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1, …..数据n [,返回状态]) |
例子9 | !SetDevice(设备0, 6, “WriteP(D,10,WUB,2,Data00,Data01,nReturn)”) | |
表示将MCGS变量Data00,Data01的值,以16位无符号形式写入D寄存器从地址10起始的两个寄存器中,执行结果存入变量nReturn中。 | ||
批量写入B:WritePV | 格式 | WritePV(寄存器名称, 起始地址, 数据类型,数据个数n, 数据1 [,返回状态]) |
例子10 | !SetDevice(设备0, 6, “WritePV(D,10,WUB,5,Data00,nReturn)”) | |
表示将以MCGS变量Data00为起始,连续5个变量的值(即: Data00,Data01,Data02, Data03, Data04),以16位无符号形式写入D寄存器从地址10起始的两个寄存器中,执行结果存入变量nReturn中 | ||
批量写入C:WriteBloc | 格式 | WriteBlock (寄存器名称, 起始地址, [数据类型1][数据类型…],读取数量n, 字符数据 [,返回状态]) |
例子11 | !SetDevice(设备0, 6, “WriteBlock(D,10,[WUB][DF],3,strData)”) | |
表示将以MCGS变量Data00为起始,连续5个变量的值(即: Data00,Data01,Data02, Data03, Data04),以16位无符号形式写入D寄存器从地址10起始的两个寄存器中,执行结果存入变量nReturn中。 说明: 写入的数据在指定的字符数据对象中,格式为:xxx,xxx,xxx的csv方式,每次读取时换行以回车换行结尾。其他具体格式参见ReadBlock。 | ||
通讯日志 | 格式 | SetHiddenPro(1,属性值) |
例子12 | 开启通讯日志: !SetDevice(设备0, 6, “SetHiddenPro(1, 1)”) | |
例子13 | 开启错误日志: !SetDevice(设备0, 6, “SetHiddenPro(1, 2)”) | |
例子14 | 关闭通讯日志: !SetDevice(设备0, 6, “SetHiddenPro(1, 0)”) | |
属性获取 | 格式 | GetHiddenPro(1,属性值) |
例子15 | 读取通讯日志状态:!SetDevice(设备0, 6, “GetHiddenPro(1, Data01)”) Data01为1时,表示通讯日志开启;为0时,表示通讯日志关闭。 | |
例子16 | 读取PLC延时:!SetDevice(设备0, 6, “GetHiddenPro(2, Data01)”) 读取PLC实际的响应延迟时间,存入变量Data01中。 | |
例子17 | 读取最小采集耗时:!SetDevice(设备0, 6, “GetHiddenPro(3, Data01)”) 读取采集最小数据(1字长数据)所用耗时,存入变量Data01中。 |
参数说明:
i. 寄存器名称:字符型变量,表示当前操作的寄存器,值等于X, Y, M,SS,SM,TS,CN,D等。
ii. 寄存器地址:数值型变量,表示当前操作的寄存器地址,查阅相关手册确定。
iii. 数据:为数值型或开关型变量, 包括返回数据值及写入值等,是用来存储设备命令数据的MCGS变量。(32位写命令中数据为字符型变量)。
iv. 返回状态:返回批量读写设备命令的执行状态(当设备命令格式错误时无效),具体返回值意义请参见通讯状态说明,返回状态为可选参数(以[]标记),用户也可通过通讯状态通道判断返回结果。
批量读写说明:
i. 批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),为对同类寄存器连续地址的一次性读写操作。使用时注意变量对应寄存器地址的连续性。
ii. 批量读写操作(包括:ReadP、ReadPV、WriteP、WritePV),数据个数最大为512个。建议一次批量操作数据量不要过大, 否则会影响正常采集效果。
iii. 批量读写ReadPV和WritePV为对连续变量的操作,使用时要注意保证变量命名的索引累加的连续性。具体
可参看相应“命令举例”部分。
iv. 批量读写ReadBlock和WriteBlock为对连续地址的读写操作,其字符变量格式为特定的CSV格式,在写入及读取解析时一定要注意符合格式要求。
属性获取功能说明:
使用设备命令中提供的属性获取功能,可以获得通讯日志状态、PLC延时、最小采集耗时等数据。其中:通讯日志
状态:读回值为1时,表示通讯日志开启;读回值为2时,表示开启错误日志;读回值为0时,表示通讯日志关闭。
设备命令中提供的通讯日志功能是为了方便用户现场调试,默认为不开启状态。正常时无需开启,否则影响速度。
当现场有疑难无法正常通讯时,可开启通讯日志功能,记录日志信息,将通讯过程记录以供技术人员分析。对于通讯
跳变等不稳定状态,可以开启通讯错误日志记录(即:当通讯不正常时,记录通讯错误的日志,而正常通讯时不记录日志)。
通讯日志默认保存为C:\ModbusTCP.log (TPC下为U盘\mcgs_log\FX5_ETHERNET_设备0.log)。
日志格式举例说明如下
设备地址 | 行号 | 操作时间 | 发/收时间 | 发/收次数 | 字节长度 | 耗时 | 发送或接收内容 |
Address:00 | Line001 | (2007-12-05 16:21:51) | [1289961] | Send0/Revc0 | [28 Byte] | [12ms] | 500000FFFF03000C00100001040000DC0000A81400 |
PLC延时
PLC实际的响应延迟时间,即:驱动读写指令帧发出后到PLC响应并开始返回数据帧所用的时间。
最小采集耗时
为采集最少数据 (1字长数据)所耗费的时间,最小采集耗时=发指令帧耗时+ PLC延时+接收数据帧耗时。用户在调试时,可根据PLC延时、最小采集耗时判断PLC的实际响应时间,并结合驱动通讯日志判断采集速度是否正常。如数据值过大,说明PLC可能因程序过大而导致响应时间过长,影响采集速度。解决方法为优化PLC程序,提高PLC响应时间。
4. 驱动通信状态
通讯状态 | 意义 |
0 | 表示当前通讯正常 |
1 | 表示采集初始化错误 |
2 | 表示采集无数据返回错误 |
3 | 表示采集数据校验错误 |
4 | 表示设备命令读写操作失败错误 |
5 | 表示设备命令格式或参数错误 |
6 | 表示设备命令数据变量取值或赋值错误 |
其他 | 表示地址越界或者TCP超时等 |
5. 常见故障分析
故障现象 | 分析故障及处理方法 | |
通讯状态为1或 2 | 分析 | 采集初始化错误或采集无数据返回 (通讯硬件连接、参数设置问题) |
处理方法 | 1 检查端口号是否设置较小,该端口号已被其他应用或者系统使用,导致初始化失败 | |
2 检查工程设置的本机IP地址不是驱动工作主机的IP | ||
3 检查工程父设备设置的通讯协议栈TCP/UDP与目标通讯三菱FX5系列PLC不一致 | ||
4 检查目标三菱FX5系列PLC配置未配置通讯协议和IP地址是否与工程设置的远程IP和端口一致 | ||
5 检查三菱FX5系列PLC是否设备组态为其他通讯 | ||
通讯状态为3 | 分析 | 采集数据校验错误(包括应答数据不完整或校验错误两种情况) |
处理方法 | 1适当延长“通讯等待时间” | |
2设备断电,重新上电,使初始化设备 | ||
通讯状态在0与非0之间跳变 | 分析 | 通讯不稳定或读取地址超范围 |
处理方法 | 1同通讯状态为3的处理 | |
2 读取数据地址超范围(典型情况为,添加某通道后,导致通讯状态变非0) | ||
通讯状态为0,数据不正确 | 分析 | 组态工程错误 |
处理方法 | 1新建工程测试驱动 | |
2检测通道是否连接变量 | ||
检测工程是否对数据进行处理 | ||
通讯速度太慢 | 分析 | 通讯数据量过大或采集周期设置过长 |
处理方法 | 1将“采集优化”属性设置为“1-优化” | |
2减小父设备及子设备的最小采集周期(最小可设置为20ms) | ||
3使用设备命令,减少实时采集的数据 | ||
4通过设备命令获取PLC延时,判断是否因PLC响应时间过长而影响采集速度。 | ||
分析 | 通讯次数过多 | |
处理方法 | 5将数据放到连续的地址块中,提高块读效率 | |
6将不同寄存器的数据放到同一寄存器连续的地址块中,减少采集块数,提高采集效率 |
6. PLC通讯配置
1.测试PLC连接
i. 单击GX Works3,点击菜单栏[在线]à[连接指定目标]
ii. 连接目标connection对话框中指定[计算机测I/F]为EthernetBaord
iii. 连接目标connection对话框中指定[可编程控制器测I/F]为PLC Module
iv. 连接目标connection对话框中指定[其他站指定]为No Specification
v. 连接目标connection对话框中单击[CPU直接连接设置D]指定通讯的网卡.
测试PLC连接操作设置如下图
2.新建工程,组态FX5 PLC系统通讯,设置通讯IP和协议栈
i. 单击菜单栏[新建],选择CPU系列为FX5CPU,选择机型为FX5U。
ii. 双击工程的导航页中的以太网端口,再在右侧弹出的窗口中单击[基本设置]à[对象连接配置设置]。
iii. 输入PLC的IP地址,通讯数据代码必须设置为二进制。
iv. 单击[对象连接配置设置]à详细设置,弹出设备组态对话框[以太网配置(内置以太网端口)]。
v. GX Works3组态设备通信,选择SLMP连接设备,如果要连接两台TPC触摸屏与一台PLC通讯,那么需要配置两个SLMP连接设备。
vi. 设置完后单击GX Works3设备组态,单击[以太网配置(内置以太网端口)]菜单栏的反应设置并关闭。
vii. 回到对象设备连接配置设置后,单击[应用]按钮 以下为配置一台TPC与FX5通讯的具体操作流程如下图.
3.下载工程,更新PLC配置
i. 单击菜单栏[转换]à[全部转换]。
ii. 单击菜单栏[在线]à[写入可编程控制器]。
iii. 在弹出的对话框中单击[全选]à[执行]。
iv. 下载完成后必须切断PLC电源后重启,防止设置参数不能立即生效。
声明 本站所收集的资源大部分来源于网络,版权归原作者所有。 经本站分类整理的资源,仅供私下交流学习之用,不得用于任何涉及商业的目的,否则产生的一切后果由您自行承担!如果您需要修改资源或用于商业盈利,我们建议您与原作者联系并取得授权。 我们分享资源但是不对任何资源负法律责任,所有资源请在您下载后24 小时内删除。转载时请保留以上信息,谢谢。 根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 注;鉴于此也希望大家如有商业用途请向官方公司购买正版软件与资源或教程。谢谢!专注于人工智能与自动化系统领域知识内容分享。感谢你的关注与分享!!!

微信公众号:自动化电气系统
微信交流群: zidonghuadianqi123
QQ交流群:60886850
您的赞赏是对我们的鼓励,We’ll be more solid with your donations.
在看,让更多人看到