当前位置: 首页 > news >正文

CODESYS开发教程11-库管理器

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。

前面一期我们介绍了CODESYS的文件读写函数库SysFile。大家可能发现了,在CODESYS的开发中实际上是离不开各种库的使用,其中包括系统库、第三方库以及用户自己开发的库。实际开发中为了快速完成任务,通常都会使用到库。这一期就来介绍一下CODESYS工程中“库管理器”的使用。看过前面教程的朋友可能记得,在工程的基本组成中有简单介绍过如何添加库,这一期会详细介绍通过库管理器实现库文件的添加、删除、更新、以及如何安装第三方库、选择不同的版本等。

一、简介

库管理器列出了项目中应用程序使用到的所有库,提供有关库类型、库属性和内容的信息。可以通过库管理器增加、删除、更换库文件,还可以更改库文件版本。在库管理器中还可以看到所用库中的结构、全局变量、函数或功能块相关的帮助信息。

项目中使用到的库如果依赖于其他库,则这些引用库会自动集成到项目中。库管理器中不同类型的库具有不同的图标,图标的含义如下表所示:

图标

含义

表示该库引用的库链接到当前存在的版本。工程加载时会解析工程所用库的引用库,如果未指定或未找到指定版本则使用当前搜索到的第一个版本。可以通过“库管理器à占位符”为其指定特定版本。

表示使用可信证书签名的库(与CODESYS>=V3 SP15兼容)。

表示使用受信任的证书签名的库,但至少引用了一个未签名的库。

表示使用私钥和令牌签名的库(与CODESYS<V3 SP15兼容)

表示未签名或使用不受信任或过期的证书签名的库。对于不受信任的证书,上下文菜单中提供了“信任证书”命令。

表示当前不可用的库。

表示该库未找到,状态不确定,需要下载或指定版本后重新记载。

表示当前没有有效许可证的库。

表示库因为无法验证其签名(加密)而不能加载。

二、库管理器使用

这里主要介绍一下通过库管理器实现库文件的添加、删除、更新、以及如何安装第三方库、选择不同的版本等功能。

1.库文件添加和删除

库文件添加通过“库管理器à添加库”实现,如下图所示。

在弹出的窗口中,可以直接通过在窗口中输入要使用的函数名称来查找对应的库。也可以通过点击下方“高级…”按钮,在弹出的窗口中选择需要添加的库。建议将下方“显示全部版本(仅限专家)”选项勾上。

这里同样可以通过字符串搜索,也可以通过先选择公司,然后在下方找到需要添加的库及版本,例如选择添加3S公司的FileAccess库,如下图所示。

注意:这些库需要先安装到系统中,否则在库中无法找到。

2.修改库文件版本

库文件版本可用通过“库管理器à占位符”来修改,如下图所示。

在打开的窗口中选择需要更改的库,如上图“占位符”窗口中选择SysFile库,单击“SysFile,3.5.9(Sytem)”,会出现版本选择窗口,图中红框部分显示的是本机已安装的SysFile库版本。点击选择相应的版本,可以将本工程中的SysFile库改为所选择的版本。另外,用户也可以通过“其他库…”来选择或者安装新的库版本。

单个库文件的版本也可以在选择库文件中,通过“库管理器”上方的“属性”来修改版本,如下图所示。

3.第三方库安装

在菜单栏“工具”中选择“库…”可以进入库安装界面,如下图所示。

点击“安装…”,在新弹出的窗口中选择需要安装的库文件,可以将第三方的库安装到系统中。

在库管理器界面中,点击上方的“资源库”按钮也可以进入到上图的库安装界面。

三、常见的错误

这里列一些碰到过的跟库相关的错误(一个人能犯的错误总是有限的……),大家如果碰到了其它的相关错误也可以留言交流。

1.库文件未安装或者不可用

在打开工程时提示库文件没有安装或者不可用,或者库管理器中的库文件下方有波浪线提示,通常都是库的版本不对或者该版本的库没有安装导致的。

(1)如果库文件没有安装,在打开库管理器时,界面上方会出现“下载缺失的库”按钮。如果是CODESYS官方提供的库,在系统能够正常联网的情况下,可以直接点击“下载缺失的库”从CODESYS的官网下载对应的库文件。如果是第三方的库,则需要找到对应的安装文件进行安装。

