初识博图scl语言

文章目录

目录

一、scl语言简介

1.介绍

2.相关问题

3.scl语言的编写环境

二、表达式和运算符

1.算术表达式

1.介绍

2.算术表达式使用

3.例题

2.关系表达式

1.介绍

2.使用

3.逻辑表达式

​1.取反 (NOT)

​2.与(AND/&)

​3.或(OR)

4.异或(XOR)

​ 4.运算符的优先级

5.赋值运算


前言

随着PLC自动化的发展,许多控制要求用梯形图(lad)已经不好满足或者比较乏力,特别是在数据管理、数学运算、重复的多个运算和流程等方面;但是结构化语言(scl)可以很好的处理这些问题。


一、scl语言简介

1.介绍

首先scl语言和lad(梯形图)语言都是可编程控制器中的一种编程语言,用来编写程序。

另外SCL(Structured Control Language 结构化控制语言) 具有以下特点:

适用于 S7-300 (推荐CPU314以上), S7-400,S7-1200,S7-1500, C7 and WinAC

SCL 为 PLC 做了优化处理,它不仅仅具有 PLC 典型的元素(例如 输入/输出,定时器,计数器,符号表),而且具有高级语言的特性, 例如:表达式,赋值运算,运算符,循环, 选择,分支,数组 ,高级函数等。
 SCL 其非常适合于如下任务:
复杂运算功能

复杂数学函数

数据管理

过程优化

2.相关问题

关于scl语言的相关问题可以参考西门子官网手册:

文档链接:https://support.industry.siemens.com/cs/attachments/109481384/2008928131135970.pdf

3.scl语言的编写环境

scl的编写环境可以在单独的一个块里面,也可以在一小段程序里面,并且可以和其它的语言混合编写,简称混编。例如:程序段2是lad编写,程序段3是scl编写。

 这里我们添加新块fc,选择scl语言就可以了,下面是在fc块中的编写环境。(这里可以看出和C语言有些相似)和平常写程序时一样,上面是常用的指令,右侧是基本指令,中间是写程序的地方。

二、表达式和运算符

1.算术表达式

1.介绍

1、算术表达式既可以是一个数字值,也可以是由带有算术运算符的两个值或表达式组合而成。

2、算术运算符可以处理当前 CPU 所支持的各种数据类型。如果在该运算中有2个操作数,那么可根据以下条件来确定结果的数据类型:

如果这 2个操作数均为有符号的整数,但长度不同,那么结果将采用长度较长的那个整数数据类型例如:INT + DINT = DINT

如果1个操作数为有符号整数,另一个操作数为无符号整数,那么结果将采用另一个长度较大的有符号数据类型(包括无符号)例如:SINT+SUINT=INT

如果这 2 个操作数均为无符号整数,但长度不同,那么结果将采用长度较长的那个整数数据类型,例如:USINT + UDINT = UDINT
3、如果,一个操作数为整数,另一个为浮点数,那么结果将采用浮点数的数据类型,例如,INT +REAL= REAL

4、如果两个操作数均为浮点数,但长度不同,结果将采用长度较长的那个浮点数的数据类型,例如:REAL+LREAL=LREAL

2.算术表达式使用

算术表达式有:加法, 减法, 乘法,除法,模运算和幂运算。

创建一个数据块,使用一个结构体变量(struct)变量类型为int,C是最后的结果;

然后C:=A+B,就是将A+B的和放到C里面,其中:=是赋值的意思。

最后打开仿真,输入数值,就可以计算出结果;这里是以加法举例,后面的乘除取模和幂运算大致相同。

3.例题

使用scl语言计算这个公式:(A*(B+C))的2次方/4;

这样套进去就可以了。

2.关系表达式

1.介绍

关系表达式就是由 =  、<>、>、<、>=、<=  组成的表达式。如果条件成立为:TRUE,不成立为:FALSE;比较后的结果必须是放在Boll量类型的变量中。

数据类型中的所有变量都可以进行比较:整数/浮点数、二进制数、字符串。
对于以下数据类型/数据组,只能比较相同类型的变量像:TIME、LTIME日期和时间、ARRAY。

比较浮点数
1、比较浮点数时,待比较的操作数必须具有相同的数据类型,而无需考虑具体的“IEC 检查”(IEC Check) 设置。2、对于无效运算的运算结果(如,-1的平方根),这些无效浮点数(NaN)的特定位模式不可比较。即,如果一个操作数的值为 NaN,则比较表达式“==:等于”和“<>:不等于”的结果将为 FALSE。

