文档库 最新最全的文档下载
当前位置:文档库 › MCGS组态脚本函数

MCGS组态脚本函数

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

!Trim(str) (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)

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

!RecipeSeekTo(strRecipeName,DataName,str) (54)

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

!TimeSpanGetTotalHours(iTimeSpan) (65)

!TimeSpanGetTotalMinutes(iTimeSpan) (65)

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

函数意义:反正切函数。

返 回 值:数值型,用弧度表示。

参 数:x,数值型。

实 例:!Atn(1) =0.785398

!Arcsin(x)

函数意义:反正弦函数。

返 回 值:数值型,用弧度表示。

参 数:x,数值型。范围为-1~1之间的值。

实 例:!arcsin(1) =1.5708

!Arccos(x)

函数意义:反余弦函数。

返 回 值:数值型,用弧度表示。

参 数:x,数值型。范围为-1~1之间的值。

实 例:!arccos(0.5)=1.0472

!Cos(x)

函数意义:余弦函数。

返 回 值:数值型。

参 数:x,数值型,用弧度表示。

实 例:!Cos(3.14159)=-1.0

!Sin(x)

函数意义:正弦函数。

返 回 值:数值型。

参 数:x,数值型,用弧度表示。 实 例:!Sin(3.14159)=0.0

!Tan(x)

函数意义:正切函数。

返 回 值:数值型。

参 数:x,数值型,用弧度表示。 实 例:!Tan(3.14159)=0.0

!Exp(x)

函数意义:指数函数。

返 回 值:数值型。

参 数:x,数值型。

实 例:!Exp(2.3020585093)=10.0 !Log(x)

函数意义:对数函数。

返 回 值:数值型。

参 数:x,数值型。

实 例:!Log(10)=2.302

!Sqr(x)

函数意义:平方根函数。

返 回 值:数值型。

参 数:x,数值型。

实 例 :!Sqr(4.0)=2.0

!Abs(x)

函数意义:绝对值函数。

返 回 值:数值型。

参 数:x,数值型。

实 例 :!Abs(-3.14159)=3.14159

!Sgn(x)

函数意义:符号函数。

返 回 值:数值型。正数的返回值为1,负数的返回值为-1,0的返回值为0。 参 数:x,数值型。

实 例:!Sgn(-10) = -1;!Sgn(10) = 1;!Sgn(0) = 0

!BitAnd(x,y)

函数意义:按位与。

返 回 值:开关型。

参 数:x,开关型,y,开关型。

实 例:!BitAnd(3,4) =0

!BitOr(x,y)

函数意义:按位或。

返 回 值:开关型。

参 数:x,开关型。Y,开关型

实 例:!BitOr(3,4) =7

!BitXor(x,y)

函数意义:按位异或

返 回 值:开关型。

参 数:x,开关型。Y,开关型

实 例:!BitXor(3,4) = 7

!BitClear(x,y)

函数意义:清除指定位,位置从0开始计算,,到y位止。

返 回 值:开关型。

参 数:x,开关型。Y,开关型

实 例:!BitClear(3,1) = 1,把第2位清空。

!BitSet(x,y)

函数意义:设置指定位,位置从0开始计算,将第y位置1。

返 回 值:开关型。

参 数:x,开关型。Y,开关型

实 例:!BitSet (3,2) = 7

!BitNot(x)

函数意义:按位取反

返 回 值:开关型。

参 数:x,开关型

实 例:!BitNot(0) = 0xffffffff

!BitTest(x,y)

函数意义:检测指定位是否为1,位置从0开始计算,到y位止。 返 回 值:开关型。=0,表示该位不为1;=1,表示该位为1; 参 数:x,开关型。Y,开关型

实 例:!BitTest(3,2) = 0

!BitLShift(x,y)

函数意义:左移。位置从0位开始移动,向左移动y位。

返 回 值:开关型。

参 数:x,开关型。Y,开关型

实 例:!BitLShift(3,1) = 6

!BitRShift(x)

函数意义:右移。位置从0位开始移动,向右移动y位。

返 回 值:开关型。

参 数:x,开关型。Y,开关型

实 例:!BitRShift(3,1) = 1

!Rand(x,y)

函数意义:生成随机数,随机数的范围在x和y之间。

返 回 值:数值型。

参 数:x,数值型。Y, 数值型

实 例:!Rand(3,4) = 3.1

第二章数据对象操作函数

!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

第三章系统操作函数

