一个简易的OPC DA组件,其他语言可以通过MQTT来读写OPC服务器上的数据

2024-02-27 14:50

本文主要是介绍一个简易的OPC DA组件,其他语言可以通过MQTT来读写OPC服务器上的数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

gitee地址:opc-da-component: 用C#实现的OPC DA 订阅模式,组件使用了MQTT来收发数据,从而使的开发者可以用任意语言通过MQTT来读写OPC SERVER上的数据。 (gitee.com)

欢迎指正,喜欢的可以star。

组件结构

输入图片说明)

1、本opc驱动采用订阅模式来读写OPC
2、通过订阅MQTT来接收外部命令以及将读到的数据写出


使用说明:

第一步:安装好MQTT,任意OPC服务器,配置好相应的Tags
  本例子假设你已经配置了如下TAG
  

第二步:引用的关键的类库
  首先需要把OpcDriver目录下OPCDAAuto.dll放到System32下,然后用管理员运行cmd,
  执行 regsvr32 OPCDAAuto.dll 注册,之后通过引用OCM中的OPC DA Automaition Wrapper 来使用。

输入图片说明


第三步:项目在运行前,须配置好app.config
   
      <!--mqtt配置-->
    <add key="mqtt.url" value="192.168.31.41"/>
    <add key="mqtt.clientId" value="opc-1"/>
    <add key="mqtt.port" value="1883"/>
    <add key="mqtt.topic.opc.receive" value="opc/receive"/>   //用来接收外部命令
    <add key="mqtt.topic.opc.publish" value="opc/publish"/>   //用来写出读到的数据
   
    <!--opc点表配置-->
    <add key="opc.serverName" value="Kepware.KEPServerEX.V6"/>  //OPC 服务器名,本文用的是kepwareEXV6
    <add key="opc.group" value="通道"/>   //随便写
    <add key="opc.tags" value="通道1.Device2.A1,通道1.Device2.A2"/>   //配置标记,每个标记用逗号隔开,必须在opc服务器中找到对应的tag,否则运行时会报异常。

外部语言调用:

1、 **写数据** :向opc/receive 发送以下内容
   {"通道1.Device2.A1":1,"通道2.Device2.A2":0}
    上面的格式是Map<string,string>, key是点表,value是要写入的值

2、 **读数据** :从opc/publish获取内容
  {"通道1.Device2.A1":1,"通道2.Device2.A2":0}
    key是点表,value是读到的值

注意、 当程序启动时,会自动读取点表所有的当前值,之后只会在值发生变化时才会读到并自动发送给MQTT
 

这篇关于一个简易的OPC DA组件,其他语言可以通过MQTT来读写OPC服务器上的数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/752762

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域