比较字符串
比较字符串时,系统将对各字符的代码进“a”大于“A”)。并按照从行比较(如,左到右的顺序进行比较。第一个不同的字符将确定比较的结果。

比较定时器、日期和时间
系统无法比较无效定时器、日期和时间的位模式1、如DT#2015-13-33-25:62:99.999 999 999)如果某个操作数的值无效,则指令“手:等于即,的结果将为FALSE<>:不等干
2、并非所有时间类型都可以直接相互比较,如需要将其显式转换为其它时简类型S5TIME。此时然后再进行比较(如,TIME),
3、如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大的日期或时间数据类型。。例如,比较日期和时间数据类型DATE和DTL时,将基于DTL进行比较
如果显式转换失败,则比较结果为 FALSE

比较 WORD 数据类型的变量与S5TIME 数据类型的变量
将WORD 数类型的变量与 S5TIME 数据类型的变量进行比较时,这两种变量都将转换为 TIME 数据类型。WORD变量将解释为一个 S5TIME 值。如果这两个变量中的某个变量无法转换,则不进行比较且输出结果 FALSE。如果转换成功,则系统将基于所选的比较指令进行比较操作。

比较结构
1、结构比较功能仅适用于固件版本为 V4.2及以上版本的S7-1200系列CPU,以及固件版本为V2.0及以上版本的S7-1500系列CPU2、如果两个变量的结构数据类型相同,则可以比较这两个结构化操作数的值。比较结构化变量时,待比较操作数的数据类型必须相同,而无需考虑具体的“IEC 检查(IEC Check) 设置。但一个操作数为VARIANT,而另一个为 ANY时除外。创建程序时,如果数据类型未知,则可使用 VARIANT 数据类型。这样,就可比较任意数据类型的结构化变量操作数。此外,还可以比较VARIANT或ANY 数据类型的变量。

ARRAY 数据类型
1、元素的数据类型必须相同。
2、两个 ARRAY 的维数必须相同。3、所有维数的元素数量必须相同,而具体的ARRAY 限值无需相同

2.使用

相等为TRUE,不相等为FALSE。

3.逻辑表达式

1、逻辑表达式由两个操作数和逻辑运算符(取反:NOT,与:AND/&,或:OR,异或:XOR)组成。
2、逻辑运算符可以处理当前 CPU 所支持的各种数据类型。如果两个操作数都是 BOOL数据类型则逻辑表达式的结果也为BOOL数据类型。如果两个操作数是位字符串,则结果也为位字符串。
3、逻辑表达式中一个操作数为 BOOL 类型而另一个为位字符串时,必须先将BOOL类型的操作数显式转换为位学符串类型

1.取反 (NOT)

取反指令可以将1变为0,将0变为1;是按2进制位取反。

2.与(AND/&)

与指令(按位与):全1为1,有0为0.

 3.或(OR)

或指令(按位或):有1为1,全0为0。

 

4.异或(XOR)

异或指令:相同为0,相异为1。

 4.运算符的优先级

运算符及其运算顺序
-通过运算符可以将表达式连接在一起或相互嵌套。
表达式的运算顺序取决于运算符的优先级和括号。基本原则如下所示
1、算术运算符优先于关系运算符,关系运算符优先于逻辑运算符。
2、同等优先级运算符的运算顺序则按照从左到右的顺序进行。
3、赋值运算的计算按照从右到左的顺序进行括号中的运算的优先级最高

5.赋值运算

1、通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。2、函数名称也可以作为表达式。赋值运算将调用该函数,并返回其函数值,赋给左侧的变量。
3、赋值运算的数据类型取决于左边变量的数据类型。右边表达式的数据类型必须与该数据类型一致。

 

 


总结

以上就是今天的内容,这里主要写了一些scl语言的简介,应用,表达式和运算符。下一篇就是scl语言指令的使用以及一些小的案例。

【SCL】博图SCL编程语言(1)相关推荐

  1. 博图SCL+LAD之程序 预设五组配方,包含条形码编码、光源亮度、板件厚度等信息

    博图SCL+LAD之原创程序. 硬件配置S7-1214?3个CM1241 RS232?1个CB1241 RS485. 以下功能只是一部分,占总程序25%,请注意. 以下用SCL功能实现: 1:预设五组 ...

  2. 西门子博途SCL高级博图SCL运动控制自动化项目实例西门子整 套高级SCL编程运动控制

    西门子博途SCL高级博图SCL运动控制自动化项目实例西门子整 套高级SCL编程运动控制

  3. 【SCL】博图scl语言应用项目:装配流水线模拟控制

    使用西门子博图SCL语言和factoryio软件来编写应用案例--装配流水线模拟控制项目 文章目录 目录 前言 一.应用:装配流水线模拟控制 1.控制要求 2.完善控制要求和场景 1.布置场景(fac ...

  4. 博图SCL编程——提升代码界面的美观性和易读性

    博图Tia Portal学习教程目录 前言 几年前写C的时候,Tab键敲个不停,就是因为代码要对齐,不然影响美观,后来在网上找到个神器--代码格式化软件,写程序就随意多了,几个.c文件写完,批量选中, ...

  5. 【SCL】博图SCL语言学习 (指令篇 )

    博图SCL语言常用指令的学习和使用以及相关例题. 文章目录 目录 文章目录 前言 一.逻辑运算符的使用 1.点动 2.自锁(起保停) 3.正反转 4.小结 二.常用程序控制指令 1. if...the ...

  6. 博图SCL编程——常规模拟量输入/输出的处理

    本文只对SCL中模拟量处理程序的编写进行说明,详细的应用原理请参考博图中热电阻/热电偶(RTD/TC)模拟量信号的处理和博图电压/电流(U/I)模拟量信号的处理 1. 热电阻/热电偶(RTD/TC) ...

  7. 博图SCL编程实例(一):SimMultizone

    下面代码为西门子博图的一个实例功能块的SCL程序代码. 实例:PID_Temp_Multizone FUNCTION_BLOCK "SimMultizone" { S7_Optim ...

  8. 博图SCL与其他语言指令对照

    这里先推荐一个西门子官方的PPT文档,主要是介绍博图软件和推广SCL语言的.内容很全面,干货满满.不过--是英文的,所以说学好英语还是很重要的,至少这种情况下就不会显得略微尴尬. 链接: https: ...

  9. 【应用】博图SCL语言之抢答器应用

    使用博图的SCL语言来完成多人抢答器的应用案例. 文章目录 目录 文章目录 前言 一.控制要求和I/O分配 1.控制要求 2.I/O分配 3.具体场景 二.编写 1.建立变量 2.编写 1.四路抢答器 ...

最新文章

  1. MLNLP顶会论文发表总榜:谷歌最狂,清北入前十,周明、张岳、刘挺华人前三...
  2. shiro系列二、身份验证和授权
  3. IIS配置网站定时任务必设参数图文教程
  4. mysql第五章事务_mysql 第五章 备份恢复
  5. java域的控制修饰符可分为_Java中的类和方法的修饰符
  6. swift3.0 Runtime 增加属性
  7. 开启ntp_飒,NTP时钟服务器在银行大楼系统方案
  8. 48 - LeetCode 122 121. 买卖股票的最佳时机
  9. Delphi 调用Domino Lotus OA
  10. 电子厂计算机维修周记,关于电子厂实习周记范文
  11. Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
  12. uIP编译时配置选项
  13. 学院开展计算机基础知识比赛,信阳师范学院顺利举办第七届计算机基础知识决赛...
  14. 2011考研数学二第(6)题——积分大小关系比较
  15. 配置和使用Nexus私有仓库
  16. 什么是存储过程,存储过程的优点。及使用。
  17. php程序开发编辑器有哪些,常用的PHP编辑器有哪些?
  18. 新手小白都看得懂得光通信知识
  19. Android6.0源码解读之ViewGroup点击事件分发机制
  20. 细数一对一社交源码调和延时卡顿问题的小技巧

热门文章

  1. 第1章 人工智能时代,人人都应该学会利用AI这个工具 / 1-3 人工智能介绍
  2. 【两个例子】Tensorflow+Inception-v3训练自己的数据+分析retrain源码
  3. mock 中使用@Transactional注解测试失效问题
  4. haar级联分类器车辆检测_Haar级联分类器Open CV用于人脸检测的术语
  5. 前端 table 数据纵向展示
  6. 科技革命——智慧农业时代
  7. python|3种运行cmd命令行的方法
  8. 按键精灵直接运行cmd指令
  9. C语言有三名同学,每人四门课程,利用指针,查找有一门以上课程不及格的学生,输出他们的全部课程的成绩。
  10. IPv4地址常用三种类型,私有IP地址和公有IP地址