!AppActive(Title)

函数意义:激活指定的应用程序。使用时一般先用!Shell函数启动指定的应用程序,然后用本函数激活应用程序,再用!SendKeys函数发送击键消息,控制应用程序的执行。

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

参 数:Title,字符型,字符串表达式,所要激活的应用程序窗口的标题。

实 例:!Shell("D:\Office\Excel.exe",6)

! AppActive(“Microsorft Excel – Book1”)

说 明:AppActivate 语句将焦点移动到命名的应用程序或窗口,但并不影响焦点是否最大化或最小化。当用户采取行动改变焦点或将窗口关闭时,就会将焦点从活动的应用程序窗口移动出去。可用 Shell 函数启动一个应用程序并设置窗口样式。在决定激活哪个应用程序时,将 title 与每一个运行中的应用程序的标题字符串进行比较。如果没有完全匹配,就激活任何这样的应用程序,其标题字符串以 title 开头。如果以 title 命名的应用程序有很多实例,则激活任意一个实例。

!Beep()

函数意义:发出嗡鸣声。

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

参 数:无。

实 例:!Beep()

!EnableDDEConnection(DatName,n)

函数意义:启动/停止数据对象的DDE连接。

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

参 数:DatName,数据对象名;

n,数值型,为1时表示启动数据对象的DDE连接。为0时则停止数据对象的DDE连接。

实 例:!EnableDDEConnection(温度,1),启动数据对象“温度”的DDE连接。

!EnableDDEInput(DatName,n)

函数意义:启动/停止数据对象的DDE连接时外部数值的输入。

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

参 数:DatName,数据对象名;

n,数值型,为1时表示启动数据对象的DDE连接,接收外部数值的输入。为0时则停止数据对象的DDE连接过程中外部数值的输入。

实 例:!EnableDDEConnection(压力,1),启动数据对象“压力”的DDE连接,接收外部数值的输入。

!EnableDDEOutput (DatName,n)

函数意义:启动/停止数据对象的DDE连接时向外部输出数值。

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

参 数:DatName,数据对象名;

n,数值型,为1时表示启动数据对象的DDE连接时向外部输出数值的功能。为0时则停止数据对象的DDE连接时向外部输出数值的功能。

实 例:!EnableDDEConnection(压力,1),启动数据对象“压力”通过 DDE连接向外部输出数值的功能。

!LinePrtOutput (str)

函数意义:输出到行式打印机。

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

参 数:str,字符型。

实 例:!LinePrtOutput (“ABCDEFG”),将字符串输出到行式打印机。

!PlaySound(SndFileName,Op)

函数意义:播放声音文件。

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

参 数:SndFileName,字符型,声音文件的名字。

Op,开关型

= 0:停止播放。

= 1:同步播放,播放完毕后再返回(在播放完成之前不能进行其它的操作)。

= 2:播放一遍,启动播放,立即返回。

= 3:循环播放,启动循环播放后立即返回。

实 例:!PlaySound(“c:\ring.wav”,1)播放声音文件。

!SendKeys(string)

函数意义:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。

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

参 数:string,字符串表达式,指定要发送的按键消息。

实 例:!SendKeys("%{F4}"),给当前激活的程序发送Alt+F4击键消息。

说 明:每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 "A" 作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 "ABC" 作为 string。对 SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。为了指定大括号字符,请使用 {{} 及 {}}。为了在按下按键时指定那些不显示的字符,例如:ENTER 或 TAB 以及那些表示动作而非字符的按键,请使用下列代码:

按键 代码

BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP}

BREAK {BREAK}

CAPS LOCK {CAPSLOCK}

DEL or DELETE {DELETE} 或 {DEL}

DOWN ARROW {DOWN}

MCGS脚本程序要点

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

脚本驱动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)

昆仑通态脚本

相关内容回首页数据对象操作函数 !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软件提供了丰富的报表和曲线功能,用以实现实时报表、历史报表、实时曲线、历史曲线等功能,本章主要学习这些功能的组态方法,其中讲到了模拟设备的应用,实时报表、实时曲线显示,如何实现数据的存盘,存盘数据如何生成历史报表和历史曲线,最后还会实际操作人机界面中存盘数据的U盘导出功能。 第1节数据准备 模拟设备是MCGS软件根据设置的参数产生一组模拟曲线的数据,以供用户调试工程使用。可以产生标准的正弦波,方波,三角波,锯齿波信号,且其幅值和周期都可以任意设置。我们首先添加模拟设备,产生一组正弦信号。 1.添加驱动 在工作台中激活设备窗口,鼠标双击进入设备组态画面,点击工具条中的打开“设备工具箱”。 打开“设备工具箱”上的“设备管理”按钮,在通用设备分类下,找到“模拟设备”,添加到选定设备中。 图1-1-1

在“设备工具箱”中的双击“模拟设备”,驱动即被添加到设备窗口中。驱动添加完成后显示效果如下图所示。 图1-1-2 2.连接变量 双击“设备0--[模拟设备]”打开“设备编辑窗口”。点击按钮,打开“快速连接”对话框。将通道个数修改为2个,确认。 图1-1-3 快速连接 驱动的通道0和通道1分别连接了两个变量Data00、Data01。 图1-1-4 点击“设置设备内部属性”,将通道1的正弦信号周期修改为20秒。 图1-1-5

图1-1-6 点击按钮,软件出现“添加数据对象”的提示,点击“全部添加”,即可将Data00、Data01两个变量在MCGS组态工程中进行定义。 图1-1-7 至此,数据准备部分已经完成。点击“设备属性设置”的“启动设备调试”,可以看到模拟设备按照正弦信号产生的调试数据。 图1-1-8 第2节实时报表 实时报表是对变量瞬时值的反映,通常用于将当前时间的数据变量按一定报表格式显示和打印出来。实时报表可以通过MCGS系统的自由表格构件组态实现。这一节,我们要通过自由表格构件实现一个简单的实时报表的功能。 1.添加自由表格 (1)进入用户窗口,点击“新建窗口”,修改窗口名字为“报表”。 (2)双击打开“报表”用户窗口,点击打开“工具箱”,选取自由表格构件图标,在桌面适当位置,绘制一个表格。

昆仑通态触摸屏教程服务宝典

内容简介 本书通过对大量客户问题的总结和归纳,提炼出了100个常见的技术问题,并对每个问题的处理方案进行简明扼要的说明,有助于各级代理商技术人员、终端客户技术人员能够方便、快捷的处理在实际的使用过程中遇见的各种问题。 未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。 版权所有,侵权必究。 服务宝典 北京昆仑通态发行 2010年5月第2版 目录? 第一章常见问题处理流程 (1) 1.清除组态工程密码流程 (1) 2.注册码申请流程 (2) 3.硬件返修流程 (3) 第二章软件问题 (4) 4.MCGS组态软件点数如何计算 (4) 5.网络版客户端个数怎么计算 (4) 6.安装时提示不能安装并口狗驱动 (4) 7.如何安装英文版MCGS通网版软件 (5) 8.加密狗有哪几种类型 (5) 9.检测不到加密狗 (5) 10.打开工程提示文件名不能包含空格.6 11.如何实现开机运行工程 (7) 12.如何查看软件运行记录 (8) 13.如何屏蔽热键 (8) 14.存盘数据浏览中分割时间点含义 (8) 15.历史表格无法显示提取后数据 (9) 16.如何保存数据至SQL数据库 (9) 17.MCGS是否可以访问O RACLE数据..10 18.网络版工程运行和退出速度慢 (10) 19.用IE浏览器浏览网络版工程 (10) 20.工程损坏如何进行修复 (12) 21.如何实现横向打印 (13) 22.脚本驱动可以在通用版中使用吗..13 23.TPC工程运行环境自动重启 (13) 24.TPC工程运行30分钟退出 (14)

