MCGS脚本程序 下载本文

比较运算符 ? > 大于 ? >= 大于等于

? = 等于(注意,字符串比较需要使用字符串函数!StrCmp, 不能直接使用等于运算符) ? <= 小于等于 ? < 小于 ? <> 不等于 运算符优先级

按照优先级从高到低的顺序,各个运算符排列如下: ? ( ) ? ∧

? *,/ ,\,Mod ? + ,—

? < , > ,<= ,>=,= ,<> ? NOT

? AND,OR,XOR 基本辅助函数

作为脚本语言的一部分,MCGS提供了基本辅助函数,这些函数主要不是作为组态软件的功能提供的,而是为了完成脚本语言的功能提供的。这些函数包括以下几类:位操作函数,数学函数,字符串函数,时间函数。

位操作函数提供了对整型数据中的位进行操作的功能。可以用开关型变量来提供这里的整型数据。在脚本程序编辑器里,位操作函数都列在数学函数中,包括按位与(!BitAnd),按位或(!BitOr),按位异或(!BitXor),按位取反(!BitNot),清除数据中的某一位或把某一位置0(!BitClear),设置数据中的某一位或把某一位置1(!BitSet),检查数据中某一位是否为1(!BitTest),左移和右移(!BitLShift,!BitRShift)。

数学函数提供了常见的数学操作,包括开方,随机数生成以及三角函数等。 字符串函数提供了与字符串相关的操作,包括字符串比较,截取,搜索以及格式化等。

时间函数提供了和时间计算相关的函数。时间可以表达为一个字符串的形式,但是,为了方便进行时间计算,在MCGS中,使用了一种内部格式来保存时间的值,这种内部格式的时间值可以保存在一个开关型变量中,同时,可以使用函数!TimeStr2I和!TimeI2Str来完成字符串形式时间量和内部格式形式时间量

的转换,如:A1 = !TimeStr2I(“2001-3-2 12:23:23”),这里A1是一个开关型数据对象,获得了一个内部形式的时间量,而再用 InputETime

= !TimeI2Str(A1,“%Y-%m-%d %H:%M:%S”)又可以把保存在A1中的内部形式的时间量转换为字符串形式。当时间转换为内部格式后,就可以进行时间的运算。运算完毕后,再转换为字符串形式的时间,以便输出和使用。

具体函数的使用方法,可以参照《MCGS参考手册》中的说明。 功能函数

为了提供辅助的系统功能,MCGS提供了功能函数。功能函数主要包括以下几类:运行环境函数,数据对象函数,系统函数,用户登录函数,定时器操作,文件操作,ODBC函数,配方操作函数等。

运行环境函数和数据对象函数主要是提供了对MCGS内部各个对象操作的方法。

系统函数提供了系统功能,包括播放声音,启动程序,发出按键信息等等。 用户登录函数提供了用户登录和管理的功能。包括打开登录对话框,打开用户管理对话框等等。

定时器提供了MCGS内建定时器的操作。包括对内建时钟的启动,停止,复位,时间读取等操作。

文件操作提供了对文件的操作,包括删除、拷贝文件,把文件拆开、合并,寻找文件,和循环语句一起,可以遍历文件,在文件中进行读写操作。对CSV(逗号分割的文本文件)进行读写操作等等。

ODBC数据库函数提供了对ODBC数据源访问的机制,具体的使用方法可以参看”访问ODBC数据源”一章。配方操作函数提供了访问配方数据的机制。这两类函数使用了类似的编程机制。首先,为了访问一个ODBC数据源或配方数据,需要建立一个有名字的连接,这个连接的名字在创建这个连接时指定,在进行数据操作,以及关闭连接时,需要指定这个名字。其次,在连接中,规定了一个当前行的概念,当前行使用捆绑函数绑定到一组变量上,在连接中使用位置移动函数上下移动当前行到需要的位置上,就可以把需要位置上的数据从绑定的变量中读出来。通过添加函数 (AddNew),可以把当前绑定变量中的值作为一组新的数据加入到连接中。通过删除函数(Delete),可以把当前行删除。通过编辑函数,可以按照绑定变量中的值来修改连接中当前行的值。通过查找函数,可以把当前行定位到符合要求的位置上,如序号为10,或者操作员为李明,等等。

