[西门子] Codesys的ST语言的运算符介绍

[复制链接]
查看44598 | 回复0 | 2024-1-15 18:51:51 | 显示全部楼层 |阅读模式



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

2.介绍比较运算符的基本用法
3.介绍AND和OR 逻辑运算符的基本
4.介绍置位和复位运算符的用法

更多专题
Codesys学习资料大全

Codesys控制器关于CANopen总线的详细应用说明

Codesys V3.5的程序隐含检查功能

支持CoDeSys协议,触摸屏直接导入codesys变量标签进行数据监控
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_VAR1.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.比较运算符的基本用法



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.置位和复位运算符的用法



样例如下



等效于:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则