news 2026/5/1 11:06:08

阀测试项目软件架构探秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
阀测试项目软件架构探秘

阀测试项目软件,上位机通过Labwindows/CVI编写,下位机使用的是倍福PLC,下位机软件通过TwinCAT3编写,上位机和下位机通过ADS通讯,还包括一台S7-200 smart,通过OPC进行通讯,控制油源。

最近参与了一个超有意思的阀测试项目软件的开发,今天就来跟大伙唠唠这里面的门道。这个项目里,上位机是用Labwindows/CVI打造的,而下位机则选择了倍福PLC,通过TwinCAT3来编写程序。它们之间的通讯采用了ADS协议,同时项目里还有一台S7 - 200 smart,靠着OPC来控制油源。

上位机Labwindows/CVI

Labwindows/CVI是一款功能强大的软件开发环境,特别适合测试测量领域。就拿界面设计这块来说,代码写起来还挺直观的。

#include <cvirte.h> #include <userint.h> #include "resource.h" int panelHandle; int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, "resource.uir", PANEL)) < 0) return -1; DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); QuitUserInterface (0); return 0; }

上面这段代码是一个简单的Labwindows/CVI程序框架。首先通过InitCVIRTE初始化运行时环境,如果初始化失败就返回 -1 ,毕竟内存不足这事儿可不能马虎。接着用LoadPanel加载我们设计好的用户界面资源文件resource.uir,这个文件里定义了各种按钮、图表啥的控件。要是加载失败同样返回 -1 。加载成功后就调用DisplayPanel把界面展示出来,最后RunUserInterface开始进入消息循环,让程序可以响应用户的操作,比如点击按钮啥的。

下位机倍福PLC与TwinCAT3

倍福PLC在工业控制领域那是相当出名,TwinCAT3更是为它编写程序提供了高效的平台。比如说我们要实现一个简单的逻辑控制,在TwinCAT3里可以这样写:

PROGRAM PLC_PRG VAR input : BOOL; output : BOOL; END_VAR input := ADR(PLC_IN.0); output := input AND NOT ADR(PLC_IN.1); ADR(PLC_OUT.0) := output;

这里我们定义了两个变量inputoutput,都是布尔类型。然后把input连接到输入端口PLCIN.0output的逻辑是inputPLCIN.1取反后的与操作,最后把output连接到输出端口PLC_OUT.0。这样就完成了一个简单的逻辑判断和输出控制。

ADS通讯实现上位机与下位机交互

ADS通讯在这个项目里扮演着关键角色,负责上位机和下位机的数据交互。在Labwindows/CVI这边,我们可以用动态链接库来实现ADS通讯相关功能。

#include <windows.h> #include "TcAdsDll.h" HRESULT AdsPortOpen(void) { return AdsPortOpenEx(0); } HRESULT AdsSyncReadReq(ADS_PORT port, AMSNETID amsNetId, ADRSIG nAddr, DWORD cbLength, void *pData) { return AdsSyncReadReqEx(port, amsNetId, nAddr, cbLength, pData); }

AdsPortOpen函数通过AdsPortOpenEx来打开ADS端口,成功返回相应的结果。AdsSyncReadReq函数则是用来从下位机读取数据,通过AdsSyncReadReqEx实际执行读取操作,传入端口号、目标AMS网络ID、地址、数据长度以及存放读取数据的指针。

OPC通讯控制S7 - 200 smart

对于S7 - 200 smart,我们借助OPC来实现通讯控制油源。在客户端这边,我们可以用一些开源的OPC库来进行开发。

import opcua client = opcua.Client("opc.tcp://192.168.0.100:4840") try: client.connect() root = client.get_root_node() var = root.get_child(["0:Objects", "2:MyVariable"]) value = var.get_value() print("Value of variable: ", value) finally: client.disconnect()

这段Python代码用opcua库来连接到S7 - 200 smart对应的OPC服务器。先创建一个Client对象,指定服务器的地址。然后尝试连接,连接成功后获取根节点,再通过节点路径找到我们需要操作的变量MyVariable,读取它的值并打印出来,最后别忘了断开连接。

这个阀测试项目软件通过这样一套复杂又精妙的架构,实现了各个部分的协同工作,为阀测试提供了可靠的软件支持。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:45:05

Java毕设项目:基于springboot的校园快递仓库管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/30 17:14:36

Open-AutoGLM插件到底怎么用?下载、安装、调试全链路拆解

第一章&#xff1a;智谱Open-AutoGLM下载 Open-AutoGLM 是智谱AI推出的一款面向自动化代码生成与任务处理的开源大模型工具&#xff0c;支持本地部署与二次开发。用户可通过官方仓库获取源码并快速搭建运行环境。 获取源码方式 访问智谱AI官方GitHub组织页面&#xff1a;http…

作者头像 李华
网站建设 2026/5/1 8:55:13

为什么顶尖团队开始转向Open-AutoGLM平替?揭秘背后3大核心技术优势

第一章&#xff1a;Open-AutoGLM类似的ai有哪些?在人工智能与自然语言处理快速发展的背景下&#xff0c;涌现出许多与 Open-AutoGLM 类似的开源或闭源 AI 框架和模型。这些系统通常专注于自动化机器学习任务、代码生成、自然语言理解以及多模态推理。主流替代框架 AutoGPT&…

作者头像 李华
网站建设 2026/4/30 1:37:18

Open-AutoGLM Mac部署秘籍,仅限本周公开的高效配置方案

第一章&#xff1a;Open-AutoGLM Mac部署概述Open-AutoGLM 是一个面向 macOS 平台的自动化大语言模型推理框架&#xff0c;专为本地化部署与高效推理设计。它结合了 AutoGLM 推理引擎与 Apple Silicon 的神经网络加速能力&#xff0c;能够在 M1/M2 系列芯片上实现低延迟、高吞吐…

作者头像 李华
网站建设 2026/5/1 9:59:09

智谱 Open-AutoGLM 电脑版 vs 国际主流AI编程工具:6项指标全面对比

第一章&#xff1a;智谱 Open-AutoGLM 电脑版Open-AutoGLM 是智谱AI推出的一款面向本地化部署的大模型推理工具&#xff0c;专为开发者与研究人员设计&#xff0c;支持在个人电脑上高效运行自然语言处理任务。该工具基于 AutoGLM 架构&#xff0c;融合了大规模预训练语言模型的…

作者头像 李华