LabVIEW与ABPLC通讯EthernetIP图⽂教程(内附详细代码)
LabVIEW与AB PLC 以太⽹通讯(EtherNet/IP)
嗯,某个深夜,在⽹上搜索labVIEW与AB PLC的通讯⽅式,搜索结果都是⽤OPC协议,我也⽤过⼀次OPC,OPC的效率有点太低,配置⿇烦,只适合少量数据通讯,⽽且感觉OPC 的技术已经⽤了很多年了,有点low了(⾃我膨胀了哈),现在的EtherNet/IP通讯简直完虐OPC,但是⽹上⼏乎搜不到这个通讯⽅式的具体⽅案,⼼⾥很不爽,故写个labVIEW与AB PLC 采⽤EtherNet/IP通讯的教程,供⼤家参考,希望很多⾛在技术前沿的⼤拿们也能够多写实⽤教程,为我们这些搬砖的兄弟们打开⼀扇窗。废话太多,开始进⼊正题。1、硬件配置:
罗克韦尔(AB)PLC配置:1个1756-L72(⾼端型号CPU应该都可以,好⼏年的CPU不知道⽀不⽀持)、以太⽹通讯模块1756-EN2T、1个电源模块(24V供电)、1个机架笔记本1台⽹线1根2、软件配置:RSLogix5000
LabVIEW2015,附加⼯具包NI EtherNetIPSW1600(该⼯具包可以在NI官⽹下载,要单独激活,Ethernet/IP通讯必备,另外要注意不同版本⼯具包和labVIEW版本的匹配)3、详细操作步骤
打开RSLogix5000,进⾏硬件组态,如下图所⽰。红⾊圈⾥的模块是虚拟以太⽹模块,
该模块是和LabVIEW通讯关键。选中组态中的Ethernet,右键选择New Module,在弹出的框中,搜索选择ETHERNET MODULE,点击Create。
点击Create后,会弹出虚拟以太⽹模块的配置窗⼝,如下图所⽰。分别输出模块名称
(这⾥模块名称是GW_1,后续会⽤到)、IP地址、输⼊端⼝、输⼊数据量、输出端⼝、输出数据量、配置端⼝和配置字节。点击OK即可。
这⾥有必要解释⼀下以下⼏个配置的含义:
1、输⼊端⼝(Input Assembly Instance):类似于PLC的接收端⼝,默认值为1,具体数值随便设置。
2、输⼊数据量(Input Size):指PLC接收的数据个数,需要根据通讯的数据量确定。3、输出端⼝(Output Assembly Instance):类似于PLC的发送端⼝,默认值为1,具体数值随便设置。
4、输出数据量(Output Size):指PLC发送的数据个数,需要根据通讯的数据量确定。以上这4个参数也需要在LabVIEW中进⾏配置,千万不要搞错。
5、配置端⼝(Configuration Assembly Instance):指⽹络连接数,默认值为4,我这⾥只有1个连接,所以为1。
6、配置字节(Configuration Size):不懂具体作⽤,默认值为0。
以上两步就将PLC部分的EtherNet连接配置完成,最后还需进⾏简单的编程读写数据。如下图所⽰。下图程序采⽤ST(结构化⽂本)编程,也可以采⽤LD(梯形图)实现。以其中⼀⾏代码做说明。
GW_1:O.Data[0] := GWTest_SA1_AP;该本⾏代码表⽰将PLC内部的全局变量GWTest_SA1_AP,赋值给虚拟以太⽹模块GW_1的输出端⼝Data数组的第⼀个元素。程序格式是固定的。
⾄此,PLC部分的配置和程序全部完成,再讲程序下载到PLC中,启动RUN模式就OK 了。是不是很简单。
现在开始LabVIEW程序的编写。如下图所⽰,很简单。直接调⽤labVIEW的函数配置
通讯端⼝,在调⽤收发函数,利⽤⼀个while循环周期性收发数据。下图中的3个函数只有安装了NI EtherNetIPSW1600⼯具包才会有,安装好该⼯具包之后,函数会在Industrial Communication函数板块显⽰。
这⾥有必要说明⼀下,这⾥的端⼝配置需和PLC中设置的端⼝相对应,PLC的发送端⼝对应LabVIEW的接收端⼝,端⼝号要⼀致。各端⼝的字节数也需要做相应的修改。
Last One,见证奇迹的时候。将笔记本的⽹线连接到EN2T模块上,并将笔记本IP设置与EN2T模块为同⼀⽹段,运⾏labVIEW程序,Everything is OK,哇咔咔咔咔咔咔……