一:介绍Codesys
1.1是啥
CoDeSys(Controlled Development System)是一个广泛应用于工业自动化领域的PLC软件编程工具。它是由德国公司3S-Smart Software Solutions GmbH开发的。简单来说,它包括两部分:Development System和Runtime System。Development System就是用来编程的软件界面(就像Visual Studio、Eclipse等软件,也可以称为IDE),设计、调试、编译PLC程序都在IDE中进行,这部分是用户经常打交道的;PLC程序写好了以后,就要把它转移到硬件设备中运行。可是这时生成的PLC程序自己是无法运行的,它还要在一定的软件环境中才能工作,这个环境就是Runtime System,这部分是用户看不到的。二者安装的位置通常不同,IDE一般安装在开发电脑上,Runtime System则位于起控制作用的硬件设备上,二者一般使用网线连接,程序通过网线下载到Runtime中运行。
CoDeSys的架构图如下图所示:
(1)开发层(应用层)-IDE
IEC 61131-3 编辑器:CODESYS提供了所有IEC61131-3所定义的六种编程语言:功能块图(FBD)、梯形图(LD)、指令表(IL)、结构化文本(ST)、顺序功能图(SFC)、连续功能图(CFC)。常用的有ST文本以及LD梯形图编程。
编译调试器:负责将CODESYS中的应用程序转换为机器代码并优化可编程控制器的性能。当用户输入了错误的应用程序代码时,立刻会接收到编译器发出的语法错误警告及错误信息,让编程人员可以迅速做出相应纠正。用户可以不必改变编程方式,就可以使用不同的基于CODESYS编程的硬件装置(系统)进行工程开发。
硬件以及总线配置:针对不同制造商的硬件设备及不同现场总线协议,该部分负责在CODESYS中对相应参数进行设定。
可视化:在CODESYS中即可实现可视化编程(人机界面HMI),系统已经集成了可视化编辑器。
运动控制:运动控制功能已经集成在CODESYS中,形成了SoftMotion(CNC)软件包。基于PLCopen的工具包可以实现单轴、多轴运动,电子凸轮传动,电子齿轮传动,复杂多轴CNC控制等。
(2)通信层
应用开发层和硬件设备层之间的通讯是由CODESYS中的网关服务器来实现的,CODESYS网关服务器中安装了OPC服务器。
CODESYS 网关服务器:作用在应用开发层和硬件设备层之间,可以使用TCP/IP协议或通过CAN等总线实现远程访问,是CODESYS开发工具包不可分割的一部分。
CODESYS OPC服务器:对基于CODESYS进行编程的控制器,无需考虑所使用的硬件CPU,已经集成并实现了OPC V2.0规范的多客户端功能,且能同时访问多个控制器。
(3)设备硬件层
硬件供应商必须要在设备层预先安装CODESYS的运行时核(CODESYS Runtime),可以使用接口里面的函数,使用其提供的功能。在此基础上进行自己产品的二次开发。
1.2干啥
写PLC程序,做运动控制项目。
1.3为啥
(1)跨平台支持: CoDeSys是一个独立于硬件的开发平台,可以在多种不同的PLC硬件上运行。
(2)用户友好的界面: CoDeSys提供了一个直观和易于使用的集成开发环境,使工程师能够轻松创建、编辑和调试PLC程序,从而提高开发效率。
(3)多语言支持: CoDeSys支持多种编程语言。
(4)强大的调试和监视功能: CoDeSys配备了强大的调试器和监视器工具,帮助工程师在开发过程中快速定位和排除错误,并监视PLC的运行状态,有助于提高程序的质量和稳定性。
(5)开放性和可扩展性: CoDeSys是一个开放平台,允许第三方开发商开发和集成自定义组件和库。这使得用户可以扩展CoDeSys的功能,满足特定的应用需求。
(6)丰富的资源库: CoDeSys通常附带了广泛的资源库,包含常用的PLC功能模块和通信协议。这些资源库可以帮助工程师快速开发复杂的控制逻辑,节省开发时间。
(7)高性能: CoDeSys经过优化,可以在PLC硬件上实现高效的运行性能,确保控制系统的实时响应和稳定性。
(8)广泛的硬件支持: CoDeSys通常支持多种PLC硬件厂商的设备,因此用户可以在多个品牌的PLC上使用相同的开发环境。
总的来说,CoDeSys在工业自动化领域中的优势在于其灵活性、易用性、跨平台支持以及丰富的功能和资源库,使其成为众多工程师和企业的首选PLC开发工具。
1.4缺点
1 底层算法不公开
CoDeSys集成的运动控制组件、总线协议栈都是封装好的,用户无法了解其内部细节,也无法针对自己的具体需求进行定制优化,只能简单地调用。用户只能依附于CoDeSys平台,难以形成自己的核心技术。
2 功能有限,难以扩展
现在以机器视觉、人工智能、自动驾驶等为代表的新技术突飞猛进,而工业控制上的很多技术仍然停留在20年前。以移动机器人中的导航场景为例,基于视觉或者激光的导航方法需要采集大量的数据并对其进行处理,其中涉及相当多的矩阵计算。
而现在PLC只能进行落后的一维数字计算,难以实现复杂的算法。与人工智能圈子喜欢开源的风格正好相反,工业控制圈子相互封闭,谁都不肯开放自家的函数库,开源函数库极少(OSCAT),就连最基本的滤波算法、矩阵计算都要自己从头开始写。而且,国际标准提供的基本函数太过有限,完全无法适应新的场景,急需扩展。
3 难以更新
由于完全依赖CoDeSys,客户自己产品硬件的升级换代需要重新定制移植,导致成本增加。
二:介绍ST语言
2.1是啥
ST(Structured Text)是针对自动化系统的高级文本编程语言。ST使用了高级语言的许多传统特性,包括:变量、操作符和控制流程语句。其语法类似于C语言。C语言是面向过程的编程语言,而ST文本是面向对象的编程语言。
2.2干啥
ST语言是一种高级语言,主要用于可编程控制器(PLC)和工业自动化系统中的程序开发。
2.3为啥
(1)结构化编程: ST语言采用结构化编程风格,允许程序员使用各种控制结构,如条件语句(IF-THEN-ELSE)、循环语句(FOR、WHILE)、函数和子程序等。
(2)灵活性: ST语言提供了丰富的数据类型和运算符,允许开发人员在编写控制逻辑时进行复杂的计算和逻辑运算。这使得ST语言适用于各种复杂的控制算法和任务。
(3)强大的数学支持: ST语言支持各种数学运算和函数,如加减乘除、幂运算、三角函数等。这使得它在处理数学问题和复杂的算法时非常有用。
(4)可读性: ST语言采用类似于高级编程语言的语法,如C或Pascal,使得程序易于阅读和理解。这对于多人合作开发和长期维护非常重要。
(5)跨平台支持: ST语言是IEC 61131-3标准的一部分,因此它在符合该标准的PLC上是可移植的。这使得开发人员可以在不同品牌和型号的PLC上使用相同的ST代码。
三:编程语言