宏集干货 | 手把手教你通过CODESYS V3进行PLC编程(三)

来源:宏集科技 工业物联网 宏集干货 | 手把手教你通过CODESYS V3进行PLC编程(三)

教程背景

通过之前的教程,我们已经为大家演示了宏集MC-Prime控制器的连接、试运行和CODESYS的安装,并创建了一个计数器项目。在本期教程中,我们将进一步深入,教大家如何使用CODESYS的可视化界面。

一、两种可视化方式

在CODESYS V3中,可视化界面分为两种类型:目标可视化和网络可视化。二者之间存在着一些本质上的区别。

(一)目标可视化

目标可视化(Target visualization)主要是针对一些带有集成屏幕的控制器(如宏集DC系列)。如果是没有屏幕的控制器,则需要通过在控制器上运行VNC服务器来使用目标可视化。目标可视化可以在一个或多个VNC客户端上显示。需要注意的是,目标可视化在所有连接的客户端上都会显示相同的图像,因此无法区分不同的客户端,也无法同时使用多个目标可视化。

(二)网络可视化

网络可视化(Web visualization)则会启动一个Web服务器,并提供基于HTML5和JavaScript的网页。通过浏览器或与HTML5兼容的设备,网络可视化得以显示。与目标可视化相比,网络可视化能够区分多个同时使用相同的可视化界面的个人用户,也可以同时运行多个网络可视化。这意味着可以通过一个控制器来控制和评估不同的屏幕。

二、实现可视化

为了能够在应用程序中使用可视化功能,必须首先添加一个具有“可视化管理器”类型的对象,步骤如下:

1 插入视图管理器

请在设备视图中选择您的“应用程序”对象,然后右键单击以打开上下文菜单。首先选择“添加对象”,然后选择“视图管理器”。

在插入名为“视图管理器”的对象后,系统会自动创建一个网络可视化和一个目标可视化。需要注意的是,本教程使用的控制器宏集MC-Prime仅支持网络可视化功能。

此外,系统还会创建一个名为“VISU_TASK”的新任务。图形界面始终独立于其他任务运行。默认情况下,“VISU_TASK”的周期时间为100毫秒,优先级为31,意味着可视化任务的优先级最低,这样可以确保界面不会阻碍具有实时优先级的任务的执行。

2 添加对象

插入“可视化管理器”后,现在可以创建“可视化”类型的对象。再次打开应用程序菜单,并添加一个具有“可视化”类型的对象。

​3 进行配置

现在,通过选择设备树中可视化管理器下面的相应对象并双击,打开网络可视化的设置,按如图所示步骤进行配置:

您可以为每个网络视图指定一个名称。此名称决定了可访问网络视图的URL。网络视图的web服务器运行在控制器的端口8080上。网络视图的默认路径是:http://[IP-redder Steuerung]:8080/webvisu.htm

4 扩展主程序

下一个目标是创建一个可视化工具以显示我们主程序中的一些变量,并使用框架来实现单个可视化的可重用性,将一个可视化嵌入到另一个可视化中,实现一个灵活且可重用的可视化工具,更方便地监视和控制您的程序的状态和参数。

为了实现这些目标,我们首先必须扩展我们的主程序,即我们的“应用程序”类型的“Main”对象。在“Main”程序中,定义其他变量:

→名称为“cotuner_enabled”的BOOL类型变量,作为第一个计数器变量。

→名称为“counter2”的INT类型,作为计数器变量。

→名称为“counter2_enabled”的BOOL类型变量,作为第二个计数器变量。

→名称为“input”的BOOL类型变量,用于存储数字输入的值。

→名称为“output”的BOOL类型变量,用于设置数字输出的值。

为此,使用IF语句检查变量的当前值,然后执行相应的操作。下图显示了完整的“Main”程序。

5 定义变量

为了能够为这两个元素提供额外的功能,我们在可视化的界面编辑器中另外定义了两个IN-OUT变量:一个名为“counter”的INT类型变量和一个名称为“enabled”的BOOL类型变量④。

首先,我们将使用“enabled”变量来设置切换开关的状态。在可视化编辑器中选择开关,现在在右侧的“属性”窗口中将属性“variable”设置为“enabled”的值。因此,拨动开关总是与变量“enabled”⑤具有相同的状态。

6 设置占位符

接下来,选择 text field⑥,并将属性“Text ”⑦,设置为值“%s”。这是一个占位符,在执行程序时会被文本变量的内容所取代。然后,您必须选择您要使用的文本变量,将其中的文本字段的“Text variable”属性⑧设置为值“counter”。如此,占位符将被替换为变量“counter”的值。您可以使用占位符将不同的变量类型(如字符串和INT)转换为文本。

三、可视化集成框架

由于在演示中定义了两个不同的计数器,因此您还需要两个文本框和两个开关来显示计数器读数,并激活或停用计数器。这是通过在另一个可视化中集成两帧-frame来实现的。在框架-frame的帮助下,可以实现多个嵌套,使帧再次嵌入到其他帧中。如此,您可以使用许多简单的元素来开发一个模块化的界面。

1 设置第一个框架

编辑“Visualization”可视化①,并在“工具”窗口中的“基本”类别中插入可视化元素“frame”。然后选择框架②,会自动进入“框架配置”窗口。选择对应的视图,并添加到”Visualization”中③,如图:

编辑“Visualization”可视化①,并在“工具”窗口中的“基本”类别中插入可视化元素“frame”。然后选择框架②,会自动进入“框架配置”窗口。选择对应的视图,并添加到”Visualization”中③,如图:

​2 复制框架

完成了第一个框架的配置后,您现在可以使用键组合“CTRL+C”在编辑器窗口中复制框架,然后用“CTRL+V”粘贴它。插入框架的副本后,用鼠标将框架拖动到正确的位置。请注意,Main函数中的变量“Main.counter2”和“Main.counter2_enabled”必须作为框架的属性输入。如果跳过此步骤,第二个帧也将显示第一个计数器的值。

3 下载程序

点击登录并下载程序①,编译无误后可以看到界面显示“在线视图正在等待连接,请启动应用程序”,点击启动②

可以看到如图所示的可视化界面,点击按钮可以看到计数器的数值变化:

此时,打开浏览器,输入对应的路径,同样可以看到配置好的可视化界面:

就此,我们已在宏集MC-Prime上完成了CODESYS安装、应用程序创建与可视化的全过程。您可以尽情享受使用您的控制器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/145245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析 - 分散性与变异的量度

全距 - 极差 处理变异性 方差度量 数值与均值的距离,也就是数据的差异性 标准差描述:典型值 和 均值的距离的方法,数据与均值的分散情况

出行类app如何提升广告变现收益?

出行类APP已经成为越来越多人们出行的首选,出行类app在变现方式上存在以下痛点:APP功能单一、使用场景单一;用户使用时间集中,粘性低...这些痛点使得开发者获取收益的提升面临极大的挑战。 https://www.shenshiads.com 如何让出…

【ARL灯塔搭建详细教程】

文章目录 前言一、前期准备二、安装docker及docker-compose三、安装ARL灯塔四、登录ARL灯塔 前言 ARL(Asset Reconnaissance Lighthouse)资产侦查灯塔旨在快速发现并整理企业外网资产并为资产构建基础数据库,无需登录凭证或特殊访问即可主动…

Python ... takes 0 positional arguments but 1 was given

最近,博主在学习python时遇到这么个报错, 系统:windows10 开发环境:VS Code Python版本:3.12 错误重现: class Dog:def __init__(self):passdef eatSomething(self):self.eatBone()def eatBone():prin…

Ubuntu18.04安装Loam保姆级教程

系统环境:Ubuntu18.04.6 LTS 1.Loam的安装前要求: 1.1 ROS安装:参考我的另一篇博客 Ubuntu18.04安装ROS-melodic保姆级教程_灬杨三岁灬的博客-CSDN博客还是那句话,有时候加了这行也不好使,我是疯狂试了20次&#xf…

quartz笔记

Quartz-CSDN博客 上面是Quartz的一些基本知识,如果对quartz的基本API不是很了解的话,建议先看下上面的 和Linux Crontab对比 1.执行粒度: Linux Crontab是进程级 quart是线程级 2.跨平台性: Crontab只能在Linxu运行 quart是java实现,可以跨平台 3.调度集上 Crontab的…

VUE指令、computed计算属性和watch 侦听器(附带详细案例)

文章目录 前言一、指令补充1. 指令修饰符2. v-bind对于样式操作的增强 - class3. 案例 - 京东秒杀 tab 导航高亮4. v-bind对于样式操作的增强 - style5. v-model应用于其他表单元素 二、computed计算属性1. 基础语法2. 计算属性 vS method 方法3. 完整写法4. 成绩案例 三、watc…

Java读取本地文件

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException;public class Main {public static void main(String[] args) {String filePath "C:/Users/admin/Desktop/知识点记录.md";// 创建一个文件对象File f…

关于苏州立讯公司国产替代案例(使用我公司H82409S网络变压器和E1152E01A-YG网口连接器产品)

关于苏州立讯公司国产替代案例(使用我们公司的H82409S网络变压器和E1152E01A-YG网口连接器产品) 苏州立讯公司是一家专注于通信设备制造的企业,他们在其产品中选择了我们公司的H82409S网络变压器和E1152E01A-YG网口连接器,以实现…

你是想被ChatGPT改变,还是改变软件开发的未来?丨IDCF

人工智能技术的发展,正在深刻地改变着我们的生活和工作方式。在软件工程领域,ChatGPT作为一种新兴的人工智能技术,正在逐渐地被应用到软件开发的各个环节中。那么,ChatGPT对每个人的影响是什么呢? 一、对软件开发人员…

数据结构 链表

单链表&#xff1a;单链表用来写邻接表&#xff0c;邻接表用来存储图和树 双链表&#xff1a;用来优化某些问题 单链表 链式存储 #include<stdio.h> #include<stdlib.h> int cont 0; //结构体 typedef struct List { int data; //数据域 struct List* next; //…

Azure的AI使用-(语言检测、图像分析、图像文本识别)

1.语言检测 安装包&#xff1a; # 语言检测 %pip install azure-ai-textanalytics5.2.0 需要用到密钥和资源的终结点&#xff0c;所以去Azure上创建资源&#xff0c;我这个是创建好的了然后点击密钥和终结者去拿到key和终结点 两个密钥选择哪个都行 语言检测代码示例&#…

使用CXF调用WSDL(二)

简介 本篇文章主要解决了上篇文章中遗留的对象嵌套问题&#xff0c;要想全面解析无限极的对象嵌套需要使用递归去解决 上文链接&#xff1a; 使用CXF调用WSDL&#xff08;一&#xff09; 上文回顾 上文使用了单方法“ call() ”解决了List和基本类型&#xff08;含String&…

【Linux】Linux进程间通信(二)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【Linux】…

2023年09月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 以下选项中,不是tkinter变量类型的是?( ) A: IntVar() B: StringVar() C: DoubleVar() D: FloatVar() 答案:D tkinter 无 FloatVar()变量类型。 第2题 关于tkinter,以下说…

JVM-HotSpot虚拟机对象探秘

目录 一、对象的实例化 &#xff08;一&#xff09;创建对象的方式 &#xff08;二&#xff09;创建对象的步骤 二、对象的内存布局 &#xff08;一&#xff09;对象头 &#xff08;二&#xff09;实例数据 &#xff08;三&#xff09;对齐填充 三、 对象的访问定位 &…

【go】报错整理与解决

文章目录 依赖下载失败checksum mismatch启动报错missing go.sum 依赖下载失败checksum mismatch > go get github.com/hibiken/asynqmon go: downloading github.com/hibiken/asynqmon v0.7.2 go: github.com/hibiken/asynqmonv0.7.2: verifying module: checksum mismatc…

QUIC协议详解

前言协议特点QUIC协议与HTTP/2协议区别QUIC协议的多路复用技术优势QUIC协议在Java中的应用存在的问题 前言 QUIC&#xff08;Quick UDP Internet Connections&#xff09;是一种基于 UDP 的传输层协议&#xff0c;由 Google 提出。从协议栈可以看出&#xff0c;QUIC HTTP/2 …

计算机毕业设计选题推荐-一周穿搭推荐微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

自定义Graph Component:1.2-其它Tokenizer具体实现

本文主要介绍了Rasa中相关Tokenizer的具体实现&#xff0c;包括默认Tokenizer和第三方Tokenizer。前者包括JiebaTokenizer、MitieTokenizer、SpacyTokenizer和WhitespaceTokenizer&#xff0c;后者包括BertTokenizer和AnotherWhitespaceTokenizer。 一.JiebaTokenizer   Ji…