您好,欢迎访问泰安宏盛自动化科技有限公司!
20年专注工控自动化研发制造 系统设计\制作\安装一条龙服务
全国咨询热线:18605386049
当前位置: 首页 > 技术资料 > 程序案例

【PLC高级编程语言之ST文本】4.ST语言的运算符介绍

作者:小编 时间:2022-12-11 17:14:04 点击:

1.介绍ST文本中的赋值运算符和算术运算符
2.介绍比较运算符的基本用法
3.介绍AND和OR 逻辑运算符的基本
4.介绍置位和复位运算符的用法

1.ST文本中的赋值运算符和算术运算符

1.1 赋值运算符

1.1.1赋值运算符的讲解


本小结为大家讲解ST语法中的赋值语句。什么是赋值语句呢,就是指把一个“数值”或者“变量中的内容”转移给另一个变量。

以下是3种编程语言的赋值语句,放在下面给大家做个对比

ST语言梯形图C语言
:=MOV\DMOV\DEMOV=

ST文本中使用的“:=”作为赋值运算符,注意所有符号 都是英文状态下的(半角符号)

1.1.2赋值运算符的应用

ST语言的赋值语句 使用的是“:=”.下面我们来看看使用案例

vi_NumOfPeople := 100;
vi_人数 := 100;

上面两句话的意思,其实就是将 100这个数值赋值给我们 变量中。程序运行之后,“vi_NumOfPeople”这个变量中的数值为 100,而这个变量“vi_人数”中的数值也是100.

vb_StopButton := TRUE;
vb_启动按钮 := FALSE;

赋值语句顺序是 "从后向前",也就是把后面变量里的 值,赋值给前面的变量。这个和数学上的等于是不一样的哈,大家注意。

再强调一遍,ST语言中“:=”赋值语句,是将 后面变量里的值,赋值给前面的变量的。顺序是“从后向前”。

1.1.3 不同数据类型赋值需要进行强制类型转换

如果不强制类型转换,提示效果如下

使用强制类型转换后:

强制类型转换的含义就是,将等式右边的数据类型和左边的数据类型统一。

常用的数据类型转换格式:当前数据类型_TO_目标数据类型(变量);
REAL_TO_DINT(变量B);//把 浮点型变量B 强制转换成 DINT型
DINT_TO_REAL(变量C);//把 32位整型数据 强制转换成 REAL浮点型
INT_TO_DINT(变量D);//把16位整型数据强制转换成32位整型数据
INT_TO_REAL(变量E);//把16位整型变量强制转换成浮点型

1.2 算术运算符

算术运算符就是我们数学上的加减乘除,这里呢拿出来简单讲一下。会小学数学,就肯定会PLC编程中的加减乘除!

1.2.1加法 +

在ST语法中,加法就是"+"数学上的加法符号。假如已知变量:
vi_VarA := 10;
vi_VarB := 90;
则:vi_Num := vi_VarA + vi_VarB;
经过运算,vi_Num输出值为 100;

1.2.2减法 -

在ST语法中,减法就是“-”数学上的减号。假如已知变量:
vi_VarA := 10;
vi_VarB := 90;
则:vi_Num := vi_VarA - vi_VarB;
经过运算,vi_Num输出值为 -80;

1.2.3 乘法 *

在ST语法中,乘法就是“”星号。假如已知变量:
//-----乘法的运用----------------------------
vf_圆周率        := 3.1415926;
vi_半径        := 8;        //----8mm
vf_圆面积        := vf_圆周率 
INT_TO_REAL(vi_半径 * vi_半径);
运算结果就是半径为8mm的圆面积。

1.2.4 除法 /

ST语法中的除法就是"/"
//-----已知 vf_圆周长 := 15mm,求直径.--------
vf_圆周长        := 15;
vf_直径        := vf_圆周长 / vf_圆周率;

1.2.5 变量区代码:

PROGRAM PLC_PRG
VAR
vi_VarA        : INT;
vi_VarB        : INT;
vi_Var1        : INT;
vi_Var2        : INT;
vf_圆周率        : REAL;
vi_半径        : INT;        //mm
vf_圆面积        : REAL;        //mm^2
vf_圆周长        : REAL; //mm
vf_直径: REAL;
END_VAR

