基于python openOPC的监控页面一
笔者涉猎的工业领域项目遇到一个需求,需要把底层设备(表记)的状态和运行数据集中放到一个监控画面进行展示,数据需要在界面端实时进行刷新,类似网友的例子,如下图(侵删)

数据需要实时主动刷新,笔者基于多年前在MES上做数据采集的经验,考虑使用OPC的通信协议来解决数据采集和刷新的问题。由于团队使用技术架构关系,考虑继续采用Python作为开发平台,于是在网上查找Python的第三方OPC支持组件,逐步构建这个验证原型。
下面本文演示如何从零开始一步一步的搭建验证Demo。
1.1. openOPC组件
网上找到开源的openOPC组件,通过它Python运行环境可以访问OPC服务,并读/写OPC tag的值。这样我们就可以通过OPC协议访问设备的Tag,从而获得设备的运行数据。进一步了解OPC原理可以查看OPC基金会官网。
OPC基金会官网:http://opcfoundation.cn/
OpenOPC组件:http://openopc.sourceforge.net/
1.2. 安装Python开发环境
openOPC发布时间较早,原版本支持Python2, 我们需要安装Python2.7版本32位运行环境,这里有点坑,不要装Python2.7 64位版本。
Python官网:http://www.python.org/
Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到。
安装Python 2.7 32位版本。下载安Windows x86 MSI installer安装包,运行安装文件如下图:

默认按照当前安装目录,点击“Next”按钮...

安装完毕就可以在命令行窗口执行python.exe命令查看python运行环境和版本。

1.3. 安装OPC模拟器
OPC模拟器采用 Honeywell的MatrikonOPC Simulation Server,这个模拟器包括OPC服务器的模拟和一个浏览服务端opc tag点位的客户端工具。运行MatrikonOPCServer.exe安装文件,进入到安装主界面。


1.3.1. 同意软件许可协议



1.3.2. 完成MatrikonOPC Explorer的安装

1.3.3. 打开MatrikonOPC Explorer浏览器

默认情况下能够看到OPC服务模拟器这个OPC服务

1.3.4. 添加一两个随机tag,观察数据变化情况

1.4. 安装openOPC组件包
运行下载的OpenOPC-1.3.1.win32-py2.7.exe安装文件,默认安装选择,如下图:



1.5. 安装pywin32-221.win32-py2.7组件
运行pywin32-221.win32-py2.7.exe文件,点击“下一步”如下图

默认选择,点击下一步

1.6. 通过Python运行环境读取opc服务的值
最简单的读取代码如下,这里是不是觉得python的代码好简单的感觉。
import OpenOPC
opc = OpenOPC.client()
opc.connect('Matrikon.OPC.Simulation')
print opc['Square Waves.Real8']
opc.close()
1.6.1. 通过cmd窗口运行python.exe进入到python运行环境

逐行运行上面的代码,如果未安装1.5步骤组件,执行到第二行代码时会报如下错误,如下图:

1.6.2. 读取到tag位号的值

1.7. 小结
本章节,我们完成了基于Python2.7环境及OPC访问环境的搭建工作,在Python运行环境中,实现了读取OPC服务tag位号值的方法,打通了Python读取opc服务数据的通路,下一章,我们将尝试实现把数据显示在网页上。
基于python openOPC的监控页面一的更多相关文章
- nomon+ pyNmonAnalyzer实现基于python的nmon监控性能数据可视化
pip install pyNmonAnalyzer nnmon for linux from sourceforge:https://sourceforge.net/projects/nmon/ ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程
基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程 By: 授客 QQ:1033553122 1. 测试环境 2. 实现功能 3. 使用前提 4. ...
- Python 基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控
基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控 By: 授客 QQ:1033553122 1.测试环境 python 3.4 zookeeper- ...
- 基于python爬虫的github-exploitdb漏洞库监控与下载
基于python爬虫的github-exploitdb漏洞库监控与下载 offensive.py(爬取项目历史更新内容) #!/usr/bin/env python # -*- coding:utf- ...
- 基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)
基于python语言的tensorflow的‘端到端’的字符型验证码识别 1 Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的 ...
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...
- Python远程视频监控
Python远程视频监控程序 老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可 ...
- 基于python的互联网软件测试开发(自动化测试)-全集合
基于python的互联网软件测试开发(自动化测试)-全集合 1 关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,a ...
随机推荐
- XEN 3166
XEN 3166 这题原题是spj,校oj上只用判断yes no,不过也差不多 题意分析之后就是求两个东西: 字典序最小的长度为m的子序列 同时这个字典序严格大于某个字符串 用序列自动机 先尽量相同, ...
- 吴裕雄--天生自然C语言开发:enum(枚举)
enum DAY { MON=, TUE, WED, THU, FRI, SAT, SUN }; enum DAY { MON=, TUE, WED, THU, FRI, SAT, SUN }; en ...
- 吴裕雄--天生自然C语言开发:循环
while(condition) { statement(s); } #include <stdio.h> int main () { /* 局部变量定义 */ ; /* while 循环 ...
- PAT甲级——1006 Sign In and Sign Out
PATA1006 Sign In and Sign Out At the beginning of every day, the first person who signs in the compu ...
- easyui 表单提交前的 confirm 处理
最近学习用 easyui,异步提交表单是遇到一个小问题 $('#fModiDetail').form('submit',{ url:'...', onSubmit:function(){ if($(t ...
- 吴裕雄--天生自然python学习笔记:抓取网络公开数据
当前,有许多政府或企事业单位会在网上为公众提供相关的公开数据.以 http://api.help.bj.cn/api/均 .cn/api /网站为例,打开这个链接,大家可以看到多种可供调用的数据 . ...
- OpenCV 特征点检测
#include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...
- django框架基础-django模板语言-长期维护
################## 常用的模板语言 ####################### # django的模板语言, # # 只需要记两种特殊符号: # # {{ } ...
- 使printf打印信息带有颜色
#define NONE "\033[m"#define RED "\033[0;32;31m"#define LIGHT_RED "\033[1;3 ...
- 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
前置知识:awk 参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html awk 'BEGIN{ commands } pattern{ co ...