mcgs函数

mcgs函数
mcgs函数

运行环境操作函数

!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),关闭报警策略,使报警策略无效。

!GetDeviceName(Index)

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

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

参数:Index,数值型。

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

!GetDeviceState(DevName)

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

返回值:数值型。

=-1调用不正常。

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

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

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

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

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

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

注意:设备名称是在设备构件基本属性页中设置的。

!GetLastMouseActionTime()

函数意义:获取最后一次鼠标的动作发生的时间。

返回值:开关型。返回为time_t类型的时间值,可以在时间操作脚本函数中使用。

参数:无。

实例:在画面,系统对话框上的鼠标事件中添加!GetLastMouseActionTime(),获取鼠标最后动作时间。

!GetStgyName(Index)

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

返回值:字符型。

参数:Index,数值型。

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

!GetWindowName(Index)

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

返回值:字符型。

参数:Index,数值型。

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

!GetWindowState(WndName)

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

返回值:数值型。

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

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

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

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

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

!OpenSubWnd(参数1,参数2,参数3,参数4,参数5,参数6)

函数意义:显示子窗口。

返回值:字符型,如成功就返回子窗口n,n表示打开的第n个子窗口。

参数值:参数1:要打开的子窗口名。

参数2:整型,打开子窗口相对于本窗口的X坐标。

参数3:整型,打开子窗口相对于本窗口的Y坐标。

参数4:整型,打开子窗口的宽度。

参数5:整型,打开子窗口的高度。

参数6:整型,打开子窗口的类型。

0位:是否模式打开,使用此功能,必须在此窗口中使用CloseSubWnd来

关闭本子窗口,子窗口外别的构件对鼠标操作不响应

1位:是否菜单模式,使用此功能,一旦在子窗口之外按下按钮,则子窗

口关闭。

2位:是否显示水平滚动条,使用此功能,可以显示水平滚动条

3位:是否垂直显示滚动条,使用此功能,可以显示垂直滚动条

4位:是否显示边框,选择此功能,在子窗口周围显示细黑线边框

5位:是否自动跟踪显示子窗口,选择此功能,在当前鼠标位置上显示子

窗口。此功能用于鼠标打开的子窗口,选用此功能则忽略iLeft,iTop的值,

如果此时鼠标位于窗口之外,则在窗口对中显示子窗口

6位:是否自动调整子窗口的宽度和高度为缺省值,使用此功能则忽略

iWidth和iHeight的值。

子窗口的关闭办法:

使用关闭窗口直接关闭,则把整个系统中使用到的此子窗口完全关闭

使用指定窗口的CloseSubWnd关闭,可以使用OpenSubWnd返回的控件名,

也可以直接指定子窗口关闭,此时只能关闭此窗口下的子窗口。

!SetActiveX()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!CallBackSvr()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!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”开始工作。!SetMousePace(开关型)

函数意义:设置鼠标灵敏度。

参数:开关型参数为每次按键消息需要设置的鼠标移动间隔,一般情况下请输入正整数,如果输入0值表示禁止该功能

实例:!SetMousePace(1);

默认情况下该功能为关闭状态,鼠标灵敏度为0,如果想启用该功能在启

动策略中调用!SetMousePace脚本函数指定步长值。

!SetNumPanelSize(Type,Size)

函数意义:根据需要和显示屏的大小调整软键盘的大小。

返回值:开关型。

返回值=0:修改成功。新设置将在下一次打开输入键盘时生效。

返回值=1:修改失败,参数错误。(可能是没有匹配的type ,或者size

参数超出范围)。

参数:Type,键盘类型,数值型;

1:代表修改数值输入键盘。

2:代表修改字符输入键盘;。

3:代表修改用户登录对话框。

Size,键盘大小,数值型;数值范围:200像素~1024像素;

实例:!SetNumPanelSize(1,500),将数值输入键盘改为500*500大小,该正方形相对于屏幕居中。所有修改将在下一次打开输入框时生效,运行环境

退出后,将自动保留上次输入框的大小。

注意事项:键盘放大缩小功能在重新下载工程时没有删除配置文件,换工程后设置仍然有效,除非重新进行了设置。如果要去掉原来的设置则需要手工删