(2)通过“库管理器à占位符”将库文件的版本修改为正确的版本。

2.搜索不到系统功能块或者编译是提示库错误

这个通常是因为没有安装包含该功能块的库。在库管理器中把缺失的库下载安装即可。

需要注意的是,由于不同版本的CODESYS有不同版本的库,而且中间还有几次比较大的调整。所以老版本的程序建议用对应的老版本的库,不要随意更新库文件,否则可能会出现找不到库文件报错的情况。如果是新建的工程,建议用与CODESYS版本匹配的库。遵循以上原则,能够减少很多莫名其妙的报错。

四、CODESYS库安装后的保存位置

CODESYS安装库以后,默认会保存在目录“C:\ProgramData\CODESYS\Managed Libraries\”下面。如果是更换电脑,可以把这个库备份一下。尤其是用户自己开发的库,安装过的版本在这里都会有备份(泄密了不要找我^-^)。

五、结论

CODESYS的提供了各种类型的库,大家开发时能用尽量用,毕竟可以少写代码,而且比自己开发的要稳定的多。当然,由于库的版本繁多,新手建议用最新版本,老版本那些大坑就不要去跳了~~~^-^。当然,CODESYS官方给的很多代码示例都是用老版本库,使用的时候谨慎参考(这个我也没办法,毕竟写示例的时候新版本还没出来,而且没有哪个程序员喜欢挖坟,3S家的也不例外……大家自求多福吧,欢迎留言交流~~~)。

------------------

原创不易,感兴趣的多支持!

相关文章:

CODESYS开发教程11-库管理器

今天继续我们的小白教程&#xff0c;老鸟就不要在这浪费时间了&#x1f60a;。 前面一期我们介绍了CODESYS的文件读写函数库SysFile。大家可能发现了&#xff0c;在CODESYS的开发中实际上是离不开各种库的使用&#xff0c;其中包括系统库、第三方库以及用户自己开发的库。实际…...

【UnityAR相关】Unity Vuforia扫图片成模型具体步骤

1 资产准备 导入要生成的fbx模型&#xff08;带有材质&#xff09;&#xff0c; 你会发现导入fbx的材质丢失了&#xff1a; 选择Standard再Extract Materials导出材质到指定文件夹下&#xff08;我放在Assets->Materials了 ok啦&#xff01; 材质出现了&#xff0c; 模型…...

2023年全国最新保安员精选真题及答案2

百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 21.一般来说&#xff0c;最经济的巡逻方式是&#xff08;&#xff09;。 A:步巡 B:…...

keil5安装了pack包但是还是不能选择device

一开始&#xff0c;我以为是keil5无法安装 STM32 芯片包&#xff0c;打开device倒是可以看到stm公司的芯片包&#xff0c;但是没有我想要的stm32f1。 我按照网上的一些说法&#xff0c;找到了这个STM32F1 的pack芯片包&#xff0c;但是我双击安装的时候&#xff0c;它的安装位…...

秒杀系统设计

1.秒杀系统的特点 瞬时高并发 2.预防措施 2.1.流量限制 对于一个相同的用户&#xff0c;限制请求的频次对于一个相同的IP&#xff0c;限制请求的频次验证码&#xff0c;减缓用户请求的次数活动开启之前&#xff0c;按钮先置灰&#xff0c;防止无效的请求流入系统&#xff0…...

全面认识数据指标体系

什么是数据指标体系&#xff1f; 看了下百度百科&#xff0c;竟然没有数据指标这个词条&#xff0c;看来这个词大家平时还用的不多啊。那只有间接偷懒一下&#xff0c;分别查下指标和数据这两个词条的含义&#xff0c;在组合起来看看。 数据&#xff1a;数据是指对客观事件进…...

热榜首推!阿里内部都在用的Java后端面试笔记,主流技术全在里面了!备战2023Java面试,拿理想offer

纵观今年的技术招聘市场&#xff0c; Java依旧是当仁不让的霸主 &#xff01;即便遭受 Go等新兴语言不断冲击&#xff0c;依旧岿然不动。究其原因&#xff1a;Java有着极其成熟的生态&#xff0c;这个不用我多说&#xff1b;Java在 运维、可观测性、可监 控性方面都有着非常优秀…...

Android架构设计——【 APT技术实现butterknife框架 】