25.注册码如何安装 (14) 26.下载工程时提示版本不一致 (15) 27.如何更换TPC中环境 (15) 28.组对象中增加/删除成员不起作用16 29.1秒钟以下的存盘数据怎样实现 (16) 30.如何导出TPC中保存的历史数据 (16) 31.历史表格数据不刷新 (16) 32.历史表格中不显示历史数据 (17) 33.工程运行中如何改报警上下限值..17 34.历史报警不显示 (17) 35.实时报警不显示 (18) 36.TPC中报警数据占用多少空间 (18) 37.TPC中存盘数据占用空间如何计算 18 38.如何更改TPC中软键盘大小 (18) 39.TPC如何进行窗口打印 (19) 40.TPC打印窗口如何充满纸张 (19) 41.网线下载工程失败 (20) 42.如何解决USB下载失败 (20) 43.V ISTA系统下USB无法下载工程 (21) 44.如何实现弹出子窗口 (22) 45.断电后保存作为下次开机初始值..22 46.如何设置工程运行期限 (23) 第三章通讯问题 (24) 47.设备管理器中驱动很少 (24) 48.通用串口父设备,能加多少子设备.24 49.设备调试有数据工程画面无数据..25 50.PLC和模块能否挂接在一个串口下25 51.如何查看设备的通讯状态 (26) 52.通讯状态为-8表示什么意思 (26) 53.运行工程提示串口初始化失败 (26) 54.TPC的COM2口与设备通讯不上..27 55.数据能读不能写 (27) 56.TPC是否支持OPC通讯 (28) 57.200PLC:PLC同TPC7062K通讯接线 28 58.200PLC:PLC同PC机的通讯接线 (28) 59.200PLC:TPC和PLC通讯不上 (28) 60.200PLC:用标准PPI电缆不能通讯.29 61.200PLC:通讯状态跳变是什么原因29

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

昆仑通态连打印机样例说明

示例使用的相关环境和构件版本 MCGSE组态环境:MCGS嵌入版7.7(01.01) MCGSE模拟运行环境:7.7(01.0001) 示例工程TPC类型:TPC1061Ti Win8.1中文版 目录 1喷墨打印机 (2) 1.1触摸屏设置 (2) 1.2打印数据 (2) 1.3打印窗口 (3) 1.4设置窗口打印纸张大小及横向打印设置 (6) 1.5打印历史表格 (6) 1.6动态打印测试1 (7) 1.7动态打印测试2 (7) 1.8动态打印测试3 (7) 2炜煌微型打印机-针氏 (8) 2.1炜煌微型打印机设置 (8) 2.2打印字符 (9) 2.3打印图片曲线 (10) 2.4注意事项 (12) 1

2 1 喷墨打印机 1.1 触摸屏设置 开机运行时点击触摸屏任意地方进入cesvr 界面。选择系统维护->设置系统参数->打印机->打印机设置。打印机选择PCLGUI i nkjet ,端口号选择选择LPT1(需插上打印机之后才能够进行端口号选择,否则无端口号选择项)。其他的选择 默认。如图: 请在触摸屏启动后在插上连接打印机的USB 线。 1.2 打印数据 打印数据窗口可以选择用户需要打印的数据。输入从第几行开始,然后需要打印几行。点击打印即可。使用函数PrintContext()。如果数据较多将会每页打印,每页的数据为组态存盘数据的行数(PS:最多只可打印9页数据,超过的将无法打印)。如图:

参考打印机功能示例.MCE中【打印数据】。 1.3打印窗口 第一种方法是使用嵌入式脚本函数实现窗口的打印。请查看函数!SetWindow()函数说明。调用脚本函数!SetWindow()打印所指定的工程窗口。如图: 3

非常实用的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 个部分构成,分别说明如下:

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——事件连接脚本

昆仑通态脚本开发函数

!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 ,单精度数值型,需要设定的数值 实例:!SetSingleDataValueByNum(2,45.5) 。 实例说明:将通道2的值设为45.5 。 !GetIntChannelValueByName(DataStr,ByRef n) 函数意义:根据通道的名字,将该通道的值读出,假设该通道为整型(开关型)变量;返回值:整型。-1 失败,0 成功。 参数:DataStr ,字符型,需要读取的通道名的字符串。 n ,引用型,整型,保存读出值的变量;实例:! GetIntChannelValueByName (" 发电机启动",n) 。实例说明:将通道“显示容”的值读出,赋给变量n; !GetSingleChannelValueByName(DataStr,ByRef x) 函数意义:根据通道的名字,将该通道的值读出,假设该通道为单精度浮点型(开关型)变量;返回值:整型。-1 失败,0 成功。 参数:DataStr ,字符型,需要读取的通道名的字符串。 x ,引用型,单精度浮点型,保存读出值的变量;实例:! GetSingleChannelValueByName (" 温度",x) 。实例说明:将通道“温度”的值读出,赋给变量x;

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技术基础教学

实训报告 编号:20200201 名称:组态课程考核专业班级:电气1802 组号:7组 姓名:朱山山杨杭 肖常文周天署 指导教师:杨可 2020 年 2月 17 日

