一个简易的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

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu