西门子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组成的序列。
西门子PLC STL编程指令中英文对照表,收藏备用!
1、LD ( Load 装载 ) :动合触点
2、LDN ( Load Not 不装载 ) : 动断触点
3、A ( And 与 动合) : 用于动合触点串联
4、AN ( And Not 与 动断 ) :用于动断触点串联
5、O ( Or 或 动合 ) :用于动合触点并联
6、ON ( Or Not 或 动断 ) : 用于动断触点并联
7、= ( Out 输出 ) :用于线圈输出
8、OLD ( Or Lode): 块或
9、ALD ( And Lode): 块与
10、LPS ( Logic Push ) :逻辑入栈
11、LRD ( Logic Read ) :逻辑读栈
12、LPP ( Logic Pop ) :逻辑出栈
13、NOT ( not 并非 ) :非
14、NOP ( No Operation Performed ) : 无操作
15、AENO ( And ENO ) :指令盒输出端ENO相与
16、S ( Set 放置 ) : 置1
17、R ( Reset 重置,清零 ) :清零
18、P ( Positive) :上升沿
19、N ( Negative) :下降沿
20、TON ( On_Delay Timer ) :接通延时定时器21、TONR ( Retentive On_Delay Timer ) : 有记忆接通延时定时器
22、TOF ( Off_ Delay Timer ) :断开延时定时器
23、CTU ( Count Up ) : 增计数器
24、CTD ( Count Down ) : 减计数器
25、CTDU ( Count Up/ Count Down ) :增减计数器
26、ADD ( add 加 ) : 加注意
//ADD_I (_ I 表示整数)
ADD_DI( DI表示双字节整数)
ADD-R (R 表示实数)
它们都是加运算只是数的大小不同。
27、SUB ( Subtract 减去,减少) :减
28、MUL ( Multiply ) : 乘
29、DIV ( Divide ) : 除
30、SQRT ( Square root ) : 求平方根
31、LN ( Napierian Logarithm 自然对数 ) : 求自然对数
32、EXP ( Exponential 指数的 ) :求指数
33、INC_B ( Increment 增加 ) :增1
//其中_B代表数据类型 还有W(字节)、DW双字后面几个都是这样的。
34、DEC_B ( Decrement 减少 ) :减1
35、WAND_B ( Word and 与命令 ) :逻辑与
36、WOR_B ( Word or 或命令) : 逻辑或
37、WXOR_B ( Word exclusive or 异或命令) :逻辑异或
38、INV_B ( Inverse 相反 ) : 取反
39、MOV _B ( Move 移动 ) :数据传送
40、BLKMOV_B ( Block Move 块移动) :数据块传送
41、SWAP ( Swap 交换 ) :字节交换
42、FILL ( Fill 填充 ) :字填充
43、ROL_B ( Rotate Left 循环 向左) :循环左移位
44、ROR_B ( Rotate Right 循环 向右) : 循环右移位
45、SHL_B ( Shift Right 移动向左) :左移动
46、SHR_B ( Shift Right 移动向右 ) :右移动
47、SHRB ( Shift buffer 移动缓存) :寄存器移位
48、STOP ( Stop 停止 ) :暂停
49、END /MEND ( End /Mend ) : 条件/无条件结束
50、WDR ( Watch dog reset ) :看门狗复位
51、JMP ( Jump 跳) :跳转
52、LBL ( Label 位置 ) :跳转标号
53、FOR ( For 循环 ) :循环
54、NEXT ( Next 再下去) :循环结束
55、SBR ( Subprogram Regulating子程序控制 ) : 子程序调用
56、SBR_T ( Subprogram Regulating Take ) : 带参数子程序调用
57、SCR ( Sequence Control 顺序控制 ) : 步开始
58、SCRT ( Sequence Control Transfer 顺序控制转移 ) : 步转移
59、SCRE ( Sequence Control End 顺序控制结束 ) : 步结束
60、AD_T_TBL ( Add data to table 添加数据到表格中) :填数据表
61、FIFO ( First in First out 先进先出 ) :先进先出
62、LIFO ( Last in First out 后进先出 ) :后进先出
63、TBL_FIND ( Table Find 表格查找 ) :表查找
64、BCD_I ( Binary Coded Decimal _I 二进制编码的十进制 ) :BCD 码转整数
65、I_BCD ( I_ Binary Coded DecimaL ) :整数转BCD码
66、B_I ( Bit to int ) :字节转整数
67、I_B ( int to bit ) :整数转字节
68、DI_I ( Double int to int ) :双整数转整数
69、I_DI ( int to double int ) :整数转双整数
70、ROUND ( Round 取整 ) : 实数转双整数
71、TRUNC ( Trunc 截取 ) :转换32位实数整数部分(舍去小数取整)
72、DI_I (double int to int ) :双整数转实数
73、ENCO ( Encode 编码) :编码
74、DECO ( Decode 译码) :译码
75、SEG ( Segment decoder分断译码器 ) : 七段显示译码器
76、ATH ( ASCII码 turn hex ) : ASCII码转16进制
77、HTA ( Hexadecimal to ascii) : 16进制转ASCII码
78、ITA ( // int to ascii) : 整数转ASCII码
79、DTA ( // double int to ascii ) : 双整转ASCII码
80、RTA ( // real to ascii) : 实数转ASCII码
81、ATCH (//attach ) : 中断连接
82、DTCH ( Depatch ) : 中断分离
83、HDEF ( High speed counter definition ) : 高速计数器定义
84、HSC ( High Speed Counter 高速计数器 ) :启动高速计数器
85、PLS ( Pulse 脉冲 ) :脉冲输出
86、READ_ RTC ( Read real time clock 读实时时钟 ) :读实时时钟87、SET_RTC ( Set real time clock ) : 写实时时钟88、XMT ( Transmitter ) : 自由发送
89、RCV ( Receive 接收 ) : 自由接收
90、NETR ( Net read 网络读 ) : 网络读
91、NETW ( Net write 网络写 ) : 网络写
92、GET_ADDR ( Get address 获取地址 ) : 获取口地址
93、SET_ADDR ( Set address 设置地址 ) : 设定口地址
94、PID ( Proportional Integral Differential 比例、积分、微分 ) :比例积分微分调节器。
来源:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!
如何获取 电气热门资料?
操作指引如下!
相关问答
三菱plc指令not是什么指令?
not指令就是取反~~not指令就是取反~~
欧姆龙PLC怎么输入ANDNOTTIM啊。就是定时器的常闭啊。但是指令是啥哦。梯形图怎么输入啊?
如果是编程器输入,就写入ANDNOTTIM100,然后按确定就可以了。如果是电脑写入,功能栏上有一个|/|这个的标记,点它加入到梯形图里,再写上T100就可以了。如...
三菱PLC如果没有程序有什么指示?
1.没有程序2.如果三菱PLC没有程序,通常会显示"NOPROGRAM"或者"PROGRAMNOTFOUND"的指示。这是因为PLC是一种可编程逻辑控...
西门子plc指令使用方法和说明?
西门子PLC指令是一种用于编程控制逻辑的指令,能够实现各种自动化控制功能。PLC指令的使用方法包括使用西门子编程软件进行编程、选择适当的指令、设置相应的参...
scl编程指令详解?
SCL(StructuredControlLanguage)是可编程控制器PLC中一种类似于高级程序语言的编程语言,它允许用户进行控制逻辑的编写以实现自动化控制。以下是SCL编程指令...
泰和安联动编程符号说明?
泰和安联动是一种流程自动化工具,类似于编程语言,其中包括一些编程符号。下面是泰和安联动编程符号的基本说明:1.开始符号:用来标记流程的开始。2.结束符...
PIC的标准编程语言分别是?
一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作...指令格...
西门子PLC中,取反指令NOT
[最佳回答]由于vo.o是常闭的,所以当能流到达NOT的时候,取反指令触发,常开M0.0就变成常闭M0.0当你不按M0.0,输出Q0.0也会得电,你按下则相反。如果你把V0.0换成...
plc电路并联块回路指令是?
如需要将多个电路块并联连接,应在每个并联电路块之后使用一个ORB指令,用这种方法编程时并联电路块的个数没有限制;也可将所有要并联的电路块依次写出,然后在...
三菱plc互锁指令?
三菱PLC中的互锁指令是指通过该指令可以实现不同程序段之间的互锁控制,保证程序的正确执行。常用的互锁指令有LD、AND、OR、NOT等,可以实现不同线圈之间的互锁...