2021年MCGS系统内部函数参考手册

2021年MCGS系统内部函数参考手册
2021年MCGS系统内部函数参考手册

MCGS系统内部函数

欧阳光明(2021.03.07)

MCGS内部为用户提供了一些常用的数学函数和对MCGS内部对象操作的函数。组态时,可在表达式中或用户脚本程序中直接使用这些函数。为了与其它名称相区别,系统内部函数的名称一律以“!”符号开头。下面分别介绍各个函数的用途和使用方法。

运行环境操作函数

!CallBackSvr(DatName)

函数意义:调用后台对象

返回值:数值型,后台对象的值

参数:DatName,对象名,数值型

实例:X=!CallBackSvr(X),调用后台数值型对象X

注意:本函数在新版本MCGS系统内部,已经无效。为了保留与旧版本的兼容性,暂时保留。

!ChangeLoopStgy(StgyName,n)

函数意义:改变循环策略的循环时间

返回值:数值型。返回值=0:调用正常;<>0:调用不正常。

参数:StgyName,策略名;n,数值型,以毫秒数表示循环策略的循环时间

实例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为为5秒

!CloseAllWindow(WndName)

函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,关闭其他窗口。如果”WndName”为空串,则关闭所有窗口。

返回值:数值型。返回值:=0:调用正常;<>0:调用不正常。

参数:WndName,用户窗口名,字符型。

实例:!CloseAllWindow(“工况图”),关闭除了用户窗口“工况图”以外的其他窗口,若“工况图”窗口没有打开,则在关闭其他窗口的同时打开该窗口

!CloseAllWindow(“”),关闭所有窗口。

!EnableStgy(StgyName,n)

函数意义:打开或关闭某个策略,如报警策略或循环策略等。

返回值:数值型。返回值=0:调用正常;<>0:调用不正常。

参数:StgyName,策略名;

n,数值型,为1时表示打开此策略,为0时表示关闭此策略。

实例:!EnableStgy(报警策略,1),打开报警策略;

!EnableStgy(报警策略,0),关闭报警策略,使报警策略无效

!GetDeviceName(Index)

函数意义:按设备顺序取到设备的名字。

返回值:字符型。调用成功返回设备名,调用失败时返回空字符串。

参数:Index,数值型。

实例:!GetDeviceName(0),取0号设备构件的名称。

!GetDeviceState(DevName)

函数意义:按设备名查询设备的状态。

返回值:数值型。

=-1调用不正常。

=1 设备处于正常的工作状态。

=2 设备正在工作,但设备不正常。

=3 设备处于停止工作状态,且设备正常。

=4 设备处于停止状态,且设备有错。

参数:DevName,设备名,字符型。

实例:!GetDeviceState( OmronPLC),读取设备构件“OmronPLC”的当前工作状态。

!GetStgyName(Index)

函数意义:按运行策略的顺序获得各策略块的名字。

返回值:字符型。

参数:Index,数值型。

实例:!GetStgyName(0),取0号运行策略的名称。

!GetWindowName(Index)

函数意义:按用户窗口的顺序获得用户窗口的名字。

返回值:字符型。

参数:Index,数值型。

实例:!GetWindowName(0) ,读取0号用户窗口的名称。

!GetWindowState(WndName)

函数意义:按照名字取得用户窗口的状态。

返回值:数值型。

返回0:用户窗口处于关闭状态。

返回1:用户窗口处于打开状态。

返回2:用户窗口处于隐藏状态。

参数:WndName,用户窗口名称,字符型。

实例:!GetWindowState(工况图),获得用户窗口“工况图”的状态!SetActiveX(Activename,n,str)

函数意义:操作指定的动画构件,向窗口中的ActiveX控件发出控件命令

返回值:无

参数:Activename,字符型,控件名称,用“.”分割窗口名和控件名,如:窗口0.控件1表示在用户窗口“窗口0”中的名为“控件1”的控件。

n,数值型,命令类型,请填1;

str,字符型,命令字符串,具体含义请参照控件帮助。

实例:!SetActiveX(“窗口0.控件0”,1,”start”),启动窗口0的控件0开始工作。

!SetDevice(DevName,DevOp,CmdStr)

函数意义:按照设备名字对设备进行操作。

返回值:数值型。返回值:=0:调用正常;<>0:调用不正常。

参数:DevName,设备名,字符型;

DevOp,设备操作码,数值型;

CmdStr,设备命令字符串,只有当DevOp=6时CmdStr才有意义。DevOp取值范围及相应含义:

1:启动设备开始工作。

2:停止设备的工作使其处于停止状态。

3:测试设备的工作状态。

4:启动设备工作一次。

5:改变设备的工作周期,CmdStr中包含新的工作周期,单位为ms。

6:执行指定的设备命令,CmdStr中包含指定命令的格式。

实例:!SetDevice(OmronPLC,1," " ),启动设备构件“OmronPLC”开始工作。

!SetStgy(StgyName)

函数意义:执行StgyName指定的运行策略。

返回值:数值型。返回值=0:调用正常;<>0:调用不正常。

参数:StgyName,策略名,字符型。

实例:!SetStgy(阀门关闭),执行一次运行策略“阀门关闭”。

!SetWindow(WndName,Op)

函数意义:按照名字操作用户窗口,如打开、关闭、打印。

返回值:数值型。返回值:=0:调用正常;<>0:调用不正常。

参数:WndName,用户窗口名,字符型。

Op: 操作用户窗口的方法,数值型。

Op=1:打开窗口并使其可见。Op=2:打开窗口并使其不可见。Op=3:关闭窗口。Op=4:打印窗口。Op=5:刷新窗口。

实例:!SetWindow(工况图,1),打开用户窗口“工况图”,并使其可见。

!SysWindow()

函数意义:执行该函数后,打开用户窗口管理窗口,在管理窗口中可以选择打开或关闭指定的用户窗口。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!SysWindow()

!DisableCtrlAltDel()

函数意义:屏蔽热键Ctrl+Alt+Del的功能。无法打开任务管理器窗口或执行锁定计算机﹑注销﹑关机﹑密码修改等操作。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!DisableCtrlAltDel()

注意此函数在网络版客户端和WIN98操作系统下无效。

!EnableCtrlAltDel()

函数意义:恢复热键Ctrl+Alt+Del的功能。使用任务管理器关闭不响应的程序或执行锁定计算机﹑注销﹑关机﹑修改密码等,为了维护系统安全的操作。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!EnableCtrlAltDel()

注意:1. 不要把这两个脚本函数同时使用,否则,看不到任何效果,没有任何意义;2. 不要把这两个函数放到循环中使用;3. 在使用这2个脚本函数时,最好与登录密码同时使用,以达到真正的热键屏蔽效果。4. 此函数在网络版客户端和WIN98操作系统下无效。

!RestartProject()

函数意义:当检查组态工程在运行过程中出现非正常状态,可以调用该函数重新启动运行环境。该功能必须在加密狗生效时方可工作。

返回值:无。

参数:无。

实例:!RestartProject()

数据对象操作函数

!AnswerAlm(DatName)

函数意义:应答数据对象DatName所产生的报警。如对应的数据对象没有报警产生或已经应答,则本函数无效。

返回值:数值型,=0为操作成功;<>0为操作失败。

参数:DatName,数据对象名;

实例:!AnswerAlm(电机温度),应答数据对象“电机温度”所产生的报警。

!ChangeDataSave(Datname,n)

函数意义:改变数据对象Datname存盘的周期。

返回值:数值型,=0为操作成功;<>0为操作失败。

参数:Datname,数据对象名;

n,数值型,以秒表示的存盘间隔时间

实例:ChangeDataSave(温度,5),温度的存盘间隔时间为5秒

!ChangeSaveDat(DatName,Num1,Num2)

函数意义:改变数据对象DatName所对应存盘数据的存盘间隔,把Num1小时以前的存盘数据(以当前时间为0点)的存盘间隔改为Num2秒。本操作只对组对象有效,对单个的数据对象无效。当DataName =空字符,或Num1=0或Num2=0时,本操作无效。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名。

Num1:数值型时间量,单位:小时。本函数用Num1<0的一些数值来表示一些特殊意义的操作:

=-1 改变当天对应数据对象所有存盘数据的存盘间隔;

=-2 改变昨天对应数据对象所有存盘数据的存盘间隔;

=-3 改变本星期对应数据对象所有存盘数据的存盘间隔;

=-4 改变上星期对应数据对象所有存盘数据的存盘间隔;

