西门子PLC编程:如何学习SCL语言的基本语法规则
SCL:Structured Control Language,结构化控制语言。
SCL是一种类似于计算机高级语言的编程方式,只是这种语言编写的程序,可以在PLC中运行。如果学过C语言或者VB语言,就会很容易上手SCL。当然没有基础依然可以从零开始学习。
在PLC中有了SCL这种编程语言,就可以方便地把计算机高级语言,编写的算法移植到PLC中。
西门子以下系列的PLC都支持SCL语言编程:
S7-300S7-400S7-1200S7-1500WinACSCL能实现复杂的运算功能,特别是有大量数据要处理的时候。相对于梯形图SCL在运算、函数、过程优化方面有天然的优势。
在博途软件中已经集成SCL语言包,可以直接使用SCL进行进行编程。在传统的STEP7 中需要单独的安装 S7-SCL 软件包。
因为SCL是一种高级编程语言,所以就包含表达式 、运算符 、程序控制语句 等语言元素。
1、表达式
SCL中有三种表达式:
算术表达式关系表达式逻辑表达式一个完整的表达式是由操作数 和与之搭配的操作符 组成。通过表达式的特定顺序进行运算,并返回一个值。
操作数 :常数、变量、函数调用(在PLC编程中可以理解为地址)。
操作符 :+、- 、*、/ (加减乘除),and、or、not(与或非)等。
操作符有时也叫运算符 ,SCL支持的运算符有算术运算符、比较运算符、逻辑运算符、赋值运算符。
算术运算符 :主要是我们常用的加(+)、减(-)、乘(*)、除(/),以及数学上常用的取正、取负、求余数、整除、求余(%)。
比较运算符 :用于数值的比较,主要有大于、小于、等于、不等于。
逻辑运算符 :用于布尔型值的运算,常用的逻辑运算符除了与、或、非之外,还有异或。
赋值运算符 :通过赋值运算,可以将一个表达式的值赋给一个变量。赋值运算符左侧为变量,右侧为表达式的值。 赋值运算的计算按照从右到左的顺序。
1.1、算术表达式
算术运算符:+、-、*、/、DIV、MOD、**。
算术表达式 通常由常量、变量、函数、圆括号、运算符等组成。算术表达式也叫数学表达式,是三种表达式中最简单的,几乎可以等同于数学运算。
西门子PLC的算术表达式,支持各种数据类型。一个算术表达式的两个操作数,如果分别属于不同的数据类型,依然可以运算。运算结果的数据类型,如下图所示:
虽然不同的数据类型可以算术运算,还是建议大家先进行数据格式转换,然后进行运算。防止出现运算后,不知道数据格式,导致数据错误。
1.2、关系表达式
关系运算符:<、<=、>、>=、==、<>。
关系表达式是利用关系运算符,将两个操作数或数据类型进行比较,然后得到一个布尔值(BOOL)型的逻辑结果。如果比较结果为真,则结果为1(TRUE),否则为0 (FALSE)。
所以关系表达式的值只能是逻辑值真或假(1或者0)。
关系表达式有时候也称作比较表达式 。
西门子PLC的关系表达式,支持各种数据类型,结果的数据类型只能是布尔型。
以下数据类型,只能比较相同类型的变量:
TIME日期和时间UDT1.3、逻辑表达式
逻辑运算符:AND(&)、OR、NOT、XOR。
西门子PLC的逻辑表达式,支持各种数据类型。但是在运算中会出现两种情况。
一是 ,两个操作数都是布尔(BOOL)数据类型,则逻辑运算的结果也为布尔数据类型。
另一种情况 ,如果两个操作数中至少有一个是位序列,则结果也为位序列。结果由最高操作数的数据类型决定。例如,当两个操作数分别是字节(Byte) 类型和字(Word)类型时,结果为字(Word)类型。
逻辑表达式中一个操作数为布尔(BOOL)类型而另一个为位序列时,必须先将 布尔(BOOL)类型的操作数显式转换为位序列类型。
位序列:一组由0和1组成的序列。
第1章 西门子1200基础指令讲解
第1章 西门子1200基础指令讲解
1.1 常开、常闭和线圈
1.1.1 指令介绍
如图1.1所示,a为常开触点的表示方法,b为常闭触点表示方法,c为赋值表示方法。赋值表示方法通常有称为线圈的表示方法。
图1.1 常开、常闭和赋值
PLC编程的目的是根据设计工艺要求控制现场的设备按照需求去实现某些功能。所以每一条PLC程序指令都会有它的作用和含义。有的PLC指令可以实现一定的功能,有的指令需要配合使用才能实现功能,无法单独使用。如上述所讲的常开、常闭和线圈是PLC编程应用最广泛的,但是又不能独立使用的,因为独立使用以后表达任何意思。
1.1.2 指令应用
如图1.2所示,程序段1表达的意思是当常开触点接通时,线圈接通。程序段2表达的意思是当常闭触点接通时,线圈接通。显然这两段程序没有具体的含义,如图所示指令上方都是问号,同时程序段前边都有带×的红色圆圈,表示程序的编写具有语法错误。
图1.2 指令应用1
如图1.3所示,程序段1表达的意思是当(系统开启I0.0)的常开触点接通时,(正转继电器Q0.0)的线圈接通。程序段2表达的意思是当(正转按钮I0.1)的常闭触点接通时,(反转继电器Q0.1)的线圈接通。程序一定要结合注释看,注释是与现场实际情况相结合的纽带。
程序应当这样理解:在按下(系统开启I0.0)时,(正转继电器Q0.0)接通。没有按下(正转按钮I0.1)时,(反转继电器Q0.1)接通。此处的前提条件为:I0.0和I0.1的外部按照正常来讲都是接常开触点。
图1.3 指令应用2
1.1.3 程序理解
所有的程序理解都需要有具体的使用环境和场景。就像图1.3所示,这两段程序不能表示太多含义。核心工作时输出,至于什么时候让输出,何时停止输出都是通过程序来编写的,那就是输出的条件会更多一些。根据现场的实际情况去编写输出所需要的条件,以保证输出的合理性。
编程的目的就是让各个点位之间产生关联。如图1.3中程序段1将I0.0和Q0.0两者产生了关联,程序段2将I0.1和Q0.1产生了关联。至于互相之间的关系如何发展,且看后续程序编写。
编程的核心问题:程序的编写是为了描述一个场景或者表达一个含义,核心部分在输出部分。PLC编程的核心中的核心是:让该输出的输出,禁止不该输出的输出。
1.1.4 启停保程序
如图1.4所示为经典的起保停电路。
状态1:当按下系统开始(I0.0)按钮时,由于停止按钮(I0.3)处于接通状态,所以正转继电器(Q0.0)会接通。
状态2:当正转继电器(Q0.0)的线圈接同时,对应的常开触点接通.
状态3:当(系统开始I0.0)按钮松开后,由于Q0.0的常开触点替代了I0.0的接通,那么此程序还能继续保持回路接通,Q0.0的线圈依然得电。
在状态3时,关键回路由正转继电器Q0.0的常开触点、停止按钮I0.3的常闭触点和正转继电器Q0.0的线圈组成。
如果想让线圈断开,只能按下(停止按钮I0.3)。因为在关键回路(能流导通的回路)上目前只有I0.3可控。I0.0虽然可控,但是I0.0不在关键回路,对现有状态无法改变。
状态4:当按下(停止按钮I0.3)后,关键回路断开,如果(系统开始I0.0)按钮没有同时按下时,关键回路是无法保持接通的,因此正(转继电器Q0.0)线圈断开。
图1.4 起保停1
1.1.5 问题思考
如图1.5所示,与图1.4不同的是I0.3采用了常开触点来表示按下停止按钮。那么如何理解呢?PLC编程有一个原则:模块的输入点接通时,该点的常开点接通,对应的该点的常闭触点断开,反之亦然。
图1.5中I0.3外部按钮接的是常闭触点,那么外部按钮I0.3在没有按下的情况下,PLC程序中的I0.3的常开触点就是接通的。如果I0.3外部按钮按下,PLC程序中的I0.3的常开触点就是断开的。
图1.5 起保停2
外部为什么要接常闭触点,统一都接常开接线不香吗?又方便有好记。试想一下:如图1.4所示,停止按钮外部就是接的常开触点。如果停止按钮损坏或者停止按钮到输入模块的线路断开,如果想理解停止运行的话是不可能的,因为PLC需要接收到停止信号才行。而反观图1.5所示,只要是停止按钮损坏或者停止按钮线路不通,那么线圈就不会接通。这样就保证了设备安全。因为涉及到特别重要的信号或者安全信号,外部都是需要接常闭触点的,如急停信号,限位信号,重要的连锁信号,任何原因的没有信号都将视为断开。
1.1.6 指令特性
常开触点接通时表示有能流流过该触点,常开触点断开时表示没有能流流过该触点。
常闭触点和常开触点也是同样的道理。该点接通和断开的时间取决于外部设备或者是该点位的线圈的接通时间。
1.1.7 触点和线圈的关系
实际工作中用到的中间继电器、时间继电器、接触器和固态接触器等,每一个线圈都有有对应的触点,一般都会有常开触点和常闭触点。当线圈得电接通时,常开触点闭合,常闭触点断开。在实际工作中,常闭触点先断开,常开触点后闭合,在PLC编程中我们认为常开触点和常闭触点的动作是同步的,没有先后的区分。
所有的触点都是由线圈来控制的,如图1.5中的Q0.0线圈接通后,Q0.0的常开触点闭合。类似的编程中可以使用的中间继电器还有M点,DB数据块中的Bool量等,如M0.0和DB10.DBX0.0。数字量输出、中间继电器,定时器和计数器都是有对应的触点的。
数字量输入是一个特例,I点在编程中是永远不会有线圈的。因为它是输入点,只有触点,它的线圈可以理解成数字量输入模块的接通信号(数字量输入点的指示灯)。
程序中使用开点和闭点根据实际情况需要。同一点位的常开点和常闭点状态永远是相反的。同一触点的常开点或者是常闭点可以根据需要无限次使用。同一点位的线圈,原则上只只能出现一次。
相关问答
plc编程用什么语法?
PLC的编程语言包括以下五种:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)。PLC的用户程序...PLC的...
plc编程语法错误怎么解决?
要解决PLC编程语法错误,可以采取以下步骤:1.仔细检查代码:首先,需要仔细检查代码中的每一行,确保没有拼写错误、语法错误或其他常见的错误。2.使用调试工...
学PLC编程需要什么基础?
学习PLC编程需要以下基础:电气自动化知识:PLC编程是基于电气自动化的,因此需要掌握一定的电气自动化知识,包括电路原理、电机、传感器原理、变频器原理等等。...
plc中@是什么意思?
在PLC(可编程逻辑控制器)中,"@"符号通常用作特定的符号或操作符,具体含义取决于上下文和所使用的编程语言。以下是一些可能的含义:1.**地址符号**:在PLC...
西门子m指令的全部代码?
很抱歉,我不能提供西门子M指令的全部代码。西门子PLC编程使用的是STEP7软件,其中包含了多种编程语言和指令集。M指令是西门子S7-300和S7-400系列PLC中的一种...
信捷plc程序编好怎么编译?
编译PLC程序需要使用软件,一般情况下需要按照以下步骤进行:1.打开信捷PLC编程软件;2.导入编写好的PLC程序;3.进行语法检查,确保程序没有错误;4.进行编...
plc的cpu执行内容?
CPU是整个PLC的控制中枢,它按PLC中系统程序赋予的功能指挥PLC有条不紊的进行工作。CPU主要完成下述工作:(1)接收、存储用户通过编程器等输入设备输入的程序...
PLC的C语言怎么弄?
PLC的C语言编程需要借助专门的软件和硬件工具。一般来说,需要使用PLC生产厂家提供的专用编程软件,将C语言代码编写成PLC可识别的指令,然后通过编程电缆或其他...
三菱plc计时指令怎么用?
三菱PLC计时指令可以使用。在PLC程序中,计时器指令用于计算从指定条件开始经过的时间。这个指令在三菱PLC编程中的语法格式为TIMCNTKxx,其中Kxx指定为定时器...
plc怎么自学啊?
要自学PLC,你可以按照以下步骤进行:1.学习基础知识:了解PLC的原理、功能和应用领域。可以通过阅读相关书籍、在线教程或参加培训课程来获取基础知识。2.获...