Labview与欧姆龙PLC通过FINS tcp协议通讯那些事儿
Labview通过FINS tcp协议与欧姆龙PLC通讯,支持CIO区,W区,D区,布尔量,整数,浮点数,字符串读写操作,软件无加密
最近在项目里捣鼓Labview与欧姆龙PLC的通讯,用的是FINS tcp协议,还挺有意思的,来跟大伙唠唠。
协议基础与支持范围
FINS(Factory Interface Network Service)协议是欧姆龙PLC常用的通讯协议,Labview借助它可以轻松和欧姆龙PLC搭上线。而且咱这通讯还特别全面,CIO区、W区、D区这些存储区域,不管是布尔量、整数、浮点数还是字符串,读写操作统统支持,关键是软件还没加密,这对于开发调试来说可太友好了。
Labview 代码实现
咱先看一段简单的读取CIO区数据的Labview代码片段(这里只是示意,实际可能要根据具体PLC型号和配置调整):
!Labview读取CIO区示意
Labview通过FINS tcp协议与欧姆龙PLC通讯,支持CIO区,W区,D区,布尔量,整数,浮点数,字符串读写操作,软件无加密
在这个程序里,首先得建立FINS tcp连接。通过“FINS TCP Connection Open”节点来设置PLC的IP地址、端口号等参数,就像下面这样简单的代码设置:
// 伪代码示意设置连接参数 FINS TCP Connection Open.vi IP Address = "192.168.1.100" // PLC的IP地址 Port Number = 9600 // 默认FINS tcp端口号连接建立好后,就可以用“FINS Read Memory”节点来读取CIO区的数据。比如读取CIO区从0地址开始的10个整数,代码逻辑大概如下:
FINS Read Memory.vi Memory Area = CIO // 指明读取CIO区 Starting Address = 0 // 起始地址 Number of Words = 10 // 读取10个数据这里“Memory Area”选择CIO,“Starting Address”设为0表示从CIO区起始位置读,“Number of Words”根据实际需求设置为10 ,代表读取10个数据单元。数据读出来后,还可以通过各种数据处理节点进一步处理,比如转换数据类型供后续显示或者分析使用。
写操作也类似,用“FINS Write Memory”节点,设置好目标存储区、地址和要写入的数据就可以了。像要往D区100地址写入一个浮点数3.14 ,代码设置如下:
FINS Write Memory.vi Memory Area = D // 指明写入D区 Starting Address = 100 // 目标地址 Data to Write = 3.14 // 要写入的浮点数数据类型处理
布尔量、整数、浮点数和字符串这些不同的数据类型,在Labview里都有对应的处理方式。比如布尔量,在与PLC交互时,0代表假,1代表真,Labview里处理布尔逻辑的节点很多,方便进行各种判断操作。对于整数和浮点数,在读取和写入时要注意数据类型匹配,Labview会自动进行一些数据类型转换,但为了程序稳定,最好还是手动确认一下。字符串的读写稍微复杂点,要注意编码格式,欧姆龙PLC常用的编码格式在Labview里也有相应的转换函数来处理。
总之,通过Labview与欧姆龙PLC基于FINS tcp协议通讯,能实现丰富的数据交互操作,而且没有软件加密的束缚,开发起来相当顺手,大伙不妨也试试。
