手把手教你通过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的安装并创建了一个应用程序。在下一则教程中,宏集将带你创建可视化界面使用控制器的内部输入和输出

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

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

相关文章

TikTok青年领袖:短视频如何塑造新一代

在数字时代的潮流中,短视频平台TikTok崭露头角,成为年轻一代最喜爱的社交媒体之一。这个平台不仅改变了用户的娱乐方式,更在其中催生了一批富有创造力和影响力的青年领袖。 本文将深入探讨TikTok如何通过短视频内容塑造新一代的青年领袖&…

Modbus转Profinet改变局面,PLC与电力仪表秒级响应

Modbus转Profinet改变了传统的局面,实现了PLC与电力仪表之间的秒级响应。在过去,由于Modbus通信协议的限制,PLC与电力仪表之间的数据传输速度受到了很大的限制,无法满足工业自动化领域对实时性的要求。然而,随着Modbus…

加班做报表被嘲低效!快用大数据分析工具

做数据分析报表很耗时间,因为不仅要解决多业务系统数据质量标准不一问题,还需要进行大量的公式计算、报表设计与制作。但那是以前,在大数据分析工具强势崛起的当下,这些工作都能交给大数据分析工具来做了。以前是花90%的时间做报表…

快慢指针判断环形链表

我们在前面文章中写过用快慢指针判断链表是否带环: leetcode:环形链表-CSDN博客 我们用的是slow指针一次走一步,fast指针一次走两步,当slow入环后开始了追击,每走一次距离缩短1,最终就会相遇 思考问题 …

CURL踩坑记录

因为项目使用的windows server,且没有安装Postman,所以对于在本地的Postman上执行的请求,要拷贝到服务器执行,只能先转化成为curl命令,操作也很简单,如下: 注意,Postman默认对url包围…

Vocoder,声码器详解——语音信号处理学习(十)

参考文献: [1] Vocoder (由助教許博竣同學講授)哔哩哔哩bilibili [2] Oord A, Dieleman S, Zen H, et al. Wavenet: A generative model for raw audio[J]. arXiv preprint arXiv:1609.03499, 2016. [3] https://deepmind.com/blog/article/wavenet-generative-mode…

关于实时云渲染并发问题的分享,实时云渲染到底能不能省显卡?

近期遇到很多客户咨询实时云渲染技术中的并发问题,在这里点量小芹针对这个问题的几个常见疑惑进行集中的解答分享,希望对有迷惑的朋友有所启发和帮助。 第一个问题,实时云渲染能否扩展一张显卡支持的并发数? 实时云渲染是一个新兴…

没有淘礼金权限怎么办?

前面我写了一篇微信公众号创建淘礼金的博文,在实际开发中不少人遇到了,淘礼金没有权限的问题。 既然没权限,解决方法就是去申请权限, 只需要满足以下规则,就可以自主申请开通。 申请规则: 1&a…

uni-app 跨端开发注意事项

文章目录 前言H5正常但App异常的可能性标题二H5正常但小程序异常的可能性小程序正常但App异常的可能性小程序或App正常,但H5异常的可能性App正常,小程序、H5异常的可能性使用 Vue.js 的注意区别于传统 web 开发的注意H5 开发注意微信小程序开发注意支付宝…

SpringBoot 导入其他配置文件

默认情况下,springboot 初始的项目中都有一个 application.yml 或者 application.properties 文件,如果我们希望再定义一个独立的配置文件用来配置特定业务数据,而不希望把这些配置内容都堆积在 application 配置文件中,实现这个需…

Android7.1 高通平台 修改系统默认语言

客户需求:修改系统默认语言为英文(美国) 源码位置:/build/tools/buildinfo.sh 只需修改 ro.product.locale的值即可,如下图:

《C++ Primer》第9章 顺序容器(一)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 C 中的容器可以分为 3 类:顺序容器、关联容器、无序关联容器。 9.1 顺序容器概述(P292) 所有顺序容器都提供了快速顺序访问的能力,但在以下方面的性能有所不…

jjwt使用说明-笔记

jjwt官网链接&#xff1a;https://github.com/jwtk/jjwt POM 依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.12.3</version> </dependency> <dependency><grou…

Web前端—移动Web第五天(媒体查询、Bootstrap、综合案例-alloyTeam)

版本说明 当前版本号[20231122]。 版本修改说明20231122初版 目录 文章目录 版本说明目录移动 Web 第五天01-媒体查询基本写法书写顺序案例-左侧隐藏媒体查询-完整写法关键词 / 逻辑操作符媒体类型媒体特性 媒体查询-外部CSS 02-Bootstrap简介使用步骤下载使用 栅格系统全局…

易点易动库存管理系统革新企业库存管理,降本增效

随着全球经济的快速发展和市场竞争的加剧&#xff0c;企业对库存管理的需求变得越来越迫切。传统的手工操作和繁琐的库存管理方式已经无法满足现代企业的需求。为了解决这一问题&#xff0c;易点易动库存管理系统应运而生。 易点易动库存管理系统概述 易点易动库存管理系统是一…

快速上手Banana Pi BPI-M4 Zero 全志科技H618开源硬件开发开发板

Linux[编辑] 准备[编辑] 1. Linux镜像支持SD卡或EMMC启动&#xff0c;并且会优先从SD卡启动。 2. 建议使用A1级卡&#xff0c;至少8GB。 3. 如果您想从 SD 卡启动&#xff0c;请确保可启动 EMMC 已格式化。 4. 如果您想从 EMMC 启动并使用 Sdcard 作为存储&#xff0c;请确…

220V转12V固定输出12V非隔离芯片WT5106WT5105

220V转12V固定输出12V非隔离芯片WT5106WT5105 今天给大家介绍一款实用芯片&#xff0c;WT5106。它是一款高效率高精度的非隔离降压开关电源恒压控制驱动芯片。 WT5106适用于85VAC~265VAC全范围输入电压的非隔离Buck、Buckboost拓扑结构&#xff0c;小家电、电机驱动、继电器驱…

分布式篇---第一篇

系列文章目录 文章目录 系列文章目录前言一、分布式幂等性如何设计?二、简单一次完整的 HTTP 请求所经历的步骤?三、说说你对分布式事务的了解前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

【HarmonyOS】 API9 Stage模型 MD5加密字符串

在API9 Stage 模型中使用MD5加密&#xff0c;使用ohpm的三方库"ohos/crypto-js"进行加密操作 【集成步骤】 1、在entry-oh-package.json5中添加"ohos/crypto-js"依赖&#xff0c;点击sync同步依赖&#xff0c;crypto-js最新版本是2.0.2只支持API10&#x…

字符串和内存函数(2)

文章目录 2.13 memcpy2.14 memmove2.15 memcmp2.16 memset 2.13 memcpy void* memcpy(void* destination, const void* source, size_t num); 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到 ‘\0’ 的时候并不会停下来。如果so…