技术论坛

 OPC UA通信测试(增加云数据库、微信小程序等)

返回主题列表
作者 主题
zunzhi
侠圣

经验值:2714
发帖数:118
精华帖:5
楼主    2022-04-03 18:40:34
主题:OPC UA通信测试(增加云数据库、微信小程序等)

测试程序包含PLC和C#程序,微信小程序等完整代码已打包上传

万物互联、工业4.0-智能工厂简单的学习项目

学习项目概述

1.PLC

设备组态

程序库数据库结构设计

OPC UA服务开启

仿真搭建

2.OPC 客户端

OPC UA 通信连接

数据采集

数据上传到微信云数据库

3.微信小程序

页面设计

数据库通信


测试效果见图片

视频演示地址


链接:https://pan.baidu.com/s/1dmJlvda2noMULl2g6e2c-g 

提取码:gajc


一.PLC端

1.PLC 采用S71500,模拟器为S7-PLCSIM Advanced V3.0

2.为了方便数据数据采集,数据块一定要设计合理,尽量模块化

3.西门子1500PLC配置OPC相当简单,选择好授权激活OPC服务器功能即可,具体几个容易出错的小细节见图片

4.编程软件 博途15.1



尽量启用访客认证,这样方便测试



仿真时一定要选上支持仿真的功能


二.C#程序

1.引用OPC官方的Opc.Ua.Client.dll,Opc.Ua.Core.dll

2.引用开源的OPCHelper(编译后引用)

3.读取,订阅都比较容易,写数值时比较麻烦要判断数值类型,我写入数值前先读取该节点的数值类型,以此类型写入

4.HTTP POST方式 修改微信云数据库

5.编译器采用VS2019


云数据库通信部分 HTTP POST 注意字符串格式、一定不能错


/// <summary>

        ///  更新数据

        /// </summary>

        /// <param name="queryString">形如: $"{{"env":"小程序环境id", "query": "db.collecti("数据集合名称").where({{集合中字段:"集合中字段值"}}).update({data:{集合中字段:"集合中字段值"})"</param>

        /// <returns></returns>

        //public static string GetData(string queryString)

        public static string UpData(string name, string value)

        {

            //string accessToken = GetAccessToken();

            string accessTokenqueryString = $"{{"env":"zunzhi-0goxnji212f917", "query": "db.collection("Test").doc("TestByClient")" + ".update({data:" + "{" + name + ":" + value + "}})"}";

            HttpWebResponse httpWebResponse = PostRequest("https://api.weixin.qq.com/tcb/databaseupdate?access_token=" + accessToken, accessTokenqueryString);

            string data = HttpWebResponseToString(httpWebResponse);

            return data;

        }



三.微信小程序

小程序比较简单,官方的帮助文档很详细,大家照着格式来就好了

模板采用官方的云模板,和云函数

1.页面的简单设计




2.数据库通信部分




完整项目打包地址

链接:https://pan.baidu.com/s/1FfhxhdptiIzbU9cyaaU6qQ 

提取码:u6cm

微信小程序源码

链接:https://pan.baidu.com/s/1Plt_TLu8tsewOgCFYnTa8w 

提取码:625u

PLC和OPC客户端更新版源码

链接:https://pan.baidu.com/s/1JVs62BbyzZF2m-bXKtzwEw 

提取码:on73


努力工作,好好学习!
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。