具体的函数说明,可以参看《MCGS参考手册》。

脚本程序基本语句

由于MCGS脚本程序是为了实现某些多分支流程的控制及操作处理,因此包括了几种最简单的语句:赋值语句、条件语句、退出语句和注释语句,同时,为了提供一些高级的循环和遍历功能,还提供了循环语句。所有的脚本程序都可由这五种语句组成,当需要在一个程序行中包含多条语句时,各条语句之间须用“:”分开,程序行也可以是没有任何语句的空行。大多数情况下,一个程序行只包含一条语句,赋值程序行中根据需要可在一行上放置多条语句。 赋值语句

赋值语句的形式为:数据对象 = 表达式。赋值语句用赋值号(“=”号)来表示,它具体的含义是:把“=”右边表达式的运算值赋给左边的数据对象。赋值号左边必须是能够读写的数据对象,如:开关型数据、数值型数据以及能进行写操作的内部数据对象,而组对象、事件型数据对象、只读的内部数据对象、系统函数以及常量,均不能出现在赋值号的左边,因为不能对这些对象进行写操作。

赋值号的右边为一表达式,表达式的类型必须与左边数据对象值的类型相符合,否则系统会提示“赋值语句类型不匹配”的错误信息。 条件语句

条件语句有如下三种形式:

If 〖表达式〗 Then 〖赋值语句或退出语句〗

If 〖表达式〗 Then 〖语句〗 EndIf

If 〖表达式〗Then 〖语句〗 Else 〖语句〗 EndIf

条件语句中的四个关键字“If”、“Then”、“Else”、“Endif”不分大小写。如拼写不正确,检查程序会提示出错信息。

条件语句允许多级嵌套,即条件语句中可以包含新的条件语句,MCGS脚本程序的条件语句最多可以有8级嵌套,为编制多分支流程的控制程序提供了可能。

“IF”语句的表达式一般为逻辑表达式,也可以是值为数值型的表达式,当

表达式的值为非0时,条件成立,执行“Then”后的语句,否则,条件不成立,将不执行该条件块中包含的语句,开始执行该条件块后面的语句。

值为字符型的表达式不能作为“IF”语句中的表达式。 循环语句

循环语句为While和EndWhile,其结构为: While 〖条件表达式〗 ?. EndWhile

当条件表达式成立时(非零),循环执行While和EndWhile之间的语句。直到条件表达式不成立(为零),退出。 退出语句

退出语句为“Exit”,用于中断脚本程序的运行,停止执行其后面的语句。一般在条件语句中使用退出语句,以便在某种条件下,停止并退出脚本程序的执行。 注释语句

以单引号“ ’ ”开头的语句称为注释语句,注释语句在脚本程序中只起到注释说明的作用,实际运行时,系统不对注释语句作任何处理。

脚本程序的查错和运行

脚本程序编制完成后,系统首先对程序代码进行检查,以确认脚本程序的编写是否正确。检查过程中,如果发现脚本程序有错误,则会返回相应的信息,以提示可能的出错原因,帮助用户查找和排除错误。常见的提示信息有:

? 组态设置正确,没有错误 ? 未知变量 ? 未知表达式 ? 未知的字符型变量 ? 未知的操作符 ? 未知函数 ? 函数参数不足

? 括号不配对 ? IF语句缺少ENDIF ? IF 语句缺少THEN ? ELSE 语句缺少对应的IF语

? ENDIF 缺少对应的 IF 语句 ? 未知的语法错误

根据系统提供的错误信息,作出相应的改正,系统检查通过,就可以在运行环境中运行,达到简化组态过程、优化控制流程的目的。