手把手教你通过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.mfbz.cn/a/200527.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码混淆的原理和方法详解

代码混淆的原理和方法详解摘要移动App的广泛使用带来了安全隐患,为了保护个人信息和数据安全,开发人员通常会采用代码混淆技术。本文将详细介绍代码混淆的原理和方法,并探讨其在移动应用开发中的重要性。 引言随着移动应用的普及,…

C语言数组的距离(ZZULIOJ1200:数组的距离)

题目描述 已知元素从小到大排列的两个数组x[]和y[], 请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离 。 输入:第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。第二行有m个元素&a…

无人机覆盖路径规划综述

摘要:覆盖路径规划包括找到覆盖某个目标区域的每个点的路线。近年来,无人机已被应用于涉及地形覆盖的多个应用领域,如监视、智能农业、摄影测量、灾害管理、民事安全和野火跟踪等。本文旨在探索和分析文献中与覆盖路径规划问题中使用的不同方…

JavaScript 的初步学习下篇

函数 语法格式 创建函数/函数声明/函数定义 function 函数名(形参列表) {函数体return 返回值; }函数调用 函数名(实参列表) // 不考虑返回值 返回值 函数名(实参列表) // 考虑返回值 注: 函数定义并不会执行函数体内容, 必须要调用才会执行. 调用几次就会执行几次. js 中…

【华为数通HCIP | 网络工程师】821刷题日记-BFD和VRRP 及重点(1)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

Java 基础学习(四)操作数组、软件开发管理

1 操作数组 1.1.1 System.arraycopy 方法用于数组复制 当需要将一个数组的元素复制到另一个数组中时,可以使用System.arraycopy方法。它提供了一种高效的方式来复制数组的内容,避免了逐个元素赋值的繁琐过程。相对于使用循环逐个元素赋值的方式&#x…

使用Wordpress 从0-1 制作一个博客网站

一. 做网站准备 购买域名 域名使用的是二级域名:blog.zmrw.net(在浏览器可以提前预览网站制作后效果) 购买服务器 服务器使用A2 Hosting 购买Wordpress 主题 主题使用的是 Porto 主题 二. 开始建站 1. 将域名添加至 Cloudflare 2. 将…

井盖倾斜监测方式,智能井盖传感器效果

大家是否都曾经想过,为什么路面上的井盖容易发生事故?其实这主要是因为井盖倾斜或者位移等异常状态出现时,由于人员巡查的范围较大从而无法及时察觉所导致的。为了保障道路行人和车辆的安全,对于井盖的监测需要不断完善和升级。而…

Google分析中的基础概念

当提到Google分析时,我们通常指的是一种用于跟踪和分析网站和应用程序数据的工具。在使用Google分析之前,了解其基础概念对于正确配置和有效使用该工具非常重要。 1、帐户(Account):帐户是Google分析中的最高层级。一…

【Axure高保真原型】区间评分条

今天和大家分享区间评分条的原型模板,我们可以左右拖动移动滑块到指定位置,评分条上方会根据两个滑块所在的位置,自动计算出对应的区间范围;这个原型模板使用也很简单,只需要在里面填写区间的最大值,即可自…

python——第十五天

面向对象和面向对象编程 面向对象编程: C语言是一门面向过程的编程语言!!! 面向对象的编程思想 就是分门别类的一种能力 面向对象的概念 类: 对一类事物的统称 对象: 一类事物中的具体案例 面向对象的…

SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件

📑前言 本文主要是【Rabbitmq】——SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页…

select选择框里填充图片

遇到一个需求&#xff0c;选择下拉框选取图标&#xff0c;填充到框里 1、效果展示 2、代码 <el-form-item label"工种图标" class"Form_icon Form_label"><el-select ref"select" :value"formLabelAlign.icon" placeholder&…

centos7内核升级(k8s基础篇)

1.查看系统内核版本信息 uname -r 2.升级内核 2.1更新yum源仓库 yum -y update更新完成后&#xff0c;启用 ELRepo 仓库并安装ELRepo仓库的yum源 ELRepo 仓库是基于社区的用于企业级 Linux 仓库&#xff0c;提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行…

私域流量灵魂三问

私域流量灵魂三问: 1、是什么&#xff1f; 2、为什么做&#xff1f; 3、怎么做&#xff1f;

【Java安全】Java反射机制-成员变量的赋值与取值

文章目录 前言利用反射机制获取类的成员变量利用反射机制获取类的成员方法总结前言 Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、…

【古月居《ros入门21讲》学习笔记】11_客户端Client的编程实现

目录 说明&#xff1a; 1. 服务模型 2. 实现过程&#xff08;C&#xff09; 创建功能包 创建客户端代码&#xff08;C&#xff09; 配置客户端代码编译规则 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建客户端代码&#xff08;Python&#xff09; 运行…

Fastjson 1.2.47 远程命令执行漏洞

漏洞描述 Fastjson是阿里巴巴公司开源的一款json解析器&#xff0c;其性能优越&#xff0c;被广泛应用于各大厂商的Java项目中。 fastjson于1.2.24版本后增加了反序列化白名单&#xff0c;而在1.2.48以前的版本中&#xff0c;攻击者可以利用特殊构造的json字符串绕过白名单检测…

【Rust】所有权的认识

所有权 所有权的认识移动&#xff0c;克隆&#xff0c;拷贝所有权与函数返回值与作用域 引用与借用可变引用悬垂引用&#xff08;Dangling References&#xff09; Slice类型 所有权的认识 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制&#…

致敬成长:借助昇腾AI,00后开发者如何破解睡眠呼吸辅助诊断难题

导读&#xff1a;两年&#xff0c;如何从AI小白到优秀开发者&#xff1f; 打呼噜正在成为人们身边隐形的“健康杀手”。据《2017年中国人睡眠质量及科普报告》显示&#xff0c;约5000万人在睡眠中发生过呼吸暂停。30~69岁成年人中&#xff0c;阻塞性睡眠呼吸暂停综合征&#xf…
最新文章