=-5 改变本月对应数据对象所有存盘数据的存盘间隔;

=-6 改变上个月对应数据对象所有存盘数据的存盘间隔;

Num2:数值型时间量,新的存盘间隔,单位:秒。

实例:! ChangeSaveDat(电机1, -2, 5),把组对象“电机1”对应的存盘数据中昨天的存盘数据的存盘间隔改为5秒钟。

!CopySaveDat(Tdb,Sdb,TabName,TimeField,Flag )

函数意义:拷贝数据库中数据表的数据

返回值:开关型,返回值=0:调用正常;返回值<>0:调用不正常。

参数:Tdb,目标数据库名;Sdb,源数据库名;TabName,数据表名;

TimeField,定义的时间字段名;Flag,拷贝方式,0:覆盖拷贝;1:添加拷贝。

实例:!CopySaveDat(Tdb,Sdb,TabName,TimeField,0),将数据库Sdb中表TabName中的数据拷贝到数据库Tdb中,表名仍是TabName,定义的时间字段为TimeField,拷贝方式为覆盖拷贝。

!DelAllSaveDat(DatName)

函数意义:删除数据对象DatName对应的所有存盘数据。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName,数据对象名。

实例:! DelAllSaveDat(电机温度) ,删除数据对象“电机温度”对应的所有存盘数据。

!DelAllAlmDat(DatName)

函数意义:删除数据对象DataName对应的所有报警存盘数据。注意,此函数不能用来删除组对象所对应的报警存盘数据。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名;

实例:!DelAllAlmDat(电机温度),删除数据对象“电机温度”对应的所有报警存盘数据

!DelAlmDat(DatName,Num)

函数意义:删除数据对象DataName对应的报警存储数据中最早Num小时内的报警存储数据,如Num<=0或DatName=空字符,则该函数无效。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名;

Num:数值型时间值,单位:小时。

实例:! DelAlmDat(电机温度,1),删除数据对象“电机温度”对应的报警存盘数据中最早1小时内的数据。

!DelSaveDat(DatName,Num)

函数意义:删除数据对象DataName对应的存盘数据中最早Num小时内的存盘数据,如Num<=0或DatName=空字符,则该函数无效。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名;

Num:数值型时间值,单位:小时。

实例:! DelSaveDat(电机温度,12) ,删除数据对象“电机温度”对应的存盘数据中最早12小时内的数据。

!EnableAlm(name,n)

函数意义:打开/关闭数据对象的报警功能。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:name,变量名;

n,数值型,1表示打开报警,0表示关闭报警

实例:!EnableAlm(电机温度,1),打开电机温度的报警功能

!EnableDataSave(name,n)

函数意义:打开/关闭数据对象的定时存盘功能。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:name,数据对象名;

n,数值型,1表示打开定时存盘,0表示关闭定时存盘

实例:!EnableDataSave(温度,1),打开温度的定时存盘

!GetAlmValue(DatName,Value,Flag)

函数意义:读取数据对象DatName报警限值,只有在数据对象DatName的“允许进行报警处理”属性选项被选中后,本函数的操作才有意义。对组对象、字符型数据对象、事件型数据对象本函数无效。对数值型数据对象,用Flag来标识读取何种报警限值。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名。

Value:DataName的当前的报警限值,数值型。

Flag:数值型,标志要读取何种限值,具体意义如下:

=1下下限报警值;

=2 下限报警值;

=3 上限报警值;

=4 上上限报警值;

=5 下偏差报警限值;

=6 上偏差报警限值;

=7 偏差报警基准值;

实例:! GetAlmValue(电机温度, Value, 3),读取数据对象“电机温度”的报警上限值,放入数值型数据对象Value中。

!GetEventDT(EvName)

函数意义:返回当前事件和上一次事件之间的时间差,单位为秒。返回值:数值型。返回的时间差

参数:EvName,事件变量名,事件型。

实例:!GetEventDT(EvName),取事件变量EvName当前事件和上一次事件之间的时间差,单位为秒。

!GetEventP(EvName)

函数意义:取到当前事件的附加说明字符串。

返回值:字符型。返回的附加说明字符串。

参数:EvName,事件变量名,事件型。

实例:!GetEventP(EvName) ,取事件型变量EvName的当前事件的附加说明字符串。

!GetEventT(EvName)

函数意义:取到当前事件产生的时间,以秒为单位,相对于1980年以来的秒数。如没有事件产生,返回-1。

返回值:数值型。

参数:EvName,事件变量名,事件型。

实例:!GetEventT(EvName),取事件型变量EvName的当前事件产生时刻。

!MoveAlmDat(DatName,FileName,Num1,Num2,Flag)

函数意义:把数据对象DatName所对应的报警存盘信息中的第Num1小时到Num1+Num2小时内(以当前时间为0点)的报警存盘信息提取出来,转存到FileName所指定的数据库文件中(Access 数据库)。当DatName=空字符,或FileName=空字符,或Num2<0时,本函数无效。删除数据对象DatName对应的所有报警存储数据。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名。

FileName:新的报警存盘文件名(包括路径),字符型。

Num1:数值型时间量,单位:小时。本函数用Num1<0的一些数值来表示一些特殊意义的操作(此时Num2无效):

=-1 转存当天的所有报警信息存盘数据;

=-2 转存昨天的所有报警信息存盘数据;

=-3 转存本星期的所有报警信息存盘数据;

=-4 转存上星期的所有报警信息存盘数据;

=-5 转存本月的所有报警信息存盘数据;

=-6 转存上个月的所有报警信息存盘数据;

Num2:数值型时间量,单位:小时。

Flag:转存标志,数值型。

Flag=0时,创建一个新文件(如原文件已存在,则把原文件改名为***.BK1);Flag=1时,在原有的基础上增加新的数据。

实例:!MoveAlmDat(电机温度, "D:\Temp\ttt.mdb",-6,0,1),把数据对象“电机温度”对应的报警存盘数据中的上个月的所有报警信息存盘数据转存添加到数据库文件"D:\Temp\ttt.mdb"中。

!MoveSaveDat(DatName,FileName,Num1,Num2,Flag)

函数意义:把数据对象DatName所对应的存盘数据中的第Num1小时到Num1+Num2小时内(以当前时间为0点)的存盘数据提取出来,转存到FileName所指定的数据库文件中(Access数据库)。当DatName=空字符,或FileName=空字符,或Num2<0时,本函数无效。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名。

FileName:新的存盘数据文件名(包括路径),字符型。

Num1:数值型时间量,单位:小时。

本函数用Num1<0的一些数值来表示一些特殊意义的操作(此时Num2无效):

=-1 转存当天对应数据对象的所有存盘数据;

=-2 转存昨天对应数据对象的所有存盘数据;

=-3 转存本星期对应数据对象的所有存盘数据;

=-4 转存上星期对应数据对象的所有存盘数据;

=-5 转存本月对应数据对象的所有存盘数据;

=-6 转存上个月对应数据对象的所有存盘数据;

Num2:数值型时间量,单位:小时。

Flag:转存标志,数值型。

Flag=0时,创建一个新文件(如原文件已存在,则把原文件改名为***.BK1);Flag=1时,在原有的基础上增加新的数据。

实例:! MoveSaveDat(电机温度, "D:\Temp\ttt.mdb",-6,0,1) 把数据对象“电机温度”对应的存盘数据中的上个月的所有存盘数据转存添加到数据库文件“D:\Temp\ttt.mdb”中。

!SaveData(DatName)

函数意义:把数据对象DataName对应的当前值存入存盘数据库中。本函数的操作使对应的数据对象的值存盘一次。此数据对象必须具有存盘属性,且存盘时间需设为0秒。否则会操作失败。

返回值:数值型,=0为操作成功;<>0为操作失败。

参数:DatName,数据对象名。

实例:! SaveData(电机1),把组对象“电机1”的所有成员对应的当前值存盘一次。

!SaveDataInit()

函数意义:本操作把设置有“退出时自动保存数据对象的当前值作为初始值”属性的数据对象的当前值存入组态结果数据中作为初始值,防止突然断电而无法保存,以便MCGS下次启动时这些数据对象能自动恢复其值。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:无。

实例:! SaveDataInit()

!SaveDataOnTime(Time,TimeMS,DataName)

函数意义:使用指定时间保存数据。本函数通常用于指定时间来保存数据,实现与通常机制不一样的存盘方法。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:Time,整型,使用时间函数转换出的时间量。时间精度到秒。

TimeMS,整型,指定存盘时间的毫秒数。

DataName,数据对象名。

实例:t = !TimeStr2I(“2001年2月21日3时2分3秒”)

!SaveDataOnTime (t,0,DataGroup),按照指定时间保存数据对象

!SaveSingleDataInit(Name)

函数意义:本操作把数据对象的当前值设置为初始值(不管该对象是否设置有“退出时自动保存数据对象的当前值作为初始值”属性),防止突然断电而无法保存,以便MCGS下次启动时这些数据对象能自动恢复其值。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:Name,数据对象名。

实例:!SaveSingleDataInit(温度),把温度的当前值设置成初始值。!SetAlmValue(DatName,Value,Flag)

函数意义:设置数据对象DatName对应的报警限值,只有在数据对象DatName“允许进行报警处理”的属性被选中后,本函数的操作

才有意义。对组对象、字符型数据对象、事件型数据对象本函数无效。对数值型数据对象,用Flag来标识改变何种报警限值。

返回值:数值型,返回值=0:调用正常;<>0:调用不正常。

参数:DatName:数据对象名。

Value:新的报警值,数值型。

Flag:数值型,标志要操作何种限值,具体意义如下:

=1下下限报警值;

=2下限报警值;

=3上限报警值;

=4上上限报警值;

=5下偏差报警限值;

=6上偏差报警限值;

=7偏差报警基准值;

实例:! SetAlmValue(电机温度, 200, 3),把数据对象“电机温度”的报警上限值设为200

用户登录操作函数

!ChangePassword()

函数意义:弹出密码修改窗口,供当前登录的用户修改密码。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!ChangePassword()

!CheckUserGroup(strUserGroup)

函数意义:检查当前登录的用户是否属于strUserGroup用户组的成员。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:strUserGroup,字符型,用户组的名称。

实例:! CheckUserGroup("管理员组")

!Editusers()

函数意义:弹出用户管理窗口,供管理员组的操作者配置用户。返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!Editusers()

!EnableExitLogon(n)

函数意义:打开/关闭退出时的权限检查

返回值:无

参数:n,数值型,为1时表示在退出时进行权限检查,当权限不足时,会进行提示。为0则退出时不进行权限检查。

实例:!EnableExitLogon(1),在退出时进行权限检查

!EnableExitPrompt (n)

函数意义:打开/关闭退出时的提示信息

返回值:无

参数:n,数值型,为1时表示在退出时弹出提示信息对话框。为0则退出时不出现信息对话框。

实例:!EnableExitLogon(1),在退出时弹出提示信息对话框

!GetCurrentGroup()

函数意义:读取当前登录用户的所在用户组名。

返回值:字符型,当前登录用户组名,如没有登录返回空。

参数:无。

实例:!GetCurrentGroup()

!GetCurrentUser()

函数意义:读取当前登录用户的用户名。

返回值:字符型,当前登录用户的用户名,如没有登录返回空。

参数:无。

实例:!GetCurrentUser()

!LogOff()

函数意义:注销当前用户。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!LogOff()

!LogOn()

函数意义:弹出登录对话框。

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:无。

实例:!LogOn()

!GetUserNameByIndex()

函数意义:按索引号取得当前用户名。

返回值:字符型。与索引号相对应的当前用户名。

参数:索引号值。

实例:!GetUserNameByIndex(0) ,索引为0的用户名称。

!GetGroupNameByIndex()

函数意义:按索引号取得当前用户组名。

返回值:字符型。与索引号相对应的当前用户组名。

参数:索引号值。

实例:!GetGroupNameByIndex(0) ,索引为0的用户组名称。

!GetProjectTotalUsers ()

函数意义:取得当前工程用户总数。

返回值:开关型。当前工程用户总数。

参数:无

实例: !GetProjectTotalUsers(),激活该函数,取得当前工程的用户总数。

字符串操作函数

!Ascii2I(s)

函数意义:返回字符串s的首字母的Ascii值。

返回值:开关型。

参数:s,字符型。

实例:!Ascii2I(“Afd”) =65

!Bin2I(s)

函数意义:把二进制字符串转换为数值。

返回值:开关型。

参数:s,字符型。

实例:!Bin2I(“101”) =5

!Format(n,str)

函数意义:格式化数值型数据对象

返回值:字符型。

参数:n,数值型,要格式化的数值;

str,字符型,格式化数值的格式。表示为0.00样式。小数点后的0的个数表示需要格式化出的小数位数。小数点前的0为一个时,表示小数点前根据实际数值显示。当小数点前没有0时,表示为.xx 式样,当小数点前的0不止一个时,使用0来填充不够的位数。实例:!Format(1.236,"0.00") = "1.24";!Format(1.236,".00") = ".24";

!Format(1.236,"00.00") = "01.24";

!Hex2I(s)

函数意义:把16进制字符串转换为数值。

返回值:开关型。

参数:s,字符型。

实例:!Hex2I (“11”) =17

!I2Ascii(s)

函数意义:返回指定Ascii值的字符。

返回值:字符型。

参数:s,开关型。

实例:!I2Ascii(65) =”A”

!I2Bin(s)

函数意义:把数值转换为二进制字符串。

返回值:字符型。

参数:s,开关型。

实例:!I2Bin (5) =“101”

!I2Hex(s)

函数意义:把数值转换为16进制字符串。

返回值:字符型。

参数:s,开关型。

实例:!I2Hex (17) =“11”

!I2Oct(s)

函数意义:把数值转换为8进制字符串。

返回值:字符型。

参数:s,开关型。

实例:!I2Oct (9) =“11”

!InStr(n,str1,str2)

函数意义:查找一字符串在另一字符串中最先出现的位置

返回值:数值型。

参数:n,数值型,开始搜索的位置;

str1,字符串,被搜索的字符串;

str2,字符串,要搜索的字符串

实例:!InStr(3,"sdlkfjwe","we") = 7

实例:!InStr(1,"wesdlkfjwe","we") = 1,表示从str1字符串的第一个字符位置搜索str2字符串,返回最先出现的位置

!Lcase(str)

函数意义:把字符型数据对象str的所有字符转换成小写。

返回值:字符型。

参数:str,字符型。

实例:!LCase("sedERT") = "sedert"

!Left(str,n)

函数意义:字符型数据对象str左边起,取n个字符。

返回值:字符型。

参数:str:字符型,源字符串;n,数值型,取字符个数。

实例:!Left("ABCDEFG",2) ="AB"

!Len(Str)

函数意义:求字符型数据对象str的字符串长度(字符个数)。返回值:数值型。

参数:str,字符型。

实例:!Len("ABCDEFG") = 7

!Ltrim(str)

函数意义:把字符型数据对象str中最左边的空格剔除。

返回值:字符型。

参数:str,字符型。

实例:!LTrim(" dsfk ") = "dsfk "

!lVal(str)

函数意义:将数值类字符串转化为长整型数值

返回值:开关型,转换出的数值。

参数:str,字符型。要求待转换的字符串为数值类字符串

实例:!lVal(“12345678”)=12345678

!Mid(str,n,k)

函数意义:从字符型数据对象str左边第n个字符起,取k个字符。

返回值:字符型。

参数:str,字符型,源字符串;

n,数值型,起始位置;

k,数值型,取字符数。

实例:!Mid("ABCDEFG",3,2) = "CD"

!Oct2I(s)

函数意义:把8进制字符串转换为数值。

返回值:开关型。

参数:s,字符型。

实例:!Oct2I (“11”) =9

!R i ght(str,n)

函数意义:从字符型数据对象str右边起,取n个字符。

返回值:字符型。

参数:str,字符型,源字符串;n,数值型,取字符个数。

实例:!Right("ABCDEFG",2) ="FG"

!Rtrim(str)

函数意义:把字符型数据对象str中最右边的空格剔除。

返回值:字符型。

参数:str,字符型。

实例:!LTrim(" dsfk ") =" dsfk"

!Str(x)

函数意义:将数值型数据对象x的值转换成字符串。

返回值:字符型。

参数:x,数值型。

实例:!Str(0.712) ="0.712"

!StrComp(str1,str2)

函数意义:比较字符型数据对象str1和str2是否相等,返回值为0时相等,否则不相等。不区分大小写字母。

返回值:数值型。

参数:str1,字符型;

str2,字符型。

实例:!StrComp("ABC","abc") = 0

!StrFormat(FormatStr,任意个数变量)

函数意义:格式化字符串,可以格式化任意多个数值。使用方法

为!StrFormat(“%d”,23)或!StrFormat(“%g-%g-%g”,2.3,2.1,2.2)等,类似C语言中的Printf的语法。

返回值:字符型。

参数:FormatStr,字符型,格式化字符串,如:“%d”、

“%g”。后面的参数可以任意多个。

实例:!StrFormat("%g--%g",12,12.34)= "12--12.34"

注意:输出多个数值时,可以使用在多个格式化字符串之间,添加分格符的方法,区别任意个数的输出变量。如:"%g--%g"、"%g-%g-%g"。

!Trim(str)

函数意义:把字符型数据对象str中左右两端的空格剔除。

返回值:字符型。

参数:str,字符型。

实例:!Trim(" dsfk ") ="dsfk"

!Ucase(str)

函数意义:把字符型数据对象str的所有字符转换成大写。

返回值:字符型。

参数:str,字符型。

实例:!UCase("sedERT") ="SEDERT"

!Val(str)

函数意义:把数值类字符型数据对象str的值转换成数值。

返回值:数值型。

参数:str,字符型。

实例:!Val("0.712") = 0.712

注意:使用表签控件显示输出时,必需设置"小数位数"的个数;否则系统将以四舍五入的规则,显示输出整数数值。

定时器操作函数

定时器号:系统定时器的序号1—127,MCGS系统内嵌127个系统定时器。系统定时器以秒为定时单位。

!TimerClearOutput(定时器号)

函数意义:断开定时器的数据输出连接

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:定时器号。

实例:!TimerClearOutput(1),断开1号定时器的数据输出连接

!TimerRun(定时器号)

函数意义:启动定时器开始工作

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:定时器号

实例:!TimerRun(1),启动1号定时器工作。

!TimerStop(定时器号)

函数意义:停止定时器工作

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:定时器号

实例:!TimerStop(1 ),停止1号定时器工作。

!TimerSkip(定时器号,步长值)

函数意义:在计时器当前时间数上加/减指定值

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:定时器号;步长值

实例:!TimerSkip(1,3),1号定时器当前值+3

!TimerReset(定时器号,数值)

函数意义:设置定时器的当前值,由第二个参数设定,第二个参数可以是MCGS变量

返回值:数值型。返回值=0:调用成功;<>0:调用失败。

参数:定时器号;数值

实例:!TimerReset(1,12),设置1号定时器的值为12 !TimerValue(定时器号,0)

MCGS结合数据库提取复杂报表

实验名称:结合数据库提取复杂报表 一、实验目的 1、了解如何在数据库中提取相关数据。 2、将提取的相关数据制成报表形势输出。 二、实验内容 1、学会提取数据库相关数据。 2、学会如何制作报表,并显示提取的数据。 三、实验步骤 1、存盘数据提取 在“运行策略”中新建九个用户策略,策略名称分别为:数据按和提取、数据按最大值提取、数据按最小值提取、数据按平均值提取、数据按累积值提取、数据按样本方差提取、数据按标准差提取、数据按首记录提取、数据按末记录提取。以“数据按和提取”策略为例,进行相应的“存盘数据提取属性设置”。 双击“数据按和提取”进入策略组态,单击工具条中的“新增策略行”,从“工 具箱”中选中“存盘数据提取”拖放到策略行上,单击鼠标左键放好。双击,弹出“存盘数据提取构件属性设置”对话框,如下图设置:

2、存盘数据浏览 在“运行策略”中新建九个用户策略,策略名称分别为:“按和提取历史数据”、“按最大值提取历史数据”、“按最小值提取历史数据”、“按平均值提取历史数据”、“按累积值提取历史数据”、“按样本方差提取历史数据”、“按样本标准差提取历史数据”、“按首记录提取历史数据”、“按末记录提取历史数据”。以“按和提取历史数据”策略为例,进行相应的存盘数据浏览属性设置。 双击“按和提取历史数据”进入策略组态,单击工具条中的“新增策略行”,从 “工具箱”中选中“存盘数据浏览”拖放到策略行 上,单击鼠标左键放好。双击,弹出“存盘数据浏览构件属性设置”对话框,如下图设置,“数值条件”不用设置。

从MCGS 组态软件开发平台上,单击“用户窗口”,双击“数据提取”窗口,进入“动画组态”。从“工具箱”中选取十八次“标准按钮”,一次“标签”拖放到桌面如效果图。标签输入为:按提取方式提取数据;十八个按钮名称分别为:数据按和提取、数据按最大值提取、数据按最小值提取、数据按平均值提取、数据按累积值提取、数据按样本方差提取、数据按标准差提取、数据按首记录提取、数据按末记录提取、打开和数据、打开最大值数据、打开最小值数据、打开平均值数据、打开累积值数据、打开样本方差数据、打开标准差数据、打开首记录数据、打开末记录数据。以“数据按和提取”按钮为例,属性设置,如下图:

MCGS系统内部函数参考手册.docx

