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中编辑变量和数据:
(一)基本知识
1、变量分类
变量是在程序执行时可以修改的内存区域。Unity Pro 软件编程可以使用两种类型的变量:
1) 定位变量:是与 I/O 硬件模块输入输出通道相关联的,或者与内存引用相关联的变量。例如:“启动电机”与输入模板通道 %I 0.5.0 相关联,“启动电机”就是定位变量。
2) 非定位变量:是既不与I/O 硬件模块输入输出通道相关联,也不与内存引用地址相关联的变量,即没有地址关联的变量成为非定位变量。非定位变量在内存中的位置不可知。这种变量定义类型可以使您在编写程序时抛开地址的束缚,完全专注于您的应用。
2、通用数据类型和范围
BOOL/EBOOL : 布尔变量必须为 FALSE (0) 或 TRUE (1). EBOOL处理强制和边沿检测
WORD : 代表 “位串16”, 意味着数据长度为 16 位
INT : 代表整型数. 数值范围从 -32768 至 +32767
UINT : 代表无符号整型数. 数值范围从 0 至 65535
REAL : 代表浮点值. 数值范围从 -3.40e+38 至 3.40e+38
3、 通用数据类型的立即值语法
通常基本数据类型(EDT)的实例采用变量名或拓扑地址的方式引用,而在数据编辑器或程序段中也可以通过立即值的方式赋值和引用。如下图所示。
4、定义变量的三种方式
方式一,在项目浏览器中鼠标双击“变量和FB实例”,在弹出的‘数据编辑器窗口’定义,编辑、修改变量,如下图。
方式二,在项目浏览器中双击CPU或I/O模块,如下图查看相应模块的地址,在模块的I/O对象表格里定义,这种方式只能生成,不支持修改和删除。
方式三,在”程序编辑窗口”中定义,这种方式只能生成,不支持修改和删除。
(二)实际操作
1、在项目浏览器中点击“变量和FB实例”,在右侧“名称”下输入start,类型选 EBOOL,在下一行输入 stop,类型选 EBOOL,然后关闭窗口。如下图:
2、从硬件属性中书写:在项目浏览器中双击DDO3202k;左键点右侧“BMX DDO3202k”,选择I/O对象,再选择%Q,然后点击“更新网络”。在该界面右侧%Q0.2.0名称下,改写为cmd_motor,再用鼠标左键选中第2行,按着鼠标左键下拉,选择右侧Q0.2.1、Q0.2.2、Q0.2.3;然后在左侧“名称前缀”框中输入cmd_,点击“创建”。即可形成cmd_0、cmd_1、cmd_2;如下图:
3、关闭所有窗口,点击“变量和FB实例”,会显示刚才所有的定义变量名。
4、按保存按钮,保存项目。
相关问答
plc程序段注释怎么写?
1.PLC程序段注释需要按照一定的格式进行书写。2.原因是注释的目的是为了方便程序的理解和维护,因此需要清晰明了地描述程序段的功能和作用。3.在编写PLC程...
s7-200plc多段速程序怎么写?
1、多段速程序需要用到定时器和计数器来实现。2、首先,明确结论:多段速程序需要根据不同的运动阶段来控制不同的速度,以满足不同的需求。3、解释原因:在程序...
plc中子程序和中断程序的书写位置有什么要求?
子程序书写在主程序中,中断程序书写主程序的最前面。子程序书写在主程序中,中断程序书写主程序的最前面。
PIC的标准编程语言分别是?
一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作...指令格...
三菱plc编程语言的种类有哪些?
感谢邀请!三菱FX系列的主要是3系包括(FX3S、FX3G、FX3GC、FX3U、FX3UC)可编程控制器支持一下6中编程语言:指令表编程、梯形图编程、SFC步进图编程、ST结构文本...
别人给了我几个编程软件放在U盘里.怎么把这些软件装在电脑里...
如果这几个编程软件是可执行文件(*.exe),直接双击安装。如果是安装后的文件夹...WR(WorkRegister)代表辅助继电器,PLC程序中用作中间继电器使用,因书写方法区...
请问PLC组合位元件用法是怎样?
三菱系列的PLC可以用位元件以位元件组的形式接受或发送二进制数据,1个位元件组由4个连续位元件组成,书写形式是KnX**、KnY**、KnM**等,比如K1X000就表示起始...
关于OMRON(欧姆龙)PLCUSB驱动程序的問題-ZOL问答
呵呵,换系统吧,有好多编程软件不支持新出来的系统的,最高就是XP有用(0)回复...WR(WorkRegister)代表辅助继电器,PLC程序中用作中间继电器使用,因书写方法区...
plc转盘系统发展背景?
PLC的发展背景及其功能概述PLC,(ProgrammableLogicController),乃是一种电子装置,早期称为顺序控制器“SequenceController”,1978NEMA...
欧姆龙PLC编程中,BIN有的怎么写成“00CB”hex,BIN不是表明二...
3条回答:【推荐答案】hex代表十六进制,因为二进制数书写起来比较长,所以一般写成十六进制。00CB(16)=0000000011001011(2)。