PLC Ethernet 通讯.docx
- 文档编号:10890814
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:18
- 大小:861.59KB
PLC Ethernet 通讯.docx
《PLC Ethernet 通讯.docx》由会员分享,可在线阅读,更多相关《PLC Ethernet 通讯.docx(18页珍藏版)》请在冰点文库上搜索。
PLCEthernet通讯
PLCEthenet通讯
一、总则:
提高设备互联互通,自我诊断修复能力。
二、设备互联标准
2.1设备控制器选用要求
PLC必须带有以太网接口,支持TCP/IP协议,网速10M/100M自适应。
2.1.1制造商选择范围
PLC:
三菱,型号可选FX3GE;FX3UC+FX3U-ENET-ADP;FX3U+FX3U-CNV-BD+FX3U-ENET-ADP;FX5系列;Q03;Q04;Q06;Q12带有以太网接口的PLC。
嵌入式控制器:
BACKHOFF。
型号CX90x0或CX50x0系列。
2.1.2通讯协议
三菱PLCFX3系列用MC协议。
三菱FX5和QPLC用SLMP协议。
BACKHOFF嵌入式控制器用ADS协议。
2.1.3控制系统布局与布线。
一个系统(机器)只有一个主控PLC或嵌入式主控制器。
当系统多个机柜时,只有一个机柜装主控制器,其它机柜只能装分布式I/O模块或从站模块。
分布式I/O模块或从站模块仅用于读取本机台传感器信号及控制本机台执行机构。
严禁跨机柜接传感器和执行机构控制线。
分布式I/O模块和主控制器之间用总线通讯方式,以方便机台的拆分和组装。
2.1.3.1三菱PLC系统
Q系列:
此系列属于中大型PLC,最大点数可达4096点,可用于多机柜(最多支持7个)分布式控制系统中。
系统结构如下图1所示。
注意:
扩展电线总长不要超过13.2米。
图1三菱Q系列PLC控制系统结构
FX系列:
此系列属于小型PLC。
FX3GA、FX3GC、FX3GE控制规模128点,使用CC-link远程I/O可达256点。
FX3U及FX3UC控制规模256点,使用CC-link远程I/O可达384点。
FX系列PLC用于单机柜或双机柜设备中,不得用于三机柜及以上的设备中。
跨机柜的控制线必须是接线线端子台电缆线或CC-LINK总线。
I/O线不得跨机柜串接。
FX3GA、FX3GC必须加装FX3U-CNV-BD转换模块和FX3U-ENET-ADP以太网模块,才能接MES.
IQ-F系列:
此系列控制规模256点,使用CC-link远程I/O可达512点。
此系列自带以太网接口,运行速度是FX3系列的150倍,也用于单机柜或双机柜设备中。
在系统中,若PLC上以太网口被HMI、伺服驱动等其他设备占用,须加装工业级交换机一台。
2.1.3.2BACKHOFF嵌入式系统
CX50x0系列与CX90x0系列:
这个下系列嵌入式控制器有2个独立的LAN接口。
2个部分都可以以10/100/1000Mbit的速度运行。
CPU模块(X001)上二个中一个独立的Ethernet接口被设定为EtherCAT接口。
用于分布式总线控制设备中。
图2BACKHOFF嵌入式系统结构
三、通讯协议详解。
3.1三菱PLC通讯协议。
FX3系列PLC用以太网连接时可用MC协议。
Q系列和IQ-F系列PLC用RS485连接时才可用MC协议,当用以太网连接时用SLMP协议。
3.1.1GXWorks2通讯设置
以太网通讯需设置PLCIP地址打开GXWorks2软件,在左边的资源管理器中点“工程”,点开“参数”目录树,点击“PLC参数”,点击“以太网参数”选择卡,输入PLC的IP地址,如图3所示。
点击“打开设置”,在第二行的“打开方式”中选择MC协议,本站端口号中输入“1026”,点击“设置结束”,如图4所示。
点击“检查”,无错误后点“设置结束”。
图3三菱PLCIP设置
图4以太网端口设置
3.1.2MC协议
MC协议是可编程控制器通信方式的名称,用于使对方设备通过以太网适配器进行可编程控制器软元件数据的读出/写入等。
只要对方设备侧可以嵌入应用程序,并根据MELSEC可编程控制器的协议(A兼容1E帧子集)收发数据,便可利用MC协议通信访问可编程控制器。
3.1.2.1MC帧格式:
图5MC协议格式
1)报头
报头为TCP/IP、UDP/IP用报头。
在可编程控制器侧,以太网适配器会进行附加、删除,因此无需用户设置。
2)副标题
副标题的格式构成如下。
图6:
副标题格式
0x00:
读位元件;0x01:
读字元件;0x02:
写位元件;0x03:
写字元件。
3)PC号
PC号固定为FFH。
a)二进制码通信时,以二进制值表示PC号。
b)ASCII码通信时,以16进制数的ASCII码表示PC号。
4)监视定时器
这是用于设置在以太网适配器向可编程控制器发出读出/写入要求后到返回结果之间等待时间的定时器。
a)设置值可以如下指定。
0x0000(0):
无限等待(一直等到可编程控制器返回响应。
)
0x0001~0xFFFF(1~65535):
等待时间(单位250ms)
b)要进行正常的数据通信,建议根据通信对象,在1~40(0.25~10秒)的设置范围内使用。
5)字符区(命令)
字符区(命令)中显示以太网适配器命令等内容,用于表示对方设备向对象可编程控制器站进行数据读出/写入时使用的功能。
字符区(命令)部分的数据内容和排列因使用的功能不同而异。
各项功能下数据的排列如下:
a)起始地址:
四字节长度,低字节在前,高字节在后。
b)软元件类型:
双字节长度.D:
0x200x44;R:
0x200x52;TN:
0x4e0x54;TS:
0x530x54;CN:
0x4e0x43;CS:
0x530x43;X:
0x200x58;Y:
0x200x59;M:
0x200x4d;S:
0x200x53。
c)软元件点数:
1字节长度
6)字符区(响应)
字符区(响应)显示对方设备向对象可编程控制器站进行数据读出/写入后的读出数据/处理结果等。
字符区(响应)部分的数据内容和排列因使用的功能不同而异。
各项功能正常结束时数据的排列如下:
7)结束代码
用以下值显示对方设备向对象可编程控制器站进行数据读出/写入后的处理结果。
0x00:
正常结束
0x00以外:
异常结束(0x50~0x60)
a)二进制码通信时,以二进制值表示结束代码。
b)ASCII码通信时,以16进制数的ASCII码表示结束代码。
c)异常结束时,请根据10章的故障排除,确认内容并采取措施。
当结束代码为5BH/线须“5B”时,后面会紧跟着异常代码(10~18H)的数据和00H/“00”。
8)异常代码
对方设备向对象可编程控制器站进行数据读出/写入后的处理结果异常,结束代码为0x5B/“5B”时显示异常内容。
(异常代码:
0x10~0x18).
a)二进制码通信时,以二进制值表示异常代码。
b)ASCII码通信时,以16进制数的ASCII码表示异常代码。
MC协议通讯示例:
例1:
上位机读M100~M107数据时发送:
0x000xff0xa00x000x640x000x000x000x200x4d0x080x00.
PLC应答:
0x800x000x000x010x100x11
其中0x80:
应答特征字
0x00:
结束码
上例应答表示:
M100=0;M101=0;M102=0;M103=1;M104=1;M105=0;M106=1;M107=1.
例2:
上位机写M100~M107时发送:
0x020xff0xa00x000x640x000x000x000x200x4d0x080x000x110x100x010x00
此例表示M100写入1;M101写入1;M102写入1;M103写入0;M104写入0;M105写入1;M106写入0;M107写入1。
PLC应答:
0x820x00
例3:
上位机读d100~d107时发送:
0x010xff0xa00x000x640x000x000x000x200x440x080x00.
此例表示上位机读D100~D107里数据。
PLC应答:
0x810x000x100x000x110x100x210x040x010x110x2d0x330xcc0x3c0xc30x550xcc0x33
此例表示:
D100=0x0010;D101=0x1011;D102=0x0421;D103=0x1101;
D104=0x332d;D105=0x3ccc;D106=0x55c3;D107=0x33cc;
例4:
上位机写D100~D107时发送:
0x830xff0xa00x000x640x000x000x000x200x440x080x000x100x000x110x100x210x040x010x110x2d0x330xcc0x3c0xc30x550xcc0x33。
PLC应答:
0x830x00.
此例表示:
D100写入0x0010;D101写入0x1011;D102写入0x0421;D103写入0x1101;
D104写入0x332d;D105写入0x3ccc;D106写入0x55c3;D107写入0x33cc;
3.1.3SLMP协议
SLMP用于IQ-F和Q系列PLC通过以太网连接与上位机通讯。
3.1.3.1GXWorks3PLCIP设置
打开GXWorks3,在资源管理器中选择“Navigation”选择卡,展开“Project”目录,点击“ModuleConfiguration”项,如图7所示。
在右边的“ModuleConfiguration”窗口中,右键点击CPU模块,在右键菜单中选择“Parameter”,在下一级菜单中选择“InputdetailedConfigurationInformationWindow”,如图8所示。
在弹出的窗口中的“IPAddress”输入PLCIP地址。
图7:
模块初始化
图8:
IP地址输入选单
图9:
IP地址输入窗口
3.1.3.2
上位机从PLC读数据的指令报文帧格式:
(上位机->PLC).
图10:
上位机读PLC指令及响应
上位机向PLC写数据指令及响应
图11:
上位机向PLC写数据及PLC响应
1)帧头:
TCP/IP帧头,无需用户设定。
2)幅帧头:
分指令报文和响应报文两种。
指令报文:
0x5000;响应报文:
0xD000.
3)请求目标网络号和请求目标站号(PC号):
对于FX5(IQ-F)PLC来说,请求目标网络号固定为0x00;请求目标站号固定为0Xff.
4)请求目标模块I/O编号:
对于FX5(IQ-F)PLC来说是0x03ff;
5)请求目标多点站号:
对于FX5(IQ-F)PLC来说是0x00;
6)数据长度:
后面保留(双字节)、指令(双字节)、子指令(双字节)加上数据字节长数量之和,即数据字节长度+6;
7)保留字:
双字节,固定为0x0000.
8)指令与子指令:
0x020x140x000x00:
随机指定软元件编号,以16位为单位,将数据写入位软元件,或是以1字或2字为单位,将数据写入字软元件。
0x020x140x010x00:
随机指定软元件编号,以1位为单位,将数据写入位软元件。
0x060x040x000x00:
以位软元件和字软元件的n点为1块,随机指定多个块读取数据。
(指定位软元件时,1点中以16位为对象。
)
0x010x040x010x00:
以位单位读取;0x010x040x000x00:
以字单位读取;
0x060x140x000x00:
以位软元件和字软元件的n点为1块,随机指定多个块写入数据。
(指定位软元件时,1点中以16位为对象。
)
例5上位机以位为单位读M100~M107时发送指令:
0x500x000x000xff0xff0x030x000x0b0x000x000x000x010x040x010x000x640x000x000x900x080x00;
PLC响应:
0xd00x000x000xff0xff0x030x000x060x000x000x000x010x100x110x00;
读出的数为M100=0;M101=1;M102=1;M103=0;M104=1;M105=1;M106=0;M107=0;
例6上位机读D100~D107时发送指令:
0x500x000x000xff0xff0x030x000x0b0x000x000x000x010x040x000x000x640x000x000xa80x080x00;
PLC响应:
0xd00x000x000xff0xff0x030x000x120x000x000x000x010x100x110x000x3a0x440x740x4a0x8c0x350x830xa40xe40x8f0x230x33;
读出的数据为:
D100=0x0110;D101=0x1100;D102=0x3a44;D103=0x744a;D104=0x8c35;D105=0x83a4;
D106=0xe48f;D107=0x2333;
例7上位机以位为单位写入M100~M107时发送指令:
0x500x000x000xff0xff0x030x000x0b0x000x100x000x020x140x010x000x640x000x000x900x080x000x010x100x110x00;
写入结果是:
M100写入0;M101写入0;M102写入0;M103写入1;M104写入1;M105写入1;
M106写入0;M107写入0;
例8上位机以字单位写入D100~D107时发送指令:
0x500x000x000xff0xff0x030x000x0b0x000x000x000x010x040x000x000x640x000x000xa80x080x000x010x100x110x000x3a0x440x740x4a0x8c0x350x830xa40xe40x8f0x230x33;
写入结果时D100写入0x0110;D101写入0x1100;D102写入0x3a44;D103写入0x744a;D104写入0x8c35;D105写入0x83a4;D106写入0xe48f;D107写入0x2333;
3.1.4PLC资源分配:
M0~M499为易失性辅助继电器,即在关闭电源后,数据将丢失。
M500~M7999是非易失性辅助继电器,在关闭电源后,数据将得已保存。
D0~D127是易失性数据寄存器,关闭电源后,数据将丢失。
D127~D7999为非易失性数据寄存器,关闭电源后数据将得已保存。
非易失性辅助继电器可当易失性辅助继电器用,只需在PLC初始化脉冲中将其复位即可。
非易失性数据寄存器可当易失性寄存器用,只需在PLC初始化脉冲中将其清零即可。
所有的状态继电器都是易失性继电器,在没有启用步进转移功能时,可当辅助继电器(M继电器)用。
时间继电器T0~T199,0.1分辨率,T200~T245:
0.01s分辨率;T246~T249:
1ms分辨率,累计型;
T250~T255:
100ms分辨率,累计型;T256~T511:
1ms分辨率,累计型。
3.2BECKHOFF通讯协议
3.2.1ADS通讯协议
ADS通讯是Beckhoff公司定义的一种专门协议,用于TwinCAT设备之间的非周期性通讯,既可用于控制器内部的TwinCAT设备通讯,也可以用于控制器之间的TwinCAT设备通讯。
ADS通讯是基于TCP/IP之上的应用协议,所以当它用于控制器之间的TwinCAT设备通讯时,需要保证控制器之间的TCP/IP通讯正常,支持有线连接和无线连接。
采用无线以太网连接时,ADS通讯需要的时间更长。
ADS通讯的机制是Server/Client机制。
作为ADSServer不需要任何ADS通讯方面的编程。
Server能够对协议约定的ADS请求作出响应。
ADS通讯可以实现多种功能,比如设备状态、设备控制等等,但最常用的还是数据访问。
为此,必须了解ADS设备的内部地址或者变量与ADS访问地址之间的对应关系。
所有ADS设备都支持按地址访问,但有的同时还支持变量名访问。
第1种:
按地址访问
ADS设备的以“Group”来划分不同的数据区域,每个数据区域用“IndexGroup”来识别,区域内的数据就按Offset依次排列。
不同的ADS设备,“IndexGroup”划分规则不同,而连续的“Offset”依次对应的数据也不同。
常用的ADS设备有TwinCATPLC、TwinCATNC、TwinCATIO,其中TwinCATNC虽然也支持按地址访问,但用户通常是调用标准的功能块来向NC发指令,这些功能块会调用ADS指令,确定要访问的数据的IndextGroup和Offset,而无需用户直接面对这些数据。
第2种:
按变量名访问
TwinCATPLC默认支持变量名访问,而TwinCATNC的轴变量如果要通过变量名访问,就需要启用“CreateSymbol”功能。
按变量名访问ADS设备,最典型的应用就是通过电子示波器软件ScopeView显示PLC或者NC变量的实时曲线。
3.2.2ModbusRTU
ModbusRTU协议运行于RS232或者RS485等串行通讯接口上,Master/Slave的通讯模式,Master轮流访问各个Slave的数据。
当TwinCATPLC经过ModbusRTU与触摸屏通讯时,PLC是Slave,触摸屏是Master。
当TwinCATPLC经过Modbus与温控器、流量计等智能设备通讯时,PLC是Master,智能设备是Slave。
可用的模块有KL6021,KL6041,EL6021,EL6022。
3.2.3从PLC程序实现ADS通讯
TwinCATPLC既可以做ADSServer也可以做ADSClient。
要在两套PLC之间做ADS通讯,用户可以自己决定其中一台做Server,另一台做Client。
Server端不需要任何通讯程序,只是提供数据给Client访问。
Client端编写PLC程序实现ADS通讯,需要调用TcSystem.lib。
如图所示:
图12:
TcSystem.lib
这些功能块都有共同的输入变量:
NetID:
对方设备所在的TwinCAT系统的NetID,空白不填,表示本机不同PORT间的通讯。
Port:
对方设备的端口号,比如第1套PLC为“801”
IDXGRP:
要访问的数据组,比如输出区%QW为“16#F030”
IDXOFFS:
要访问的数据地址,比如地址%QW300为“300”
LEN:
读或者写的字节数。
指以IDXOFFS为起始地址,连续读或者写多少字节。
DESTADDR或者SRCADDR:
目的地址(读)或者源地址(写),比如ADR(Data1)。
READ或者WRITE:
ADS通讯是事件触发式,此处为读写的触发信号,上升沿有效。
TMOUT:
报警延时,默认500MS,为“T#500MS”。
3.2.3从高级语言实现ADS通讯
从高级语言实现ADS通讯,实际上这段应用程序就作为一个ADSClient。
TwinCAT提供了多种ADS通讯的接口文件,供高级语言调用,以建立一个ADSClient对象。
比如,VC需要调用DLL动态链接库,而VB需要调用OCX控件。
在VisualC++中进行链接和程序开发时所需要的文件:
TcAdsDll.dll–动态链接库
TcAdsDll.lib–使用TcAdsDll.dll的函数库
TcAdsApi.h–声明ADS功能的头文件
TcAdsDef.h–声明结构和常数的头文件
主要接口:
AdsPortOpen:
建立TwinCAT信息路由器连接(通讯口)。
AdsPortClose:
关闭TwinCAT信息路由器的连接(通讯口)。
AdsGetLocalAddress:
返回本地NetId和端口号
AdsSyncWriteReq:
同步写数据到一个ADS设备
AdsSyncReadReq:
从ADS服务器中同步读数据。
AdsSyncReadWriteReq:
同步写入数据到ADS服务器中并从ADS设备接收返回的数据。
AdsSyncReadStateReq:
从ADS服务器中读ADS状态和设备状态。
AdsSyncAddDeviceNotificationReq:
通知在ADS服务器中进行定义(如PLC)。
当某个事件发生时,该功能(回调功能)在ADS客户端进行调用(C程序)。
AdsSyncDelDeviceNotificationReq:
从ADS服务器中删除以前定义的通知。
四设备数据采集
1、设备运行状态数据:
正常运行、停机、待机、待料、设备异常信息、设备使用率、设备维护信息管理(耗材寿命管理)。
2、设备自检功能,同时,不定时自检,将自检数据输出到远程服务器中。
3、有远程诊断功能,通过各种各样的采集装置完成,如各种信号和反馈传感器、执行器和PLC等输出的数据和原始数据进行对比,判断设备是否正常运行。
4、生产统计功能,产量、生产周期、生产率、耗材使用统计、FPY等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLC Ethernet 通讯