除panelSize.ini文件,该文件位于\harddisk\mcgsbin目录下。

!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()。

!SetStyMode(StgyName)

函数意义:通过脚本函数(位于系统函数-运行环境类)实现函数调用方式的策略调用。

返回值:开关型,返回值恒为0。

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

实例:!SetStgyMode(阀门关闭),执行一次运行策略“阀门关闭”,“阀门关闭”策略执行完毕后,才返回调用者,调用者继续执行以下程序。

!GetCurrentLanguageIndex( )

函数意义:用于获取当前使用的语言的索引值。

返回值:开关型。返回值为语言项索引值。索引值按照组态下拉框依次排序0,1,2…

参数:无。

实例:N=!GetCurrentLanguageIndex( ) ,其中N为开关型变量。

!SetCurrentLanguageIndex ( 开关型 )

函数意义:通过索引项设定当前语言环境

返回值:开关型。返回值为0表示执行成功,否则表示失败。

参数:开关型。语言索引值。如果索引参数值超出当前选择语言范围,那么函数不生效。

实例:!SetCurrentLanguageIndex(1),表示设置当前语言为英文(选择语言为CH,EN)。

!GetLocalLanguageStr( 开关型 )

函数意义:获得指定自定义ID对应的当前语言的内容。

返回值:字符型。

参数:开关型。自定义ID索引值。如果无当前ID对应自定义文本,则返回空值。

实例:!GetLocalLanguageStr(2),前提是有ID为2的自定义文本内容,如果当前语言为英文,则返回ID为2的自定义文本记录的英文内容。

!GetLanguageNameByIndex(开关型)

函数意义:根据语言索引值返回语言名称,返回值为字符型。

返回值:字符型,当前语言的名称。

参数:开关型。语言的索引值。如果当前索引值无对应语言,则返回空值。

实例:!GetLanguageNameByIndex(1) ,假如当前语言为中文、英文,则返回值为English。

数据对象操作函数

!AnswerAlm(DatName)

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

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

参数:DatName,数据对象名。

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

!ChangeDataSave(Datname,n)

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

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

参数:Datname,数据对象名;n,数值型,以秒表示的存盘间隔时间。

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

