72 lines
2.4 KiB
Text
72 lines
2.4 KiB
Text
@LANGUAGE
|
|
ENGLISH
|
|
|
|
@VERSION
|
|
1.03.00
|
|
|
|
! CI-Eng-Sample classes, compiled on load (COMPILE = 1), CI Server R1.03.00
|
|
! CIENG_INCR : traditional, based on the INCREMENT example of the Tutorial (IM 36K10G10-01EN 5.2)
|
|
! CIENG_TANK : traditional; prompt/attribute, signal to <object section>.LEVEL, item created from
|
|
! the template TEMPLATES.TPL_REAL (automatic name <object>.VOLUME), ERROR in the prolog
|
|
! CIENG_JFLOW: Java; attaches <object section>.INFLOW, creates <object>.sPerMin (automatic name)
|
|
! Changing a class that has objects: compile, then reset the class (see skill class-object-engineering).
|
|
@FIELDS
|
|
NAME,DESCRIPTION,PF_LANGUAGE,TRIGGER_1,COMPILE,LISTING_WANTED,METHOD
|
|
|
|
@CLASS_DF
|
|
"CIENG_INCR","Count CI-Eng-Sample.DEMO.COUNTER 1..100","Traditional","CIENG_1S",1,1,@"
|
|
CLASS CIENG_INCR;
|
|
PROLOG
|
|
SIGNAL INPUT := "CI-Eng-Sample.DEMO.COUNTER";
|
|
BODY
|
|
METHOD UP_AND_DOWN;
|
|
BODY
|
|
IF (INPUT >= 100) THEN
|
|
INPUT := 0;
|
|
ENDIF;
|
|
INPUT := INPUT + 1;
|
|
ENDMETHOD UP_AND_DOWN;
|
|
ENDCLASS CIENG_INCR;
|
|
"@
|
|
"CIENG_TANK","Tank volume from level x capacity","Traditional","",1,1,@"
|
|
CLASS CIENG_TANK;
|
|
PROLOG
|
|
ATTRIBUTE CAPACITY OBJECT FLOAT;
|
|
PROMPT CAPACITY QUERY "Tank capacity (m3)";
|
|
SIGNAL LEVEL := SECTION || ".LEVEL" TRIGGER VALUE;
|
|
SIGNAL VOLUME := FROM "CI-Eng-Sample.TEMPLATES.TPL_REAL" MAKE
|
|
"DESCRIPTION" EQUAL "Tank volume (m3), class CIENG_TANK";
|
|
IF CAPACITY <= 0 THEN
|
|
ERROR "CIENG_TANK: capacity must be > 0";
|
|
ENDIF;
|
|
BODY
|
|
METHOD CALC;
|
|
BODY
|
|
VOLUME := LEVEL * CAPACITY / 100.0;
|
|
IF LEVEL >=: 80.0 THEN
|
|
PRINT "CIENG_TANK ", SECTION, ": level reached 80 pct, volume ", VOLUME;
|
|
ENDIF;
|
|
ENDMETHOD CALC;
|
|
ENDCLASS CIENG_TANK;
|
|
"@
|
|
"CIENG_JFLOW","Inflow per minute (Java)","Java","",1,0,@"
|
|
import fasttools.processfast.*;
|
|
|
|
public class CIENG_JFLOW extends ProcessClass {
|
|
|
|
Signal sInflow = defineDoubleSignal(Signal.Trigger.VALUE);
|
|
Signal sPerMin = defineDoubleSignal();
|
|
|
|
public void create() {
|
|
attachItemToSignal(sInflow, getSectionsPath() + ".INFLOW");
|
|
createItemForSignal(sPerMin, "CI-Eng-Sample.TEMPLATES.TPL_REAL",
|
|
"DESCRIPTION", "Tank inflow (m3/min), class CIENG_JFLOW");
|
|
}
|
|
|
|
public void signalEvent(Signal signal) {
|
|
double mInflow = sInflow.getValueAsDouble();
|
|
sPerMin.setValue(mInflow / 60.0);
|
|
systemMessage("CIENG_JFLOW " + getTag() + ": inflow " + mInflow);
|
|
}
|
|
}
|
|
"@
|