手把手教你通过CODESYS V3进行PLC编程(二)

2023-11-23 11:20

本文主要是介绍手把手教你通过CODESYS V3进行PLC编程(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

教程背景

在上一期教程中,我们已经完成了控制器设备的连接和配置。接下来的教程将继续以宏集MC-Prime为例,假设控制器已经配置并连接到开发者的PC上,为您演示如何为控制器安装合适的CODESYS V3版本创建第一个程序

一、安装CODESYS

(一)选择适合的版本

值得注意的是,控制器不能与任意编码的V3版本一起使用,其对CODESYS V3的版本和相应的target要求取决于控制器的固件版本。因此,重要的是要为您的控制器安装适配的CODESYS V3版本,而非直接使用CODESYS V3开发环境的最新版本。

要找到控制器的固件版本,请参考上一则教程中“通过web界面进行配置”的步骤,登录到控制器的web界面,并打开“System Info”页面。

如上图所示,可以看到控制器的固件版本为1.1.3,且宏集MC-Prime是基于Pi控制平台的,那么根据固件版本和CODESYS V3版本的对应选型表可知,该控制系所使用的开发环境为:CODESYS3.5.16.50。您可以通过CODESYS官网下载对应的安装包。

(二)安装CODESYS V3

如上图所示,我们已经完成安装包的下载,之后CODESYS V3的具体安装步骤如下:

1.启动安装:

请注意需以管理员身份运行文件CODESYS.3.5.16.50,以启动CODESYS V3的安装。

2.自定义安装位置:

点击“Next”,接受相应的安装要求,并再次点击“Next”,跳转到下图界面,可自定义更改软件安装位置

3.选择特性:

如果您不知道您需要什么特性,那么就对所有特性进行完整的安装;反之,您可以取消选择一些不必要的特性。

4.等待安装完成:

点击“Next”,等待安装结束后,点击完成即可。

二、创建程序

至此,我们已经完成CODESYS的安装;本节将详细介绍如何创建、编译并运行第一个CODESYS V3项目。在此之前,需再次确认以下要求已被满足:

  • 控制器的网络设置必须正确配置,以便通过以太网访问控制器。
  • 必须在开发人员的计算机上安装与控制器固件版本相对应的CODESYS V3版本和 设备库Target Package。

(一)快速创建第一个项目

确认无误后,我们可以逐步创建一个CODESYS V3的示例项目,并加载到控制器上,执行的步骤如下:

1.新建项目:

点击“新建项目”,选择“标准项目”,自定义存储路径和项目名称,注意选择文件设备类型

2.连接项目中的控制器:

创建空项目后,必须将控制器集成到项目中;首先选择您新创建的项目,然后用右键单击打开上下文菜单,选择菜单项“添加设备”

按下“添加设备”后,关闭窗口;在设备窗口中,会显示一个“PLC 逻辑”类型的对象,下面包含一个“Application”类型的对象,和一个库管理器。

(二)创建程序并定义任务

1.创建程序:

选择您的应用程序对象,然后单击右键以打开上下文菜单,选择“添加对象”,然后在子菜单中选择“POU...”

选择POU的类型为“程序”,并给该程序起一个名称。在本例中,名称“main”用来表示这是控制器的主程序。所选择的实现语言是ST(结构化文本)。

2.定义任务:

通过双击编辑模块,在编辑器窗口的上半部分中定义我们的第一个变量,名称为“counter”,数据类型为INT,并用值“0”初始化这个变量。就此我们实现了一个简单的程序:每当您调用“main”对象时,该程序都会对变量“counter”实现+1。

3.选择对象:

对于要调用的程序,必须插入一个具有“任务配置”类型的对象。此对象会自动创建一个类型为“MainTask”的子对象。您可以通过双击“MainTask”对象来配置它。选择“添加调用”,然后选择您已经创建的“程序”对象“Main”,点击确定。

4.任务时间间隔:

默认情况下,任务时间间隔设置为25 ms,这意味着控制器将每25 ms调用并运行你的“程序”对象。对于几个已定义的任务,当一个程序正在执行时,优先级高的任务优先于优先级低的任务,能中断同一资源中优先级低的程序执行,使较低优先级的程序执行被放缓。

循环时间间隔设置注意事项:在 CODESYS V3 中,使用虹科控制器的最快循环时间是1 毫秒;基于 PI 的控制器可以将循环时间降至500 微秒

(三)登录控制器并运行项目

要将应用程序加载到控制器上时,CODESYS V3不会自动知悉项目应该加载到哪一控制器上。这就要求用户自行为CODESYS V3项目分配控制器。除了分配控制器外,还必须确认应用程序没有错误。

1.扫描控制器:

在设备窗口中双击“Device”打开通信设置,显示尚未分配设备。默认情况下,必须释放位于中间的已添加的网关;右边的符号是指定的控制器,此时仍然为空。

搜索网络中已连接的控制器。

方法一:只需点击“扫描网络”按钮。

方法二:若使用上述方法无法成功扫描,则直接用IP地址扫描,输入控制器IP地址,并按Enter键,控制器就能被搜索出来。

2.检查程序错误:

按下“编译”菜单栏下的“编译”项,或通过“F11”快捷键,构建程序并检查代码、可视化和设置中的错误。

经过短暂的等待后,结果将显示在消息窗口中。如果您在创建此示例时没有出错,则应该显示“0错误”和“0警告”;如果确实发生了错误,它将显示在消息中,通过双击错误消息,CODESYS V3将自动跳转到错误的位置,帮助您有效且轻松地修复错误。如果该项目已经完全没有错误,并且已分配了一个控制器,那么您可以将该程序加载到该控制器上。

3.加载应用:

要登录,请按菜单栏“在线->登录到”或“登录”按钮,该按钮位于菜单栏中的项目“窗口”和“帮助”下方。

如果到目前为止在控制器上没有应用程序,则会出现如图显示的消息;如果一个应用程序已经加载到控制器上,则会出现一条消息,说明该控制器上有一个未知的应用程序。此消息可能会根据现有的应用程序是否正在运行而有所不同。

在所有情况下,请按下“是”来确认。但如果有消息显示程序中仍然有错误,您需要取消登录,首先找到程序中的错误并纠正它们。然后,再以CODESYS V3将应用程序加载到控制器上。

4.运行应用:

当“设备”和“应用程序”后出现绿色背景,并且在后面出现“[已连接]”或“[停止]”字样时,加载过程就完成了。此时应用程序已完全加载到控制器上,但仍处于Idle状态,尚未运行。要启动程序,请点击菜单栏中的“调试->启动”或按“F5”键。

当设备窗口中的“应用程序”状态从“[stop]”更改为“[运行]”时,将在控制器上执行该程序;此时,点开之前创建的程序“Main”,可以看到计数器“counter”中的值在累加

就此,我们完成了CODESYS的安装并创建了一个应用程序。在下一则教程中,宏集将带你创建可视化界面使用控制器的内部输入和输出

这篇关于手把手教你通过CODESYS V3进行PLC编程(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417560

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

Java并发编程之——BlockingQueue(队列)

一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作2. 当队列空了的时候进行出队列操作123 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个空