1.2.6 程序段代码:

vi_VarA        := 10;
vi_VarB        := 90;

//-----加法指令的运用,运算结果100-----------
vi_Var1        := vi_VarA + vi_VarB;

//-----减法指令的运用,运算结果-80-----------
vi_Var2        := vi_VarA - vi_VarB;

//-----乘法的运用----------------------------
vf_圆周率        := 3.1415926;
vi_半径        := 8;        //----8mm

vf_圆面积        := vf_圆周率 * INT_TO_REAL(vi_半径 * vi_半径);

//-----除法的应用----------------------------
//-----已知 vf_圆周长 := 15mm,求直径.--------
vf_圆周长        := 15;
vf_直径        := vf_圆周长 / vf_圆周率;

程序运行结果

好了,大家应该会ST语法中的加减乘除了吧,自己练练哈!

请用程序写出下面的练习题:
1.科幻书每套有3本,每套12元,漫画书每本8元。买一本科幻书和一本漫画书共要多少元?  
2.面包:每个3元,饼干:每包4元,饮料:每瓶6元;小刚:买4个面包和1瓶饮料,应付多少元?小强有50元,买5包饼干,找回多少元?

2.比较运算符的基本用法

102640cijeboezd1nv1oyd.png

ST中关系运算符实际上就是我们数学中常用的“大于”、“等于”、“小于”、“不等于”。关系运算符常一般有2种常用用法:
用法1:配合IF语句,作为IF语句的判断条件使用
用法2:在赋值语句的右侧,作为一个表达式,返回TRUE or FALSE给赋值语句的左侧。

(咱们大家在自己以后项目中,变量命名尽量不要太相似,不然不容易辨认。这里因为是测试程序,我为了方便就起相似的名字了)

2.1大于 >

请看以下代码:
vi_Num1 := 200;
vi_Num2 := 1000;
则运行:vb_Test1 := (vi_Num1 > vi_Num2);
输出结果:vb_Test实际为 false,因为vi_Num1(200)并不大于vi_Num2(1000);运行结果为假。
继续看下一段代码:
vi_Num3 := 888;
vi_Num4 := 666;
则运行:vb_Test2 := (vi_Num3 > vi_Num4);
运行结果:vb_Test实际输出结果为true,因为888确实是大于666。所以运行结果为真!

2.2小于 <

vi_Num5 := 888;
vi_Num6 := 666;
则运行:vb_Test3 := (vi_Num5 < vi_Num6);
则vb_Test3运算结果为false,因为888不小于666.所以运算结果为假
vi_Num7 := 233;
vi_Num8 := 2333;
则运行vb_Test4 := (vi_Num7 < vi_Num8);
则vb_Test4运行结果为true,因为233<2333,所以运算结果为真。

2.3 等于 =

同样的道理,当比较的两个变量相等的时候,运行结果就为true,否则运行结果就为false。
vi_Num9 := 233;
vi_Num10 := 233;
vb_Test5 := (vi_Num9 = vi_Num10);
vb_Test5的运行结果为true。当两个变量内的值不相等的时候,运行结果就为false了。。

3.4 不等于 <>

这个符号是不等于的意思,如果两个值相等,则输出结果为false为假。如果两个数值不相等,则输出结果为true,运行结果为真。
vi_Num11 := 233;
vi_Num12 := 233;
vb_Test6 := (vi_Num11 <> vi_Num12);
vb_Test6运行结果为false,因为vi_Num11和vi_Num12这两个变量存储的数值相等,所以vb_Test6运行结果为假。

3.5 大于等于 >=

C := (A >= B);
当A中保存的数值大于等于B数值的时候,则C输出TRUE;否则C输出FALSE.

2.6 小于等于 < =

C := (A < = B);
当A数值小于等于B数值的时候,则C输出结果为true,否则输出结果为false。

3.AND和OR逻辑运算符的基本用法

逻辑运算符主要有两种使用方式:
1.与IF语句配合使用
2.作为赋值语句的 右边部分表达式的连接符如:
变量A := (变量B > 10) AND (变量C < 0)
变量A的结果就是赋值语句右侧的表达值。

4.置位和复位运算符的用法

样例如下

等效于:


QQ在线咨询
联系电话
17658151177
售后服务
17658151177