我有一个我想弄清楚的文件。它由运行Windows Embedded CE的嵌入式系统运行。显然它是一个XML文件,但标签中的所有语句都让我摸不着头脑。我从来没有见过这样的东西。
<?xml version="1.0" encoding="utf-8"?>
<MAIN>
<INIT>
<NAME>Init</NAME>
<STATEMENT>SET_ANOUT: anFlowSpeed 1 100;</STATEMENT>
<STATEMENT>SET_OUT: sftNoProductIn = TRUE;</STATEMENT>
<STATEMENT>FORMAT: %gi.TinyStatus = 0;</STATEMENT>
<STATEMENT>IF: inPressFixtureDown = FALSE;</STATEMENT>
<STATEMENT>GOTO: Init1;</STATEMENT>
<STATEMENT>ELSE:;</STATEMENT>
<STATEMENT>IF: inSideAdjustWork = FALSE;</STATEMENT>
<STATEMENT>GOTO: Init2;</STATEMENT>
<STATEMENT>ELSE:;</STATEMENT>
<STATEMENT>GOTO: Init3;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT />
<COMMENT>//INIT 1, FIXTURE WAS NOT DOWN</COMMENT>
<STATEMENT>LABEL: Init1;</STATEMENT>
<STATEMENT>SUB: FIXTUREDOWN;</STATEMENT>
<STATEMENT>ACTUATOR: ProductHolder WORK_24;</STATEMENT>
<STATEMENT>DELAY: T#2s;</STATEMENT>
<STATEMENT>ROBOT: ConvUp POWER_ON;</STATEMENT>
<STATEMENT>ROBOT: ConvUp CALIB_NOWAIT;</STATEMENT>
<STATEMENT>ROBOT: ConvUp WAIT_CALIB DUMMY TO:T#12s;</STATEMENT>
<STATEMENT>ACTUATOR: ProductSideAdjust WORK_20;</STATEMENT>
<STATEMENT>ROBOT: ConvUp MOVE Loc_UpConvProduct TO:T#12s;</STATEMENT>
<STATEMENT>ACTUATOR: ProductHolder HOME_14;</STATEMENT>
<STATEMENT>GOTO: InitCheckDownConv;</STATEMENT>
<COMMENT></COMMENT>
<COMMENT>//INIT2, FIXTURE WAS DOWN, SIDE ADJUST IN HOME</COMMENT>
<STATEMENT>LABEL: Init2;</STATEMENT>
<STATEMENT>ROBOT: ConvUp POWER_ON;</STATEMENT>
<STATEMENT>ROBOT: ConvUp CALIB_NOWAIT;</STATEMENT>
<STATEMENT>ROBOT: ConvUp WAIT_CALIB DUMMY TO:T#12s;</STATEMENT>
<STATEMENT>ACTUATOR: ProductHolder WORK_24;</STATEMENT>
<STATEMENT>DELAY: T#2s;</STATEMENT>
<STATEMENT>ACTUATOR: ProductSideAdjust WORK_20;</STATEMENT>
<STATEMENT>ROBOT: ConvUp MOVE Loc_UpConvProduct TO:T#12s;</STATEMENT>
<STATEMENT>ACTUATOR: ProductHolder HOME_14;</STATEMENT>
<STATEMENT>GOTO: InitCheckDownConv;</STATEMENT>
<COMMENT></COMMENT>
<COMMENT>//INIT3, FIXTURE WAS DOWN, SIDE ADJUST WORK</COMMENT>
<STATEMENT>LABEL: Init3;</STATEMENT>
<STATEMENT>ROBOT: ConvUp POWER_ON;</STATEMENT>
<STATEMENT>ROBOT: ConvUp CALIB_NOWAIT;</STATEMENT>
<STATEMENT>ROBOT: ConvUp WAIT_CALIB DUMMY TO:T#12s;</STATEMENT>
<STATEMENT>ROBOT: ConvUp MOVE Loc_UpConvProduct TO:T#12s;</STATEMENT>
<STATEMENT>GOTO: InitCheckDownConv;</STATEMENT>
<COMMENT></COMMENT>
<COMMENT>// INIT CHECK DOWN CONVEYOR, REMOVE POSSIBLE PRODUCT, CHECK CONNECTION TO UP/DOWN FIXTURE</COMMENT>
<STATEMENT>LABEL: InitCheckDownConv;</STATEMENT>
<STATEMENT>SUB: DETECT_DOWN_FIXTURE;</STATEMENT>
<STATEMENT>SUB: DETECT_UP_FIXTURE;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>ROBOT: ConvUp WAIT_CALIB DUMMY TO:T#12s;</STATEMENT>
<STATEMENT>ROBOT: ConvDown POWER_ON;</STATEMENT>
<STATEMENT>ROBOT: ConvDown CALIB_NOWAIT;</STATEMENT>
<COMMENT>JOTAPI: JOTAPI INITIALIZATE 1;</COMMENT>
<COMMENT>JOTAPI: LMSJOTAPI INITIALIZATE 2;</COMMENT>
<STATEMENT>ROBOT: ConvDown WAIT_CALIB DUMMY TO:T#12s;</STATEMENT>
<STATEMENT>ROBOT: ConvDown MOVE Loc_DownConvProduct TO:T#12s;</STATEMENT>
<STATEMENT>EXECUTE: TEST;</STATEMENT>
<STATEMENT>FORMAT: %gi.TinyStatus = 1;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</INIT>
<EXECUTION>
<NAME>TEST</NAME>
<STATEMENT>LABEL: Start;</STATEMENT>
<STATEMENT>IF: inPressFixtureDown = TRUE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtTopConnector HOME_10;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector HOME_10;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureTopLock HOME_10;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock HOME_10;</STATEMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureTopLock WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: FixtTopConnector WORK_20;</STATEMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange WORK_20;</STATEMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange HOME_10;</STATEMENT>
<STATEMENT>ROBOT: ConvUp MOVE Loc_UpConvProduct AX:1 WD:999;</STATEMENT>
<STATEMENT>ACTUATOR: ProductSideAdjust WORK_24;</STATEMENT>
<STATEMENT>ROBOT: ConvUp WAIT_INPOS DUMMY TO:T#12s;</STATEMENT>
<STATEMENT>ROBOT: ConvDown MOVE Loc_DownConvProduct TO:T#12s;;</STATEMENT>
<COMMENT>// CONVEYORS RUN</COMMENT>
<STATEMENT>SET_ANOUT: anSpeedConvUp 1 100;</STATEMENT>
<STATEMENT>SET_ANOUT: anSpeedConvDown 1 100;</STATEMENT>
<STATEMENT>SET_OUT: outConvUpDir=TRUE;</STATEMENT>
<STATEMENT>SET_OUT: outConvDownDir=TRUE;</STATEMENT>
<STATEMENT>SET_OUT: outConvUpRun=TRUE;</STATEMENT>
<STATEMENT>SET_OUT: outConvDownRun=TRUE;</STATEMENT>
<STATEMENT>DELAY: T#1500ms;</STATEMENT>
<COMMENT>// CHANGE CONVEYOR DIRECTION</COMMENT>
<STATEMENT>SET_OUT: outConvUpDir=FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outConvDownDir=FALSE;</STATEMENT>
<STATEMENT>DELAY: T#1500ms;</STATEMENT>
<COMMENT>// HALT CONVEYORS</COMMENT>
<STATEMENT>SET_OUT: outConvUpRun=FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outConvUpDir=FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outConvDownRun=FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outConvDownDir=FALSE;</STATEMENT>
<STATEMENT>ROBOT: ConvUp MOVE Loc_UpConvSafe AX:1 WD:999;</STATEMENT>
<STATEMENT>ACTUATOR: ProductSideAdjust HOME_14;</STATEMENT>
<STATEMENT>ROBOT: ConvUp WAIT_INPOS DUMMY TO:T#12s;;</STATEMENT>
<STATEMENT>ROBOT: ConvDown MOVE Loc_DownConvSafe AX:1 WD:999;</STATEMENT>
<STATEMENT>ACTUATOR: ProductSideAdjust HOME_14;</STATEMENT>
<STATEMENT>IF: sftNoFixtureIn = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: ProductStopper WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: ProductHolder WORK_20;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>ROBOT: ConvDown WAIT_INPOS DUMMY TO:T#12s;;</STATEMENT>
<STATEMENT>IF: sftNoFixtureIn = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: ProductStopper HOME_10;</STATEMENT>
<STATEMENT>ACTUATOR: ProductHolder HOME_10;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>SUB: FIXTUREUP TRUE;</STATEMENT>
<COMMENT>// ADD POSSIBLE CONVEYOR OPERATION HERE</COMMENT>
<STATEMENT>DELAY: T#2000ms;</STATEMENT>
<STATEMENT>SUB: FIXTUREDOWN;</STATEMENT>
<STATEMENT>GOTO: Start;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</EXECUTION>
<SUB>
<NAME>DETECT_UP_FIXTURE</NAME>
<COMMENT>// IF TESTING ENSURE THAT TOP FIXTURE IS IN PLACE</COMMENT>
<STATEMENT>LABEL: TryAgainUp;</STATEMENT>
<STATEMENT>IF: inFixTopConnConnected = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtTopConnector HOME_14;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>IF: inFixtureTopLock = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureTopLock HOME_14;</STATEMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureTopLock WORK_24;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>IF: inFixtureTopLock = TRUE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtTopConnector WORK_24;</STATEMENT>
<STATEMENT>ELSE:;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureTopLock HOME_14;</STATEMENT>
<STATEMENT>ERROR: CONNECT_FIXTURE NoFixture 10011 1 1;</STATEMENT>
<STATEMENT>GOTO: TryAgainUp;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>IF: inUpperFixtureIn = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtTopConnector HOME_14;</STATEMENT>
<STATEMENT>DELAY: T#500ms;</STATEMENT>
<STATEMENT>SET_OUT: sftNoFixtureIn = TRUE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureTopLock HOME_14;</STATEMENT>
<STATEMENT>SET_OUT: sftNoFixtureIn = TRUE;</STATEMENT>
<STATEMENT>FORMAT: %gs.ErrWarDes = NOUPPERFIXTURE;</STATEMENT>
<STATEMENT>ERROR: WARNING NOFIXTURE 0 2 2 ErrWarDes;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>ACTUATOR: FixtureTopLock WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: FixtTopConnector WORK_20;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</SUB>
<SUB>
<NAME>DETECT_DOWN_FIXTURE</NAME>
<COMMENT />
<COMMENT>// IF TESTING ENSURE THAT LOWER FIXTURE IS IN PLACE</COMMENT>
<COMMENT></COMMENT>
<STATEMENT>LABEL: TryAgainDown;</STATEMENT>
<STATEMENT>IF: inFixDownConnConnected = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector HOME_14;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>IF: inFixtureDownLock = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock HOME_14;</STATEMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock WORK_24;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange HOME_10;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>IF: inFixtureDownLock = TRUE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector WORK_24;</STATEMENT>
<STATEMENT>ELSE:;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector HOME_14;</STATEMENT>
<STATEMENT>DELAY: T#500ms;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock HOME_14;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange WORK_20;</STATEMENT>
<STATEMENT>ERROR: CONNECT_FIXTURE NoFixture 10021 1 1;</STATEMENT>
<STATEMENT>GOTO: TryAgainDown;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>DELAY: T#1s;</STATEMENT>
<STATEMENT>IF: inLowerFixtureIn = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector HOME_14;</STATEMENT>
<STATEMENT>DELAY: T#500ms;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock HOME_14;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange WORK_20;</STATEMENT>
<STATEMENT>SET_OUT: sftNoFixtureIn = TRUE;</STATEMENT>
<STATEMENT>FORMAT: %gs.ErrWarDes = NOLOWERFIXTURE;</STATEMENT>
<STATEMENT>ERROR: WARNING NOFIXTURE 0 2 2 ErrWarDes;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT />
<STATEMENT>IF: sftNoFixtureIn = FALSE;</STATEMENT>
<STATEMENT>IF: inFixtureDownLock = FALSE OR inFixDownConnConnected = FALSE OR inProdHolderHome = FALSE AND inProdHolderWork = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector HOME_14;</STATEMENT>
<STATEMENT>DELAY: T#500ms;</STATEMENT>
<STATEMENT>ACTUATOR: FixtureDownLock HOME_14;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange WORK_20;</STATEMENT>
<STATEMENT>ERROR: CONNECT_FIXTURE NoFixture 10023 1 1;</STATEMENT>
<STATEMENT>GOTO: TryAgainDown;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<COMMENT></COMMENT>
<STATEMENT>ACTUATOR: FixtureDownLock WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownConnector WORK_20;</STATEMENT>
<STATEMENT>ACTUATOR: FixtDownChange HOME_10;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</SUB>
<SUB>
<NAME>FIXTUREUP</NAME>
<PARAMETERS>bWaitSensor</PARAMETERS>
<STATEMENT>SET_OUT: outFlowControlEN = TRUE;</STATEMENT>
<STATEMENT>SET_ANOUT: anFlowSpeed 1 100;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtManualUp = FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtManualDown = FALSE;</STATEMENT>
<STATEMENT>IF: bWaitSensor = TRUE;</STATEMENT>
<STATEMENT>ACTUATOR: PressFixtureAuto WORK_24;</STATEMENT>
<STATEMENT>WAIT_IN: inPressFixtureMid = TRUE T#4s;</STATEMENT>
<STATEMENT>SET_ANOUT: anFlowSpeed 1 %gi.ClosingSpeed;</STATEMENT>
<STATEMENT>WAIT_IN: inPressFixtureUp = TRUE T#10s;</STATEMENT>
<STATEMENT>SET_ANOUT: anFlowSpeed 1 100;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtManualUp = TRUE;</STATEMENT>
<STATEMENT>ACTUATOR: PressFixtureAuto WORK_20;</STATEMENT>
<STATEMENT>ELSE:;</STATEMENT>
<STATEMENT>ACTUATOR: PressFixtureManual WORK_20;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>SET_OUT: outFlowControlEN = FALSE;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</SUB>
<SUB>
<NAME>FIXTUREDOWN</NAME>
<STATEMENT>SET_OUT: outFlowControlEN = TRUE;</STATEMENT>
<STATEMENT>SET_ANOUT: anFlowSpeed 1 100;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtAutoUp = FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtAutoDown = FALSE;</STATEMENT>
<COMMENT>(*SET_OUT: outPressFixtManualDown = TRUE;*)</COMMENT>
<STATEMENT>ACTUATOR: PressFixtureManual HOME_10;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtManualUp = FALSE;</STATEMENT>
<STATEMENT>ACTUATOR: PressFixtureAuto HOME_10;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtManualDown = FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outPressFixtManualUp = FALSE;</STATEMENT>
<STATEMENT>SET_OUT: outFlowControlEN = FALSE;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</SUB>
<STOP>
<NAME>STOP</NAME>
<STATEMENT>SET_OUT: sftStopFlag = TRUE;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</STOP>
<START>
<NAME>START</NAME>
<STATEMENT>IF: sftStopFlag = TRUE;</STATEMENT>
<STATEMENT>SET_OUT: sftStopFlag = FALSE;</STATEMENT>
<STATEMENT>ENDIF:;</STATEMENT>
<STATEMENT>END:;</STATEMENT>
</START>
</MAIN>
我不确定XML标签是否实际上是语言的一部分,或者实际代码是否只是在XML标签中搭载以供系统解释。有没有人知道这可能是什么?