!ChangeSaveData(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:数值型时间量,新的存盘间隔,单位:秒。

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

!FlushDataInitValueToDisk()

函数意义:把所有数据对象的初始值写入磁盘。

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

参数:无。

!CopySaveDat()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!DelSaveDat(DatName,Num)

函数意义:删除组对象DatName对应的存盘数据中最早Num小时内的存盘数据,

如果 Num <= 0 ,那么就是删除该组对象全部的存盘数据。如果 Num >

0, 就删除以当前时间为基点Num个小时之前的内容,删除时是按文件

删除的,如果数据不足一个存盘文件,是不会被删除的。

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

参数:DatName,组对象名。

Num , 参数名。

实例:!DelSaveDat(电机温度,12) ,删除组对象“电机温度”对应的存盘数

据中以当前时间为基点倒推12个小时之前的数据。但从当前时间至倒

推的12个小时之内的内容会被保存。

注意:该函数只对组对象操作有效。

!DelAllSaveDat()

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

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

参数:DatName:组对象名;

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

盘数据

注意:该函数只对组对象操作有效。

!EnableDataSave(name,n)

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

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

参数:name,数据对象名;

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

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

!ExportHisDataToCSV(文件名,组对象名,字段名,开始时间,结束时间,最大记录数,导出模式,导出参数,进度指示数据对象名,取消控制数据对象名)

函数意义:

1.导出指定组对象存盘数据,导出的条件包括:开始时间-结束时间,最大导出总条数;

2.导出字段列表,组对象为MCGS_ALARM则表示导出报警历史数据;

3.可指定导出文件名和路径,主要是U盘导出,可以追加方式也可覆盖方式导出;

4.可显示导出过程进度情况;

5.可取消和中止长时间的导出过程;

6.导出格式为csv文件,导出的第一行为字段名字。

返回值:开关型。

返回1指定组对象错误,可能组对象没有保存历史数据或者没有该组对象

返回2指定的时间格式错误

返回3指定的无效的数据对象名

返回4无效的导出模式

返回5同时只能支持一个csv导出

参数:

文件名:字符型,指定导出的文件绝对路径名,指定的第一级目录不能创

建,其子目录如果不存在则可以创建。这样避免U盘不存在时创

建U盘目录。注意:第一级目录不能自动创建用户必须保证其存

在;

组对象名:导出的组对象名字。

字段名:字符型,用逗号分隔的要导出的字段名,不需要指定时间字段,

默认第一二个字段就为记录时间字段。如果为空字符串则导出所

有字段。

开始时间,结束时间:用表示的时间字符串“YYYY-MM-DD HH:MM:SS”;

最大记录数:希望导出的最大记录数,超过该记录数就返回,停止导出;

导出模式:“1”表示覆盖现有文件,“2”表示追加到文件最后;

导出参数:暂时为空,保留以后使用;

进度指示数据对象名:开关型数据对象,导出过程中该对象值反映出当前

已导出记录条数,如果导出过程中其他异常结束则

通过该对象返回同函数返回错误码;

进度指示错误码:

返回-1------文件不能打开

返回-2------没有可导出的数据

返回-4------文件操作出现错误

控制数据对象名:指定一个开关型数据对象,该对象控制导出执行,启动

导出时会自动设置该变量为0,用户在导出过程中想取

消导出则可以设置该值为<0的任何值,导出函数运行

结束后会自动设置对象值为1;

进度指示错误码:

返回0------导出成功

返回-1-----导出路径不存在

返回1------指定组对象错误,可能组对象没有

保存历史数据或者没有该组对象

返回2------指定的时间格式错误

返回3------指定的无效的数据对象名

返回4------无效的导出模式

返回5------同时只能支持一个csv导出实例: ret= !ExportHisDataToCSV("\usb

harddisk\yang.csv","group","data1,data4","2007/1/1 0:0:0","2009/1/1

0:0:0",20000,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()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!GetEventP()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!GetEventT()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!MoveSaveDat()

函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!SaveData(DatName)

函数意义:把数据对象DataName对应的当前值存入存盘数据库中。本函数的操作使对应的数据对象的值存盘一次。此数据对象必须具有存盘属性,且

存盘时间需设为0秒。否则会操作失败。

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

参数:DatName,数据对象名。

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

!SaveDataInit()

函数意义:本操作把设置有“退出时自动保存数据对象的当前值作为初始值”属性的数据对象的当前值存入组态结果数据中作为初始值,防止突然断电

而无法保存,以便MCGS嵌入版下次启动时这些数据对象能自动恢复其

值。

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

参数:无。

实例:!SaveDataInit()。

注意:此函数单独使用不起作用,需要和函数!Flushdatainitvaluetodisk()一起使用。

!SaveDataOnTime(Time,TimeMS,DataName)

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

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

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

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

实例: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

!TransToUSB(组对象名,起始时间,结束时间,导出状态,进度指示,转出模式,保留参数)函数意义:将XXX组对象的存盘数据导出到"USB HARDDISK"目录下,保存为

“XXX.csv”文件,模拟环境则是保存到与可执行文件相同路径下。

返回值:开关型。

0:参数没有错误。

1:第一个参数错误。(请检查是否组对象名称,或“MCGS_ALARM”)

2: 时间参数格式错误。

3:状态变量的类型错误。(两个变量都必须是开关量)

5:同时只能支持一个csv导出。

参数:组对象名:字符型,要导出的组对象名称(或“MCGS_ALARM”)。

起始时间:字符型,要导出的历史数据的开始时间,格式:YYYY-MM-DD

HH:MM:SS。

结束时间:字符型,要导出的历史数据的结束时间,格式:YYYY-MM-DD

HH:MM:SS。

导出状态:开关型,进度指示数据对象名(开关量),输出导出状态。

正常导出存盘后输出当前已经导出的记录条数。

当创建导出文件“XXX.csv”失败时输出-1。(请检查下位机是否正常插入了U盘)

当前没有记录可导出时输出-2。(请检查对应的组对象是否有存盘信息,或者开始时间结束时间是否设置正确)

导出过程中出现未知数据类型时输出-3。(不应该出现)

导出过程中出现文件操作异常时输出-4。(请检查U盘容量是否

足够)

进度指示:开关量,指定一个数字型或开关型对象,该对象控制导出执

行,启动导出时会自动设置该变量为0,用户在导出过程中想取消导

出可设置该变量为<0的任何值,导出函数运行结束后会自动设置对象

值为1。

注:6.5(01.0010)之前的版本,此参数为原导出状态变量2,显示的是导出数据总条数。

转出模式:开关型,保留,设置为0。

保留参数:字符型,保留, 设置为空字符串。

实例:

!TransToUSB(MCGS_ALARM , 2008-12-1 00:00:00 , 2008-12-31

00:00:00 , Switch01 , Switch02 , 0 , "")。

注意事项:

该函数最多只能导出30000条记录。当满足导出时间条件的记录数大

于30000时,只导出前30000条记录。

!CopyDateFileToDisk(pathName,dataType,copyState)

函数意义: 拷贝当前运行工程的数据到指定的目录pathName中。

返回值:

1:在拷贝的过程中,数据对象copyState,由0转变为非0.表示用户不

想继续拷贝。

0:表示拷贝成功。

-1:当前工程中,当前运行工程中没有组对象要存盘。

-2:创建目录pathName失败。

-3:创佳索引文件MCGS_DATA.ini失败或者对此文件进行写操作失败。

-4:参数dataType的值,不正确,目前只支持值为0。

-5:磁盘空间不足。

-6:参数copyState不是数据对象类型。

-7:参数copyState是数据对象类型,但不是开关型数据对象。

-8:参数copyState在一开始调用此脚本时,就为非0。

参数说明:

pathName:字符串型.要拷贝数据到此的路径名.例如:在模拟环境可以

写"d:\test",在运行环境可写"harddisk\test"。

dataType:开关型.拷贝数据的类型,0表示历史数据,1表示报警数据.

目前只支持拷贝历史数据,报警数据还没有处理。

copyState:数据对象型.是否拷贝的标志.当为0表示可以拷贝,为非

0表示取消当前的拷贝。

实例:!CopyDateFileToDisk("harddisk\test",0,copyState) 把当前工程中历史数据拷贝到目录"harddisk\test"中(如copyState为0表示拷贝,

为非表示取消)。

说明:一般此脚本要配合组态环境中的一个小程序DataTrans.exe来一起操作.

把拷贝的数据目录,通过U盘或其他方式,导到上位机(PC),通过用程

序DataTrans.exe来进行数据的转换。

用户登录操作函数

!ChangePassword()

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

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

参数:无。

实例:!ChangePassword()。

!CheckUserGroup(strUserGroup)

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

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

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

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

!Editusers()

函数意义:弹出用户管理窗口,供管理员组的操作者配置用户。

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

参数:无。

实例:!Editusers()。

!EnableExitLogon(n)

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

返回值:数值型。返回值=1:操作成功;返回值=0:操作失败。

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

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

!EnableExitPrompt(n)

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

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

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

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

!GetCurrentGroup()

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

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

参数:无。

实例:!GetCurrentGroup()。

!GetCurrentUser()

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

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

参数:无。

实例:!GetCurrentUser()。

!LogOff()

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

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

参数:无。

实例:!LogOff()。

!LogOn()

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

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

参数:无。

实例:!LogOn()。

字符串操作函数

!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”

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

返回值:字符型。

参数:s,开关型。

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

!I2Oct(s)

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

返回值:字符型。

参数:s,开关型。

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

!InStr(n,str1,str2)

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

返回值:数值型。

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

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

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

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

!Lcase(str)

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

返回值:字符型。

参数:str,字符型。

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

!Left(str,n)

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

返回值:字符型。

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

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

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中,脚本语言的编程语法非常类似于普通的 Basic 语言,但在概念和使用上更简单直观,力求做到使大多数普通用户都能正确、快速地掌握和使用。 脚本程序在MCGS组态软件中有四种应用场合,分别为: 在“运行策略”中的“脚本程序”构件中使用; 在“菜单”属性设置中的“脚本程序”中使用,作为菜单的一个辅助功 能运行; 在“用户窗口”属性设置中的“启动脚本” 、“循环脚本”、“退出脚本” 中使用; 更常见的用法是应用在动画界面的事件中,如在窗口中的“标准按钮” 属性设置中的“脚本程序”中使用。 MCGS引入的事件驱动机制,与 VB或 VC中的事件驱动机制类似,比如: 对用户窗口,有装载,卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键 事件等等。这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。 脚本语言编辑环境 脚本程序编辑环境是用户书写脚本语句的地方。脚本程序编辑环境主要由脚 本程序编辑框、编辑功能按钮、 MCGS操作对象列表和函数列表、脚本语句和表 达式 4 个部分构成,分别说明如下:

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时间函数

!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表示下午

昆仑通态脚本

相关内容回首页数据对象操作函数 !AnswerAlm(DatName) 函数意义:应答数据对象DatName所产生的报警。如对应的数据对象没有报警产 生或已经应答,则本函数无效。 返回值:数值型,=0为操作成功,<>0为操作失败。 参数:DatName,数据对象名。 实例:!AnswerAlm(电机温度),应答数据对象“电机温度”所产生的报警。 !ChangeDataSave(Datname,n) 函数意义:改变数据对象Datname存盘的周期。 返回值:数值型,=0为操作成功,<>0为操作失败。 参数:Datname,数据对象名;n,数值型,以秒表示的存盘间隔时间。 实例:!ChangeDataSave(温度,5),温度的存盘间隔时间为5秒。 !ChangeSaveData(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:数值型时间量,新的存盘间隔,单位:秒。 实例:!ChangeSaveData(电机1,-2,5),把组对象“电机1”对应的存盘数据中昨天的存盘数据的存盘间隔改为5秒钟。 !FlushDataInitValueToDisk() 函数意义:把所有数据对象的初始值写入磁盘,调用后即刻刷盘。 返回值:数值型,返回值=0:调用正常,<>0:调用不正常。 参数:无。 !FreshSaveData() 函数意义:实现报警组对象和事件组对象(存盘周期为0)的强制刷盘功能。调用后即刻将报警组对象和事件组对象在内存缓冲区中的存盘数据强制写入磁盘。 返回值:数值型,返回值=0:调用正常,<>0:调用不正常。 参数:无。 !CopySaveDat() 函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。 !DataGetInt (变量名,返回值) 函数意义:通过变量名读开关型变量的值。 返回值:开关型, 返回0:执行成功; 返回1:类型不匹配; 返回3:变量不存在。 参数:变量名,字符型,开关型变量的名称。 返回值,开关型,保存返回的值。 实例: Ret=!DataGetInt(变量名,Int)。

MCGS组态控制系统演示工程操作步骤..

水箱液位控制系统演示工程操作步骤 一、创建新工程 1、双击桌面中的图标,进入MCGS组态环境工作台,如图1所示。 2、点击图1中的“新建窗口”,出现“窗口0”图标。 3、点击“窗口0”鼠标右键,选择“属性”,按照图2进行设置,则窗口名称变为“水箱液 位控制系统”,如图2右图所示。。 图2

二、画面设计 1、在“水箱液位控制”窗口点击菜单中的【工具箱】图标,单击插入元件按钮, 打开【对象元件管理】中的【储藏罐】,选择罐17,点击确定。如图3所示,则所选中的罐出现在桌面的左上角,用鼠标改变其大小及位置。 图3 2、按照同样的方法,【储藏罐】选中2个罐(罐17,罐53),【阀】选中2个阀(阀58,阀 44),1个泵(泵40)。按图4放置。 图4 3、选中工具箱中的【流动快】按钮,单击鼠标并移动光标放置流动快。如图5所示设置

流动快。 图5 4、选中流动块,点击鼠标右键【属性】,按图6设置属性。 图6 5、添加文字,选中工具箱中的【标签】按钮,鼠标的光标变为“十字”形,在窗口任 意位置拖曳鼠标,拉出一个一定大小的矩形。建立矩形框后,鼠标在其内闪烁,可直接输入“水箱液位控制系统演示工程”文字。选中文字,鼠标右键【属性】,按图7设置。

图7 6、点击菜单中的,可变更字体大小。按图5添加其他文字。 三、MCGS数据对象设置 2、单击工作台【实时数据库】按钮,进入【实时数据库】窗口。单击窗口右边的【新增对 象】按钮,在窗口的数据对象列表中,就会增加新的数据对象。双击选中对象,按图8设置数据对象属性。 图8 3、按照图9设置其他数据对象属性。

图9 4、双击【液位组】,存盘属性按图10设置,组对象成员按图11设置。 图10

非常实用的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 脚本程序 本专题将从以下几个方面介绍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定时器操作函数设置

定时器号:系统定时器的序号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 文件操作函数 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交通灯脚本程序

IF 模拟运行=1 THEN IF 启动=1 THEN !TimerReset(1,0) 南灯0=1 西灯2=1 西通=1 !TimerWaitFor(1,20) 西灯2=0 !TimerWaitFor(1,21) 西灯2=1 !TimerWaitFor(1,22) 西灯2=0 !TimerWaitFor(1,23) 西灯2=1 !TimerWaitFor(1,24) 西灯2=0 !TimerWaitFor(1,25) 西灯1=1 !TimerWaitFor(1,27) 西灯1=0 西通=0 西灯0=1 南灯0=0 南灯2=1 南通=1 !TimerWaitFor(1,47) 南灯2=0 !TimerWaitFor(1,48) 南灯2=1 !TimerWaitFor(1,49) 南灯2=0 !TimerWaitFor(1,50) 南灯2=1 !TimerWaitFor(1,51) 南灯2=0 南灯1=1 !TimerWaitFor(1,53) 南灯1=0 南通=0 南灯0=1 西灯0=0 西灯2=0 !TimerReset(1,0) endif

ELSE 启动=SD 西灯2=东G 西灯1=东Y 西灯0=东R 南灯2=南G 南灯1=南Y 南灯0=南R ENDIF if 启动=1 then !TimerRun(1) if 南通=1 then 南车=南车+2 北车=北车+2 西人=西人+1 东人=东人+1 endif if 西通=1 then 东车=东车+2 西车=西车+2 北人=北人+1 南人=南人+1 endif if 西通=1 then 南车=0 北车=0 西人=0 东人=0 endif if 南通=1 then 东车=0 西车=0 北人=0 南人=0 endif if 北人>337 then 北人=0 if 西人>262 then 西人=0 if 南人>340 then 南人=0 if 东人>256 then 东人=0 if 西车>922 then 西车=-400 if 东车>892 then 东车=-441 if 北车>482 then 北车=-220 if 南车>529 then 南车=-181 else

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

一、脚本的两个要点 1、脚本程序:数据的逻辑运算,与PLC程序、界面的条件相对应。 2、执行条件:决定执行的时机。 二、脚本编辑器 脚本编辑器包含有执行条件选择界面和脚本程序编辑界面。 脚本编辑界面有三种: 1、控件的事件选项: 执行条件有:单击鼠标、左双击鼠标、右双击鼠标、鼠标按下、鼠标移动等 2、策略窗口: 执行条件有:启动时、退出时、循环执行等 3、按钮自带 执行条件有:按下、抬起 三、脚本程序基本语法 脚本程序的功能是对实时数据库里的数据逻辑运算;即根据输入数据的变化改变输出数据,使之符合系统要求。 在系统设计时,要学会巧设中间数据。 基本的语句有: 1、数据运算 执行:执行时,直接执行数据运算 2、if 条件 then 数据运算 执行:条件满足(逻辑为1),执行后面的数据运算(一条运算)

3、if 条件 then 数据运算1 endif 执行:条件满足(逻辑1),执行后面的数据运算(可多条运算) 4、if 条件 then 数据运算 1 else 数据运算2 endif 执行:条件满足(逻辑1),执行数据运算1,条件不满足(逻辑0)执行数据运算2.多条件的逻辑关系可用条件连接语句: 1、and :与 条件1 and 条件2 :要条件1 和条件2 都为1 ,条件1 and 条件2 才为1, 否则为0 2、or:或 条件2 or 条件2 :条件1、条件2只要有1个1 ,条件1 or 条件2 为1 . 四、脚本编写注意事项: 1、注意脚本程序执行后的数据值是否与PLC程序的要求值相符。 2、要注意脚本程序的执行时间是否恰当。 3、对于没有动作的控件要用用户策略、中间变量完成脚本执行。

非常实用的mcgs触摸屏编程实例下(10例)-

13.组态控制技术mcgs 下图脚本程序如何编 IF 实际总水量< 设定总水量THEN 下罐进水阀=1 下罐排水阀=0 ELSE IF 实际总水量> 设定总水量THEN 下罐进水阀=0 下罐排水阀=1 ELSE IF 实际总水量= 设定总水量THEN IF 下水位< 下水位设定量THEN

循环泵=0 上罐进水阀=0 上罐排水阀=1 ELSE IF 下水位> 下水位设定量THEN 上罐排水阀=0 上罐进水阀=1 循环泵=1 ENDIF ENDIF ENDIF ENDIF ENDIF 当然如果你的下水位是由开关量来确定的话,后面那一部分也可以改成: IF 实际总水量= 设定总水量THEN IF 下水位低=1 THEN 循环泵=0 上罐进水阀=0 上罐排水阀=1 ELSE IF 下水位高=1 THEN 上罐排水阀=0 上罐进水阀=1 循环泵=1 上面只是大体的一个思路,里面还是有很多需要补充的地方,比如给上水罐注水时,是否需要先判断进水阀是否打开再启动循环泵,给下水罐注水时是否需要判断先关停循环泵再关停进水阀,然后开启上罐排水阀,如果是这种情况的话,建议你可以使用运行策略来完成脚本编写。 14.MCGS 组态软件脚本程序有没有延时指令 !Sleep(mTime) 函数意义:在脚本程序中等待mTime毫秒,然后执行下条语句 实例:!Sleep(10),延时10毫秒 15.怎么使MCGS组态动画实现左右移动?要用脚本程序写

先向右移,再原路返回 很简单的啊,就是双击要实现动画的东西,钩选水平移动,然后在水平移动上选择对应的字地址,将此字地址与要移动的位置对应好,然后在脚本里面对这个字地址编程就可以了。 只要对我之前说的那个对应的字地址编脚本可以了 脚本可以这么编 IF 对应位=0 THEN 中间变量=0 IF 对应位=100 THEN 中间变量= 1 IF 中间变量=0 THEN 对应位= 对应位+ 5 IF 中间变量=1 THEN 对应位= 对应位- 5 16.mcgs怎么实现按钮按下去不弹起 首先放上两个元件,但不是按钮 然后分别设置属性,上面的是“按钮动作——置一——按钮”“可见度——按钮——不可见”如下图

mcgs函数使用

int printf(const char *format,[argument]); format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type 规定数据输出方式,具体如下: 1.type 含义如下: d 有符号10进制整数 i 有符号10进制整数 o 无符号8进制整数 u 无符号10进制整数 x 无符号的16进制数字,并以小写abcdef表示 X 无符号的16进制数字,并以大写ABCDEF表示 F/f 浮点数 E/e 用科学表示格式的浮点数 g 使用%f和%e表示中的总的位数表示最短的来表示浮点数G 同g格式,但表示为指数 c 单个字符 s 字符串 S wchar_t字符(宽字符)类型字符串 % 显示百分号本身 p 显示一个指针,near指针表示为:XXXX far 指针表示为:XXXX:YYYY n 相连参量应是一个指针,其中存放已写字符的个数 2.flags 规定输出格式,取值和含义如下: 无右对齐,左边填充0和空格 - 左对齐,右边填充空格 + 在数字前增加符号+ 或- 0 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-) 空格输出值为正时冠以空格,为负时冠以负号 # 当type=c,s,d,i,u时没有影响 type=o,x,X时,分别在数值前增加'0',"0x","0X" type=e,E,f时,总是使用小数点 type=g,G时,除了数值为0外总是显示小数点 3.width 用于控制显示数值的宽度,取值和含义如下 n(n=1,2,3...) 宽度至少为n位,不够以空格填充 0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充 * 格式列表中,下一个参数还是width 4.prec 用于控制小数点后面的位数,取值和含义如下: 无按缺省精度显示 0 当type=d,i,o,u,x时,没有影响 type=e,E,f时,不显示小数点 n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数 type=其他,表示显示的最大宽度 .* 格式列表中,下一个参数还是width 5.F|N|h|l 表示指针是否是远指针或整数是否是长整数 F 远指针

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组态脚本函数

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)

最新MCGS脚本程序资料

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

MCGS触摸屏高级教程

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

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

相关文档
最新文档