打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一看就懂丨详解九个ST语言运算符

运算符是ST语言构成的主要部分,运算符指定了如何赋值,四则运算,比较关系,逻辑运算等作出规定,多个运算符在同组执行时,按优先权依次执行。接下来介绍运算符,按优先级别介绍。

一:( ) 圆括弧式

优先权最高的运算符,在程序中只要希望优先执行,运算就可以使用圆括弧式。注意必须成对使用,不可以单独使用,否则编译不通过。

例:将D100与D102括起来,优先执行D100加D102

二:函数( )

函数的参数列表是第二优先权运算符,程序在同组运算中会执行函数括号内的运算,同样函数的特号也必须成对使用,不可以单独使用,否则编译不通过。函数可以系统自定义或自定义函数。

例:系统自带的传送函数(传送指令)

三:** 指数(幂)

ST语言的指数幂运算符为“ **  ”,为连续二个星符号,可指定底数进行幂运算,一般应用复杂的公式计算。注意幂运算一般为小数类型。

例:指定底数为3,指数为4,进行幂运算

四:NOT 布尔补数(位取反)

在ST语言中没有常开常闭概念,也就是说梯形图中的常开触点与常闭触点,在ST语言是没有的,如果想要实现类似功能可以使用位取反运算符NOT。在读取位状态之前将位状态取反后再读出。

例:将X0的状态,取反后赋值给Y0,同行等于X0的常闭驱动Y0

五:* (乘)  / (除)  MOD (余数)

梯形图中的乘除用指令MUL与DIV表示,如果是小数另外需要加上EMUL与EDIV。

乘法

在ST语言使用运算符 * 表示乘法,自动根据自定义的标签自动进行整数运算或小数运算,如果直接使用软元件名使用,默认为16位整数运算,如下图所示:

梯形图的乘法运算,会存在16位整数乘以16位整数结果是32位整数,在ST语言则不会,如上图所示,D2乘以K3,结果还是16位整数,然后存至D0中。

注意数据类似必须一致才能运算,否则编译不会通过,如下图所示就是失败例子,

直接使用D2就是使用16位整数,但E3.3为32位小数,数据类型不一致,所以编译不通过,输出窗口提示:*的类型不一致

小数乘法在GX Works2 比较麻烦,需要在全局标签中设置小数类型,然后在程序文中使用标签进行运算。

例:在全局标签定义三个小数变量,分别命名为小数1,小数2,小数3,地址分配为D100,D102,D104,然后在程序中将,小数1乘以小数2,结果赋值给小数3,步骤如下图所示

小数乘法在GX Works3 比较方便,不需要在全局标签中设置小数类型,可以直接在程序文中直接使用软元件,参考下图所示

在软元件名称加上冒号然后输入数据类型,具体定义如下图所示

五:* (乘)  / (除)  MOD (余数)

除法 MOD(余数)

在ST语言使用运算符 / 表示除法。在运算中,自动根据自定义的标签自动进行整数运算或小数运算,如果直接使用软元件名使用,默认为16位整数运算,如下图所示:

梯形图的除法运算,会存在16位整数除以16位整数结果是32位整数,其中低16位储存商数,高16位储存余数,在ST语言中是以运算符 / 求商数,使用运算符号MOD 进行求余数,求商数与余数是使用二个运算符进行运算。

例:求出D0除以D2的商数,结果储存至D4,求出D0除以及D2的商数,结果储存至D6

同样在四则运算中需要注意数据类型是否一致,否则编译不通过,

在程序文直接使用软元件,那么编译器默认为是16位整数,如果需要使用32位整数运算,需要在全局标签进行定义,然后在程序文使用标签进行运算。

例:在全局标签定义三个32位整数变量,分别命名为整数32位1,整数32位2,整数32位3,地址分配为D200,D202,D204,然后在程序中将,整数32位1乘以整数32位2,结果赋值给整数32位3,步骤如下图所示

32位整数除法在GX Works3 比较方便,不需要在全局标签中设置小数类型,可以直接在程序文中直接使用软元件,参考下图所示

在软元件名称加上冒号然后输入数据类型,具体定义如下图所示

在ST语言中四则运算中的乘法,除法与求余数的优先权是同等级,理论上是不分先后执行,实际上在左边优先执行,右边后执行。

例:在下图所示中,D2先乘以D4,然后再除于D6,最后进行赋值。

六:+ (加)  - (减)

在梯形图中的加法与减法使用ADD(加法)与SUB(减法)表示,如果是小数则为EADD,ESUB

在ST语言使用运算符 + 代表加法,运算符 – 代表减法。

例:将D0加上D2值再减去D4,结果储存致D6中。

理论上加法与减法的优先权是同等级,也就是说执行运算不分先后,实际是在左边执行,右边后执行,如上图所示,D0先加上D2,然后再减去D4,这是顺序因素,不是优先权运算原则。

默认使用软元件就是使用16位整数,如果想要使用32位整数或小数参考上图所示方法

七:<,>,<=,>=  (比较)

在比较关系符,分别有小于“<”关系,大于“>”关系,小于或等于“<=”关系,大于或等于“>=”关系。

比较关系符为常用运算符,熟悉掌握关系符应用对ST语言编写很大帮助!

如:关系符运符可以用在控制语句中使用,如IF判断。          

如:关系符运符也可以作为执行函数条件使用,如果传送指令执行条件

如:关系符运符可以将比较结果进行赋值输出

如:可以直接将四则运算的结果进行判断,然后再输出

注意:比较结果不能进行四则运算

七:= , <> (等式/不等式)

等式“=”与不等式“<>”的优先权低于比较关系,等式与不等式是同级别,不分先后。

使用方法参考比较关系例子,这里就不在介绍。

注意:等式运算符与赋值运算符容易混淆,等式“=”是用来比较使用,赋值是给赋值“:=”使用

八:AND , &  (逻辑与 )

逻辑关系,在梯形图中多个位的逻辑关系,可以很方便观察到各个位的状态,特别是在调试程序时,可以快速排查问题

在ST语言中的逻辑与是使用AND或 & 运算符表示,上图与下图程序作用完全一样。

可以看出,梯形图的逻辑关系比较直观,而ST语言就稍微差点。所以在逻辑控制方面使用梯形图编程比较有优势,而四则运算方面使用ST语言比较方便

注意:在梯形图有专用的常闭符号,而ST语言没有专用符号,如果在ST语言使用常闭信号进行逻辑运算,可以使用NOT 取反运算符,如图所示

八:XOR   ( 逻辑异或 )

逻辑异或关系,用来表示二个位的关系,梯形图中的表达二个位为异或关系,使用四个触点,如下图所示:

ST语言使用XOR运算符表示,则可以实现如上图所示作用

异或运算符的优先权低于逻辑与运算运算符,如下图

九:OR   ( 逻辑或 )

逻辑或关系,用来表示二个位为或关系,梯形图中的表达二个位为或关系如下图所示:

ST语言使用OR运算符表示,则可以实现如上图所示作用

或运算符的优先权为最低,是所有运算符中最低一个

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
这样高效学PLC编程,掌握ST语言运算符号编写控制程序无压力
编程中国
小学四年级数学下册复习教学知识点归纳总结,期末测试试题习题大全
小学三年级数学知识点归纳
手把手教你学Python之运算符
零碎的小知识1
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服