APT简介 APT英文全称&#xff1a;Android annotation process tool是一种处理注释的工具&#xff0c;它对源代码文件进行检测找出其中的Annotation&#xff0c;使用Annotation进行额外的处理。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文…...

线程的基本概念

文章目录基础概念线程与进程什么是进程&#xff1f;什么是线程&#xff1f;进程和线程的区别&#xff1a;多线程什么是多线程&#xff1f;多线程的局限性串行、并行、并发同步异步、阻塞非阻塞线程的创建1、继承Thread类&#xff0c;重写run方法2、实现Runnable接口&#xff0c…...

java面试题中常见名词注解

一.常见名词注解 1.mysql索引&#xff0c;索引数据结构&#xff0c;hash&#xff0c;二叉树&#xff0c;B树&#xff0c;B树&#xff0c;红黑树&#xff0c; mysql索引&#xff1a;帮助mysql高效获取数据的数据结构&#xff0c;通俗来说&#xff0c;数据库索引就好比一本书的…...

SpringAOP从入门到源码分析大全,学好AOP这一篇就够了(二)

文章目录系列文档索引四、Spring AOP的使用入门1、激活AspectJ模块&#xff08;1&#xff09;注解激活&#xff08;2&#xff09;XML激活2、创建 AspectJ 代理&#xff08;了解&#xff09;&#xff08;1&#xff09;编程方式创建 AspectJ 代理实例&#xff08;2&#xff09;XM…...

