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

相关文章

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.