LabVIEW和PLC通过OPC通信

下面介绍3中将PLC和LabVIEW连接起来的方法,参考文献列在后面了。需要注意的是!由于DSC软件只有32位的,所以OPC连接只能使用32位的LabVIEW软件才可以成功操作!实现PLC和LabVIEW数据的读写

  • 方法一:通过数据绑定读取PLC变量
  • 方法二:创建IO server读取PLC变量,这个方法最简单易学,但是我不知道为什么我无法读出PLC的数据,写入是正常的;
  • 方法三:通过Data Socket读取PLC变量,最推荐这个方法!DataSocket是一项基于TCP/IP协议的技术,用于自动化应用中实时数据的共享与发布。它通过封装TCP/IP协议简化了通信连接的维护与数据类型转换工作,并提供三种数据目标:File、DataSocketServer与OPCServer。

1. NI OPC server 配置

不过这三种方法本质都是通过OPC进行连接。所以需要做一些共同的准备:需要在NI Pacage Manger中另外下载OPC服务器(图1)和数据记录与监控模块,数据记录与监控模块需要与所在电脑的LabVIEW版本一致。

打开OPC Serves Configuration,软件界面如下:

点击new channel 添加一个新的通道,修改通道名称后,点击下一步:

点击下一步,选择驱动设备:Siemens TCP/IP Internet

其余全部选择默认,得到如下界面:

点击 click to add a device进行设置,名称设置为PLC_Master:

选择S7-1200:

配置IP地址:

点击选择创建一个新的Tag,access选择read/write,地址是需要和PLC中的DB块对应的:

PLC设置方面选择支持PG/PC与HMI的安全通信:

NI OPC Servers/Kepware 一般可以用 CSV 批量导入 Tag。关于CSV的格式,可以尝试先导出一次CSV,看看是什么格式,再去创建。导入需要名字、地址、数据类型和读写权限、扫描率。这里的Tag.name可以看出xTrip.2_source停机指令,这里的点会被OPC识别为新建下面的文件夹。

2. 方法一.DataSocket绑定

这个方法我最推荐!

创建LabVIEW项目,创建前面板和VI界面,放置numerical的control和indicator,上面的是control,下面是indicator:

在前面版上右击选择属性,选择data binding,选择DSTP Sever,选择我们刚刚创建的Tag,control选择只写,indicator选择只读:

已经完成设置,此时回到PLC中点击转为在线并监视DB块,可以修改DB2中的湿度为90:

点击前面板的持续运行,可以发现数值变为90,并修改温度为70:

看见PLC的温度为70:

这里需要注意的很重要的一点是!如果是需要从PLC读入的数据,以QF1断路器合闸成功为例,在OPC Server configuration中就要设置为只读,并且在LabVIEW的datasocket绑定中也要设置为只读,并且前面板能否显示很重要的一点,**要设置为显示控件,而不是输入控件!!!**设置为输入控件就会通讯正常,但是读不到正常的数值。

图 1 OPC配置中配置为只读 Read only

图 2 LabVEIW配置中配置为只读 Read only

图 3 设置为显示控件

3. 方法二 IO Server绑定

labview与PLC通过OPC通讯_labview opc-CSDN博客

在项目中新建I/O Server:

选择OPC Client:

选择NIOPCServer.V5:

将变量添加到项目中:

使用时可以直接拖到VI面板上,可以修改访问模式改变读/写:

4. 方法三

可以在help中找到这个案例,进行学习:

这里需要学习的是opc地址,OPC 地址最好不要手打,从浏览器 / 选择器里选出来,这样最不容易错。DataSocket Select,就是用来选 OPC URL 的。

在 LabVIEW 程序框图里放:DataSocket Select URL运行或点击它打开选择窗口。

协议选择 opc。找到本机 OPC Server,比如:National Instruments.NIOPCServers

展开:S7-1200 -> PLC_master

选择一个 Tag,比如:QF1交流电表_相电压UA

确认后,它会输出完整 URL 到 Selected URL:opc://localhost/National Instruments.NIOPCServers.V5/S7-1200.PLC_master.485.KM1故障信息_当前报警_H

相关推荐
无敌贵点大王7 分钟前
RTThread学习记录13——关于要使用一个外设,RTThread与cubemx到底要怎么配合?
c语言·stm32·学习·rtthread
喜欢打篮球的普通人1 小时前
MiniMind 学习笔记(十二):Pretrain 实操——从版本梳理到 8GB 显卡上的真实训练
人工智能·笔记·学习
wtblszn2 小时前
空压机在线监测物联网方案
大数据·运维·物联网·自动化·能源
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(87):VizoMem——把文本历史转化为可检索的视觉记忆
论文阅读·人工智能·学习·开源·github
天远数科3 小时前
零信任架构实战:基于天远运营商三要素简版V即时版查询构建自动化买手实名核验网关
运维·人工智能·架构·自动化
坤坤子吖3 小时前
算法学习——高精度加减乘除
c++·笔记·学习·算法
HY小宝F3 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 03 · 网络基础:建立“包“的思维 —— 学习总结
网络·学习
dadaobusi3 小时前
学习:AXI协议
学习
xxwl5853 小时前
vue3的入门学习
前端·vue.js·学习
Joe_Wang54 小时前
【从0到1学习JVM · 21】既不浪费空间又没有碎片,标记整理算法到底慢在哪
jvm·学习·算法·垃圾回收·标记整理算法