实训要求 1. 进行电气安装操作时,必须关断电源,以防人身事故的发生; 2. 实验设备通电前必须经指导老师全面检查方可进行,以免造成设备的损坏;3.编写的程序必须经指导老师认可后才可进入运行调试,不得擅自行动;4.不得带电插拔通信电缆,以免损坏PC和PLC的通信接口; 5.注意安全(220V)不得用手触摸任何接线端; 6.实训完成后,对所有的器件应恢复到初始状态,并交指导教师查收。 7.实训结束后,要做好实验室的环境卫生,关断实验室的电源。

1. 目的 (1)了解组态软件的基本功能,掌握MCGS的功能模块 (2)熟练运用进行控制系统用户窗口、主控窗口、运行策略等 (3)成功编写MCGS脚本程序 (4)熟悉在组态环境下进行的模拟 2. 知识点 MCGS脚本程序的编写,触摸屏多画面动态化的嵌入,单个元件的数据连接,模拟窗口的使用。 3. 器材 装有一台MCGS 的一台PC 4. 控制要求: 板块一:通过脚本程序的编写来控制流水线机械臂半自动化的运行(其中包含机械臂的直线运动以及曲线运动的单循环和多循环,以及直.曲线的复位,同时含有换向开关来操控机械臂的换向运动,最后整个程序装载了传送带和货车来实现整个流水线的操作流程)。 板块二:通过脚本程序的编写来控制整个变光舞台的灯光闪烁及字体变换(编写脚本程序来控制灯光闪烁时间还有字体变换)。 板块三:通过脚本程序的编写及阀门的启停来控制锅炉水位的高低及水位的上下限报警(通过阀门的开关来操控抽水泵的启停继而控制锅炉水位的高低同时会触发从锅炉水位的上下限报警提示来完成整个程序的运行)。 板块四:内容及程序待更新(敬请期待!) 5. 组态变量表

脚本编写要点 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高级教程

第一章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触摸屏编程实例下(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脚本程序资料

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.wendangku.net/doc/801319127.html, 网址:https://www.wendangku.net/doc/801319127.html, 目录 简介 目录 第一讲构造实时数据库 一、MCGS实时数据库的概述 二、数据对象的类型 1、开关型数据对象 2、数值型数据对象 3、字符型数据对象 4、事件型数据对象 5、数据组对象 三、数据对象的定义 四数据对象的作用域

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

昆仑通态工程下载运行详细步骤

模拟运行与工程下载 模拟运行 软件安装完成后打开工程,在模拟运行时会因系统兼容性问题导致运行错误,如图1-1-1所示。 图1-1-1 按照以下方法改进: A 在桌面“MCGS 模拟运行环境”上右击鼠标,选择“属性”,如图1-1-2所示; B 在弹出的对话框中选择兼容性标签页; C 在兼容模式中,勾选以兼容模式运行这个程序,并在下拉列表中选择Windows XP (Service Pack3); D 点击确认后,重新运行模拟运行环境。 图1-1-2 注意: 当独立运行模拟环境时,同样需要将模拟环境设置为兼容模式。 当从组态环境中进行模拟运行时,需将组态环境设置为兼容模式,模拟环境可以不设置。

工程下载 建议使用U盘综合功能包,确保工程可以正常下载,下面介绍具体操作方法。 制作U盘功能包: A 将U盘插入到PC机的USB接口中; B 在工具栏或者菜单工具中点击图1-2-1示按钮或按F5直接进入下载配置窗口; 图1-2-1 C 在弹出的下载配置窗口上,点击制作U盘综合功能包按钮。 此时,如果原先U盘中已经存在U盘综合功能包的目录或者是tpcbackup目录,会弹出已有功能包的提示窗口,点是即可覆盖,如图1-2-2所示。 图1-2-2 D 在弹出的选项中选择第三个选项更新工程,更新MCGS选项可以不选,如图1-2-3所示。 图1-2-3 E 点击确定进行U盘综合功能包的制作,制作完成后弹出成功制作的提示框。

更新工程到屏中: A 将U盘插入到mcgsTpc的USB1主口上,将屏断电重启; B 在出现滚动条且尚未走完时,点击屏的任意处,启动U盘综合功能包,如图1-2-4所示; 图1-2-4 C 点击是进入功能选择界面,如图1-2-5所示; 图1-2-5 D点击用户工程更新按钮,在弹出的窗口中点击开始按钮,在弹出的窗口中点击开始下载按钮进行更新,如图1-2-6所示; E 更新完成后等待屏自动重启,断电重启时可拔出U盘。 图1-2-6

相关文档
相关文档 最新文档