02 CODESYS应用基础之ST语言语法基础 您所在的位置:网站首页 for循环框架 02 CODESYS应用基础之ST语言语法基础

02 CODESYS应用基础之ST语言语法基础

2023-04-02 21:08| 来源: 网络整理| 查看: 265

一、ST语言简介:参考了百度文库https://baike.baidu.com/item/ST/18737108?fr=aladdin

       结构化文本/结构式文件编程语言(英语:Structured text)也称为ST语言,是为可编程逻辑控制器(PLC)设计的编程语言,是相关的IEC 61131-3标准中支援几种语言之一。

        ST语言与我们传统所熟知的梯形图或顺序功能图有比较大的差别,学习过Linux系统下shell脚本编程或python的同事们应该会发现,ST语言的编程风格更像是一种可执行脚本。ST语言提供了其他脚本语言一样的功能支持,如IF...ELSE、CASE、WHILE、FOR等条件判断与循环执行语句,下面我将逐一为大家举例介绍基本的编程规则,如有遗漏或错误,还请大家批评指正,谢谢!

//

二、基本语法规则的介绍:

注意:

       在ST语言中,赋值符号不再是等号(=),等于号被用作条件判断;ST语言用称为海象符的符号(:=)来替代等号,其规则也是将符号右边的值赋值给左边。

       使用ST语言,加、减、乘、除算法运算将不再使用运算块,而是直接使用符号+、-、*、/来代替,计算顺序从左到右,其中,*与/的计算优先级高于+、-。

1、条件判断语句(IF....END IF)

      此语法结构用来判断条件,并在条件被满足的情况下,执行结构内的代码;基本的语法格式为:

IF 判断的条件要求 THEN .... .... //这里面是满足条件时,所需要执行的语句// .... END_IF; 也可以是: IF 判断的条件要求 THEN ... ... ... ELSE: //ELSE后面的是,当条件不满足时,所执行的语句// .... .... .... EMD_IF; IF 判断的条件要求 THEN ... ... ... ELSIF 判断的另一个条件要求 THEN //这里当前面的IF所对应的条件无法满足时,会执行到这里来判断这里的条件// ... ... ... END_IF; //条件判断语句支持嵌套,但应该始终坚持一个原则:IF和END IF必须成对出现!!// IF 判断的条件要求 THEN ..... ..... IF 判断的条件 THEN //这个就是嵌套在内部的条件判断语句// ..... ..... END_IF; ..... ..... END_IF; //判断的条件可以是常数或变量,判断是否相等(aaa=bbb)、判断是否大于(aaa>bbb)、判断是否小于(aaa : 这个结构必须存在且完整 2 JMP语句只负责将程序的执行位置跳转到对应的标识符的位置,并不会自动跳回!! 3 如果有替代方案,建议轻易不要使用JMP这个跳转结构!!!*/ /*===================================================================*/

      举个例子:

 ///

三、ST语言调用功能块与函数的基本语法:

       在CODESYS中,编写函数时往往需要在POU里调用一些程序块;CODESYS提供的功能封装格式有FB(功能块)、FUN(函数)和POU。下面,我将逐一介绍这三种功能封装在ST语言编程下如何调用:

       1、功能块FB的调用:

            首先,功能块需要在CODESYS中被实例化,也就是要定义一个变量,其变量类型就是目标功能块,这一步操作跟使用哪种语言编程无关!如图:

           

            接下来,在POU主程序里,使用ST语言通过实例化对象调用功能块。如图:

 

 

 

        2、函数(FUN)的调用:

             CODESYS提供的函数形式封装的程序块,与功能块最大的区别是:函数有返回值且函数可以不需要实例化,直接使用即可。如下图:

           

       

         3、对工程块POU的调用:

               在有些情况下,我们需要通过调用另外一个POU来实现程序的嵌套或跳转。CODESYS提供的POU程序封装在被其他POU或其他程序封装调用时,和功能块类似,但无需实例化。如图:

              

//

 

    总结:最后我想说,ST语言编程最终需要大家通过实践来掌握更多细节,通过看别人的资料始终时无法心领神会的!!!加油吧,别老是找捷径,人生本来就很短,你还一直想抄近道?

 

附加说明:本人承接Linux系统的嵌入式软件开发项目,CODESYS的runntime组件开发。欢迎加微:wxk101633(备注:委托开发)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有