手把手教你通过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

相关文章

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C