MCGS系统内部函数 MCGS内部为用户提供了一些常用的数学函数和对MCGS内部对象操作的函数。组态时,可在表达式中或用户脚本程序中直接使用这些函数。为了与其它名称相区别,系统内部函数的名称一律以“!”符号开头。下面分别介绍各个函数的用途和使用方法。 运行环境操作函数 !CallBackSvr(DatName) 函数意义:调用后台对象 返回值:数值型,后台对象的值 参数:DatName,对象名,数值型 实例:X=! CallBackSvr (X),调用后台数值型对象X 注意:本函数在新版本MCGS系统内部,己经无效。为了保留与旧版本的兼容性, 暂时保留。 !ChangeLoopStgy(StgyName, n) 函数意义:改变循坏策略的循环时间 返回值:数值型。返回值二0:调用正常;〈>0:调用不正常。 参数:StgyName,策略名;n,数值型,以毫秒数表示循环策略的循环时间实 例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为为5 秒 !CioseAllWindow(WndName) 函数意义:关闭所有窗口,如果在字符串"WndName"中指定了一个窗口,则打开这个窗口,关闭其他窗口。如果” WndName”为空串,则关闭所有窗口。 返回值:数值型。返回值:二0:调用正常;〈>0:调用不正常。 参数:WndName,用户窗口名,字符型。 实例:!CloscAllWindow( “工况图”),关闭除了用户窗口“工况图”以外的其他窗I」,若“工况图”窗I」没有打开,则在关闭其他窗I」的同时打开该窗 I」!CloseAllWindow( “”),关闭所有窗口。 !EnableStgy(StgyName, n) 函数意义:打开或关闭某个策略,如报警策略或循环策略等。返回值:数值型。返冋值二0:调用正常;<>0:调用不正常。 参数:StgyName,策略名; n,数值型,为1时表示打开此策略,为0时表示关闭此策略。实例:!EnableStgy(报

MCGS触摸屏编程实例精选

MCGS触摸屏编程实例精选 1.MCGS表格中,两数据连接到两个开关量,要把采集到的“0”和“1”的状态,显示为“关”和“开” 在表格里输入“开|关”,然后连接开关型变量Data1,按钮是让开关量Data1取反。

这样就行了,运行时Data1默认为0显示关,按下按钮后Data1为1显示开,如此反复

2.mcgs里怎么画渐变色 渐变色只有通用版和网络版有,嵌入版没有 方法就是:填充颜色——填充效果,然后根据你的需要设置就行了。

3.如何在mcgs做脚本i0.0=1 让Q输出 当PLC的I0.0有信号,让Q0.0输出,在PLC中做我会,不知道在MCGS中怎么实现 在循环脚本中,循环时间为10ms,条件表达式为1,脚本程序为 IF I0.0 = 1 THEN Q0.0 = 1 ELSE Q0.0 = 0 ENDIF 4.MCGS组态如何实现这样的功能?点击某一部分,弹出登录对话框 这个画面是在有管理员帐户登录的情况下才可以设置的,我现在想实现当有人在没有登录的情况下点击了这个地方,就弹出提示:请先登录。 1条回答 可以先用函数!CheckUserGroup来判断当前登录的用户是不是你需要的用户组,返回只为0表示已经登录了你需要的用户组了,直接进行下一步,如果返回值不为0,表示当前登录的不是你需要的用户组或是没有任何登录,那么用子窗口或者可见度啥的都行,显示出来就行了。 追问

我是想在用户点击了上面图片中的部分时才弹出登录提示,怎么实现呢? 回答 你把判断的语句写到图片的事件里就行了 追问 求在具体一点,不知道怎么写。 回答 点控件,右键——事件——Click——事件连接脚本

mcgs数据后处理

第五讲MCGS数据后处理及报表 一、数据后处理 MCGS中的数据后处理,其本质上是对历史数据库的处理,MCGS的存盘历史数据库是原始数据的基本集合,MCGS数据后处理就是对这些原始数据的数据操作(修改、删除、添加、查询等数据库操作),数据后处理的目的是要从这些原始数据中提炼出对用户真正有用的数据和信息并以数据报表的形式展示出来。 在工程应用中,对采集的工程物理量存盘后,需要对数据库进行操作和对存盘的数据进行各种统计,以根据需要作出各种形式的报表。MCGS组态软件提供的存盘数据浏览构件,存盘数据提取构件和历史表格构件可以完成各种形式的数据报表, MCGS组态软件数据处理流程如下: 如图所示,数据从采集设备输入,通过设备驱动进入实时数据库,MCGS组态软件提供对实时数据库的实时变量进行数据和曲线等多种显示方式,同时可通过数据存盘控制器随时对变量的存盘周期和方式进行修改,可对在硬盘上存好的数据进行多种处理。MCGS存盘数据浏览构件可以对存好的数据直接进行显示、打印、查询、修改、删除、添加记录和统计。MCGS存盘数据提取构件可以对存好的数据按照一定的时间间隔或不同的统计方式进行提取处理,可以把数据提取到MCGS实时数据库中的变量中,也可以根据一定的查询条件把相关的数据提取到其它的各种形式的数据库。用MCGS存盘数据提取构件配合MCGS历史表格可以完成工控项目中最常使用的各种形式的报表(如标准形式的日报表、月报表、年报表,不定记录项的报表,定要求查询报表等)。 二、结合数据提取做复杂的报表 我们通过实例来进行详细讲解,具体如下: 1、新建一个窗口

在MCGS组态软件开发平台上,单击“用户窗口”进入,再单击“新建窗口”按钮,生成“窗口0”,选中“窗口0”,单击“窗口属性”按钮,弹出“用户窗口属性”设置,设置完毕按“确认”按钮,退出。如图: 双击“数据提取”进入动画组态,最终效果如下图: 2、模拟所需要的数据

MCGS脚本程序要点

MCGS脚本程序 本专题将从以下几个方面介绍MCGS脚本程序: ●脚本程序简介 ●脚本语言编辑环境 ●脚本程序语言要素 ●脚本程序基本语句 ●脚本程序的查错和运行 脚本程序简介 对于大多数简单的应用系统,MCGS的简单组态就可完成。只有比较复杂的系统,才需要使用脚本程序,但正确地编写脚本程序,可简化组态过程,大大提高工作效率,优化控制过程。 用户脚本程序是由用户编制的、用来完成某种特定的流程控制和操作处理的程序。它被封装在一个功能构件里(称为脚本程序功能构件),在后台由独立的线程来运行和处理,能够避免由于单个脚本程序的错误而导致整个系统的瘫痪。 在MCGS中,脚本语言的编程语法非常类似于普通的Basic语言,但在概念和使用上更简单直观,力求做到使大多数普通用户都能正确、快速地掌握和使用。 脚本程序在MCGS组态软件中有四种应用场合,分别为: ●在“运行策略”中的“脚本程序”构件中使用; ●在“菜单”属性设置中的“脚本程序”中使用,作为菜单的一个辅助功 能运行; ●在“用户窗口”属性设置中的“启动脚本”、“循环脚本”、“退出脚本” 中使用; ●更常见的用法是应用在动画界面的事件中,如在窗口中的“标准按钮” 属性设置中的“脚本程序”中使用。 MCGS引入的事件驱动机制,与VB或VC中的事件驱动机制类似,比如:对用户窗口,有装载,卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键事件等等。这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。 脚本语言编辑环境 脚本程序编辑环境是用户书写脚本语句的地方。脚本程序编辑环境主要由脚本程序编辑框、编辑功能按钮、MCGS操作对象列表和函数列表、脚本语句和表达式4个部分构成,分别说明如下:

MCGS时间函数

!TimeGetSpan(iTime1,iTime2) 函数意义:计算两个时间iTime1和iTime2之差; 返回值:开关型,两时间之差; 参数:iTime1,开关型,时间值; iTime2,开关型,时间值; 实例:!TimeGetSpan(iTime1,iTime2) 实例说明:计算两个时间iTime1和iTime2之差。 !TimeStr2I(strTime) 函数意义:将表示时间的字符串(YYYY/mm/DD HH:MM:SS)转换为时间值; 返回值:开关型,转换后的时间值; 参数:strTime,字符型,以字符串型表示的时间(必须是YYYY/mm/DD HH:MM:SS的格式); 实例:!TimeStr2I(“2001/1/1 3:15:28”) 实例说明:将表示时间的字符串“2001/1/1 3:15:28”转换为开关型的时间值。 !TimeI2Str(iTime,strFormat) 函数意义:将时间值转换为字符串表示的时间; 返回值:字符型,转换后的时间字符串; 参数:iTime,开关型,时间值;(注意,这里只能用!TimeStr2I(strTime)转换出的时间值,否则将不能正确转换。); strFormat,字符型,转换后的时间字符串的格式; 实例:!TimeI2Str(Time,"%A, %B %d, %Y") 实例说明:将时间值转换为字符串型,其表示格式为:星期,月日,年。 !TimeI2Str的格式化标准为:

星期的简写。如:Fri是Friday的简写表示星期五 %A 星期的全称。如:Sunday表示星期日 %b 月份的简写。如:Jan是January的简写表示一月 %B 月份的全称。如:June表示六月 %c 适合于本地习惯的时间日期表示。如:05/07/01 09:47:12,表示2001年5月7日9时47分12秒 %d 月份中日期的十进制表示。如:07表示7日 %H 24时制的小时表示。如:17表示下午5时 %I 12时制的小时表示。 %j 一年中天数的十进制表示。如:2001-06-07是一年中第158天 %m 月份的十进制表示。如:06表示6月 %M 分钟的十进制表示。如:28表示28分 %p 以AM/PM方式表示上下午;AM表示上午;PM表示下午

mcgs常见问题集锦

MCGS 问题集锦转自MCGS ye_w,2007-03-17 14:21:14 1 :如何打印历史数据:用运行策略........ 历史数据浏览构件...... 打印。 2:如何打印历史曲线:用打印用户窗口。 3 : McgsE.dat有什么作用? McgsE.dat有什么作用 McgsE.dat 存在于\harddisk\mcgsbin 目录之下 A. 组态工程 B. 报警数据(MCGS_ALARM) 如果下载新工程,旧的McgsE.dat被删除,然后生成新的文件 4 : McgsE.ini有何作用 McgsE.ini存在于\harddisk\mcgsbin目录之下存储系统存盘属性信息,包括:存盘路径,自动刷新周期,预留空间大小,存盘文件大小等 他的信息会出现在启动属性中(即开机时点击触摸屏后出现的窗口) 5:报表数据存盘停机处理通过测试该问题是由于用户不知道如何使用而产生的问题,现在将具体的使用方法进行详细的介绍: 1)?打开报表数据存盘属性设置窗口。 2)?在基本属性页里面点中“使用停机存盘文件”既在左面的框中打勾即可。 3)?然后将“记录周期”中输入10秒,表示每10秒中保存一次当前的数据值,也可以其他 的值,但是不能为0秒。 4)?在通道设置页中,对于列“处理方法”中选中“末值”。 5)?在输出数据库页中的“数据库类型”可以选中“Access数据库”或“ ODBC数据库”,如 果选中的类型为“ Access数据库它时,则“数据库名称”可以这样写:“ d:\mcgs\work\停机处理.mdb ” ;如果选中的类型为"ODBC数据库”则可以这样写:“ driver=sql server;server=c仪;database=张丹; uid=sa;pwd=clx M;列“数据库表名”可以自己取一个名称;歹(J “处理时间”可以自己选; 列“处理单位”如果需要处理1天内的数据则选择“天”则一天一条记录(如果是1小时则 1小时保存一条记录),如果需要处理几天以内的数据则选“月”,依次类推。列“刷新间隔”可以自己选,“保留数据可以选择为360天的数据,这样可以保证一年。 6?在窗口里面的启动脚本中增加“!SetDevice (设备0, 6,“loaddata“)”或者在启动策略里面增加M!SetDevice (设备0, 6,"loaddata”)”。 7?报警策略使用中的常见问题

