PLC编程小白必知:关于SCL语言编程方法的简介
SCL :Structured Contorl Language,结构化控制语言。
在TIA博途软件中,默认支持SCL语言,在建立程序块时可以直接选择SCL语言。
SCL语言类似计算机高级语言,如果你有C、Java、C++、Python这种高级语言的学习经历,再学习SCL就会容易很多。
在用SCL语言编程时,主要用IF...THEN/FOR/WHILE语句去构造条件、循环、判断这样的结构,在这些结构中再次添加指令,去实现逻辑判断。所有程序的编写都是在纯文本的环境下编辑,不像梯形图那么直观。
今天就和大家聊一下关于SCL编程的基础知识:
变量与常量地址与符号寻址方式以上是PLC技术学习的基础知识,但凡懂一点PLC,对上面三部分内容应该都不会陌生。所以我也不打算把书本上的东西再重复一遍,这篇文章我只介绍在SCL中,上面三部分内容的使用以及与梯形图中的不同之处。
1、变量与常量
简单点来说,在程序运行时如果一个数据的值是不确定的我们就把它称作变量 。比如锅炉的温度,水流的速度,这些数据会随着时间(或者其他因素)波动。
反之,肯定会有一部分数据,不会受到外界的干扰,就是唯一值,这部分数据我们就称作常量 。比如一天有24小时,π=3.14。
常量的存在主要是为了存储一些固定的数值,在编程时使用常量能减少出错率。声明后的常量也比较容易修改。
举例来说,程序中如果有多处使用π,我们可以先定义π为常量,然后在编程时只需要把π带入公式即可,这样就能减少每次输入3.14出错的概率。后续维护时,想提高计算精度,我们可以直接在声明中改变π,使π=3.1415926,否则多处的数值改起来会相当麻烦。
无论是变量还是常量,在 TIA Portal 中按照作用的区域又可以分为全局和局部 。也就是我们常说的全局变量、全局常量,局部变量、局部常量。
全局变量 (或者全局常量)如果简单理解,大概分为两种,一种是在PLC变量表中建立的变量(或者常量)。还有一种是全局DB中创建的变量(或者常量)
全局变量可以被PLC中的所有程序使用,比较典型的就是PLC中的 I、Q、M存储区。
局部变量 (或者局部常量)一般是在FC/FB中建的变量(或者常量),也就是我们常说的内部变量(或者内部常量)
正常情况我们在某一个FC/FB中声明的内部变量,只会在该FC/FB中使用。但是TIA Portal软件中对该要求没有强制,也就是说FC/FB的内部变量也是可以被其他的FC/FB处理的。
在SCL编程时我们最好不要使用外部程序,处理内部变量,否则在程序移植时很容易出错。
2、地址与符号
变量的声明: 变量的声明有时候也叫变量定义,定义变量通常要指定变量的名称、数据类型,默认值等属性。
在SCL编程中,一定记住这个准则:变量要先定义后使用 。
变量的主要作用是用于存储数据,是数据存储的基本单元。声明变量就是向PLC的寄存器中,申请一块特定的区域用于存储数据。
这块区域的属性就是变量的属性,比如一个短整型变量占用2个字节,单精度浮点型数据占用4个字节。
在 TIA Portal 中声明局部变量会像上图中所示,利用表格的形式定义各种数据。
Input、Output、Inout这三种是FB对外的接口(形式参数),Static、Temp、Constant主要用于FB程序内部。
常量定义 :在声明常量时,并不像变量那样占用PLC的特定存储区域,所以常量也就没有绝对地址。因为常量就代表了特定的数值,在程序中也禁止修改常量。
上图是定义局部常量的方法,全局常量在PLC变量表的【用户常量】标签页里定义,如下图所示:
3、寻址方式
寻址就是我们对数据的访问方式,有绝对地址寻址 和符号寻址 两种。
PLC中的存储区域主要有四种:I、Q、M、DB。我们可以直接通过地址进行读取数据,比如 I0.0、MW10、DB1.DBW20。这种访问数据的方式就叫做绝对地址寻址 。
前面讲过,变量要先定义再使用,在定义变量的过程中,我们就赋予了绝对地址一个特殊的符号名称,通过定义的符号进行数据访问就是符号寻址。
在TIA Portal 中使用绝对地址编程时,软件会自动添加默认符号(博途不允许无符号名称的变量出现),并且增加了优化访问模式的DB。可见在S7-1200/1500编程中,弱化了绝对寻址。
SCL编程时符号寻址的书写格式:
DB块变量的寻址格式:"DB块名称".变量名称
PLC变量的寻址格式:"变量名称"
局部变量的寻址格式:#变量名称
上图是三种变量在SCL程序编写过程中,书写的格式,在编程SCL程序时需要严格遵守。
忘记书写格式时,可以通过拖拽的方式使用变量,或者使用软件的智能关联功能。
SCL编程时也可以使用变量前加 % 的方式使用绝对地址寻址,DB块变量的书写格式为%DB块号.变量地址。TIA PORTAL软件会判断该地址有没有对应符号名称,如果有则立即转换为符号名称,没有则保留绝对地址。
如果是PLC变量,也可以通过%变量地址的方式使用绝对地址寻址,TIA PORTAL软件会判断该地址有没有对应符号名称,如果有则立即转换为符号名称,没有则新建符号名称。
最流行的 PLC 编程语言盘点,你使用的是哪一种?
最流行的 PLC 编程语言是什么?
世界各地的工程师都在争论这个问题。普遍认为,PLC 编程最常用的语言是梯形逻辑。这是因为它非常灵活、易于学习,而且使用过相同架构原理图的电工很容易理解它。
然而,在过去十年中,更年轻的劳动力进入了制造业。这些工程师和技术人员主要学习 Java、Python 和 Javascript 等现代语言。这些语言与结构化文本 [ST] 更相似,因此促进了其使用。
考虑相关行业也很重要。化学工艺通常使用管道和仪表图 (P&ID) 进行设计。这些特定示意图可通过使用功能块图 [FBD] 轻松复制。
梯形逻辑 PLC 编程
在可编程逻辑控制器流行之前,大多数制造工厂都采用继电器控制。继电器根据通过设备物理接线实现的简单逻辑来驱动负载。这些设备的接线在电气图纸中指定,这些图纸假定布局类似于梯子。随着最基本的 PLC 被引入该领域,梯形逻辑 PLC 编程旨在模仿基于继电器的电路布局。换句话说,梯形逻辑是最早的PLC 编程语言之一,由于其简单性,至今仍在使用。
自诞生以来,梯形逻辑已发生了重大变化。但是,操作的基本原理保持不变。梯形逻辑PLC 编程按顺序评估梯形图的每个梯级,评估条件指令,如果结果评估为“TRUE”,则执行输出指令。
梯形逻辑 PLC 编程的优点
易于实施和故障排除:梯形逻辑是一种可视化语言,可为大多数指令提供状态确认。换句话说,即使对特定流程知之甚少的人也可以轻松浏览程序并了解逻辑。模块化设计:梯形逻辑可通过逻辑的增加或减少轻松修改。每个梯级都是一个单独的条件,可以根据需要删除或添加。弹性和一致性:Ladder Logic 允许用户实现许多功能。但是,该语言高度标准化,无法提供充分的灵活性,因此需要在不同实现之间保持代码的一致性。梯形逻辑的缺点
学习难度高:Ladder Logic 是一种简单的语言,但对于具有 C、C++、Java 或 Python 背景的人来说,它并不是非常直观。话虽如此,但对于电气工程师和具有汇编编程基础知识的人来说,它可能更容易掌握。部署缓慢:由于梯形逻辑的可视化特性,程序员需要更长的时间来创建他们所设想的逻辑。与其他现代编程语言相比,需要拖放元素,这会减慢开发过程。对于复杂应用来说不够直观:梯形逻辑在顺序布尔任务方面表现优异。然而,当涉及到涉及 PID、流量控制、模拟传感器和反馈回路的现代控制理论时,它并不总是易于实施和解读。结构化文本 PLC 编程
结构化文本是一种与 C 或汇编语言非常相似的PLC 编程语言。用户输入按顺序执行的代码行,评估特定函数、布尔检查并激活 PLC 的适当输出。结构化文本为具有 C、C++、Java 或 Python 等传统编程语言背景的用户提供了进入 PLC 的简单过渡。此外,它可以在文本处理器中轻松操作,因此无需硬件即可快速实现。
结构化文本 PLC 编程的优点
与其他编程语言一样直观:如上所述,结构化文本对于那些希望从软件工程背景过渡的人来说很容易学习。它具有与 C 或 Java 中相同的结构、编程范例和功能。高复杂度:结构化文本比其他语言具有更大的灵活性,因此掌握该语言的人可以更轻松地实现高级功能。可移植性|:结构化文本在大多数 PLC 系统中都是标准化的,因此很容易在平台之间迁移。您会发现不同平台之间其他语言存在显著差异,但结构化文本可以在硬件和软件平台上实现。结构化文本的缺点
难以排除故障| 与梯形逻辑编程相比,结构化文本从故障排除的角度来看要复杂得多。没有视觉队列,视觉辅助较少,并且一行上通常有更多代码。不熟悉这种语言的人很难弄清楚流程。易出错| 结构化文本为用户提供了更大的灵活性。然而,这种灵活性是以标准化为代价的。用户必须使用软件工程最佳实践来创建安全后备并捕获软件的任何潜在故障。功能块图 PLC 编程语言
功能块图 (FBD) 是一种专门为化学过程开发的编程语言。它允许用户创建过程的可视化表示和流程,并在指令之间进行适当的转换。可视化编辑器用户友好、直观,并创建了一种自然的方式来实现特定流程。
我们在 PLC 程序中使用功能块图的最常见应用是建立 PID 控制器。FBD 的可视化功能使 PID 易于在现场实施、可视化、调整和故障排除。
功能块图 PLC 编程的优点
灵活的可视化编辑器:功能块图编程编辑器非常用户友好,并提供了创建任何布局的简单方法。适合复杂的编程结构:在梯形逻辑中,用户必须使用多个梯级才能在单个 FBD 页面上完成可能完成的任务。这些指令可以直接带入实现 PID 循环、运动控制和附加指令 (AOI) 的复杂 PLC 指令中。用户友好:FBD 的可视化编辑器对于大多数用户来说都是自然而然的事情。可以通过拖放方法重新创建流程布局,几乎不需要猜测。功能块图 PLC 编程的缺点
难以标准化:由于布局的灵活性,标准化用 FBD 编写的程序具有挑战性。每个 PLC 程序员的方法都与其他人不同。落后的人很难理解信息流。规模化带来的麻烦:FBD 在流程特定领域的小型实施方面表现出色。然而,随着程序变得复杂,很容易迷失在所有表格中。顺序功能图 PLC 编程语言
顾名思义,顺序功能图(SFC)在后续流程中非常有用。对于不熟悉此概念的人来说,一个例子是从原材料到成品的化学转化。让我们以一个简单的酿造过程为例。
想象一下一个大型啤酒酿造厂,里面有无数的罐子、阀门、压力传感器、加热元件和包装部分。当操作员开始生产新一批啤酒时,该过程将按照以下步骤进行。请注意,这些步骤已简化。
步骤 1 - 验证系统是否准备就绪。所有适当的成分是否可用?储罐是否空了?阀门是否处于正确状态?如果所有检查的答案均有效,则继续。如果不是,则中止。
步骤 2 - 启动罐体填充程序,可能需要多种成分(水、糖、盐、酵母等)。验证状态并在罐体装满后继续。
步骤 3 - 开始冲泡过程。升高温度并维持一段时间。监测罐压并做出相应反应。如有必要,添加配料。冲泡完成后继续下一步。
步骤 4 - 开始转移到储罐。我们的批次已准备就绪;确认所有适当的阀门都已设置在正确的位置,储罐已空,然后开始转移过程。
步骤 5——将批次转移至装瓶设施。
从上面的示例大纲可以看出,流程步骤按顺序执行,具有定义的启动条件和流程,就像流程在生产设施中运行一样。在梯形逻辑中,此过程可以通过 SQI/SQO 指令实现。但是,更好的方法是利用 SFC。
顺序功能图 PLC 编程的优点
模拟大多数化学工艺的工艺流程 | 配料是一种常见的化学工艺方法,它采用一定数量的原料并将其转化为最终产品。SFC 在这些应用中大放异彩。结合 ST | 大多数 SFC 编辑器允许在特定情况下使用结构化文本来创建高级逻辑流。顺序功能图的缺点
不适用于大多数应用 | 将顺序功能图应用于非顺序流程是一项挑战。换句话说,它的用例数量有限。并行流程难以实施和排除故障 | 您可以通过 SFC 实施无限数量的流程。但是,随着流程路径分成多个流程,实施单独的流程路径以形成稳健的序列变得困难。指令表 PLC 编程语言
由于指令列表和结构化文本的编辑器相似,因此它们经常被混淆。这两种 PLC 编程语言通常出现在不同的平台上,因为它们的流程相似。
就程序流程而言,每行都指定指令以及执行的条件和结果。在许多方面,指令列表比结构化文本更接近于您实现梯形逻辑程序的方式。但是,这两种语言都能够创建相同的流程。
指令表 PLC 编程的优点
高度标准化:指令列表遵循严格的结构,要求用户明确创建变量、指定条件并列出每条指令。程序实现之间几乎没有差异,因此代码易于理解。以指令为中心:顾名思义,指令比数据流更重要。这种编程风格使程序中数据的处理方式更加清晰。指令列表的缺点
大多数 PLC 平台上都不可用:如上所述,指令列表不是一种流行的编程方法,因为它们对大多数程序员来说并不自然。它们更接近于人们在汇编语言中看到的内容,而不是市场上任何其他编程语言。
结论
五种最流行的 PLC 编程语言是梯形逻辑、结构化文本、功能块图、顺序流程图和指令列表。这些编程方法在大多数平台上都可用。但是,某些 PLC 会限制用户使用某些语言,除非用户支付额外费用。
你使用的是哪种编程语言呢?评论区留言!
相关问答
学python对plc编程有用吗?
没有用,PLC可编程控制器,用于工业控制,属于硬件控制语言,控制数字信号,比较底层,编程也比较简单,十分容易学习。python是一种集成强大的三方库的应用级编...
plc编程很难吗?
不难,PLC编程比PythonJavaWET这些语言要简单多了,我本身就是学电子信息专业,但我没学好,只懂一些皮毛,前段时间报了一个线上课程,包括寄来了6本书(...不难,...
python如何接收plc的信号?
Python可以通过PLC的通信接口来接收PLC的信号。PLC通常具有多种通信接口,例如串口、I2C、SPI等,这些接口可以通过编程语言如Python进行访问。以下是一些获取P...
会python后学自动化难吗?
您好,学会Python后学习自动化并不难,但需要一些时间和努力。自动化需要掌握一定的编程技能、软件开发和工程方面的知识。学习自动化需要掌握以下几个方面:1...
PLC编程逻辑思维不行,怎么锻炼?
5.学习其他编程语言:学习其他编程语言,如C语言、Python等,可以帮助提高编程逻辑思维能力,对PLC编程也有一定的借鉴作用。4.参与项目实践:参与实际的PLC项目...
学习PLC是不是要先学习C语言?
虽然PLC(可编程控制器)和C语言都与程序控制有关,但是学习C语言并不是PLC基础入门所必需的。PLC是利用LadderLogic(梯形图)语言进行程序设计和控制的,它是...
学C++与学python,哪个更好?
(1)C/C++现在C语言,一般都作为理工科学生的一门专业基础课。C/C++是一种简单且广泛使用的计算机编程语言。C编程语言主要由软件开发人员或程序员使用,特...
关于PLC的职业规划和前景?
笔者在自动化行业有十年以上的系统集成经验,就站在自己工作的经历基础上,给大家分享一下自己的看法。(1)随着我们国家从制造业大国向制造业强国的转换产业升...
PLC培训费用一般是多钱?-ZOL问答
2、在线培训在线PLC培训相对便宜,一般在几千元左右,但是需要自己购买相关的学习资料和软件。3、企业内部培训一些企业会为员工提供PLC培训,费用一般由企业承...
mc3+2如何编程?
MC3+2是一款基于STC12C5A60S2单片机的开发板,可以通过C语言进行编程。下面是一个简单的步骤,介绍如何在MC3+2开发板上进行C语言编程:1.准备必要的工具和软件...