MCGS脚本程序 (2)
- 格式:doc
- 大小:164.00 KB
- 文档页数:9
MCGS工控组态软件使用说明书一、概述il•算机技术和网络技术的飞速发展,为工业自动化开辟了广阔的发展空间,用户可以方便快捷地组建优质高效的监控系统,并且通过采用远程监控及诊断、双机热备等先进技术,使系统更加安全可靠,在这方而,MCGS工控组态软件将为您提供强有力的软件支持。
MCGS工控组态软件是一套32位工控组态软件,可稳泄运行于Windows95/98/NT操作系统,集动画显示、流程控制、数据采集、设备控制与输岀、网络数据传输、双机热备、工程报表、数据与曲线等诸多强大功能于一身,并支持国内外众多数据采集与输出设备。
二、软件组成(-)按使用环境分,MCGS组态软件由“MCGS组态环境”和“MCGS运行环境”两个系统组成。
两部分互相独立,又紧密相关,分述如下:1.MCGS组态环境:该环境是生成用户应用系统的工作环境,用户在MCGS组态环境中完成动画设计、设备连接、编写控制流程、编制工程打印报表等全部组态工作后,生成扩展名为.mcg的工程文件,又称为组态结果数据库,英与MCGS运行环境一起,构成了用户应用系统,统称为“工程”。
2.MCGS运行环境:该环境是用户应用系统的运行环境,在运行环境中完成对工程的控制工作。
(二)按组成要素分,MCGS工程由主控窗口、设备窗口、用户窗口、实时数据库和运行策略五部分构成:1.主控窗口:是工程的主窗口或主框架。
在主控窗口中可以放置一个设备窗口和多个用户窗口,负责调度和管理这些窗口的打开或关闭。
主要的组态操作包括:左义工程的名称,编制工程菜单, 设计封而图形,确定自动启动的窗口,设左动画刷新周期,指左数据库存盘文件名称及存盘时间等。
2.设备窗口:是连接和驱动外部设备的工作环境。
在本窗口内配巻数据采集与控制输出设备,注册设备驱动程序,定义连接与驱动设备用的数据变疑。
3.用户窗口:本窗口主要用于设宜工程中人机交互的界而,诸如:生成各种动画显示画而、报警输出、数据与曲线图表等。
运行环境操作函数!ChangeLoopStgy(StgyName,n)函数意义:改变循环策略的循环时间。
返回值:数值型。
返回值=0:调用正常,<>0:调用不正常。
参数:StgyName,策略名;n,数值型,以毫秒数表示循环策略的循环时间。
实例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为5秒。
!CloseAllWindow(WndName)函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,关闭其他窗口。
如果”WndName”为空串,则关闭所有窗口。
返回值:数值型。
返回值:=0:调用正常。
<>0:调用不正常。
参数:WndName,用户窗口名,字符型。
实例:!CloseAllWindow("工况图"),关闭除了用户窗口“工况图”以外的其他窗口,若“工况图”窗口没有打开,则在关闭其他窗口的同时打开该窗口;!CloseAllWindow(""),关闭所有窗口。
!CloseAllSubWnd()函数意义:关闭窗口中的所有子窗口。
返回值:浮点型,=0为操作。
实例:!CloseAllSubWnd(),关闭当前窗口的所有子窗口。
!CloseSubWnd(WndName)函数意义:关闭子窗口。
返回值:浮点型,=1为操作成功,<>1为操作失败。
参数值:WndName:子窗口的名字。
实例:!CloseSubWnd(窗口1),关闭子窗口“窗口1”。
!EnableStgy(StgyName,n)函数意义:打开或关闭某个策略,如报警策略或循环策略等。
返回值:数值型。
返回值=0:调用正常,<>0:调用不正常。
参数:SstgyName,策略名;n,数值型,为1时表示打开此策略,为0时表示关闭此策略。
实例:!EnableStgy(报警策略,1),打开报警策略;!EnableStgy(报警策略,0),关闭报警策略,使报警策略无效。
MCGS:用户权限设置任务内容:用户登录分管理员和操作员登录,管理员权限能够进入调试和配料界面以及用户管理和修改密码;操作员权限只能进入配料界面和修改密码。
1、首先画出如上图界面2、添加用户:工具---用户权限管理---新增用户(1)用户名称:管理员1 密码:000 管理员组打√确认‘用户描述可以不填写(2)用户名称:管理员2 密码:111 管理员组打√确认(3)用户名称:操作员1 密码:000 管理员组不打√确认(4)用户名称:操作员2 密码:111 管理员组不打√确认全部添加完成后退出3、写脚本程序(1)用户登录---按下脚本---!LogOn( )(2)用户退出---按下脚本---!LogOff( )(3)用户管理---按下脚本---!Editusers( )(4)修改密码---按下脚本---!ChangePassword( )(5)调试---按下脚本if !strcomp(用户名,"管理员1")=0 and !strcomp(密码,"000") then用户窗口.调试.Open( )elseendifif !strcomp(用户名,"管理员2")=0 and !strcomp(密码,"111") then用户窗口.调试.Open( )elseendif‘用户名和密码按提示设置成字符型变量即可。
(6)配料--按下脚本if !strcomp(用户名,"管理员1")=0 and !strcomp(密码,"000") then 用户窗口.配料.Open( )elseendifif !strcomp(用户名,"管理员2")=0 and !strcomp(密码,"111") then 用户窗口.配料.Open( )elseendifif !strcomp(用户名,"操作员1")=0 and !strcomp(密码,"000") then 用户窗口.配料.Open( )elseendifif !strcomp(用户名,"操作员2")=0 and !strcomp(密码,"111") then 用户窗口.配料.Open( )elseEndif4、运行策略双击循环策略进入策略组态:右击如图图标---新增策略行如图右击选策略工具箱如图在弹出的对话框中,左键按住脚本程序拖动到如上图右上角的方框中。
脚本驱动V2.0使用指导手册版本号:0.1第一章新脚本驱动说明一.脚本驱动适用范围1.脚本驱动适用的版本A. MCGS嵌入式组态软件;版本号:6.5(01.0010)注:此版本以上为新版本,以下为旧版本B. MCGS通用版的定制版组态软件C. MCGS网络版的定制版组态软件2.脚本驱动适用的设备A. 独立板卡设备B. 串口通信设备3.脚本驱动适用的协议二.脚本驱动兼容性1.旧版本脚本驱动兼容新版本组态软件2.新版本脚本驱动不兼容旧版本的组态软件,旧版本组态软件无法识别新版本脚本驱动三.脚本驱动新增内容1.脚本驱动新增功能新增加生成向导功能,具体参照第三章内容。
2.脚本驱动新增函数(1)数据解析函数1.!SvrGetByteFromByteArr(ByRef ByteArr, start, ByRef n, Flag)2.!SvrGetShortFromByteArr(ByRef ByteArr, start, ByRef n, Flag)3.!SvrGetIntFromByteArr(ByRef ByteArr, start, ByRef n, Flag)4.!SvrGetSingleFromByteArr(ByRef ByteArr, start, ByRef x, Flag)5.!SvrGetByteFromHexStr(str, ByRef n, Flag)6.!SvrGetShortFormHexStr(str, ByRef n, Flag)7.!SvrGetIntFromHexStr(str, ByRef n, Flag)8.!SvrGetSingleFromHexStr(str, ByRef x, Flag)(2)数据校验函数1.!SvrByteArraySum(ByRef ByteArr, start, length)2.!SvrStrSum(str, Flag)3.!SvrByteArrayXOR(ByRef ByteArr, start, length)4.!SvrStrXOR(str, Flag)5.!SvrStrModbusCRC(ByRef ByteArr, start, length)6.!SvrStrModbusLRC(str, start, length)7.!OpenLog()8.!CloseLog()(3)字节数组操作函数1.!HStr2HByre(str, arByte)2.!HByte2HStr(arByte, str)第二章基础概念讲解一.通讯协议1.ACSII码通讯协议(字符型协议)通讯信息按照ASCII码方式解析得到的参数信息称为ASCII码通讯。
MCGS组态软件教程
MCGS(Machine Control Graphical System)是一款用于工业自动化领域的组态软件,通过它可以进行机器设备的监控和控制。
本文将为您详细介绍MCGS的使用教程。
第二步,新建一个项目。
在MCGS软件中,一个项目就是一个设备的组态界面。
点击软件菜单栏上的“文件”选项,然后选择“新建”来创建一个新的项目。
在弹出的对话框中,可以设置项目的名称和存储路径。
第三步,创建设备界面。
在项目中,您需要创建一个设备界面来显示和控制设备的状态。
在软件界面的左侧有一个工具箱,里面有多种控件可以使用。
选择适合您需求的控件,并将其拖放到设备界面上。
可以调整控件的大小和位置,以满足您的需求。
可以使用文本框、按钮、图表等控件来显示和控制设备。
第四步,配置设备参数。
在设备界面上,点击右键选择“属性”来配置控件的参数。
可以设置控件的位置、大小、颜色等属性。
还可以为控件添加事件,例如点击按钮时执行一些操作。
在控件属性中,还可以配置与设备通信的参数,例如设备的IP地址、端口号等。
水箱液位控制系统演示工程操作步骤一、创建新工程1、双击桌面中的图标,进入MCGS组态环境工作台,如图1所示。
2、点击图1中的“新建窗口”,出现“窗口0”图标。
3、点击“窗口0”鼠标右键,选择“属性”,按照图2进行设置,则窗口名称变为“水箱液位控制系统”,如图2右图所示。
图2二、画面设计1、在“水箱液位控制”窗口点击菜单中的【工具箱】图标,单击插入元件按钮,打开【对象元件管理】中的【储藏罐】,选择罐17,点击确定。
如图3所示,则所选中的罐出现在桌面的左上角,用鼠标改变其大小及位置。
图32、按照同样的方法,【储藏罐】选中2个罐(罐17,罐53),【阀】选中2个阀(阀58,阀44),1个泵(泵40)。
按图4放置。
图43、选中工具箱中的【流动快】按钮,单击鼠标并移动光标放置流动快。
如图5所示设置流动快。
图54、选中流动块,点击鼠标右键【属性】,按图6设置属性。
图65、添加文字,选中工具箱中的【标签】按钮,鼠标的光标变为“十字”形,在窗口任意位置拖曳鼠标,拉出一个一定大小的矩形。
建立矩形框后,鼠标在其内闪烁,可直接输入“水箱液位控制系统演示工程”文字。
选中文字,鼠标右键【属性】,按图7设置。
图76、点击菜单中的,可变更字体大小。
按图5添加其他文字。
三、MCGS数据对象设置2、单击工作台【实时数据库】按钮,进入【实时数据库】窗口。
单击窗口右边的【新增对象】按钮,在窗口的数据对象列表中,就会增加新的数据对象。
双击选中对象,按图8设置数据对象属性。
图83、按照图9设置其他数据对象属性。
图94、双击【液位组】,存盘属性按图10设置,组对象成员按图11设置。
图10图11四、动画连接(一)水罐动画连接1、在【用户窗口】中,双击【水箱液位控制】,进入窗口后双击水罐1,弹出【单元属性设置】窗口,如图12所示。
图122、单击【动画连接】,选中折线,则出现。
单击按钮进入【动画组态属性设置】窗口,各项设置如图13所示,单击确认后,水罐1的对象变量连接就成功了。
12.2.3 脚本程序的运算符
算术运算符
∧乘方、* 乘法、/除法、\整除、+加法、—减法、Mod 取模运算
逻辑运算符
逻辑与、NOT 逻辑非、OR 逻辑或、XOR 逻辑异或
比较运算符
>大于、>=大于等于、=等于、<=小于等于、<小于、<>不等于
运算符优先级
按照优先级从高到低的顺序,各个运算符排列如下:
、“∧”、“ *,/,\,Mod 、+,—” 、“<, >,<=,>=,=,<>”、“NOT ”、“AND,OR,XOR”。
12.3.2 脚本程序的条件语句
条件语句有如下三种形式:
〖表达式〗Then 〖赋值语句或退出语句〗
〖表达式〗Then
〖语句〗
〖表达式〗Then
〖语句〗
〖语句〗
条件语句中的四个关键字“If”、“Then”、“Else”、“End if”不分大小写。
如拼写不正确,检查程序会提示出错信息。
14.MCGS 组态软件脚本程序有没有延时指令
!Sleep(mTime)
函数意义:在脚本程序中等待mTime毫秒,然后执行下条语句
实例:!Sleep(10),延时10毫秒
18.请问MCGS断电后该如何保存窗口界面设置的参数,并且重新上电后可以自动对应读取?
各位工友,你们好!请问我用MCGS组态了一个参数设置界面,为下位机PL C提供参数,有好多开关量和数值量,但是如果MCGS断电后该如何保存这些参数,并且再次上电时能够自动对应的读取这些参数呢?求教方法,谢谢!因为工程小区有时会停电
!SaveDataInit( )
!FlushDataInitValueToDisk( )
用这两个函数。
mc gs脚本程序主要的语句有
mcgs组态软件脚本编程
本人刚接触MCGS组态软件,从前编程语言学的不好所以脚本程序搞的也不太明白,现有一个问题求教,望高手不吝赐教!
有关于IF中含有复合型赋值语句的程序。
“if 条件 then 赋值语句”,当条件为真,执行then 后面的语句;当条件为假,跳过if 语句。
在MCGS教程中,有一节是“小人推车”,在脚本程序中需要编辑轮子的程序。
按脚本编辑,做了如下实验:
1、wheel=[0,600]
if wheel>600 then wheel=wheel-600 (条件为假,不执行then 之后的语句,走完600停止,这个我知道)
if wheel>500 then wheel=wheel-500
if wheel>500 then wheel=wheel-600
if wheel>500 then wheel=wheel-700
2、wheel=[-400,600]
if wheel>500 then wheel=wheel-700
if wheel>400 then wheel=wheel-700
这些结果都不一样,我确实很想知道这类结构的的语句是怎样执行的?哪位大侠能从语法的角度给我讲解下,小弟无胜感激!!!。
MCGS组态软件教程第一章:MCGS软件介绍(200字)1.1MCGS软件概述MCGS是一种基于Windows操作系统的集成开发环境,用于图形化创建和编写人机界面。
它提供了丰富的图形组件和脚本编程功能,可以实现各种工业自动化任务。
1.2MCGS软件特点MCGS软件具有友好的操作界面、强大的功能和良好的扩展性。
它支持多种通信协议,可以方便地与各种设备进行数据交互。
此外,MCGS还提供了丰富的图形组件库,可以灵活地设计人机界面。
第二章:MCGS软件安装与配置(200字)2.1MCGS软件安装2.2MCGS软件配置打开MCGS软件后,可以看到一个空白的界面。
点击“配置”按钮,在弹出的配置对话框中进行配置。
配置项包括通信协议、设备地址等。
根据实际情况进行配置,并保存设置。
第三章:MCGS软件界面介绍(200字)3.1主界面3.2工程浏览器工程浏览器显示了当前工程的文件夹和文件结构。
可以在其中创建和管理页面、组态和脚本文件。
3.3画布3.4属性窗口属性窗口显示了当前选中组件的属性。
可以在属性窗口中修改组件的大小、位置、样式等属性。
第四章:MCGS软件基本操作(200字)4.1创建页面在工程浏览器中右键点击“页面”文件夹,选择“新建页面”,即可创建一个新页面。
可以根据需要设置页面的尺寸和背景颜色。
4.2添加组件从工程浏览器中拖拽组件到画布上,即可添加组件。
可以选择按钮、图表、文本框等组件,也可以通过脚本添加自定义组件。
4.4组件交互可以通过脚本编程实现组件的交互。
例如,点击一个按钮后,可以触发一些动作或跳转到另一个页面。
第五章:MCGS软件高级功能(200字)5.1数据通信MCGS软件支持多种通信协议,可以方便地与各种设备进行数据交互。
可以通过配置设备地址和通信协议,实现数据的读取和写入。
5.2图形绘制MCGS软件提供了丰富的图形绘制功能,可以绘制直线、矩形、圆形等图形。
可以根据需要设置线条颜色、填充颜色等属性。
MCGS培训教程(高级部分)经过初级培训,您已经对MCGS组态软件的框架结构有了大致的了解,在初级培训教材的指引下,您一定能组态出一些简单的工程项目,但如果想应用自如还有一定困难。
在高级培训教材帮助下,您一定会如虎添翼,组态出令人满意的工程。
培训目的经过培训,您可以熟练应用MCGS组态软件中的各项功能;能根据工艺现场要求熟练制作动画流程;能处理相对复杂的曲线、报表、数据后处理等需求;能熟练使用MCGS脚本程序进行复杂的工业流程控制。
培训内容动画制作,流程控制策略,设备组态,结合存盘数据提取做复杂的历史报表,配方构件应用及MCGS使用技巧介绍。
参考手册《MCGS用户指南》《MCGS参考手册》MCGS多媒体教程MCGS工控组态软件联机帮助E-mail:support@网址:目录简介目录第一讲构造实时数据库一、MCGS实时数据库的概述二、数据对象的类型1、开关型数据对象2、数值型数据对象3、字符型数据对象4、事件型数据对象5、数据组对象三、数据对象的定义四数据对象的作用域第二讲动画制作一、封面制作二、动画效果第三讲设备窗口组态一、概述三、设备在线调试四、数据前处理第四讲脚本程序一、脚本程序语言要素1、数据类型2、变量及常量3、MCGS对象4、表达式5、运算符6、运算符优先级二、脚本程序基本语句1、赋值语句2、条件语句3、退出语句4、注释语句三、脚本程序应用场合及样例1、脚本程序在“窗口”中的应用2、脚本程序在“标准按钮”中的应用3、脚本程序在“菜单”中的应用第五讲MCGS数据后处理及报表一、数据后处理二、结合数据提取做复杂的报表1、新建一个窗口2、模拟所需要的数据3、按时间间隔提取数据4、按提取方式提取数据5、数据提取结果第六讲MCGS配方构件一、MCGS配方管理基本原理二、使用MCGS配方构件1、配方组态设计2、配方操作设计3、动态编辑配方第七讲MCGS使用技巧第一讲构造实时数据库一、MCGS实时数据库的概述在MCGS中的数据不同于传统意义的数据或变量,它不只包含了变量的数值特征,还将与数据相关的其它属性(如数据的状态、报警限值等)以及对数据的操作方法(如存盘处理、报警处理等)封装在一起,作为一个整体,以对象的形式提供服务。
一、脚本的两个要点1、脚本程序:数据的逻辑运算,与PLC程序、界面的条件相对应。
2、执行条件:决定执行的时机。
二、脚本编辑器脚本编辑器包含有执行条件选择界面和脚本程序编辑界面。
脚本编辑界面有三种:1、控件的事件选项:执行条件有:单击鼠标、左双击鼠标、右双击鼠标、鼠标按下、鼠标移动等2、策略窗口:执行条件有:启动时、退出时、循环执行等3、按钮自带执行条件有:按下、抬起三、脚本程序基本语法脚本程序的功能是对实时数据库里的数据逻辑运算;即根据输入数据的变化改变输出数据,使之符合系统要求。
在系统设计时,要学会巧设中间数据。
基本的语句有:1、数据运算执行:执行时,直接执行数据运算2、if 条件then 数据运算执行:条件满足(逻辑为1),执行后面的数据运算(一条运算)3、if 条件then数据运算1endif执行:条件满足(逻辑1),执行后面的数据运算(可多条运算)4、if 条件then数据运算1else数据运算2endif执行:条件满足(逻辑1),执行数据运算1,条件不满足(逻辑0)执行数据运算2. 多条件的逻辑关系可用条件连接语句:1、and :与条件1 and 条件2 :要条件1 和条件2 都为1 ,条件1 and 条件2 才为1,否则为02、or:或条件2 or 条件2 :条件1、条件2只要有1个1 ,条件1 or 条件2 为1 .四、脚本编写注意事项:1、注意脚本程序执行后的数据值是否与PLC程序的要求值相符。
2、要注意脚本程序的执行时间是否恰当。
3、对于没有动作的控件要用用户策略、中间变量完成脚本执行。
五、常用函数1、!Logon()功能:用户登录参数:无返回值:登录成功0 ,登录不成功12、!Logoff()功能:登录退出参数:无返回值:成功退出0 ,退出不成功13、!Editusers()功能:用户管理参数:无返回值:成功0 ,不成功14、!ChangePassword()功能:修改密码参数:无返回值:成功0 ,不成功15、!str(变量1)功能:把数值型变量变为字符型参数:数值型变量1返回值:字符型变量。
MCGS组态过程使用MCGS完成一个实际的应用系统,首先必须在MCGS的组态环境下进行系统的组态生成工作,然后将系统放在MCGS的运行环境下运行。
本章逐步介绍在MCGS组态环境下构造一个用户应用系统的过程,以便对MCGS系统的组态过程有一个全面的了解和认识。
这些过程包括:●工程整体规划●工程建立●构造实时数据库●组态用户窗口●组态主控窗口●组态设备窗口●组态运行策略●组态结果检查●工程测试●新工程的提交注意:本章所描述的组态过程只是一般性的描述,其先后顺序并不是固定不变的,例如先设计系统菜单,再生成图形界面、最后构造实时数据库也是可行的。
在实际应用过程中,可以根据需要灵活运用。
工程整体规划重点:工程整体规划的要点在实际工程项目中,使用MCGS构造应用系统之前,应进行工程的整体规划,保证项目的顺利实施。
对工程设计人员来说,首先要了解整个工程的系统构成和工艺流程,弄清测控对象的特征,明确主要的监控要求和技术要求等问题。
在此基础上,拟定组建工程的总体规划和设想,主要包括系统应实现哪些功能,控制流程如何实现,需要什么样的用户窗口界面,实现何种动画效果以及如何在实时数据库中定义数据变量等环节,同时还要分析工程中设备的采集及输出通道与实时数据库中定义的变量的对应关系,分清哪些变量是要求与设备连接的,哪些变量是软件内部用来传递数据及用于实现动画显示的等问题。
作好工程的整体规划,在项目的组态过程中能够尽量避免一些无谓的劳动,快速有效地完成工程项目。
完成工程的规划,下面就开始工程的建立工作了。
工程建立重点:建立新工程并保存MCGS中用“工程”来表示组态生成的应用系统,创建一个新工程就是创建一个新的用户应用系统,打开工程就是打开一个已经存在的应用系统。
工程文件的命名规则和Windows系统相同,MCGS自动给工程文件名加上后缀“.mcg”。
每个工程都对应一个组态结果数据库文件。
在Windows系统桌面上,通过以下三种方式中的任一种,都可以进入MCGS 组态环境:●鼠标双击Windows桌面上的“Mcgs组态环境”图标;●选择“开始”→“程序”→“MCGS组态软件”→“MCGS 组态环境”命令;●按快捷键“Ctrl + Alt + G”;进入MCGS组态环境后,单击工具条上的“新建”按钮,或执行“文件”菜单中的“新建工程”命令,系统自动创建一个名为“新建工程X.MCG”的新工程(X为数字,表示建立新工程的顺序,如1、2、3等)。
MCGS组态脚本函数MCGS组态系统内部函数目录第一章数学函数 (6)!Atn(x) (6)!Arcsin(x) (6)!Arccos(x) (6)!Cos(x) (6)!Sin(x) (6)!Tan(x) (7)!Exp(x) (7)!Log(x) (7)!Sqr(x) (7)!Abs(x) (8)!Sgn(x) (8)!BitAnd(x,y) (8)!BitOr(x,y) (8)!BitXor(x,y) (8)!BitClear(x,y) (9)!BitSet(x,y) (9)!BitNot(x) (9)!BitTest(x,y) (9)!BitLShift(x,y) (9)!BitRShift(x) (10)!Rand(x,y) (10)第二章数据对象操作函数 (10)!AnswerAlm(DatName) (10)!ChangeDataSave(Datname,n) (10)!ChangeSaveDat(DatName,Num1,Num2) (11)!CopySaveDat(Tdb,Sdb,TabName,TimeField,Flag ) (11)!DelAllSaveDat(DatName) (11)!DelAllAlmDat(DatName) (12)!DelAlmDat(DatName,Num) (12)!DelSaveDat(DatName,Num) (12)!EnableAlm(name,n) (13)!EnableDataSave(name,n) (13)!GetAlmValue(DatName,Value,Flag) (13)!GetEventDT(EvName) (14)!GetEventP(EvName) (14)!GetEventT(EvName) (14)!MoveAlmDat(DatName,FileName,Num1,Num2,Flag) (14)!MoveSaveDat(DatName,FileName,Num1,Num2,Flag) (15)!SaveData(DatName) (16)!SaveDataInit() (16)!SaveDataOnTime(Time,TimeMS,DataName) (16)!SaveSingleDataInit(Name) (17)!SetAlmValue(DatName,Value,Flag) (17)第三章系统操作函数 (18)!AppActive(Title) (18)!Beep() (18)!EnableDDEConnection(DatName,n) (18)!EnableDDEInput(DatName,n) (19)!EnableDDEOutput (DatName,n) (19)!LinePrtOutput (str) (19)!PlaySound(SndFileName,Op) (19)!SendKeys(string) (20)!SetLinePrinter(n) (22)!SetTime(n1,n2,n3,n4,n5,n6) (23)!Shell(pathname,windowstyle) (23)!Sleep(mTime) (24)!TerminateApplication(AppName,Timeout) (24)!WaitFor (Dat1,Dat2) (24)!WinHelp(HelpFileName,uCommand,dwData) (25) !Navigate(WebAddress) (25)!DDEReconnect( ) (26)!ShowDataBackup( ) (26)第四章字符串操作函数 (26)!Ascii2I(s) (26)!Bin2I(s) (26)!Format(n,str) (26)!Hex2I(s) (27)!I2Ascii(s) (27)!I2Bin(s) (27)!I2Hex(s) (27)!I2Oct(s) (28)!InStr(n,str1,str2) (28)!Lcase(str) (28)!Left(str,n) (28)!Len(Str) (29)!Ltrim(str) (29)!lVal(str) (29)!Mid(str,n,k) (29)!Oct2I(s) (30)!Right(str,n) (30)!Rtrim(str) (30)!Str(x) (30)!StrFormat(FormatStr,任意个数变量) (31)!Ucase(str) (31)!Val(str) (31)第五章运行环境操作函数 (32)!CallBackSvr(DatName) (32)!ChangeLoopStgy(StgyName,n) (32)!CloseAllWindow(WndName) (32)!EnableStgy(StgyName,n) (33)!GetDeviceName(Index) (33)!GetDeviceState(DevName) (33)!GetStgyName(Index) (34)!GetWindowName(Index) (34)!GetWindowState(WndName) (34)!SetActiveX(Activename,n,str) (34)!SetDevice(DevName,DevOp,CmdStr) (35) !SetStgy(StgyName) (35)!SetWindow(WndName,Op) (35)!SysWindow() (36)!DisableCtrlAltDel() (36)!EnableCtrlAltDel() (36)!RestartProject() (37)第六章用户登录操作函数 (37)!ChangePassword() (37)!CheckUserGroup(strUserGroup) (37)!Editusers() (37)!EnableExitLogon(n) (38)!EnableExitPrompt (n) (38)!GetCurrentGroup() (38)!GetCurrentUser() (38)!LogOff() (39)!GetUserNameByIndex() (39)!GetGroupNameByIndex() (39)!GetProjectTotalUsers () (39)第七章文件操作函数 (40)!FileAppend(strTarget ,strSource) (40)!FileCopy(strSource ,strTarget) (40)!FileDelete(strFilename) (40)!FileFindFirst(strFilename,objName,objSize,objAttrib) (41)!FileFindNext(FindHandle,objName,objSize,objAttrib) (41) !FileIniReadValue(strIniFilename,strSection,strItem,objResult) (42)!FileIniWriteValue(strIniFilename,strSection,strItem,objResult) (42)!FileMove(strSource,strTarget) (43)!FileReadFields(strFilename,lPosition,任意个数变量) (43)!FileSplit(strSourceFile,strTargetFile, FileSize) (44)!FileWriteFields(strFilename,lPosition,任意个数变量) (44)!FileWriteStr(strFilename,lPosition,str,Rn) (45)第八章ODBC数据库函数 (45)!ODBCOpen(strDatabastName,strSQL,strName) (45)!ODBCSeekToPosition(strName,lPosition) (46)!ODBCClose(strName) (46)!ODBCConnectionCloseAll() (47)!ODBCConnectionCount() (47)!ODBCConnectionGetName(lID) (47)!ODBCDelete(strName) (47)!ODBCEdit(strName) (48)!ODBCExecute(strName,strSQL) (48)!ODBCGetCurrentValue(strName) (49)!ODBCGetRowCount(strName) (49)!ODBCIsBOF(strName) (49)!ODBCIsEOF(strName) (50)!ODBCMoveFirst(strName) (50)!ODBCMoveLast(strName) (50)!ODBCMoveNext(strName) (51)!ODBCMovePrev(strName) (51)!ODBCBind(strName,任意个数变量) (51)!ODBCAddnew(strName) (52)第九章配方操作函数 (52)!RecipeLoad(strFilename ,strRecipeName) (52)!RecipeMoveFirst(strRecipeName) (53)!RecipeMoveLast(strRecipeName) (53)!RecipeMoveNext(strRecipeName) (53)!RecipeMovePrev(strRecipeName) (54)!RecipeSave(strRecipeName,strFilename) (54)!RecipeSeekT o(strRecipeName,DataName,str) (54) !RecipeSeekT oPosition(strRecipeName,rPosition) (55) !RecipeSort(strRecipeName,DataName,Num) (55)!RecipeClose(strRecipeName) (56)!RecipeDelete(strRecipeName) (56)!RecipeEdit(strRecipeName) (56)!RecipeGetCount(strRecipeName) (57)!RecipeGetCurrentPosition(strRecipeName) (57)!RecipeGetCurrentValue(strRecipeName) (57)!RecipeInsertAt(strRecipeName,rPosition) (58)!RecipeBind(strRecipeName,任意个数变量) (58)!RecipeAddNew(strRecipeName) (59)第十章时间运算函数 (59)!TimeStr2I(strTime) (59)!TimeI2Str(iTime,strFormat) (59)!TimeGetYear(iTime) (61)!TimeGetMonth(iTime) (62)!TimeGetSecond(iTime) (62)!TimeGetSpan(iTime1,iTime2) (62)!TimeGetDayOfWeek(iTime) (62)!TimeGetHour(iTime) (63)!TimeGetMinute(iTime) (63)!TimeGetDay(iTime) (63)!TimeGetCurrentTime() (63)!TimeSpanGetDays(iTimeSpan) (64)!TimeSpanGetHours(iTimeSpan) (64)!TimeSpanGetMinutes(iTimeSpan) (64)!TimeSpanGetSeconds(iTimeSpan) (65)!TimeSpanGetT otalHours(iTimeSpan) (65)!TimeSpanGetT otalMinutes(iTimeSpan) (65) !TimeSpanGetT otalSeconds(iTimeSpan) (65) !TimeAdd(iTime,iTimeSpan) (66)第十一章定时器操作函数 (66)!TimerClearOutput(定时器号) (66)!TimerRun(定时器号) (66)!TimerStop(定时器号) (66)!TimerSkip(定时器号,步长值) (67)!TimerReset(定时器号,数值) (67)!TimerValue(定时器号,0) (67)!TimerStr(定时器号,转换类型) (67)!TimerState(定时器号) (68)!TimerSetLimit(定时器号,上限值,参数3) (68) !TimerSetOutput(定时器号,数值型变量) (68)!TimerWaitFor(定时器号,数值) (68)第十二章MCGS系统变量 (69)$Year (69)$Month (69)$Day (69)$Hour (69)$Minute (69)$Second (70)$Week (70)$Date (70)$Time (70)$Timer (70)$RunTime (70)$PageNum (71)$UserName (71)第十三章存盘服务对象 (71)方法:SetStartPos (71)方法:GetDat (71)第一章数学函数 !Atn(x)函数意义:反正切函数。
MCGS脚本程序本专题将从以下几个方面介绍MCGS脚本程序:●脚本程序简介●脚本语言编辑环境●脚本程序语言要素●脚本程序基本语句●脚本程序的查错和运行脚本程序简介对于大多数简单的应用系统,MCGS的简单组态就可完成。
只有比较复杂的系统,才需要使用脚本程序,但正确地编写脚本程序,可简化组态过程,大大提高工作效率,优化控制过程。
用户脚本程序是由用户编制的、用来完成某种特定的流程控制和操作处理的程序。
它被封装在一个功能构件里(称为脚本程序功能构件),在后台由独立的线程来运行和处理,能够避免由于单个脚本程序的错误而导致整个系统的瘫痪。
在MCGS中,脚本语言的编程语法非常类似于普通的Basic语言,但在概念和使用上更简单直观,力求做到使大多数普通用户都能正确、快速地掌握和使用。
脚本程序在MCGS组态软件中有四种应用场合,分别为:●在“运行策略”中的“脚本程序”构件中使用;●在“菜单”属性设置中的“脚本程序”中使用,作为菜单的一个辅助功能运行;●在“用户窗口”属性设置中的“启动脚本”、“循环脚本”、“退出脚本”中使用;●更常见的用法是应用在动画界面的事件中,如在窗口中的“标准按钮”属性设置中的“脚本程序”中使用。
MCGS引入的事件驱动机制,与VB或VC中的事件驱动机制类似,比如:对用户窗口,有装载,卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键事件等等。
这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。
脚本语言编辑环境脚本程序编辑环境是用户书写脚本语句的地方。
脚本程序编辑环境主要由脚本程序编辑框、编辑功能按钮、MCGS操作对象列表和函数列表、脚本语句和表达式4个部分构成,分别说明如下:脚本程序编辑框用于书写脚本程序和脚本注释,用户必须遵照MCGS规定的语法结构和书写规范书写脚本程序,否则语法检查不能通过。
编辑功能按钮提供了文本编辑的基本操作,用户使用这些操作可以方便操作和提高编辑速度。
比如,在脚本程序编辑框中选定一个函数,然后按下帮助按钮,MCGS将自动打开关于这个函数的在线帮助,或者,如果函数拼写错误,MCGS将列出与所提供的名字最接近函数的在线帮助。
脚本语句和表达式列出了MCGS使用的三种语句的书写形式和MCGS允许的表达式类型。
用鼠标单击要选的语句和表达式符号,在脚本编辑处光标所在的位置填上语句或表达式的标准格式。
比如,用鼠标单击if~then按钮,则MCGS 自动提供一个if … then …结构,并把输入光标停到合适的位置上。
MCGS对象和函数列表以树结构的形式,列出了工程中所有的窗口、策略、设备、变量、系统支持的各种方法、属性以及各种函数,以供用户快速的查找和使用。
比如,可以在用户窗口树中,选定一个窗口:”窗口0”,打开窗口0下的”方法”,然后双击Open函数,则MCGS自动在脚本程序编辑框中,添加了一行语句:用户窗口.窗口0.Open( ),通过这行语句,就可以完成窗口打开的工作。
脚本程序语言要素在MCGS中,脚本程序在编写时使用的语言非常类似普通的Basic语言,本节对脚本程序的语言要素进行详细的说明。
数据类型MCGS脚本程序语言使用的数据类型只有三种:●开关型:表示开或者关的数据类型,通常0表示关,非0表示开。
也可以作为整数使用;●数值型:值在3.4E±38范围内;●字符型:最多512个字符组成的字符串;变量、常量及系统函数变量:脚本程序中,用户不能定义子程序和子函数,其中数据对象可以看作是脚本程序中的全局变量,在所有的程序段共用。
可以用数据对象的名称来读写数据对象的值,也可以对数据对象的属性进行操作。
开关型、数值型、字符型三种数据对象分别对应于脚本程序中的三种数据类型。
在脚本程序中不能对组对象和事件型数据对象进行读写操作,但可以对组对象进行存盘处理。
常量:●开关型常量:0或非0的整数,通常0表示关,非0表示开;●数值型常量:带小数点或不带小数点的数值,如:12.45, 100●字符型常量:双引号内的字符串,如:“OK”,“正常”系统变量:MCGS系统定义的内部数据对象作为系统内部变量,在脚本程序中可自由使用,在使用系统变量时,变量的前面必须加“$”符号,如 $Date。
系统函数:MCGS系统定义的内部函数,在脚本程序中可自由使用,在使用系统函数时,函数的前面必须加“!”符号,如!abs( )。
属性和方法:MCGS系统内的属性和方法都是相对于MCGS的对象而说的,引用对象的方法可以参见下个部分。
注:有关系统变量和系统函数详细的使用方法,请参见《MCGS参考手册》MCGS对象MCGS的对象形成一个对象树,树根从“MCGS”开始,MCGS对象的属性就是系统变量,MCGS对象的方法就是系统函数。
MCGS对象下面有“用户窗口”对象,“设备”对象,“数据对象”等子对象。
“用户窗口”以各个用户窗口作为子对象,每个用户窗口对象以这个窗口里的动画构件作为子对象。
使用对象的方法和属性,必须要引用对象,然后使用点操作来调用这个对象的方法或属性。
为了引用一个对象,需要从对象根部开始引用,这里的对象根部,是指可以公开使用的对象。
MCGS对象,用户窗口、设备和数据对象都是公开对象,因此,语句InputETime = $Time是正确的,而语句InputETime = MCGS.$Time 也是正确的,同样,调用函数!Beep()时,也可以采用MCGS.!Beep()的形式。
可以写:窗口0.Open(),也可以写:MCGS.用户窗口.窗口0.Open(),还可以写:用户窗口.窗口0.Open()。
但是,如果要使用控件,就不能只写:控件0.Left,而必须写:窗口0.控件0.Left,或:用户窗口.窗口0.控件0.Left。
在对象列表框中,双击需要的方法和属性,MCGS将自动生成最小可能的表达式。
事件在MCGS的动画界面组态中,可以组态处理动画事件。
动画事件是在某个对象上发生的,可能带有参数也可能没有参数的动作驱动源。
如用户窗口上可以发生事件:Load,Unload,分别在用户窗口打开和关闭时触发。
可以对这两个事件组态一段脚本程序,当事件触发时(用户窗口打开或关闭时)被调用。
用户窗口的Load和Unload事件是没有参数的,但是MouseMove事件有,在组态这个事件时,可以在参数组态中,选择把MouseMove事件的几个参数连接到数据对象上,这样,当MouseMove事件被触发时,就会把MouseMove的参数,包括鼠标位置,按键信息等送到连接的数据对象,然后,在事件连接的脚本程序中,就可以对这些数据对象进行处理。
表达式由数据对象(包括设计者在实时数据库中定义的数据对象、系统内部数据对象和系统函数)、括号和各种运算符组成的运算式称为表达式,表达式的计算结果称为表达式的值。
当表达式中包含有逻辑运算符或比较运算符时,表达式的值只可能为0(条件不成立,假)或非0(条件成立,真),这类表达式称为逻辑表达式;当表达式中只包含算术运算符,表达式的运算结果为具体的数值时,这类表达式称为算术表达式;常量或数据对象是狭义的表达式,这些单个量的值即为表达式的值。
表达式值的类型即为表达式的类型,必须是开关型、数值型、字符型三种类型中的一种。
表达式是构成脚本程序的最基本元素,在MCGS的部分组态中,也常常需要通过表达式来建立实时数据库与其对象的连接关系,正确输入和构造表达式是MCGS的一项重要工作。
运算符算术运算符∧乘方 * 乘法/除法\整除+加法—减法Mod 取模运算逻辑运算符AND 逻辑与 NOT 逻辑非OR 逻辑或XOR 逻辑异或比较运算符>大于>=大于等于=等于(注意,字符串比较需要使用字符串函数!StrCmp,不能直接使用等于运算符)<=小于等于<小于<>不等于运算符优先级按照优先级从高到低的顺序,各个运算符排列如下:( )∧*,/,\,Mod+,—< , > ,<= ,>=,= ,<>NOTAND,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数据源”一章。