非常实用的mcgs触摸屏编程实例精选上

MCGS实例解答 1.MCGS表格中,两数据连接到两个开关量,要把采集到的“0”和“1”的状态,显示为“关”和“开” 在表格里输入“开|关”,然后连接开关型变量Data1,按钮是让开关量Data1取反。

这样就行了,运行时Data1默认为0显示关,按下按钮后Data1为1显示开,如此反复

2.mcgs里怎么画渐变色 渐变色只有通用版和网络版有,嵌入版没有 方法就是:填充颜色——填充效果,然后根据你的需要设置就行了。

3.如何在mcgs做脚本i0.0=1 让Q输出 当PLC的I0.0有信号,让Q0.0输出,在PLC中做我会,不知道在MCGS中怎么实现 在循环脚本中,循环时间为10ms,条件表达式为1,脚本程序为 IF I0.0 = 1 THEN Q0.0 = 1 ELSE Q0.0 = 0 ENDIF 4.MCGS组态如何实现这样的功能?点击某一部分,弹出登录对话框 这个画面是在有管理员帐户登录的情况下才可以设置的,我现在想实现当有人在没有登录的情况下点击了这个地方,就弹出提示:请先登录。 1条回答 可以先用函数!CheckUserGroup来判断当前登录的用户是不是你需要的用户组,返回只为0表示已经登录了你需要的用户组了,直接进行下一步,如果返回值不为0,表示当前登录的不是你需要的用户组或是没有任何登录,那么用子窗口或者可见度啥的都行,显示出来就行了。 追问

我是想在用户点击了上面图片中的部分时才弹出登录提示,怎么实现呢? 回答 你把判断的语句写到图片的事件里就行了 追问 求在具体一点,不知道怎么写。 回答 点控件,右键——事件——Click——事件连接脚本

MCGS

相关内容回首页 脚本程序语言要素 在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嵌入版对象,用户窗口、设备和数据对象都是公开对象,因此,语句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的参数,包括鼠标位置,按键信息等送到连接的数据对象,然后,在事件连接的脚本程序中,就可以对这些数据对象进行处理。 表达式 由数据对象(包括设计者在实时数据库中定义的数据对象、系统内部数据对象和系统函数)、括号和各种运算符组成的运算式称为表达式,表达式的计算结果称为表达式的值。

MCGS脚本程序

MCGS 脚本程序 本专题将从以下几个方面介绍MCG脚本程序:脚本程序简介 脚本语言编辑环境 脚本程序语言要素脚本程序基本语句脚本程序的查错和运行 脚本程序简介 对于大多数简单的应用系统,MCG的简单组态就可完成。只有比较复杂的系统,才需要使用脚本程序,但正确地编写脚本程序,可简化组态过程,大大提高工作效率,优化控制过程。 用户脚本程序是由用户编制的、用来完成某种特定的流程控制和操作处理的程序。它被封装在一个功能构件里(称为脚本程序功能构件),在后台由独立的线程来运行和处理,能够避免由于单个脚本程序的错误而导致整个系统的瘫痪。 在MCG中,脚本语言的编程语法非常类似于普通的Basic语言,但在概念和使用上更简单直观,力求做到使大多数普通用户都能正确、快速地掌握和使用。 脚本程序在MCG组态软件中有四种应用场合,分别为:在“运行策略”中的“脚本程序”构件中使用;在“菜单”属性设置中的“脚本程序”中使用,作为菜单的 一个辅助功能运行; 在“用户窗口”属性设置中的“启动脚本” 、“循环脚本”、“退出脚本” 中 使用; 更常见的用法是应用在动画界面的事件中,如在窗口中的“标准按钮” 属性设置 中的“脚本程序”中使用。 MCGSI入的事件驱动机制,与VB或VC中的事件驱动机制类似,比如:对用户窗口,有装载,卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键事件等等。这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。 脚本语言编辑环境脚本程序编辑环境是用户书写脚本语句的地方。脚本程序编辑环境主要由脚本程序编辑框、编辑功能按钮、MCG操作对象列表和函数列表、脚本语句和表达式4 个部分构成,分别说明如下:

昆仑通态脚本开发函数

!GetCurrentChannelNum() 函数意义:得到当前触发单通道写的通道号; 返回值:整型。-1 失败,> 0 通道号; 参数:无; 实例:!GetCurrentChannelNum()。 !SetIntChannelValueByName(DataStr,n) 函数意义:根据通道的名称对通道进行设置,假设该通道类型为整型(开关型)变量; 返回值:整型。-1 失败,0 成功。 参数:DataStr,字符型,需要设置的通道名称的字符串。 n,整型,需要设定的整型值 实例:! SetIntChannelValueByName ("发电机启动",1)。 实例说明:将通道“发电机启动”的值设为1; !SetSingleChannelValueByName(DataStr,x) 函数意义:根据通道的名称对通道进行设置,假设该通道类型为单精度浮点型(数值型)变量; 返回值:整型。-1 失败,0 成功。 参数:DataStr,字符型,需要设置的通道名称的字符串。 n,单精度浮点型,需要设定的值 实例:! SetSingleChannelValueByName ("温度",45.5)。 实例说明:将通道“温度”的值设为45.5; !SetIntChannelValueByNum(DataNum,n) 函数意义:根据通道的编号对通道进行设置,假设该通道类型为整型(开关型)变量; 返回值:整型。-1 失败,0 成功。 参数:DataNum,整型,需要设置的通道编号,从1开始。 n,整型,需要设定的整型值 实例:! SetIntChannelValueByNum(3,1)。 实例说明:将通道3的值设为1; !SetSingleChannelValueByNum(DataNum,x) 函数意义:根据通道的编号对通道进行设置,假设通道为单精度浮点型(数值型)变量;返回值:整型。-1 失败,0 成功。 参数:DataNum,整型,需要设置的通道编号,从1开始。 x,单精度数值型,需要设定的数值 实例:!SetSingleDataV alueByNum(2,45.5)。 实例说明:将通道2的值设为45.5。 !GetIntChannelValueByName(DataStr,ByRef n) 函数意义:根据通道的名字,将该通道的值读出,假设该通道为整型(开关型)变量; 返回值:整型。-1 失败,0 成功。 参数:DataStr,字符型,需要读取的通道名的字符串。

MCGS之构造实时数据库范文

构造实时数据库 本章介绍MCGS中数据对象和实时数据库的基本概念,从构成实时数据库的基本单元——数据对象着手,详细说明在组态过程中,构造实时数据库的操作方法,主要包括以下几个方面: ●数据对象的定义 ●数据对象的类型 ●数据对象的属性 ●数据对象的作用域 ●内部数据对象和系统函数 ●数据对象的浏览、查询和检查 概述 重点: 介绍两个重要概念;数据对象和实时数据库 数据对象的概念 在MCGS中,数据不同于传统意义的数据或变量,以数据对象的形式来进行操作与处理。数据对象它不仅包含了数据变量的数值特征,还将与数据相关的其它属性(如数据的状态、报警限值等)以及对数据的操作方法(如存盘处理、报警处理等)封装在一起,作为一个整体,以对象的形式提供服务,这种把数值、属性和方法定义成一体的数据称为数据对象。 在MCGS中,用数据对象表示数据,可以把数据对象认为是比传统变量具有更多功能的对象变量,象使用变量一样来使用数据对象,大多数情况下只需使用数据对象的名称来直接操作数据对象。 实时数据库的概念 在MCGS中,用数据对象来描述系统中的实时数据,用对象变量代替传统意义上的值变量,把数据库技术管理的所有数据对象的集合称为实时数据库。 实时数据库是MCGS系统的核心,是应用系统的数据处理中心。系统各个部分均以实时数据库为公用区交换数据,实现各个部分协调动作。 设备窗口通过设备构件驱动外部设备,将采集的数据送入实时数据库;由用户窗口组成的图形对象,与实时数据库中的数据对象建立连接关系,以动画形式实现数据的可视化;运行策略通过策略构件,对数据进行操作和处理。如下图所示:

定义数据对象 重点: 定义数据对象的方法 定义数据对象的过程,就是构造实时数据库的过程。 定义数据对象时,在组态环境工作台窗口中,选择“实时数据库”标签,进入实时数据库窗口页,显示已定义的数据对象,如下图所示。 对于新建工程,窗口中显示系统内建的四个字符型数据对象,分别是InputETime、InputSTime、InputUser1和InputUser2。当在对象列表的某一位置增加一个新的对象时,可在该处选定数据对象,鼠标单击“新增对象”按钮,则在选中的对象之后增加一个新的数据对象;如不指定位置,则在对象表的最后增加一个新的数据对象。新增对象的名称以选中的对象名称为基准,按字符递增的顺序由系统缺省确定。对于新建工程,首次定义的数据对象。缺省名称为Data1。需要注意的是,数据对象的名称中不能带有空格,否则会影响对此数据对象存盘数据的读取。 为了快速生成多个相同类型的数据 对象,可以选择“成组增加”按钮,弹 出“成组增加数据对象”对话框,一次 定义多个数据对象,如上图所示。成组 增加的数据对象,名称由主体名称和索 引代码两部分组成。其中,“对象名称” 一栏,代表该组对象名称的主体部分, 而“起始索引值”则代表第一个成员的 索引代码,其它数据对象的主体名称相同,索引代码依次递增。成组增加的数据对象,其他特性如数据类型、工程单位、最大最小值等都是一致的。

mcgs定时器操作函数设置

定时器号:系统定时器的序号1—127,MCGS系统内嵌127个系统定时器。 系统定时器以秒为定时单位。 !TimerClearOutput(定时器号) 函数意义: 断开定时器的数据输出连接 返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号。 实例:!TimerClearOutput(1),断开1号定时器的数据输出连接 !TimerRun(定时器号) 函数意义:启动定时器开始工作 返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号 实例:!TimerRun(1),启动1号定时器工作。 !TimerStop(定时器号) 函数意义:停止定时器工作 返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号 实例:!TimerStop(1 ),停止1号定时器工作。 !TimerSkip(定时器号,步长值) 函数意义:在计时器当前时间数上加/减指定值 返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号;步长值 实例:!TimerSkip(1,3),1号定时器当前值+3 !TimerReset(定时器号,数值) 函数意义:设置定时器的当前值,由第二个参数设定,第二个参数可以是MCGS变量返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号;数值 实例:!TimerReset(1,12),设置1号定时器的值为12 !TimerValue(定时器号,0) 函数意义:取定时器的当前值

返回值:将定时器的值以数值型的方式输出(数值格式) 参数:定时器号 实例:Data3=!TimerValue(1,0),取定时器1的值给Data3 !TimerStr(定时器号,转换类型) 函数意义:以时间类字符串的形式返回当前定时器的值 返回值:字符型变量,将定时器的值以字符型的方式输出(时间格式) 参数:定时器号 转换类型值:开关型 = 0:取定时器的值以“00:00”形式输出; = 1:取定时器的值以“00:00:00”形式输出; = 2:取定时器的值以“0 00:00:00”形式输出; = 3:取定时器的值以“0 00:00:00.000”形式输出; 实例:Time=!TimerStr(1,1),取定时器的值以“00:00:00”形式输出给Time !TimerState(定时器号) 函数意义:取定时器的工作状态 返回值:数值型变量,0 - 定时器停止,1 - 定时器运行 参数:定时器号 实例:data1=!TimerState(1),取定时器1的工作状态给data1 !TimerSetLimit(定时器号,上限值,参数3) 函数意义:设置定时器的最大值,即设置定时器的上限 返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号;上限值;参数3,1 - 表示运行到60后停止;0 - 表示运行到60后重新循环运行 实例:!TimerSetLimit(1,60,1),设置1号定时器的上限为60,运行到60后停止。 !TimerSetOutput(定时器号,数值型变量) 函数意义:设置定时器的值输出连接的数值型变量 返回值:数值型。返回值=0:调用成功;<>0:调用失败。 参数:定时器号;数值型变量,定时器的值输出连接的数值型变量 实例:!TimerSetOutput(1,Data0),将1号定时器的数据连接到Data0 !TimerWaitFor(定时器号,数值)

mcgs常见问题集锦

MCGS问题集锦转自MCGS ye_w,2007-03-17 14:21:14 1:如何打印历史数据:用运行策略------历史数据浏览构件-------打印。 2:如何打印历史曲线:用打印用户窗口。 3:McgsE.dat有什么作用? McgsE.dat有什么作用 McgsE.dat存在于\harddisk\mcgsbin目录之下 A.组态工程 B.报警数据(MCGS_ALARM) 如果下载新工程,旧的McgsE.dat被删除,然后生成新的文件 4:McgsE.ini有何作用 McgsE.ini存在于\harddisk\mcgsbin目录之下 存储系统存盘属性信息,包括:存盘路径,自动刷新周期,预留空间大小, 存盘文件大小等 他的信息会出现在启动属性中(即开机时点击触摸屏后出现的窗口) 5:报表数据存盘停机处理 通过测试该问题是由于用户不知道如何使用而产生的问题,现在将具体的使用方法进行详细的介绍: 1).打开报表数据存盘属性设置窗口。 2).在基本属性页里面点中“使用停机存盘文件”既在左面的框中打勾即可。 3).然后将“记录周期”中输入10秒,表示每10秒中保存一次当前的数据值,也可以其他的值,但是不能为0秒。 4).在通道设置页中,对于列“处理方法”中选中“末值”。 5).在输出数据库页中的“数据库类型”可以选中“Access数据库”或“ODBC数据库”,如果选中的类型为“Access数据库它时,则“数据库名称”可以这样写:“d:\mcgs\work\ 停机处理.mdb”; 如果选中的类型为“ODBC数据库”则可以这样写:“driver=sql server;server=clx;database=张丹;uid=sa;pwd=clx”;列“数据库表名”可以自己取一个名称;列“处理时间”可以自己选;列“处理单位”如果需要处理1天内的数据则选择“天”则一天一条记录(如果是1小时则1小时保存一条记录),如果需要处理几天以内的数据则选“月”,依次类推。列“刷新间隔”可以自己选,“保留数据可以选择为360天的数据,这样可以保证一年。 6.在窗口里面的启动脚本中增加“!SetDevice(设备0, 6,"loaddata")”或者在启动策略里面增加“!SetDevice(设备0, 6,"loaddata")”。 7.报警策略使用中的常见问题 使用报警策略,通常使用工具箱中的报警显示、报警策略和清空报警记录和报警变量设置配合完成基本的报警功能,需要注意的是,清空报警记录的函数!DelAllAlmDat支持的变量类型不包括组对象,注意在此函数中使用组对象。

MCGS脚本

脚本 一、脚本程序语言要素 1、数据类型 开关型值为0或1 数值型值在3.4E±38范围内 字符型值为最多512字符组成的字符串 2、变量及常量 变量:脚本程序中,不能由用户自定义变量,也不能定义子程序和子函数。只能对实时数据库中的数据对象进行操作,用数据对象的名称来读写数据对象的值,而且无法对数据对象的其他属性进行操作。可以把数据对象看作是脚本程序中的全局变量,在所有的程序段共用。开关型、数值型、字符型三种数据对象分别对应于脚本程序中的三种数据类型。在脚本程序中不能对组对象和事件型数据对象进行读写操作,但可以对组对象进行处理。 常量: 开关型常量 0或1的数字 数值型常量带小数点或不带小数点的数值,如:12.45, 100 字符型常量双引号内的字符串,如:“OK”, “正常” 系统内部变量:MCGS系统定义的内部数据对象作为系统内部变量,在脚本程序中可自由使用,在使用内部变量时,变量的前面必须加“$”符号,如 $Date,内部变量的详细资料请参考《用户参考手册》的内部变量一章或在线帮助中的内部变量列表。 系统内部函数:MCGS系统定义的内部函数,在脚本程序中可自由使用,在使用内部函数时,函数的前面必须加“!”符号,如!abs(),内部函数的详细资料请参考《用户参考手册》的内部函数一章或在线帮助中的内部函数列表。 3、MCGS对象 MCGS操作对象包括工程中的用户窗口、用户策略和设备构件,MCGS操作对象在脚本程序中不能当作变量和表达式使用,但可以当作系统内部函数的参数使用,如!Setdevice(设备0,1,””)。 4、表达式 由数据对象(包括设计者在实时数据库中定义的数据对象、系统内部数据对象和系统内部函数)、括号和各种运算符组成的运算式称为表达式,表达式

MCGS 文件操作函数