华为OD机试 - 斗地主(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…...

【存储】etcd的存储是如何实现的(3)-blotdb

前两篇分别介绍了etcd的存储模块以及mvcc模块。在存储模块中&#xff0c;提到了etcd kv存储backend是基于boltdb实现的&#xff0c;其在boltdb的基础上封装了读写事务&#xff0c;通过内存缓存批量将事务刷盘&#xff0c;提升整体的写入性能。botldb是etcd的真正的底层存储。本…...

基于MATLAB开发AUTOSAR软件应用层模块-part21.SR interface通信介绍(包括isupdated判断通信)

这篇文章我们介绍最后一种interface,即Sender-Receiver Interface,这种通信方式是autosar架构中最常用的的通信方式,即一个SWC发送数据,另一个SWC接收数据,实现数据交互。下边我们介绍下这篇文章主要介绍的内容: 目录如下: 如何配置SR interface,实现SR 通信介绍含有…...

Kotlin新手教程八(泛型)

一、泛型 1.泛型类的创建与实例化 kotlin中泛型类的创建与实例化与Java中相似&#xff1a; class A<T>(t:T){var valuet }fun main() {var a:A<Int> A<Int>(11) }Kotlin中存在类型推断&#xff0c;所以创建实例可以写成&#xff1a; var aA(11)2.泛型约束…...

性能测试知多少?怎样开展性能测试

看到好多新手&#xff0c;在性能需求模糊的情况下&#xff0c;随便找一个性能测试工具&#xff0c;然后就开始进行性能测试了&#xff0c;在这种情况下得到的性能测试结果很难体现系统真实的能力&#xff0c;或者可能与系统真实的性能相距甚远。 与功能测试相比&#xff0c;性能…...

code-breaking之javacon

JAVACON 题目 此题 来自P神 的code-breaking中的一道Java题&#xff0c;名为javacon&#xff0c;题目知识点为SpEL注入 题目下载地址&#xff1a;https://www.leavesongs.com/media/attachment/2018/11/23/challenge-0.0.1-SNAPSHOT.jar 运行环境 java -jar challenge-0.…...

Android 字符串替换,去除空格等操作

今天在写代码的时候&#xff0c;需要对String进行一些操作&#xff0c;例如变小写&#xff0c;去除所有空格 于是熟练的使用String的replaceAll&#xff0c;却发现没这个方法。 后面才发现Kotlin使用的是自己的String&#xff0c;有自己的方法&#xff0c;用String的replace(…...

因“AI”而“深” 第四届OpenI/O 启智开发者大会高校开源专场25日开启!

中国算力网资源不断开发&#xff0c;开源社区治理及AI开源生态引来众多有才之士参与建设&#xff0c;国家级开放创新应用平台、NLP大模型等高新技术内容逐渐走向科研舞台上聚光灯的中心&#xff0c;新时代的大门缓缓打开。在启智社区&#xff0c;有一群人&#xff0c;他们年纪轻…...

CATCTF wife原型链污染

CATCTF wife原型链污染 原型链污染原理&#xff1a;https://drun1baby.github.io/2022/12/29/JavaScript-%E5%8E%9F%E5%9E%8B%E9%93%BE%E6%B1%A1%E6%9F%93/ 如下代码&#xff0c;prototype是newClass类的一个属性。newClass 实例化的对象 newObj 的 .__proto__ 指向 newClass…...

浅谈Java线程池中的ThreadPoolExecutor工具类

目录 ThreadPoolExecutor的构造函数 关于线程池的一些补充 线程池运行原理分析 概念原理解释 整个流程图如下&#xff1a; 一点补充 创建线程池主要有两种方式&#xff1a; 通过Executor工厂类创建&#xff0c;创建方式比较简单&#xff0c;但是定制能力有限通过ThreadPoo…...

分析过程:服务器被黑安装Linux RootKit木马

前言 疫情还没有结束&#xff0c;放假只能猫家里继续分析和研究最新的攻击技术和样本了&#xff0c;正好前段时间群里有人说服务器被黑&#xff0c;然后扔了个样本在群里&#xff0c;今天咱就拿这个样本开刀&#xff0c; 给大家研究一下这个样本究竟是个啥&#xff0c;顺便也给…...

运动型蓝牙耳机推荐哪款、最新运动蓝牙耳机推荐

提起运动耳机&#xff0c;如今很多运动爱好者和职业教练员们&#xff0c;都会向萌新推荐骨传导运动耳机。骨传导耳机解决了入耳式蓝牙耳机掉落的问题&#xff0c;佩戴相当舒服。骨传导耳机在佩戴过程中解放了双耳&#xff0c;不会因为耳机堵住耳朵&#xff0c;听不到环境音&…...

Python爬虫(9)selenium爬虫后数据,存入mongodb实现增删改查

之前的文章有关于更多操作方式详细解答&#xff0c;本篇基于前面的知识点进行操作&#xff0c;如果不了解可以先看之前的文章 Python爬虫&#xff08;1&#xff09;一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫&#xff08;2&#xff09;-Selenium控制浏览…...

gulimall技术栈笔记

文章目录1.项目背景1.1电商模式1.2谷粒商城2.项目架构图3.项目技术&特色4.项目前置要求5.分布式基础概念5.1微服务5.2集群&分布式&节点5.3远程调用5.4负载均衡5.5服务注册/发现&注册中心5.6配置中心5.7服务熔断&服务降级5.7.1服务熔断5.7.2服务降级5.8API网…...

vue3生命周期钩子以及使用方式

按照生命周期的顺序来排列&#xff1a; onBeforeMount() DOM挂载前调用 注册一个钩子&#xff0c;在组件被挂载之前被调用。 当这个钩子被调用时&#xff0c;组件已经完成了其响应式状态的设置&#xff0c;但还没有创建 DOM 节点。它即将首次执行 DOM 渲染过程。 onMount(…...

以假乱真的手写模拟器?

前些时候给大家推荐了一款word插件叫做“不坑盒子”&#xff0c;这款盒子不仅方便了word的操作&#xff0c;还附带了手写模拟器这样的效果只是在使用的时候不仅需要手动下载字体&#xff0c;而且效果也并不是太理想。 今天小编找到了一款软件--手写模拟器&#xff0c;不仅一键生…...

每日一题——L1-069 胎压监测(15)

L1-069 胎压监测 分数 15 小轿车中有一个系统随时监测四个车轮的胎压&#xff0c;如果四轮胎压不是很平衡&#xff0c;则可能对行车造成严重的影响。 让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序&#…...

17_FreeRTOS事件标志组

目录 事件标志组 事件标志组与队列、信号量的区别 事件标志组相关API函数介绍 实验源码 事件标志组 事件标志位:用一个位,来表示事件是否发生 事件标志组是一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。 事件标志组的特点: 它的每一个位表示一个事件(…...

美团前端常考手写面试题总结

实现观察者模式 观察者模式&#xff08;基于发布订阅模式&#xff09; 有观察者&#xff0c;也有被观察者 观察者需要放到被观察者中&#xff0c;被观察者的状态变化需要通知观察者 我变化了 内部也是基于发布订阅模式&#xff0c;收集观察者&#xff0c;状态变化后要主动通知观…...