MCGS 文件操作函数 2009-08-08 14:58:24| 分类:工业控制(MCGS,K |字号大中小订阅 注意:文件操作函数中所涉及到文件的路径均为绝对路径 !FileAppend(strTarget ,strSource) 函数意义:将文件strSource中的内容添加到文件strTarget后面,使两文件合并为一个文件。 返回值:开关型。 参数:strTarget,字符型,目标文件,需要写绝对路径; strSource,字符型,源文件,需要写绝对路径。 实例:!FileAppend(“d:\a.txt”,”d:\b.txt”) 实例说明:将D盘下文件b.txt合并到文件a.txt的后面。若a.txt不存在,则会自动新建一个文件。 !FileCopy(strSource ,strTarget) 函数意义:将源文件strSource复制到目标文件strTarget,若目标文件已存在,则将目标文件覆盖。 返回值:开关型;

返回0,操作不成功; 返回非0值,操作成功。 参数:strSource,字符型,源文件; strTarget,字符型,目标文件。 实例:!FileCopy(“d:\a.txt”,”d:\b.txt”) 实例说明:将D盘下文件a.txt复制到b.txt。 !FileDelete(strFilename) 函数意义:将strFilename指定的文件删除。 返回值:开关型; 返回0,操作不成功; 返回非0值,操作成功。 参数:str1,字符型,将被删除的文件。 实例:!FileDelete(“d:\a.txt”) 实例说明:删除将D盘下文件a.txt。 !FileFindFirst(strFilename,objName,objSize,objAttrib)

mcgs数据后处理

mcgs数据后处理 第五讲 MCGS数据后处理及报表 一、数据后处理 MCGS中的数据后处理~其本质上是对历史数据库的处理~MCGS的存盘历史数据库是原始数据的基本集合~MCGS数据后处理就是对这些原始数据的数据操作,修改、删除、添加、查询等数据库操作,~数据后处理的目的是要从这些原始数据中提炼出对用户真正有用的数据和信息并以数据报表的形式展示出来。在工程应用中~对采集的工程物理量存盘后~需要对数据库进行操作和对存盘的数据进行各种统计~以根据需要作出各种形式的报表。MCGS组态软件提供的存 史表格构件可以完成各种形式的数据报盘数据浏览构件~存盘数据提取构件和历 表~ MCGS组态软件数据处理流程如下: 如图所示~数据从采集设备输入~通过设备驱动进入实时数据库~MCGS组态软件提供对实时数据库的实时变量进行数据和曲线等多种显示方式~同时可通过数据存盘控制器随时对变量的存盘周期和方式进行修改~可对在硬盘上存好的数据进行多种处理。MCGS存盘数据浏览构件可以对存好的数据直接进行显示、打印、查询、修改、删除、添加记录和统计。MCGS存盘数据提取构件可以对存好的数据按

照一定的时间间隔或不同的统计方式进行提取处理~可以把数据提取到MCGS实时数据库中的变量中~也可以根据一定的查询条件把相关的数据提取到其它的各种形式的数据库。用MCGS存盘数据提取构件配合MCGS历史表格可以完成工控项目中最常使用的各种形式的报表,如标准形式的日报表、月报表、年报表~不定记录项的报表~定要求查询报表等,。 二、结合数据提取做复杂的报表 我们通过实例来进行详细讲解~具体如下: 1、新建一个窗口 1 在MCGS组态软件开发平台上~单击“用户窗口”进入~再单击“新建窗口”按钮~生成“窗口0”~选中“窗口0”~单击“窗口属性”按钮~弹出“用户窗口属性”设置~设置完毕按“确认”按钮~退出。如图: 双击“数据提取”进入动画组态~最终效果如下图:

MCGS高级教程

第一章MCGS的可扩充性 1.1 概述 MCGS组态软件是一套功能丰富、简单易用的组态软件,大部分工程师都可以很容易的使用这套组态软件来完成一个完整的工程项目。但是,当用户熟练的掌握了这套组态软件以后,用户必然会寻求在这套组态软件上进一步开发的能力。以实现有自己风格的界面、自己设计的控制算法和与自己硬件相匹配的驱动程序。其他一些长期使用Visual Basic、C++、Delphi的高级工程开发人员,为了充分利用自己的编程特长和已有的程序积累,也希望能够把自己编写的程序装配到MCGS组态软件中。 大部分面向工程应用的工程人员,虽然没有时间和精力开发自己的专有模块,但是,却希望能够从MCGS开发组或第三方的专业、业余开发者那里获得为自己定制的特殊模块,并且能够很方便的装配到现有的MCGS组态软件上。而对硬件开发商和一些高级的开发人员,都希望能够开发出自己的设备驱动模块和专业化、行业化的模块以充分利用MCGS软件的组态功能,当然,对于这些专业化的高品质模块,位于工程一线的工程人员也是具有非同一般的兴趣的。 为了满足用户的这些要求,MCGS提供一套可扩充的接口规范和配套的高级开发工具包。使用接口规范和工具包开发出来的扩充构件,具有很优越的特点: z安全保密。扩充构件是编译成二进制代码的,可以很好的保护您的工作。非法用户不可能通过反编译你的扩充构件来获得你独有的设备驱动构件、特殊的运算构件和 特殊的窗口界面。你更可以使用扩充构件来进行自己的加密,以防止你制作的工程 被任意拷贝,保护你自己的利益。 z简单快速。MCGS组态软件高级开发包中提供了常用的数据后处理构件源代码。初级用户可以直接使用这些数据后处理构件,但高级用户则可以修改这些构件的源代 码,以满足自己特殊的要求。众所周知,工控工程的数据后处理部分具有各自不同 的要求,因此一般的组态软件,都要求用户自己使用例如Excel、Access等软件来完 成自己的特殊的后处理。但是MCGS组态软件除了可以用类似的方法处理外,还提 供了另外一种不同的处理方法。那就是高级用户可以修改MCGS组态软件高级开发 工具包中所提供的后处理构件源代码,然后生成自己的扩充构件,装配到MCGS组 态软件上,就可以组成自己独有的后处理系统。 z性能优异。使用这种方法开发出来的MCGS组态软件的扩充构件具有很高的速度和性能。据微软公司测试,使用Visual C++软件开发出来的程序,只比使用Visual Basic 开发出来的速度高百分之十,有时甚至还低于Visual Basic。而使用Visual Basic开 发的方便性和易用性又是Visual C++所远远不能比拟的。在编写MCGS组态软件的 扩充构件时,Visual Basic确实是一种最佳选择。 z任务明确。MCGS的这种扩充构件具有清晰的结构,你完全可以向MCGS组态软件

MCGS触摸屏高级教程

MCGS培训教程(高级部分) 经过初级培训,您已经对MCGS组态软件的框架结构有了大致的了解,在初级培训教材的指引下,您一定能组态出一些简单的工程项目,但如果想应用自如还有一定困难。在高级培训教材帮助下,您一定会如虎添翼,组态出令人满意的工程。 培训目的经过培训,您可以熟练应用MCGS组态软件中的各项功能; 能根据工艺现场要求熟练制作动画流程; 能处理相对复杂的曲线、报表、数据后处理等需求; 能熟练使用MCGS脚本程序进行复杂的工业流程控制。 培训内容动画制作,流程控制策略,设备组态,结合存盘数据提取做复杂的历史报表,配方构件应用及MCGS使用技巧介绍。 参考手册《MCGS用户指南》《MCGS参考手册》 MCGS多媒体教程MCGS工控组态软件联机帮助 E-mail:support@https://www.360docs.net/doc/e41628583.html, 网址:https://www.360docs.net/doc/e41628583.html, 目录 简介 目录 第一讲构造实时数据库 一、MCGS实时数据库的概述 二、数据对象的类型 1、开关型数据对象 2、数值型数据对象 3、字符型数据对象 4、事件型数据对象 5、数据组对象 三、数据对象的定义 四数据对象的作用域

第二讲动画制作 一、封面制作 二、动画效果 第三讲设备窗口组态 一、概述 三、设备在线调试 四、数据前处理 第四讲脚本程序 一、脚本程序语言要素 1、数据类型 2、变量及常量 3、MCGS对象 4、表达式 5、运算符 6、运算符优先级 二、脚本程序基本语句 1、赋值语句 2、条件语句 3、退出语句 4、注释语句 三、脚本程序应用场合及样例 1、脚本程序在“窗口”中的应用 2、脚本程序在“标准按钮”中的应用 3、脚本程序在“菜单”中的应用 第五讲MCGS数据后处理及报表

相关文档
最新文档