/*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun,4)*/ Package Utils; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(1),419(45,25))*/ /*** USER DEFINED TYPES ***/ /* All user defined types need to be prepared for distribution in such a way that two operators for serializing/deserializing the data are defined. If the type is named one operator to convert the type to string, ToStr, and one operator to convert a given string to the type, to, is needed. */ /* NOTE: Within operator definitions no SDL-procedures can be called! Only operators and external C-functions that return values are available. */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(1),422(20,65))*/ NEWTYPE RoomIdType struct rId CHARSTRING; sId CHARSTRING; operators roomIdTypeToStr:RoomIdType->Charstring; toRoomIdType:Charstring->RoomIdType; operator roomIdTypeToStr referenced; operator toRoomIdType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(1),776(20,105))*/ NEWTYPE PhysReplyType LITERALS ValueRep, WarningRep, ErrorRep, AckRep; operators physReplyTypeToStr:PhysReplyType->Charstring; toPhysReplyType:Charstring->PhysReplyType; operator physReplyTypeToStr referenced; operator toPhysReplyType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(1),773(20,145))*/ NEWTYPE LightSceneType struct name CharString; rIll Lux; dIll Lux; ls LightSourceListType; operators lightSceneTypeToStr: LightSceneType->Charstring; toLightSceneType: Charstring->LightSceneType; operator lightSceneTypeToStr referenced; operator toLightSceneType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(2),995(20,45))*/ NEWTYPE LightSourceListType array(Integer, LightSourceType) operators /* it is assumed that the above array has exactly 3 entries! */ lightSourceListTypeToStr: LightSourceListType->Charstring; toLightSourceListType: Charstring->LightSourceListType; operator lightSourceListTypeToStr referenced; operator toLightSourceListType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(2),983(20,85))*/ NEWTYPE BlindPos struct h Percent; a Angle; operators blindPosToStr: BlindPos->Charstring; toBlindPos: Charstring->BlindPos; operator blindPosToStr referenced; operator toBlindPos referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(3),812(20,40))*/ NEWTYPE CalTimeType struct year, month, day, hour, min, sec Integer; operators toTime: CalTimeType -> Time; fromTime: Time->CalTimeType; calTimeTypeToStr: CalTimeType->Charstring; toCalTimeType: Charstring->CalTimeType; operator calTimeTypeToStr referenced; operator toCalTimeType referenced; /*#ADT (B) #BODY SDL_Time #(toTime)(#(CalTimeType) calTime) { struct tm tempTime; SDL_Time sdlTime; tempTime.tm_year = calTime.year-1900; tempTime.tm_mon = calTime.month-1; tempTime.tm_mday = calTime.day; tempTime.tm_hour = calTime.hour; tempTime.tm_min = calTime.min; tempTime.tm_sec = calTime.sec; #if !defined(XTIMEASINT_TICKS) && !defined(XTIMEASINT_SECS) sdlTime.s = mktime(&tempTime); sdlTime.ns = 0; #else sdlTime = mktime(&tempTime); #endif return (sdlTime); } #(CalTimeType) #(fromTime)(SDL_Time actTime) { struct tm* tempTime; #(CalTimeType) calTime; #if !defined(XTIMEASINT_TICKS) && !defined(XTIMEASINT_SECS) tempTime = localtime (&(actTime.s)); #else tempTime = localtime (&(actTime)); #endif calTime.year = tempTime->tm_year + 1900; calTime.month = tempTime->tm_mon+1; calTime.day = tempTime->tm_mday; calTime.hour = tempTime->tm_hour; calTime.min = tempTime->tm_min; calTime.sec = tempTime->tm_sec; return calTime; } */ ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(4),1037(45,25))*/ /*** SYNTYPES ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(4),1040(20,40))*/ SYNTYPE Analog=Real ENDSYNTYPE; SYNTYPE Angle = Analog CONSTANTS -360:360 ENDSYNTYPE; SYNTYPE Binary=Integer CONSTANTS 0,1 ENDSYNTYPE; SYNTYPE Percent=Real CONSTANTS 0:100 ENDSYNTYPE; SYNTYPE Celsius=Real CONSTANTS -60:100 ENDSYNTYPE; SYNTYPE Lux=REAL CONSTANTS -1:120000 ENDSYNTYPE; SYNTYPE Watt=Real CONSTANTS -1000000:1000000 ENDSYNTYPE; /*Power unit*/ SYNTYPE ErrorType = INTEGER CONSTANTS 0:100 ENDSYNTYPE; SYNTYPE Joule = REAL CONSTANTS 0:3000000 ENDSYNTYPE; SYNTYPE DayTime = INTEGER ENDSYNTYPE; SYNTYPE Second=Integer CONSTANTS 1:3600 ENDSYNTYPE; SYNTYPE LightSourceType = INTEGER CONSTANTS 1:3 ENDSYNTYPE; SYNTYPE MvmntType = INTEGER CONSTANTS -1:1 ENDSYNTYPE; SYNTYPE RadIdType = Integer CONSTANTS 0:20 ENDSYNTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),1112(95,20))*/ /*** USER DEFINED FUNCTIONS ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),830(20,40))*/ /*** USER DEFINED C-FUNCTIONS ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),839(20,55))*/ procedure cSinus; fpar IN r Real; RETURNS Real; EXTERNAL; /*#CODE #HEADING extern SDL_Real cSinus(SDL_Real); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),1130(95,75))*/ procedure cSqrt; fpar IN r Real; RETURNS Real; EXTERNAL; /*#CODE #HEADING extern SDL_Real cSqrt(SDL_Real); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),836(20,90))*/ procedure cArcSinus; fpar IN r Real; RETURNS Real; EXTERNAL; /*#CODE #HEADING extern SDL_Real cArcSinus(SDL_Real); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),1148(95,110))*/ procedure cExp; fpar IN r Real; RETURNS Real; EXTERNAL; /*#CODE #HEADING extern SDL_Real cExp(SDL_Real); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),833(20,125))*/ procedure cArcTangens; fpar IN r Real; RETURNS Real; EXTERNAL; /*#CODE #HEADING extern SDL_Real cArcTangens(SDL_Real); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),890(20,160))*/ /* Proz. zur Umwandlung von duration nach Real */ procedure dur2Real; fpar IN dur Duration; RETURNS REAL; EXTERNAL; /*#CODE #HEADING extern SDL_Real dur2Real(SDL_Duration); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),1133(105,160))*/ procedure getCalenderTimeString; fpar IN d Time; RETURNS Charstring; EXTERNAL; /*#CODE #HEADING extern char *getCalenderTimeString(#(Time)); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),1115(95,40))*/ procedure absReal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(5),1121(95,55))*/ procedure maxReal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),857(45,25))*/ /*** I/O-FUNCTIONS ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),884(115,25))*/ /*#include 'file.pr' */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),875(25,40))*/ /* Proz zum Ausdruck eines beliebigen Analogwerts mit der aktuellen Zeit */ procedure printAn; fpar IN c CharString, IN a Analog, IN dur Time; EXTERNAL; /*#CODE #HEADING extern void printAn(SDL_Charstring, #(Analog), SDL_Time); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),872(95,40))*/ /* Proz zum Ausdruck eines beliebigen Binaerwerts mit der aktuellen Zeit */ procedure printBi; fpar IN c Charstring, IN b Binary, IN dur Time; EXTERNAL; /*#CODE #HEADING extern void printBi(SDL_Charstring, #(Binary), SDL_Time); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),869(25,85))*/ /* Proz zum Ausdruck eines beliebigen Boolwerts mit der aktuellen Zeit */ procedure printBool; fpar IN c CharString, IN b Boolean, IN dur Time; EXTERNAL; /*#CODE #HEADING extern void printBool(SDL_Charstring, #(Boolean), SDL_Time); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),866(95,85))*/ /* Proz zum Ausdruck eines beliebigen Duartionwerts mit der aktuellen Zeit */ procedure printDur; fpar IN c CharString, IN d Duration, IN dur Time; EXTERNAL; /*#CODE #HEADING extern void printDur(SDL_Charstring, #(Duration), SDL_Time); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),863(25,130))*/ /* Proz zum Ausdruck eines beliebigen Strings mit der aktuellen Zeit */ procedure printIt; fpar IN c CharString, IN dur Time; EXTERNAL; /*#CODE #HEADING extern void printIt(SDL_Charstring, SDL_Time); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(6),860(95,130))*/ /* Proz zum Ausdruck eines beliebigen Integerwerts mit der aktuellen Zeit */ procedure printInt; fpar IN c CharString, IN i Integer, IN dur Time; EXTERNAL; /*#CODE #HEADING extern void printInt(SDL_Charstring, #(Integer), SDL_Time); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(7),320(45,25))*/ /*** PREDEFINED TYPES ***/ /* conversion functions implemented in C to be able to use them within operator definitions! */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(7),323(20,55))*/ /* BOOLEAN */ procedure booleanToStr; fpar in b Boolean; returns Charstring; external; procedure toBoolean; fpar in s Charstring; returns Boolean; external; /*#CODE #HEADING extern SDL_Charstring booleanToStr(SDL_Boolean); extern SDL_Boolean toBoolean(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(7),347(105,55))*/ /* REAL */ procedure realToStr; fpar in r Real; returns Charstring; external; procedure toReal; fpar in s Charstring; returns Real; external; /*#CODE #HEADING extern SDL_Charstring realToStr(SDL_Real); extern SDL_Real toReal(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(7),332(20,120))*/ /* INTEGER */ procedure integerToStr; fpar in i Integer; returns Charstring; external; procedure toInteger; fpar in s Charstring; returns Integer; external; /*#CODE #HEADING extern SDL_Charstring integerToStr(SDL_Integer); extern SDL_Integer toInteger(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(8),449(20,50))*/ /* CHARSTRING */ /* only defined to simplify automatic generation of serialize constructs */ procedure charstringToStr; fpar in s Charstring; returns Charstring; external; procedure toCharstring; fpar in s Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring charstringToStr(SDL_Charstring); extern SDL_Charstring toCharstring(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(8),365(20,125))*/ /* DURATION */ procedure durationToStr; fpar in d Duration; returns Charstring; external; procedure toDuration; fpar in s Charstring; returns Duration; external; /*#CODE #HEADING extern SDL_Charstring durationToStr(SDL_Duration); extern SDL_Duration toDuration(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(8),371(105,125))*/ /* TIME */ procedure timeToStr; fpar in t Time; returns Charstring; external; procedure toTime; fpar in s Charstring; returns Time; external; /*#CODE #HEADING extern SDL_Charstring timeToStr(SDL_Time); extern SDL_Time toTime(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(9),938(20,40))*/ /* PID */ /* NOTE: PIDs are only valid within a single partition. Therefore, Sending PID data across partitions makes no sense! Thus, the following functions will return an error. */ procedure pidToStr; fpar in pid PId; returns Charstring; external; procedure toPid; fpar in s Charstring; returns PId; external; /*#CODE #HEADING extern SDL_Charstring pidToStr(SDL_PId); extern SDL_PId toPId(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(9),1055(20,115))*/ /* CHARACTER */ procedure characterToStr; fpar in c Character; returns Charstring; external; procedure toCharacter; fpar in s Charstring; returns Character; external; /*#CODE #HEADING extern SDL_Charstring characterToStr(SDL_Character); extern SDL_Character toCharacter(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),485(45,25))*/ /*** STRING-FUNCTIONS ***/ /* defined in C to be able to use them within operator definitions also */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),1061(20,45))*/ /* the following procedures handle strings that are separated by spaces */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),920(20,60))*/ procedure to1stString; fpar in s Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring to1stString(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),917(95,60))*/ procedure to2ndString; fpar in s Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring to2ndString(SDL_Charstring); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),965(20,105))*/ /* the following procedures can be used to concatenate and tokenize strings using special (braced) delimiters */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),962(20,120))*/ /* create string with a single token, stringCREATE(a) = (a) */ procedure stringCREATE; fpar in s Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring stringCREATE(SDL_Charstring s); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),1007(95,120))*/ /* construct new string by appending second string, stringAPPEND((a)(b), c) = (a)(b)(c) */ procedure stringAPPEND; fpar in s1 Charstring, in s2 Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring stringAPPEND(SDL_Charstring s1, SDL_Charstring s2); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),959(20,165))*/ /* extract first string, stringCAR((a)(b)(c)) = a */ procedure stringCAR; fpar in s Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring stringCAR(SDL_Charstring s); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(10),956(95,165))*/ /* remove first string and return remaining string (inluding delimiters!), stringCDR((a)(b)(c)) = (b)(c) */ procedure stringCDR; fpar in s Charstring; returns Charstring; external; /*#CODE #HEADING extern SDL_Charstring stringCDR(SDL_Charstring s); */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1124(45,25))*/ /*** USER-DEFINED PROCEDURES ***/ /* used during signal propagation */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1145(65,135))*/ /* used in setPhysVal */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1079(30,50))*/ procedure beginsWithId referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1085(30,70))*/ procedure getFirstId referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1106(70,70))*/ procedure getLastId referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1109(30,85))*/ procedure cutFirstId referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1127(70,85))*/ procedure cutLastId referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1100(30,105))*/ procedure cutRightSubStr referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(11),1142(30,135))*/ procedure getPRT referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(12),908(45,25))*/ /*** STANDARD SIGNALS ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(12),911(20,50))*/ SIGNAL go(Charstring); SIGNAL dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(12),1136(45,75))*/ /*** RPC-DEFINITIONS ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(12),1139(20,95))*/ REMOTE PROCEDURE setPhysVal; FPAR IN CharString; REMOTE PROCEDURE setPhysServerVal; FPAR IN CharString; REMOTE PROCEDURE putAnalogVal; FPAR IN CharString, Analog; REMOTE PROCEDURE putBinaryVal; FPAR IN CharString, Binary; REMOTE PROCEDURE putPanelVal; FPAR IN CharString, CharString; REMOTE PROCEDURE pollPhysVal; FPAR IN CharString; REMOTE PROCEDURE putPhysServerVal; FPAR IN CharString, Charstring; REMOTE PROCEDURE setPhysEventMode; FPAR IN CharString; REMOTE PROCEDURE announceInstance; FPAR IN PID, CharString; REMOTE PROCEDURE revokeInstance; FPAR IN PID; REMOTE PROCEDURE getPID; FPAR CharString; RETURNS PID; REMOTE PROCEDURE pollPhysData; FPAR IN CharString, IN Real; REMOTE PROCEDURE putPhysData; FPAR IN CharString, IN Charstring, IN Analog, IN Time; REMOTE PROCEDURE putPhysSignal; FPAR IN CharString, IN CharString, IN Charstring; REMOTE PROCEDURE setPhysSignal; FPAR IN CharString, IN Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(13),722(45,25))*/ /*** DISTRIBUTION ***/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(13),728(20,40))*/ /* is called by ProtoCtrl to send serialized signal from ProtoDriver of the remote partition to ProtoStubs */ REMOTE PROCEDURE setSignalVal; FPAR IN Charstring, Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun(13),731(20,55))*/ /* is called by ProtoStub to send serialized signal to remote partition containing ProtoDriver via ProtoCtrl */ REMOTE PROCEDURE putProtoStubSignal; FPAR IN CharString, Charstring, Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/Utils.sun,4)*/ endpackage Utils; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop,4)*/ Operator roomIdTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop,1)*/ ;fpar r RoomIdType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop(1),131(55,25))*/ DCL rs Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop(1),116(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop(1),119(30,55))*/ task {/*#E*/ rs:= call stringCREATE(r!rid);}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop(1),134(30,70))*/ task /*#E*/ rs := call stringAPPEND(rs, r!sid); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop(1),125(35,85))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/roomIdTypeToStr.sop,4)*/ endoperator roomIdTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop,4)*/ Operator toRoomIdType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop,1)*/ ;fpar s Charstring; returns RoomIdType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop(1),143(55,10))*/ /* each call inside operators must either be another operator call or a C-function. SDL-procedures or RPCs cannot be called! */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop(1),146(80,40))*/ DCL r RoomIdType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop(1),116(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop(1),119(30,40))*/ task /*#E*/ r!rid := call stringCAR(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop(1),131(30,55))*/ task /*#E*/ r!sid := call stringCAR(call stringCDR(s)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop(1),137(35,70))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toRoomIdType.sop,4)*/ endoperator toRoomIdType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop,4)*/ operator physReplyTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop,1)*/ ;fpar r PhysReplyType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),194(105,25))*/ DCL s Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),116(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),167(55,40))*/ task /*#E*/ s := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),119(55,55))*/ decision /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),128(72,62))*/ (ValueRep): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),125(80,70))*/ task /*#E*/ s := 'ValueRep'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),182(117,62))*/ (WarningRep): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),140(105,70))*/ task /*#E*/ s := 'WarningRep'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),185(142,62))*/ (ErrorRep): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),143(130,70))*/ task /*#E*/ s := 'ErrorRep'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),188(167,62))*/ (AckRep): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),146(155,70))*/ task /*#E*/ s := 'AckRep'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),119(55,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop(1),131(60,85))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/physReplyTypeToStr.sop,4)*/ endoperator physReplyTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop,4)*/ operator toPhysReplyType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop,1)*/ ;fpar s Charstring; returns PhysReplyType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),188(105,25))*/ DCL r PhysReplyType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),140(55,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),134(55,70))*/ decision /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),152(72,77))*/ ('ValueRep'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),128(80,85))*/ task /*#E*/ r := ValueRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),155(117,77))*/ ('WarningRep'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),125(105,85))*/ task /*#E*/ r := WarningRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),158(142,77))*/ ('ErrorRep'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),122(130,85))*/ task /*#E*/ r := ErrorRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),161(167,77))*/ ('AckRep'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),119(155,85))*/ task /*#E*/ r := AckRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),134(55,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop(1),116(60,100))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toPhysReplyType.sop,4)*/ endoperator toPhysReplyType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop,4)*/ operator lightSceneTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop,1)*/ ;fpar ls LightSceneType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),125(105,25))*/ DCL rs Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),122(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),152(55,40))*/ task {/*#E*/ rs := call stringCREATE(ls!name);}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),119(55,55))*/ task {/*#E*/ rs:= call stringAPPEND(rs, call realToStr(ls!rIll));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),137(55,70))*/ task {/*#E*/ rs:= call stringAPPEND(rs, call realToStr(ls!rIll));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),146(55,85))*/ task {/*#E*/ rs:= call stringAPPEND(rs, lightSourceListTypeToStr(ls!ls));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop(1),116(60,100))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSceneTypeToStr.sop,4)*/ endoperator lightSceneTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop,4)*/ operator toLightSceneType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop,1)*/ ;fpar s Charstring; returns LightSceneType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),116(80,40))*/ DCL ls LightSceneType; DCL ts Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),128(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),125(30,40))*/ task /*#E*/ ls!name := call stringCAR(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),140(30,55))*/ task /*#E*/ ts := call stringCDR(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),146(30,70))*/ task /*#E*/ ls!rIll := call toReal(call stringCAR(ts)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),152(30,85))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),122(30,100))*/ task /*#E*/ ls!dIll := call toReal(call stringCAR(s)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),158(30,115))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),164(30,130))*/ task /*#E*/ ls!ls := toLightSourceListType(call stringCAR(ts)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop(1),119(35,145))*/ return /*#E*/ ls; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSceneType.sop,4)*/ endoperator toLightSceneType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop,4)*/ operator lightSourceListTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop,1)*/ ;fpar ls LightSourceListType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop(1),116(130,10))*/ DCL rs Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop(1),119(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop(1),176(55,40))*/ task {/*#E*/ rs := call stringCREATE(call integerToStr(ls(1)));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop(1),206(55,55))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ls(2)));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop(1),212(55,70))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ls(3)));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop(1),128(60,85))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/lightSourceListTypeToStr.sop,4)*/ endoperator lightSourceListTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop,4)*/ operator toLightSourceListType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop,1)*/ ;fpar s Charstring; returns LightSourceListType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),116(105,10))*/ DCL ls LightSourceListType; DCL ts Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),119(55,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),134(55,55))*/ task {/*#E*/ ls(1) := call toInteger(call stringCAR(s));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),140(55,70))*/ task /*#E*/ ts := call stringCDR(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),146(55,85))*/ task {/*#E*/ ls(2) := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),164(55,100))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),161(55,115))*/ task {/*#E*/ ls(3) := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop(1),128(60,130))*/ return /*#E*/ ls; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toLightSourceListType.sop,4)*/ endoperator toLightSourceListType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop,4)*/ operator blindPosToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop,1)*/ ;fpar bp BlindPos; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop(1),125(80,40))*/ DCL rs Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop(1),122(55,55))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop(1),134(55,70))*/ task {/*#E*/ rs := call stringCREATE(call realToStr(bp!h));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop(1),119(55,85))*/ task {/*#E*/ rs:= call stringAPPEND(rs, call realToStr(bp!a));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop(1),116(60,100))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/blindPosToStr.sop,4)*/ endoperator blindPosToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop,4)*/ operator toBlindPos /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop,1)*/ ;fpar s Charstring; returns BlindPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop(1),116(80,40))*/ DCL bp BlindPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop(1),128(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop(1),125(30,40))*/ task /*#E*/ bp!h := (call toReal(call stringCAR(s))); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop(1),122(30,55))*/ task /*#E*/ bp!a := call toReal(call stringCAR(call stringCDR(s))); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop(1),119(35,70))*/ return /*#E*/ bp; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toBlindPos.sop,4)*/ endoperator toBlindPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop,4)*/ operator calTimeTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop,1)*/ ;fpar ct CalTimeType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),116(80,10))*/ DCl rs Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),134(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),131(55,40))*/ task {/*#E*/ rs := call stringCREATE(call integerToStr(ct!year));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),128(55,55))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ct!month));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),125(55,70))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ct!day));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),149(55,85))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ct!hour));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),152(55,100))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ct!min));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),155(55,115))*/ task {/*#E*/ rs := call stringAPPEND(rs, call integerToStr(ct!sec));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop(1),122(60,130))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/calTimeTypeToStr.sop,4)*/ endoperator calTimeTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop,4)*/ operator toCalTimeType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop,1)*/ ;fpar s Charstring; returns CalTimeType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),155(105,10))*/ DCL ts Charstring; DCL ct CalTimeType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),134(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),131(30,55))*/ task {/*#E*/ ct!year := call toInteger(call stringCAR(s));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),128(30,70))*/ task /*#E*/ ts := call stringCDR(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),125(30,85))*/ task {/*#E*/ ct!month := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),122(30,100))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),119(30,115))*/ task {/*#E*/ ct!day := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),161(105,40))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),158(105,55))*/ task {/*#E*/ ct!hour := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),170(105,70))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),167(105,85))*/ task {/*#E*/ ct!min := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),179(105,100))*/ task /*#E*/ ts := call stringCDR(ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),176(105,115))*/ task {/*#E*/ ct!sec := call toInteger(call stringCAR(ts));}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop(1),116(110,145))*/ return /*#E*/ ct; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/toCalTimeType.sop,4)*/ endoperator toCalTimeType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd,4)*/ Procedure absReal /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd,1)*/ ;FPAR IN r Real; RETURNS Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),173(55,10))*/ DCL rTemp Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),530(55,40))*/ decision /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),545(67,52))*/ (<0): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),542(55,55))*/ task /*#E*/ rTemp:= -1*r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),548(60,70))*/ return /*#E*/ rTemp; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),539(92,47))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),536(85,55))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd(1),530(55,40))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/absReal.spd,4)*/ endprocedure absReal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd,4)*/ Procedure maxReal /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd,1)*/ ;FPAR IN r Real, IN s Real; RETURNS Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),530(55,40))*/ decision /*#E*/ r>s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),545(67,52))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),548(60,55))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),539(92,47))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),536(85,55))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd(1),530(55,40))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/maxReal.spd,4)*/ endprocedure maxReal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd,4)*/ Procedure beginsWithId /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd,1)*/ ;FPAR IN s CharString, IN id CharString; RETURNS Boolean; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),173(55,10))*/ DCL rs, tempS CharString; DCL sLen, idLen INTEGER; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),419(80,25))*/ /* returns true iff the string s starts with the given id and the next character is not a number */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),152(55,40))*/ task /*#E*/ sLen:= Length (s), rs:=''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),290(55,55))*/ task /*#E*/ idLen:= Length (id); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),155(55,70))*/ decision /*#E*/ sLen='0') AND (s(idLen+1) <='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),449(92,52))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),224(85,70))*/ return /*#E*/ true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),446(117,47))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),434(110,70))*/ return /*#E*/ false; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),422(80,40))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),341(37,122))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),344(35,130))*/ return /*#E*/ false; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),326(55,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),404(55,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd(1),155(55,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/beginsWithId.spd,4)*/ endprocedure beginsWithId; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd,4)*/ Procedure getFirstId /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd,1)*/ ;FPAR IN s CharString; RETURNS CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),173(55,10))*/ DCL rs CharString; DCL sLen, no INTEGER; DCL firstNumber Boolean := False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),419(80,25))*/ /* returns the first id of the string s */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),152(55,40))*/ task /*#E*/ sLen:= Length (s), rs:='',no:=0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),452(55,55))*/ decision /*#E*/ sLen=no; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),458(12,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),170(10,70))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),464(67,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),452(55,55))*/ enddecision; grst58: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),461(55,70))*/ task /*#E*/ no:=no+1 /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),488(80,70))*/ /* no will point to the first character, which is not part of the first id */ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),467(55,85))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),479(47,70))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),461(55,70))*/ join /*#E*/ grst58; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),476(67,97))*/ (true): grst59: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),506(55,100))*/ decision /*#E*/ sLen=no; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),512(12,107))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),344(10,115))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),509(67,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),482(55,115))*/ task /*#E*/ no := no+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),494(55,130))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),500(47,130))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),515(75,135))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),314(105,115))*/ task /*#E*/ rs:= SubString(s, 1, no-1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),524(110,130))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),494(55,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),506(55,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),506(55,100))*/ join /*#E*/ grst59; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd(1),467(55,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getFirstId.spd,4)*/ endprocedure getFirstId; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd,4)*/ Procedure getLastId /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd,1)*/ ;FPAR IN s CharString; RETURNS CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),173(55,10))*/ DCL rs CharString; DCL sLen, no INTEGER; DCL firstNumber Boolean := False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),419(80,25))*/ /* returns the first id of the string s */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),152(55,40))*/ task /*#E*/ sLen:= Length (s), rs:=''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),452(55,55))*/ decision /*#E*/ sLen=0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),458(12,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),170(10,70))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),464(67,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),530(55,70))*/ task /*#E*/ no:=SLen; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),452(55,55))*/ enddecision; grst60: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),467(55,85))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),548(37,92))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),545(30,100))*/ task /*#E*/ no:= no-1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),467(55,85))*/ join /*#E*/ grst60; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),476(67,97))*/ (false): grst61: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),506(55,115))*/ decision /*#E*/ no=1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),512(12,122))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),344(10,130))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),509(67,127))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),482(55,130))*/ task /*#E*/ no := no-1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),494(55,145))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),500(55,145))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),515(92,115))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),314(105,115))*/ task /*#E*/ rs:= SubString(s, no+1, SLen-no); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),524(110,130))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),494(55,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),506(55,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),506(55,115))*/ join /*#E*/ grst61; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),467(55,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd(1),488(80,70))*/ /* no will point to the first character, which is not part of the first id */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getLastId.spd,4)*/ endprocedure getLastId; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd,4)*/ Procedure cutFirstId /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd,1)*/ ;FPAR IN s CharString; RETURNS CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),173(55,10))*/ DCL rs CharString; DCL sLen, no INTEGER; DCL firstNumber Boolean := False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),419(80,25))*/ /* cuts the first id of the string s and returns the resulting string*/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),152(55,40))*/ task /*#E*/ sLen:= Length (s), rs:='',no:=0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),452(55,55))*/ decision /*#E*/ sLen=no; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),458(12,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),170(10,70))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),464(67,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),452(55,55))*/ enddecision; grst62: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),461(55,70))*/ task /*#E*/ no:=no+1 /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),488(80,70))*/ /* no will point to the first character, which is not part of the first id */ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),467(55,85))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),479(47,70))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),461(55,70))*/ join /*#E*/ grst62; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),476(67,97))*/ (true): grst63: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),506(55,100))*/ decision /*#E*/ sLen=no; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),512(12,107))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),344(10,115))*/ return /*#E*/ ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),509(67,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),482(55,115))*/ task /*#E*/ no := no+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),494(55,130))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),500(47,130))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),515(75,135))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),314(105,115))*/ task /*#E*/ rs:= SubString(s, no, SLen-no+1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),524(110,130))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),494(55,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),506(55,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),506(55,100))*/ join /*#E*/ grst63; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd(1),467(55,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutFirstId.spd,4)*/ endprocedure cutFirstId; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd,4)*/ Procedure cutLastId /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd,1)*/ ;FPAR IN s CharString; RETURNS CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),173(55,10))*/ DCL rs CharString; DCL sLen, no INTEGER; DCL firstNumber Boolean := False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),419(80,25))*/ /* returns all ids of the string s but the last*/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),152(55,40))*/ task /*#E*/ sLen:= Length (s), rs:=''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),452(55,55))*/ decision /*#E*/ sLen=0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),458(12,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),170(10,70))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),464(67,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),530(55,70))*/ task /*#E*/ no:=SLen; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),452(55,55))*/ enddecision; grst64: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),467(55,85))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),548(37,92))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),545(30,100))*/ task /*#E*/ no:= no-1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),467(55,85))*/ join /*#E*/ grst64; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),476(67,97))*/ (false): grst65: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),506(55,115))*/ decision /*#E*/ no=1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),512(12,122))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),344(10,130))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),509(67,127))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),482(55,130))*/ task /*#E*/ no := no-1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),494(55,145))*/ decision /*#E*/ (s(no) >='0') AND (s(no)<='9'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),500(55,145))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),515(92,115))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),314(105,115))*/ task /*#E*/ rs:= SubString(s, 1, no); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),524(110,130))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),494(55,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),506(55,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),506(55,115))*/ join /*#E*/ grst65; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),467(55,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd(1),488(80,70))*/ /* no will point to the first character, which is not part of the first id */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutLastId.spd,4)*/ endprocedure cutLastId; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd,4)*/ Procedure cutRightSubStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd,1)*/ ;FPAR IN longS CharString, IN shortS CharString; RETURNS CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),173(55,10))*/ DCL rs, tempS CharString; DCL sLen, lLen INTEGER; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),419(80,25))*/ /* Procedure to cut the given substring (shortS) from the given string name (longS). If substring is not part of name, it returns the name, otherwise the left part of the name*/ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),149(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),152(55,55))*/ task /*#E*/ sLen:=Length (shortS), rs:=''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),290(55,70))*/ task /*#E*/ lLen:=Length (longS); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),155(55,85))*/ decision /*#E*/ sLen>lLen; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),200(12,92))*/ (True): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),170(10,100))*/ return /*#E*/ longS; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),410(67,97))*/ (False): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),404(55,100))*/ decision /*#E*/ longS= shortS; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),416(37,107))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),413(35,115))*/ return /*#E*/ ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),461(67,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),470(55,115))*/ task /*#E*/ rs := SubString (longS, lLen-slen+1, slen); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),476(55,130))*/ decision /*#E*/ rs = shortS; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),479(92,100))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),314(105,100))*/ task /*#E*/ rs:= SubString(longS, 1, lLen-sLen); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),344(110,115))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),485(67,142))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),482(60,145))*/ return /*#E*/ longS; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),476(55,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),404(55,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd(1),155(55,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/cutRightSubStr.spd,4)*/ endprocedure cutRightSubStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd,4)*/ Procedure getPRT /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd,1)*/ ;FPAR IN s CharString; RETURNS PhysReplyType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),146(80,10))*/ DCL rs PhysReplyType; DCL sLen INTEGER; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),116(55,10))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),512(55,25))*/ task /*#E*/ sLen := Length(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),557(55,40))*/ decision /*#E*/ sLen = 0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),560(67,52))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),248(55,55))*/ decision /*#E*/ s(1)= 'A'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),263(67,67))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),518(55,70))*/ decision /*#E*/ sLen>=3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),521(67,82))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),257(55,100))*/ decision /*#E*/ s(2)= 'C'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),266(67,112))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),260(55,115))*/ decision /*#E*/ s(3)= 'K'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),278(67,127))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),275(55,130))*/ task /*#E*/ rs:=AckRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),287(60,160))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),272(47,122))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),260(55,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),269(47,107))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),257(55,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),524(37,77))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),518(55,70))*/ enddecision; grst66: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),233(30,145))*/ task /*#E*/ rs:=ValueRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),125(35,160))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),527(92,62))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),293(80,70))*/ decision /*#E*/ s(1)= 'W'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),302(92,82))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),530(80,85))*/ decision /*#E*/ sLen>=7; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),533(92,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),296(80,100))*/ decision /*#E*/ s(2)= 'A'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),305(92,112))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),299(80,115))*/ decision /*#E*/ s(3)= 'R'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),326(92,127))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),308(80,130))*/ decision /*#E*/ s(4)= 'N'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),317(92,142))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),311(80,145))*/ decision /*#E*/ s(5)= 'I'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),320(92,157))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),314(80,160))*/ decision /*#E*/ s(6)= 'N'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),332(92,172))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),329(80,175))*/ decision /*#E*/ s(7)= 'G'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),368(92,187))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),362(80,190))*/ task /*#E*/ rs:=WarningRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),359(85,205))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),386(117,182))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),329(80,175))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),389(117,167))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),314(80,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),392(117,152))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),311(80,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),395(117,137))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),308(80,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),398(117,122))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),299(80,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),401(117,107))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),296(80,100))*/ enddecision; grst67: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),377(105,190))*/ task /*#E*/ rs:=ValueRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),380(110,205))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),536(37,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),233(30,145))*/ join /*#E*/ grst66; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),530(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),404(142,77))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),407(130,85))*/ decision /*#E*/ s(1)= 'E'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),548(142,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),545(130,100))*/ decision /*#E*/ sLen>=5; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),551(142,112))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),410(130,115))*/ decision /*#E*/ s(2)= 'R'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),443(142,127))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),413(130,130))*/ decision /*#E*/ s(3)= 'R'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),452(142,142))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),416(130,145))*/ decision /*#E*/ s(4)= 'O'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),446(142,157))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),419(130,160))*/ decision /*#E*/ s(5)= 'R'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),497(142,172))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),431(130,175))*/ task /*#E*/ rs:=ErrorRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),428(135,190))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),476(112,167))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),419(130,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),473(112,152))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),416(130,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),470(112,137))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),413(130,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),467(112,122))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),410(130,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),554(112,107))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),545(130,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),464(112,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),407(130,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),377(105,190))*/ join /*#E*/ grst67; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),293(80,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),248(55,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),572(117,47))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),563(110,55))*/ return /*#E*/ ValueRep; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd(1),557(55,40))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/Library/Reuse/Utils/getPRT.spd,4)*/ endprocedure getPRT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun,7)*/ USE Utils; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun,4)*/ Package Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(1),791(20,40))*/ NEWTYPE SignalStateType LITERALS halt, go; operators signalStateTypeToStr:SignalStateType->Charstring; toSignalStateType:Charstring->SignalStateType; operator signalStateTypeToStr referenced; operator toSignalStateType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(1),812(20,75))*/ NEWTYPE CreationModeType LITERALS period, event; operators creationModeTypeToStr:CreationModeType->Charstring; toCreationModeType:Charstring->CreationModeType; operator creationModeTypeToStr referenced; operator toCreationModeType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(1),848(20,110))*/ NEWTYPE TrackType LITERALS regular, fast; operators trackTypeToStr:TrackType->Charstring; toTrackType:Charstring->TrackType; operator trackTypeToStr referenced; operator toTrackType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(1),860(20,150))*/ NEWTYPE GateStateType LITERALS opened, closed; operators gateStateTypeToStr:GateStateType->Charstring; toGateStateType:Charstring->GateStateType; operator gateStateTypeToStr referenced; operator toGateStateType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(2),902(20,40))*/ NEWTYPE TrackDurationType STRUCT trType TrackType; ts1Dur Duration; ts1SigDur Duration; sigTs2Dur Duration; breakDur Duration; minDistDur Duration; operators trackDurationTypeToStr:TrackDurationType->Charstring; toTrackDurationType:Charstring->TrackDurationType; operator trackDurationTypeToStr referenced; operator toTrackDurationType referenced; ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),938(85,30))*/ /* Signals used for reporting and monitoring */ SIGNAL repTrain (CharString, Duration, Duration); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),845(20,40))*/ /* Signals of EnvTrainSens: */ Signal newTrain (CharString); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),842(20,55))*/ /* Signals of EnvTrain: */ Signal setMinDelayDur (CharString, Duration); Signal trainPassed (CharString); SIGNAL trainArrived (CharString); SIGNAL newTrainStart (CharString); SIGNAL newTrainStop (CharString, Real); Signal newSeqTrain (CharString, CharString); Signal initTrain (CharString, TrackDurationType, SignalStateType); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),839(20,85))*/ /* Signals of EnvSignal: */ Signal newSignalState (CharString, SignalStateType); Signal getSignalState (CharString); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),836(20,100))*/ /* Signals of EnvTrack: */ Signal setPerToCreTrain (CharString, Duration); Signal creNewTrain (CharString); SIGNAL initTrack (CharString, TrackDurationType, Duration); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),869(20,125))*/ /* Signals of EnvGate: */ Signal newGateState (GateStateType); Signal getGateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),872(20,140))*/ /* Signals of EnvRoad: */ Signal genCars (Integer); Signal setPeriod (Duration); Signal gateOpened; Signal gateClosed; Signal setDecrPer (Duration); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),944(90,140))*/ /* Signals of CrossingCtrl */ Signal setStrategy (CharString); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),884(85,165))*/ /* SIgnals of TrackCtrl */ Signal askForGo (CharString); Signal noTrains (CharString); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),875(20,170))*/ /* SIGNALS of GateCtrl*/ Signal setGate (GateStateType); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),878(20,185))*/ /* Signals of SignalCtrl: */ Signal setSignalState (CharString, SignalStateType); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(3),881(20,200))*/ /* Signals of RoadCtrl: */ Signal newCars (Boolean); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun(4),935(25,45))*/ /* Signals of EnvCrossing: */ SIGNAL initTracks(Integer, TrackDurationType, Duration); SIGNAL initTracksDone; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/Project.sun,4)*/ endpackage Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop,4)*/ operator SignalStateTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop,1)*/ ;fpar r SignalStateType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),212(80,40))*/ DCL rs CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),251(30,55))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),248(30,85))*/ decision /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),257(47,92))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),245(55,100))*/ task /*#E*/ rs := 'halt'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),263(92,92))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),239(80,100))*/ task /*#E*/ rs := 'go'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),248(30,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop(1),242(35,115))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/signalStateTypeToStr.sop,4)*/ endoperator SignalStateTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop,4)*/ operator toSignalStateType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop,1)*/ ;fpar s Charstring; returns SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),137(55,25))*/ DCL r SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),134(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),131(5,70))*/ decision /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),143(22,77))*/ ('halt'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),128(30,85))*/ task /*#E*/ r := halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),149(67,77))*/ ('go'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),122(55,85))*/ task /*#E*/ r := go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),131(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop(1),125(10,100))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toSignalStateType.sop,4)*/ endoperator toSignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop,4)*/ operator creationModeTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop,1)*/ ;fpar r CreationModeType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),131(55,25))*/ DCL s Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),134(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),128(5,40))*/ task /*#E*/ s := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),125(5,55))*/ decision /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),143(22,62))*/ (period): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),122(30,70))*/ task /*#E*/ s := 'period'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),146(67,62))*/ (event): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),119(55,70))*/ task /*#E*/ s := 'event'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),125(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop(1),116(10,85))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/creationModeTypeToStr.sop,4)*/ endoperator creationModeTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop,4)*/ operator toCreationModeType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop,1)*/ ;fpar s Charstring; returns CreationModeType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),131(55,25))*/ DCL r CreationModeType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),128(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),125(5,70))*/ decision /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),137(22,77))*/ ('period'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),122(30,85))*/ task /*#E*/ r := period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),140(67,77))*/ ('event'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),119(55,85))*/ task /*#E*/ r := event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),125(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop(1),116(10,100))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toCreationModeType.sop,4)*/ endoperator toCreationModeType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop,4)*/ operator trackTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop,1)*/ ;fpar r TrackType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),131(55,25))*/ DCL s Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),134(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),128(5,40))*/ task /*#E*/ s := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),125(5,55))*/ decision /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),143(22,62))*/ (regular): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),122(30,70))*/ task /*#E*/ s := 'regular'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),146(67,62))*/ (fast): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),119(55,70))*/ task /*#E*/ s := 'fast'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),125(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop(1),116(10,85))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/trackTypeToStr.sop,4)*/ endoperator trackTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop,4)*/ operator toTrackType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop,1)*/ ;fpar s Charstring; returns TrackType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),131(55,25))*/ DCL r TrackType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),128(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),125(5,70))*/ decision /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),137(22,77))*/ ('regular'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),122(30,85))*/ task /*#E*/ r := regular; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),140(67,77))*/ ('fast'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),119(55,85))*/ task /*#E*/ r := fast; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),125(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop(1),116(10,100))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackType.sop,4)*/ endoperator toTrackType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop,4)*/ operator gateStateTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop,1)*/ ;fpar r GateStateType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),131(55,25))*/ DCL s Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),134(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),128(5,40))*/ task /*#E*/ s := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),125(5,55))*/ decision /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),143(22,62))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),122(30,70))*/ task /*#E*/ s := 'opened'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),146(67,62))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),119(55,70))*/ task /*#E*/ s := 'closed'; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),125(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop(1),116(10,85))*/ return /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/gateStateTypeToStr.sop,4)*/ endoperator gateStateTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop,4)*/ operator toGateStateType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop,1)*/ ;fpar s Charstring; returns GateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),131(55,25))*/ DCL r GateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),128(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),125(5,70))*/ decision /*#E*/ s; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),137(22,77))*/ ('opened'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),122(30,85))*/ task /*#E*/ r := opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),140(67,77))*/ ('closed'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),119(55,85))*/ task /*#E*/ r := closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),125(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop(1),116(10,100))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toGateStateType.sop,4)*/ endoperator toGateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop,4)*/ operator trackDurationTypeToStr /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop,1)*/ ;fpar r TrackDurationType; returns Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),212(80,40))*/ DCL rs CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),209(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),239(30,55))*/ task /*#E*/ rs:=trackTypeToStr (r!trType); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),206(30,70))*/ task /*#E*/ rs:=rs//' '// (call durationToStr(r!ts1Dur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),203(30,85))*/ task /*#E*/ rs := rs//' '//(call durationToStr(r!ts1SigDur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),200(30,100))*/ task /*#E*/ rs := rs//' '//(call durationToStr(r!sigTs2Dur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),227(30,115))*/ task /*#E*/ rs := rs//' '//(call durationToStr(r!breakDur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),233(30,130))*/ task /*#E*/ rs := rs//' '//(call durationToStr(r!minDistDur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop(1),197(35,145))*/ return /*#E*/ rs; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/TrackDurationTypeToStr.sop,4)*/ endoperator trackDurationTypeToStr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop,4)*/ operator toTrackDurationType /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop,1)*/ ;fpar s Charstring; returns TrackDurationType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),131(55,10))*/ DCL r TrackDurationType; DCL ts1 Charstring; DCL ts2 Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),161(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),188(5,55))*/ task /*#E*/ ts1 := call to1stString(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),158(5,85))*/ task /*#E*/ r!trType := toTrackType(ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),194(5,115))*/ task /*#E*/ ts2 := call to2ndString(s); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),290(30,55))*/ task /*#E*/ ts1 := call to1stString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),299(30,85))*/ task /*#E*/ r!ts1Dur := call toDuration(ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),296(30,115))*/ task /*#E*/ ts2 := call to2ndString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),200(55,55))*/ task /*#E*/ ts1 := call to1stString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),203(55,85))*/ task /*#E*/ r!ts1SigDur := call toDuration(ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),206(55,115))*/ task /*#E*/ ts2 := call to2ndString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),212(80,55))*/ task /*#E*/ ts1 := call to1stString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),227(80,85))*/ task /*#E*/ r!sigTs2Dur := call toDuration(ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),221(80,115))*/ task /*#E*/ ts2 := call to2ndString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),215(105,55))*/ task /*#E*/ ts1 := call to1stString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),230(105,85))*/ task /*#E*/ r!breakDur := call toDuration(ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),233(105,115))*/ task /*#E*/ ts2 := call to2ndString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),239(130,55))*/ task /*#E*/ ts1 := call to1stString(ts2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),236(130,85))*/ task /*#E*/ r!minDistDur := call toDuration(ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop(1),242(135,115))*/ return /*#E*/ r; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/Project_SDL/toTrackDurationType.sop,4)*/ endoperator toTrackDurationType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sun,4)*/ Package EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sun(1),122(60,55))*/ SIGNALLIST EnvRoadInp = go, genCars, setPeriod, gateClosed, gateOpened, setDecrPer; SIGNALLIST EnvRoadOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sun(1),125(25,50))*/ block type EnvRoad referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sun,4)*/ endpackage EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt,4)*/ Block Type EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),159(12,40))*/ (EnvRoadInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),165(160,40))*/ (EnvRoadOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt,4)*/ substructure EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to EnvRoadCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),129(35,40))*/ (EnvRoadInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),119(157,32))*/ channel /*#E*/ oo from EnvRoadCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),120(132,40))*/ (EnvRoadOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt(1),116(65,35))*/ block EnvRoadCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt,4)*/ endsubstructure EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoad.sbt,4)*/ endblock type EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk,4)*/ Block EnvRoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to EnvRoadCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),129(17,72))*/ (EnvRoadInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),119(167,65))*/ signalroute /*#E*/ oo from EnvRoadCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),120(127,72))*/ (EnvRoadOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),116(65,65))*/ process EnvRoadCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk(1),125(177,67))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.sbk,4)*/ endblock EnvRoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr,4)*/ Process EnvRoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL maxNoOfCars Integer := 5; DCL perDur Duration := 5; Timer perTimer; DCl noOfCars Integer := 0; DCL carsLow Boolean := True; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),512(30,10))*/ DCL tempNo Integer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),743(80,10))*/ DCL decrPer Duration := 3; Timer decrT; DCL gateState GateStateType := opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),887(130,25))*/ procedure checkNo referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),116(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),287(5,55))*/ nextstate /*#E*/ Init1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),287(5,55))*/ state /*#E*/ Init1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),281(5,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),422(5,85))*/ call /*#E*/ announceInstance (self, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),971(5,100))*/ /*#E*/ set (NOW+perDur, perTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),977(5,115))*/ /*#E*/ set(NOW+ decrPer, decrT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),869(5,130))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(1),287(5,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),926(5,25))*/ state /*#E*/ event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),926(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),503(30,25))*/ state /*#E*/ * (Init1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),506(30,40))*/ input /*#E*/ genCars (tempNo); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),524(30,55))*/ task /*#E*/ noOfCars := noOfCars + tempNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),527(30,70))*/ call /*#E*/ checkNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),521(30,85))*/ /*#E*/ reset (perTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),953(30,100))*/ call /*#E*/ putPanelVal('obj1', instName//' '// (call integerToStr(noOfCars))); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),539(30,115))*/ nextstate /*#E*/ event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),503(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),545(80,25))*/ state /*#E*/ * (Init1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),548(80,40))*/ input /*#E*/ setPeriod (perDur); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),554(80,55))*/ /*#E*/ reset (perTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),557(80,70))*/ /*#E*/ set (NOW+perDur, perTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),566(80,85))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),545(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),905(105,25))*/ state /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),902(105,40))*/ input /*#E*/ perTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),899(105,55))*/ task /*#E*/ noOfCars := noOfCars + 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),1061(105,70))*/ decision /*#E*/ gateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),1064(117,82))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),896(105,85))*/ call /*#E*/ checkNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),1067(130,100))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),1061(105,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),893(105,100))*/ /*#E*/ set (NOW+perDur, perTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),959(105,115))*/ call /*#E*/ putPanelVal('obj1', instName//' '// (call integerToStr(noOfCars))); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),890(105,130))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(2),905(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),716(30,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),719(30,40))*/ input /*#E*/ decrT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1091(30,55))*/ decision /*#E*/ noOfCars <=0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1094(42,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1088(30,70))*/ decision /*#E*/ gateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1097(42,82))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1085(30,85))*/ task /*#E*/ noOfCars:= noOfCars-1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1121(30,100))*/ call /*#E*/ putPanelVal('obj1', instName//' '// (call integerToStr(noOfCars))); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1082(30,115))*/ call /*#E*/ checkNo; grst68: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1079(30,130))*/ /*#E*/ set(NOW+ decrPer, decrT); grst69: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1073(30,145))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1127(60,145))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1073(30,145))*/ join /*#E*/ grst69; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1088(30,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1112(20,60))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1079(30,130))*/ join /*#E*/ grst68; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1091(30,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),716(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),668(80,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),671(80,40))*/ input /*#E*/ gateOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),1040(80,55))*/ task /*#E*/ gateState:= opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),677(80,70))*/ /*#E*/ set(NOW+ decrPer, decrT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),710(80,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),668(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),683(105,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),686(105,40))*/ input /*#E*/ gateClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),692(105,55))*/ /*#E*/ reset (decrT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),800(105,70))*/ task /*#E*/ gateState:= closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),698(105,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),683(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),767(155,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),770(155,40))*/ input /*#E*/ setDecrPer (decrPer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),776(155,55))*/ /*#E*/ reset (decrT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),806(155,70))*/ decision /*#E*/ gateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),809(167,80))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),779(155,85))*/ /*#E*/ set(NOW+ decrPer, decrT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),812(180,70))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),806(155,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),782(155,100))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr(3),767(155,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/EnvRoadCtrl.spr,4)*/ endprocess EnvRoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd,4)*/ procedure checkNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),116(55,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),119(55,40))*/ decision /*#E*/ noOfCars > maxNoOfCars; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),128(67,52))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),155(55,55))*/ decision /*#E*/ carsLow; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),158(67,67))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),212(55,70))*/ call /*#E*/ putAnalogVal (instName, 1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),161(55,85))*/ task /*#E*/ carsLow:= False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),167(55,100))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),155(55,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),131(60,100))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),140(92,47))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),170(80,55))*/ decision /*#E*/ carsLow; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),173(92,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),218(80,70))*/ call /*#E*/ putAnalogVal (instName, 0); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),149(80,85))*/ task /*#E*/ carsLow := True; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),182(105,100))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),170(80,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),137(85,100))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd(1),119(55,40))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvRoad_SDL/checkNo.spd,4)*/ endprocedure checkNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sun,4)*/ Package EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sun(1),122(60,55))*/ SIGNALLIST EnvGateInp = go, getGateState; SIGNALLIST EnvGateOutp = newGateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sun(1),125(25,50))*/ block type EnvGate referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sun,4)*/ endpackage EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt,4)*/ Block Type EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),159(12,40))*/ (EnvGateInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),165(162,40))*/ (EnvGateOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt,4)*/ substructure EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to EnvGateCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),129(35,40))*/ (EnvGateInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),119(157,32))*/ channel /*#E*/ oo from EnvGateCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),120(132,40))*/ (EnvGateOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt(1),116(65,35))*/ block EnvGateCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt,4)*/ endsubstructure EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGate.sbt,4)*/ endblock type EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk,4)*/ Block EnvGateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to EnvGateCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),129(17,72))*/ (EnvGateInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),119(167,65))*/ signalroute /*#E*/ oo from EnvGateCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),120(127,72))*/ (EnvGateOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),116(65,65))*/ process EnvGateCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk(1),125(177,67))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.sbk,4)*/ endblock EnvGateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr,4)*/ Process EnvGateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL rs CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),650(30,10))*/ DCL newGateInVal GateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),665(105,40))*/ procedure report referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),647(105,25))*/ EXPORTED procedure setPhysVal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),287(5,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),422(5,70))*/ call /*#E*/ announceInstance (self, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),668(5,85))*/ call /*#E*/ report (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),686(5,100))*/ call /*#E*/ putPanelVal ('obj1', rs); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),452(5,115))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),239(55,40))*/ state /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),458(55,55))*/ input /*#E*/ getGateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),464(55,70))*/ output /*#E*/ newGateState (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),470(55,85))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),476(80,40))*/ state /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),479(80,55))*/ input /*#E*/ getGateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),482(80,70))*/ output /*#E*/ newGateState (closed); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),485(80,85))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(1),476(80,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),557(5,25))*/ state /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),554(5,40))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),551(5,55))*/ output /*#E*/ newGateState (newGateInVal); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),548(5,70))*/ decision /*#E*/ newGateInVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),569(17,82))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),545(5,85))*/ call /*#E*/ printIt (instName// ' Opened', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),674(5,100))*/ call /*#E*/ report (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),692(5,115))*/ call /*#E*/ putPanelVal ('obj1', rs); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),542(5,130))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),575(42,77))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),536(30,100))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),548(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),557(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),623(80,25))*/ state /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),620(80,40))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),617(80,55))*/ output /*#E*/ newGateState (newGateInVal); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),614(80,70))*/ decision /*#E*/ newGateInVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),635(92,82))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),611(80,85))*/ call /*#E*/ printIt (instName// ' Closed', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),680(80,100))*/ call /*#E*/ report (closed); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),698(80,115))*/ call /*#E*/ putPanelVal ('obj1', rs); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),608(80,130))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),629(117,77))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),602(105,100))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),614(80,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr(2),623(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/EnvGateCtrl.spr,4)*/ endprocess EnvGateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd,4)*/ procedure report /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd,1)*/ ;FPAR IN gateState GateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd(1),137(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd(1),119(30,40))*/ task /*#E*/ rs := instName // ' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd(1),131(30,55))*/ task /*#E*/ rs:=rs// (call timeToStr (NOW)) // ' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd(1),122(30,70))*/ task /*#E*/ rs := rs// gateStateTypeToStr (gateState)//' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd(1),143(35,100))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/report.spd,4)*/ endprocedure report; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd,4)*/ Procedure setPhysVal /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd,1)*/ ;FPAR IN newValue CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),266(80,10))*/ DCL r Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),116(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),260(30,40))*/ task /*#E*/ r:= call toReal (newValue); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),245(30,55))*/ decision /*#E*/ r=1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),248(42,67))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),239(30,70))*/ task /*#E*/ newGateInVal := opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),254(67,62))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),251(55,70))*/ task /*#E*/ newGateInVal := closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),245(30,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd(1),194(35,85))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvGate_SDL/setPhysVal.spd,4)*/ endprocedure setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sun,4)*/ Package EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sun(1),122(60,55))*/ SIGNALLIST EnvSignalInp = go, getSignalState; SIGNALLIST EnvSignalOutp = newSignalState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sun(1),125(25,50))*/ block type EnvSignal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sun,4)*/ endpackage EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt,4)*/ Block Type EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),159(12,40))*/ (EnvSignalInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),165(160,42))*/ (EnvSignalOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt,4)*/ substructure EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),128(27,32))*/ channel /*#E*/ oi from env via oi to EnvSignalCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),129(27,45))*/ (EnvSignalInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),119(157,32))*/ channel /*#E*/ oo from EnvSignalCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),120(132,40))*/ (EnvSignalOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt(2),116(65,35))*/ block EnvSignalCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt,4)*/ endsubstructure EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignal.sbt,4)*/ endblock type EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk,4)*/ Block EnvSignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),128(17,34))*/ signalroute /*#E*/ oi from env to EnvSignalMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),129(17,42))*/ (EnvSignalInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),545(92,47))*/ signalroute /*#E*/ mo from EnvSignalMasterCtrl to EnvSignalCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),546(92,57))*/ (EnvSignalInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),119(165,65))*/ signalroute /*#E*/ oo from EnvSignalCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),120(127,72))*/ (EnvSignalOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),542(65,35))*/ process EnvSignalMasterCtrl (1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),116(65,65))*/ process EnvSignalCtrl (0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),557(7,37))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk(1),125(177,67))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.sbk,4)*/ endblock EnvSignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr,4)*/ Process EnvSignalMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),551(55,10))*/ DCL t1 CharString; DCL instPID PID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),287(5,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),473(5,70))*/ create /*#E*/ EnvSignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),470(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),485(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),461(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),458(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),479(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),467(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),749(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),464(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),470(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),527(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),524(5,40))*/ input /*#E*/ getSignalState (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),521(5,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),518(5,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),545(67,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),509(55,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),506(55,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),539(17,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),515(5,85))*/ output /*#E*/ getSignalState (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),512(5,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),518(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr(2),527(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalMasterCtrl.spr,4)*/ endprocess EnvSignalMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr,4)*/ Process EnvSignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts CharString := ''; DCL rs CharString; DCL newSIgInVal SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),593(105,40))*/ EXPORTED procedure setPhysVal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),815(105,70))*/ procedure report referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),287(5,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),818(5,70))*/ call /*#E*/ report (halt); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),836(5,85))*/ call /*#E*/ putPanelVal ('obj1', rs); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),452(5,100))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),239(30,40))*/ state /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),458(30,55))*/ input /*#E*/ getSignalState (ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),464(30,70))*/ output /*#E*/ newSignalState (instName, halt); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),470(30,85))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),239(30,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),476(55,40))*/ state /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),479(55,55))*/ input /*#E*/ getSignalState (ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),482(55,70))*/ output /*#E*/ newSignalState (instName, go); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),485(55,85))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(1),476(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),689(5,25))*/ state /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),686(5,40))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),683(5,55))*/ output /*#E*/ newSignalState (instName, newSigInVal); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),692(5,70))*/ decision /*#E*/ newSigInVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),701(17,82))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),680(5,85))*/ call /*#E*/ printIt (instName// ' GREEN1', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),824(5,100))*/ call /*#E*/ report (go); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),842(5,115))*/ call /*#E*/ putPanelVal ('obj1', rs); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),677(5,130))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),716(42,77))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),770(30,85))*/ call /*#E*/ printIt (instName// ' RED2', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),695(30,100))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),692(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),689(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),734(80,25))*/ state /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),731(80,40))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),728(80,55))*/ output /*#E*/ newSignalState (instName, newSigInVal); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),737(80,70))*/ decision /*#E*/ newSigInVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),746(92,82))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),725(80,85))*/ call /*#E*/ printIt (instName// ' RED1', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),830(80,100))*/ call /*#E*/ report (halt); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),848(80,115))*/ call /*#E*/ putPanelVal ('obj1', rs); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),722(80,130))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),761(117,77))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),764(105,85))*/ call /*#E*/ printIt (instName// ' GREEN2', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),740(105,100))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),737(80,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr(2),734(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/EnvSignalCtrl.spr,4)*/ endprocess EnvSignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd,4)*/ Procedure setPhysVal /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd,1)*/ ;FPAR IN newValue CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),272(80,10))*/ DCL r Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),116(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),275(30,40))*/ task /*#E*/ r:= call toReal (newValue); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),245(30,55))*/ decision /*#E*/ r=1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),248(42,67))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),239(30,70))*/ task /*#E*/ newSigInVal := go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),254(67,62))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),251(55,70))*/ task /*#E*/ newSigInVal := halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),245(30,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd(1),194(35,85))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/setPhysVal.spd,4)*/ endprocedure setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd,4)*/ procedure report /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd,1)*/ ;FPAR IN sigState SIgnalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd(1),137(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd(1),119(30,40))*/ task /*#E*/ rs := instName // ' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd(1),131(30,55))*/ task /*#E*/ rs:=rs// (call timeToStr (NOW)) // ' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd(1),122(30,70))*/ task /*#E*/ rs := rs// signalStateTypeToStr (sigState)//' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd(1),143(35,85))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvSignal/report.spd,4)*/ endprocedure report; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sun,4)*/ Package EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sun(1),122(60,55))*/ SIGNALLIST EnvTrainSensInp = go, newTrain; SIGNALLIST EnvTrainSensOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sun(1),125(25,50))*/ block type EnvTrainSens referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sun,4)*/ endpackage EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt,4)*/ Block Type EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),159(12,40))*/ (EnvTrainSensInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),165(155,47))*/ (EnvTrainSensOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt,4)*/ substructure EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to EnvTrainSensCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),129(30,47))*/ (EnvTrainSensInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),119(157,32))*/ channel /*#E*/ oo from EnvTrainSensCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),120(132,40))*/ (EnvTrainSensOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt(1),116(65,35))*/ block EnvTrainSensCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt,4)*/ endsubstructure EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSens.sbt,4)*/ endblock type EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk,4)*/ Block EnvTrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),128(18,39))*/ signalroute /*#E*/ oi from env to EnvTrainSensMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),129(22,47))*/ (EnvTrainSensInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),551(102,62))*/ signalroute /*#E*/ mo from EnvTrainSensMasterCtrl to EnvTrainSensCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),552(102,77))*/ (EnvTrainSensInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),119(166,85))*/ signalroute /*#E*/ oo from EnvTrainSensCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),120(127,92))*/ (EnvTrainSensOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),542(70,35))*/ process EnvTrainSensMasterCtrl (1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),116(75,85))*/ process EnvTrainSensCtrl (0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),548(7,42))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk(1),125(177,87))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.sbk,4)*/ endblock EnvTrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr,4)*/ Process EnvTrainSensMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),551(55,10))*/ DCL t1 CharString; DCL instPID PID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),287(5,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),473(5,70))*/ create /*#E*/ EnvTrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),470(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),485(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),461(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),458(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),479(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),467(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),749(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),464(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),470(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),527(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),524(5,40))*/ input /*#E*/ newTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),521(5,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),518(5,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),545(67,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),509(55,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),506(55,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),539(17,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),515(5,85))*/ output /*#E*/ newTrain (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),512(5,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),518(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr(2),527(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensMasterCtrl.spr,4)*/ endprocess EnvTrainSensMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr,4)*/ Process EnvTrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),185(30,10))*/ DCL instName Charstring; DCL t1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),491(80,10))*/ DCL nbrWheels Integer := 8; DCL wheelCtr Integer; DCL distWheels Duration := 0.5; TIMER wheelT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),116(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),287(5,55))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),287(5,55))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),281(5,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),452(5,85))*/ nextstate /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),287(5,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),506(105,40))*/ state /*#E*/ Idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),509(105,55))*/ input /*#E*/ wheelT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),521(105,70))*/ task /*#E*/ wheelCtr := wheelCtr -1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),485(105,85))*/ call /*#E*/ putAnalogVal (instName, 1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),536(105,100))*/ decision /*#E*/ wheelCtr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),539(117,110))*/ (0): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),464(105,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),545(95,107))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),536(105,100))*/ enddecision; grst70: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),494(55,115))*/ /*#E*/ set(NOW+distWheels, wheelT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),500(55,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),506(105,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),239(55,55))*/ state /*#E*/ Idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),458(55,70))*/ input /*#E*/ newTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),530(55,85))*/ call /*#E*/ printIt ('new train in ' // instName, NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),515(55,100))*/ task /*#E*/ wheelCtr := nbrWheels; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),494(55,115))*/ join /*#E*/ grst70; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr(1),239(55,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrainSens_SDL/EnvTrainSensCtrl.spr,4)*/ endprocess EnvTrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sun,4)*/ Package EnvTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sun(1),122(60,55))*/ SIGNALLIST EnvTrainInp = go, initTrain, newSeqTrain, newSignalState, newTrainStart, newTrainStop; SIGNALLIST EnvTrainOutp = trainArrived, trainPassed, newTrainStart, newTrainStop, repTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sun(1),125(25,50))*/ block type EnvTrain referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sun,4)*/ endpackage EnvTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt,4)*/ Block Type EnvTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2189(5,47))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2190(10,57))*/ (EnvTrainInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2201(180,90))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2202(170,100))*/ (EnvTrainOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2180(40,47))*/ signalroute /*#E*/ ooi from env via oi to EnvTrainMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2181(40,57))*/ (EnvTrainInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2171(82,70))*/ signalroute /*#E*/ mo from EnvTrainMasterCtrl to EnvTrainCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2172(82,82))*/ (EnvTrainInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2192(137,90))*/ signalroute /*#E*/ ooo from EnvTrainCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2193(132,100))*/ (EnvTrainOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2165(60,45))*/ process EnvTrainMasterCtrl (1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt(1),2168(65,90))*/ process EnvTrainCtrl(0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrain.sbt,4)*/ endblock type EnvTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr,4)*/ process EnvTrainMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),116(55,10))*/ DCL instName Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),200(55,10))*/ DCL instPID PID; DCL td TrackDurationType; DCL dur Duration; DCL t1, t2 CharString; DCL sigState SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),569(55,10))*/ DCL tr Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),140(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),137(5,40))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),137(5,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),134(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),131(5,70))*/ create /*#E*/ EnvTrainCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),128(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),155(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),125(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),167(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),161(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),119(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),335(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),173(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),128(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(1),137(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),311(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),308(5,40))*/ input /*#E*/ initTrain (t1, td, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),305(5,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),302(5,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),326(67,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),296(55,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),290(55,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),323(17,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),299(5,85))*/ output /*#E*/ initTrain (t1, td, sigState) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),293(5,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),302(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),311(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),251(105,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),254(105,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),257(105,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),260(105,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),287(167,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),245(155,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),248(155,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),272(117,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),263(105,85))*/ output /*#E*/ newSignalState (t1, sigState) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),266(105,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),260(105,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),251(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),374(5,115))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),371(5,130))*/ input /*#E*/ newSeqTrain (t1, t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),368(5,145))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),365(5,160))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),392(67,167))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),356(55,175))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),353(55,190))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),386(17,172))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),362(5,175))*/ output /*#E*/ newSeqTrain (t1, t2) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),359(5,190))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),365(5,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(2),374(5,115))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),464(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),461(5,40))*/ input /*#E*/ newTrainStart (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),458(5,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),455(5,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),482(67,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),446(55,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),443(55,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),476(17,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),452(5,85))*/ output /*#E*/ newTrainStart (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),449(5,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),455(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),464(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),509(105,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),506(105,40))*/ input /*#E*/ newTrainStop (t1, tr); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),503(105,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),500(105,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),515(167,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),491(155,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),488(155,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),521(117,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),497(105,85))*/ output /*#E*/ newTrainStop (t1, tr) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),494(105,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),500(105,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr(3),509(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainMasterCtrl.spr,4)*/ endprocess EnvTrainMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr,4)*/ process EnvTrainCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),191(5,25))*/ /* EnvTrainTask 1 */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),116(55,25))*/ DCL instName Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),182(105,25))*/ DCL sigState SignalStateType; DCL td TrackDurationType; DCL curPos Real := 100; DCL ts CharString; DCL startTime Time; Timer ts1Timer; DCL seqTrain CharString := ''; DCL wholeDist Real; DCL repF TextFile; DCL ts1Pos, sigPos, breakPos, minDistPos Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3434(80,10))*/ DCL precPos Real; DCL stopDur, goDur Duration; Timer sigTimer, gateTimer, startTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),4514(105,10))*/ Timer sigStopTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4511(55,10))*/ Timer trainStopTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4481(80,10))*/ DCL repStopDur Duration; DCL repLifeDur Duration; DCL neutrDur Duration := 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2558(80,10))*/ Timer repT; DCL repDur Duration := 2.5; DCL creTime Time; DCL newMovType, movType SignalStateType; DCL repPos Duration:=0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),3008(55,10))*/ procedure setCurPos referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),3149(105,10))*/ procedure compDistDur referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2666(55,10))*/ procedure report referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),128(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),125(30,55))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),125(30,55))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),140(30,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),146(30,85))*/ nextstate /*#E*/ Init1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),125(30,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),146(30,85))*/ state /*#E*/ Init1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),152(30,100))*/ input /*#E*/ initTrain (ts, td, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2912(30,115))*/ task /*#E*/ wholeDist := (call dur2Real(td!ts1Dur))+ (call dur2Real(td!ts1SigDur))+ (call dur2Real(td!sigTs2Dur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4490(30,130))*/ task /*#E*/ ts1Pos := (call dur2Real(td!ts1SigDur+td!sigTs2Dur))/ wholeDist*100; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4496(30,145))*/ task /*#E*/ sigPos := (call dur2Real(td!sigTs2Dur))/ wholeDist*100; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4529(30,160))*/ task /*#E*/ minDistPos :=(call dur2Real(td!minDistDur))/ wholeDist*100; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4523(30,175))*/ task /*#E*/ breakPos :=(call dur2Real(td!breakDur))/ wholeDist*100; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),209(80,55))*/ /*#E*/ set (NOW+ td!ts1Dur, ts1Timer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),329(80,70))*/ task /*#E*/ startTime := NOW; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2540(80,85))*/ task /*#E*/ creTime := NOW; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2561(80,100))*/ /*#E*/ set (NOW+repDur, repT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2963(80,115))*/ task /*#E*/ repF:= OpenW ('logs/'// instName//'Log'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2975(80,130))*/ decision /*#E*/ IsOpened (repF); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2981(117,137))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2969(105,145))*/ call /*#E*/ printIt(instName//' WARNING: logfile not OK' ,Now); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2984(92,142))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2975(80,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),170(80,160))*/ nextstate /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),146(30,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2006(80,175))*/ state /*#E*/ *(appStop, sigStop, trainStop); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2015(80,190))*/ input /*#E*/ newSeqTrain (ts, seqTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2009(80,205))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),2006(80,175))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4010(105,175))*/ state /*#E*/ * (sigStop, sigBreak); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4007(105,190))*/ input /*#E*/ newSignalState (ts, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4004(105,205))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(1),4010(105,175))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3023(5,25))*/ state /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3026(5,40))*/ input /*#E*/ ts1Timer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3044(5,55))*/ output /*#E*/ trainArrived (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3041(5,70))*/ /*#E*/ set (NOW+ td!ts1SigDur- td!breakDur,sigTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3062(5,85))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3032(5,100))*/ nextstate /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3023(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3095(30,25))*/ state /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3092(30,40))*/ input /*#E*/ newTrainStop (ts, precPos); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3128(30,55))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3140(30,70))*/ task /*#E*/ stopDur := call compDistDur (precPos+minDistPos); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3071(30,85))*/ /*#E*/ set (NOW+ stopDur, trainStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3068(30,100))*/ nextstate /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3095(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3176(80,25))*/ state /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3173(80,40))*/ input /*#E*/ trainStopTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3206(80,55))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3161(80,70))*/ /*#E*/ reset (ts1Timer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3158(80,85))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3197(92,97))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3155(80,100))*/ output /*#E*/ newTrainStop (seqTrain, curPos) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3200(70,92))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3158(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3152(80,115))*/ nextstate /*#E*/ appStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3176(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3350(130,25))*/ state /*#E*/ appStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3347(130,40))*/ input /*#E*/ startTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3392(130,55))*/ task /*#E*/ goDur := call compDistDur (ts1Pos); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3380(130,70))*/ /*#E*/ set (NOW+ goDur, ts1Timer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3374(130,85))*/ task /*#E*/ startTime := NOW; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3338(130,100))*/ decision /*#E*/ seqTrain= ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3359(142,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3335(130,115))*/ output /*#E*/ newTrainStart (seqTrain) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3356(157,130))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3338(130,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3332(130,130))*/ nextstate /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3350(130,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3317(5,130))*/ state /*#E*/ appStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3314(5,145))*/ input /*#E*/ newTrainStart (ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3311(5,160))*/ /*#E*/ reset (trainStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3308(5,175))*/ /*#E*/ set (NOW+ td!breakDur, startTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3305(5,190))*/ nextstate /*#E*/ appStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3317(5,130))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3224(30,130))*/ state /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3221(30,145))*/ input /*#E*/ newTrainStart (ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3218(30,160))*/ /*#E*/ reset (trainStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3215(30,175))*/ nextstate /*#E*/ appGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3224(30,130))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3410(55,130))*/ state /*#E*/ appStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3407(55,145))*/ input /*#E*/ newSeqTrain (ts, seqTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3404(55,160))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3419(57,170))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3401(55,175))*/ output /*#E*/ newTrainStop (seqTrain, curPos) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3422(80,190))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3404(55,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3398(55,190))*/ nextstate /*#E*/ appStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(2),3410(55,130))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3536(5,25))*/ state /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3533(5,40))*/ input /*#E*/ sigTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3530(5,55))*/ decision /*#E*/ sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3545(17,67))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3569(5,70))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3527(5,85))*/ /*#E*/ set(NOW+ td!sigTS2Dur+td!breakDur, gateTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3509(5,100))*/ nextstate /*#E*/ gateGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3548(67,62))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3518(55,70))*/ /*#E*/ set (NOW+td!breakDur, sigStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3506(55,85))*/ nextstate /*#E*/ sigBreak; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3530(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3536(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3593(105,25))*/ state /*#E*/ sigBreak; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3590(105,40))*/ input /*#E*/ newSignalState (ts, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3587(105,55))*/ /*#E*/ reset (sigStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3623(105,70))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3614(105,85))*/ task /*#E*/ goDur := call compDistDur (0); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3617(105,100))*/ /*#E*/ set (NOW+ goDur, gateTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3575(105,115))*/ nextstate /*#E*/ gateGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3593(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3944(130,25))*/ state /*#E*/ sigBreak; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3941(130,40))*/ input /*#E*/ sigStopTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3926(130,55))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3935(130,70))*/ /*#E*/ reset (sigTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3932(130,85))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3947(142,97))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3929(130,100))*/ output /*#E*/ newTrainStop (seqTrain, curPos) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),4508(162,115))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3932(130,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3938(130,115))*/ nextstate /*#E*/ sigStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3944(130,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3470(5,115))*/ state /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3464(5,130))*/ input /*#E*/ newTrainStart (ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3458(5,145))*/ /*#E*/ reset (trainStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3452(5,160))*/ nextstate /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(3),3470(5,115))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3719(5,25))*/ state /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3716(5,40))*/ input /*#E*/ newTrainStop (ts, precPos); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3797(5,55))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3803(5,70))*/ task /*#E*/ stopDur := call compDistDur (precPos+minDistPos); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3800(5,85))*/ /*#E*/ set (NOW+ stopDur, trainStopTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3695(5,100))*/ nextstate /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3719(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3668(30,25))*/ state /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3665(30,40))*/ input /*#E*/ trainStopTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3860(30,55))*/ call /*#E*/ setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3869(30,70))*/ /*#E*/ reset (sigTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3866(30,85))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3878(42,97))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3863(30,100))*/ output /*#E*/ newTrainStop (seqTrain, curPos) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4295(55,115))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3866(30,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3647(30,115))*/ nextstate /*#E*/ trainStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3668(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3983(55,25))*/ state /*#E*/ sigStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3980(55,40))*/ input /*#E*/ newSignalState (ts, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3977(55,55))*/ decision /*#E*/ sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3992(67,67))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3974(55,70))*/ /*#E*/ set (NOW+td!breakDur, startTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3968(55,85))*/ nextstate /*#E*/ sigStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3995(117,62))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3971(105,70))*/ call /*#E*/ printIt(instName// ' ERROR: conflicting signal state', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3965(105,85))*/ nextstate /*#E*/ sigStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3977(55,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),3983(55,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4310(155,25))*/ state /*#E*/ sigStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4307(155,40))*/ input /*#E*/ startTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4313(155,55))*/ task /*#E*/ goDur := call compDistDur (0); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4316(155,70))*/ /*#E*/ set (NOW+ goDur, gateTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4319(155,85))*/ task /*#E*/ startTime := NOW; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4304(155,100))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4337(167,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4301(155,115))*/ output /*#E*/ newTrainStart (seqTrain) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4334(180,130))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4304(155,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4298(155,130))*/ nextstate /*#E*/ gateGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(4),4310(155,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4208(5,25))*/ state /*#E*/ trainStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4205(5,40))*/ input /*#E*/ newTrainStart (ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4202(5,55))*/ /*#E*/ set (NOW+ td!breakDur, startTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4199(5,70))*/ nextstate /*#E*/ trainStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4208(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4172(30,25))*/ state /*#E*/ trainStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4169(30,40))*/ input /*#E*/ startTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4271(30,55))*/ task /*#E*/ goDur := call compDistDur (sigPos+breakPos); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4280(30,70))*/ /*#E*/ set (NOW+ goDur, sigTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4289(30,85))*/ task /*#E*/ startTime := NOW; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4166(30,100))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4181(42,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4163(30,115))*/ output /*#E*/ newTrainStart (seqTrain) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4184(55,130))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4166(30,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4151(30,130))*/ nextstate /*#E*/ sigGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4172(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4358(80,25))*/ state /*#E*/ sigStop, trainStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4355(80,40))*/ input /*#E*/ newSeqTrain (ts, seqTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4352(80,55))*/ decision /*#E*/ seqTrain = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4364(92,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4349(80,70))*/ output /*#E*/ newTrainStop (seqTrain, curPos) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4367(107,60))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4352(80,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4346(80,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(5),4358(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4406(30,10))*/ state /*#E*/ gateGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4403(30,25))*/ input /*#E*/ gateTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4400(30,40))*/ output /*#E*/ trainPassed (instName) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4397(30,55))*/ /*#E*/ reset (repT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4394(30,70))*/ task /*#E*/ curPos := 0, movType := halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4391(30,85))*/ call /*#E*/ report; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4388(30,100))*/ task /*#E*/ repLifeDur := NOW-creTime; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4385(30,115))*/ task /*#E*/ repStopDur:= repLifeDur- (neutrDur*wholeDist); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4382(30,130))*/ output /*#E*/ repTrain (instName, repLifeDur, repStopDur) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4541(30,145))*/ task /*#E*/ repF := close (repF); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4379(30,160))*/ call /*#E*/ revokeInstance (self); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4376(35,175))*/ stop /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(6),4406(30,10))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2567(5,25))*/ state /*#E*/ appGo,sigGo, sigBreak,gateGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2570(5,40))*/ input /*#E*/ repT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2624(5,55))*/ task /*#E*/ movType:= go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),4517(5,70))*/ call /*#E*/ setCurPos; grst71: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2681(5,85))*/ /*#E*/ set (NOW+repDur, repT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2654(5,100))*/ call /*#E*/ report; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2660(5,115))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2567(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2630(30,25))*/ state /*#E*/ appStop, trainStop, sigStop; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2633(30,40))*/ input /*#E*/ repT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2639(30,55))*/ task /*#E*/ movType:= halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2681(5,85))*/ join /*#E*/ grst71; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr(7),2630(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/EnvTrainCtrl.spr,4)*/ endprocess EnvTrainCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd,4)*/ procedure setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd(1),131(80,25))*/ DCL tempR Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd(1),116(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd(1),119(30,40))*/ task /*#E*/ tempR :=(call dur2Real(NOW-startTime))/ wholeDist*100; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd(1),134(30,55))*/ task /*#E*/ curPos := curPos - tempR; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd(1),146(30,70))*/ task /*#E*/ startTime:= NOW; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd(1),140(35,85))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/setCurPos.spd,4)*/ endprocedure setCurPos; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd,4)*/ procedure compDistDur /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd,1)*/ ;FPAR IN dest Real; RETURNS Duration; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),146(80,10))*/ DCL diffR Real; DCL diffD Duration; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),119(5,40))*/ task /*#E*/ diffR := curPos-dest; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),125(5,55))*/ decision /*#E*/ diffR < 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),140(17,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),137(5,70))*/ task /*#E*/ diffR := diffR * wholeDist/100; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),134(42,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),131(30,70))*/ task /*#E*/ diffr := 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),164(30,85))*/ call /*#E*/ printIt ('Negativ value in compDistDur', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),125(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),149(5,100))*/ task /*#E*/ diffD := neutrDur*diffR; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd(1),158(10,115))*/ return /*#E*/ diffD; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/compDistDur.spd,4)*/ endprocedure compDistDur; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd,4)*/ procedure report; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),167(80,10))*/ DCL ts CharString; DCL tempR Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),119(30,10))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),116(30,25))*/ task /*#E*/ ts := instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),125(30,55))*/ task /*#E*/ ts:=ts//' '// (call realToStr (curPos)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),131(30,70))*/ task /*#E*/ ts:=ts//' '// signalStateTypeToStr (movType); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),143(30,85))*/ task /*#E*/ ts:=ts//' '// trackTypeToStr (td!trType); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),149(30,100))*/ task /*#E*/ ts:=ts//' '// (call durationToStr (NOW-creTime)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),209(30,115))*/ task /*#E*/ ts:=ts// ' at '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),218(80,70))*/ task /*#E*/ repF:=PutCharString (repF,ts); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),191(80,85))*/ task /*#E*/ repF:=PutTime (repF,NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),215(80,100))*/ task /*#E*/ repF:=PutNewLine(repF), repF:=Flush(repF); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd(1),161(85,115))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrain/report.spd,4)*/ endprocedure report; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sun,7)*/ USE Utils; USE Project; USE EnvSignal; USE EnvTrain; USE EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sun,4)*/ Package EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sun(1),122(60,55))*/ SIGNALLIST EnvTrackInp = go, initTrack, setPerToCreTrain, creNewTrain; SIGNALLIST EnvTrackOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sun(1),125(25,50))*/ block type EnvTrack referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sun,4)*/ endpackage EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt,4)*/ Block Type EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),159(12,40))*/ (EnvTrackInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),165(157,40))*/ (EnvTrackOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(1),2069(50,60))*/ /* Signals to subobjects via a */ SIGNALLIST ai2 = (EnvTrainSensInp) ; /* */ SIGNALLIST ai3 = (EnvSignalInp) ; /* */ SIGNALLIST ai4 = (EnvTrainInp) ; /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(1),2066(50,80))*/ /* Signals from subobjects via b */ SIGNALLIST bi2 = (EnvTrainSensOutp); /* */ SIGNALLIST bi3 = (EnvSignalOutp); /* */ SIGNALLIST bi4 = (EnvTrainOutp); /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt,4)*/ substructure EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),128(27,32))*/ channel /*#E*/ oi from env via oi to EnvTrackCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),129(35,40))*/ (EnvTrackInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),119(157,32))*/ channel /*#E*/ oo from EnvTrackCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),120(132,40))*/ (EnvTrackOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),290(30,130))*/ channel /*#E*/ a.i4 from EnvTrackCtrl to trains via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),291(44,137))*/ (ai4); endchannel a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),284(30,115))*/ channel /*#E*/ a.i3 from EnvTrackCtrl to sig1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),285(44,122))*/ (ai3); endchannel a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),278(30,100))*/ channel /*#E*/ a.i2 from EnvTrackCtrl to ts via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),279(44,107))*/ (ai2); endchannel a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),305(122,100))*/ channel /*#E*/ b.i2 from ts via oo to EnvTrackCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),306(147,107))*/ (bi2); endchannel b.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),311(121,115))*/ channel /*#E*/ b.i3 from sig1 via oo to EnvTrackCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),312(147,122))*/ (bi3); endchannel b.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),317(121,130))*/ channel /*#E*/ b.i4 from trains via oo to EnvTrackCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),318(147,137))*/ (bi4); endchannel b.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),116(65,35))*/ block EnvTrackCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),263(65,100))*/ block ts:EnvTrainSens; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),266(65,115))*/ block sig1:EnvSignal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt(2),269(65,130))*/ block trains:EnvTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt,4)*/ endsubstructure EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrack.sbt,4)*/ endblock type EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk,4)*/ Block EnvTrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),353(50,25))*/ SIGNALLIST aOut=(ai2),(ai3),(ai4); SIGNALLIST bIn=(bi2),(bi3),(bi4); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to EnvTrackMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),129(17,72))*/ (EnvTrackInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),182(150,72))*/ signalroute /*#E*/ b from env to EnvTrackMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),183(127,80))*/ (bIn); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),587(100,97))*/ signalroute /*#E*/ mo from EnvTrackMasterCtrl to EnvTrackCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),588(100,112))*/ (EnvTrackInp), (bIn); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),119(165,120))*/ signalroute /*#E*/ oo from EnvTrackCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),120(127,120))*/ (EnvTrackOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),173(19,135))*/ signalroute /*#E*/ a from EnvTrackCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),174(40,137))*/ (aOut); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),116(65,65))*/ process EnvTrackMasterCtrl(1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),554(80,120))*/ process EnvTrackCtrl(0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),575(177,122))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),584(5,132))*/ connect a.i2, a.i3, a.i4 and a; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk(1),635(177,75))*/ connect b.i2, b.i3, b.i4 and b; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.sbk,4)*/ endblock EnvTrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr,4)*/ Process EnvTrackMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),551(55,40))*/ DCL creMode CreationModeType; DCl trType TrackType; DCL perToCreTrain Duration; DCL td TrackDurationType; DCL t1 CharString; DCL instPID PID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),812(55,10))*/ DCL sigState SignalStateType; DCL t2 CharString; DCL dur, dur1 Duration; DCL tr Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),287(5,40))*/ state /*#E*/ Main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),473(5,70))*/ create /*#E*/ EnvTrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),470(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),485(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),461(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),458(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),479(17,95))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),467(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),749(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),464(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),470(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),239(55,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),620(5,115))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),617(5,130))*/ input /*#E*/ setPerToCreTrain (t1, perToCreTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),614(5,145))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),611(5,160))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),638(67,167))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),602(55,175))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),599(55,190))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),632(17,172))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),608(5,175))*/ output /*#E*/ setPerToCreTrain (t1, perToCreTrain) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),605(5,190))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),611(5,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),620(5,115))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),665(105,115))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),662(105,130))*/ input /*#E*/ creNewTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),659(105,145))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),656(105,160))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),671(167,167))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),647(155,175))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),644(155,190))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),677(117,172))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),653(105,175))*/ output /*#E*/ creNewTrain (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),650(105,190))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),656(105,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(2),665(105,115))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),725(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),722(5,40))*/ input /*#E*/ initTrack (t1, td, perToCreTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),719(5,85))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),716(5,100))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),743(92,107))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),707(80,115))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),704(80,145))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),737(17,112))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),713(5,115))*/ output /*#E*/ initTrack (t1, td, perToCreTrain) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),710(5,145))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),716(5,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(3),725(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),788(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),785(5,40))*/ input /*#E*/ newSIgnalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),815(5,55))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),782(5,70))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),779(5,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),806(67,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),770(55,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),767(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),800(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),776(5,100))*/ output /*#E*/ newSIgnalState (t1, sigState) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),773(5,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),779(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),788(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),971(105,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),968(105,40))*/ input /*#E*/ newTrainStop (t1, tr); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1088(105,55))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),962(105,70))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),959(105,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),992(167,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),950(155,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),947(155,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),986(117,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),956(105,100))*/ output /*#E*/ newTrainStop (t1, tr) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),953(105,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),959(105,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),971(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1124(5,130))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1121(5,145))*/ input /*#E*/ repTrain (t1, dur, dur1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1118(5,160))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1115(5,175))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1112(5,190))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1145(67,197))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1103(55,205))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1100(55,220))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1139(17,202))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1109(5,205))*/ output /*#E*/ repTrain (t1, dur, dur1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1106(5,220))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1112(5,190))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1124(5,130))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1064(105,130))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1061(105,145))*/ input /*#E*/ newTrainStart (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1094(105,160))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1058(105,175))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1055(105,190))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1070(167,197))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1046(155,205))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1043(155,220))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1076(117,202))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1052(105,205))*/ output /*#E*/ newTrainStart (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1049(105,220))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1055(105,190))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(4),1064(105,130))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),866(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),863(5,40))*/ input /*#E*/ trainArrived (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),860(5,55))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),854(5,70))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),851(5,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),890(67,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),842(55,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),839(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),884(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),848(5,100))*/ output /*#E*/ trainArrived (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),845(5,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),851(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),866(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),920(105,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),917(105,40))*/ input /*#E*/ trainPassed (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),914(105,55))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),911(105,70))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),908(105,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),926(167,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),899(155,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),896(155,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),932(117,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),905(105,100))*/ output /*#E*/ trainPassed (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),902(105,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),908(105,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr(5),920(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackMasterCtrl.spr,4)*/ endprocess EnvTrackMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr,4)*/ process EnvTrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),116(55,10))*/ DCL instName Charstring; DCL t1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),191(5,25))*/ /* EnvTrackTask */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),182(55,25))*/ DCL typeOfTrack TrackType; DCL lastTrainNo Integer := 0; DCL perToCreateTrain Duration; DCL sigState SignalStateType; DCL creationMode CreationModeType := period; DCL td TrackDurationType; DCL tr Real; Timer creTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),605(130,25))*/ NEWTYPE TrainArrayType ARRAY (Integer, CharString) ENDNEWTYPE; DCL maxNo Integer := 0; DCL trainArray TrainArrayType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),758(55,10))*/ DCL i Integer; DCL t2 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1391(55,10))*/ DCL precTrain CharString; DCL precPID PID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1538(130,70))*/ DCL dur Duration; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1568(80,10))*/ DCL repLifeDur, repStopDur Duration; DCL ti Integer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1601(80,25))*/ NEWTYPE TrainRepArrayType ARRAY (Integer, Real) ENDNEWTYPE; DCL maxRepNo Integer := 0; DCL trainRepArray TrainRepArrayType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),128(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),125(30,55))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),125(30,55))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),140(30,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),719(30,85))*/ output /*#E*/ go ('sig1'//instName) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),725(30,100))*/ output /*#E*/ go ('ts1'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),731(30,115))*/ output /*#E*/ go ('ts2'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),146(30,130))*/ nextstate /*#E*/ Init1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),125(30,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),146(30,130))*/ state /*#E*/ Init1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),584(30,145))*/ input /*#E*/ initTrack (t1, td, perToCreateTrain) ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),596(30,175))*/ output /*#E*/ getSignalState ('sig1'//instName) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),608(30,190))*/ nextstate /*#E*/ init2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),146(30,130))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),710(5,85))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),713(5,100))*/ save /*#E*/ initTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),710(5,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),614(80,85))*/ state /*#E*/ Init2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),617(80,100))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),920(80,115))*/ decision /*#E*/ creationMode; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),929(92,127))*/ (period): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),926(80,130))*/ /*#E*/ set (NOW+ perToCreateTrain, creTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),932(80,145))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),941(117,122))*/ (event): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),938(105,145))*/ nextstate /*#E*/ event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),920(80,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(1),614(80,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),749(5,25))*/ state /*#E*/ period, event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),752(5,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),761(5,55))*/ task /*#E*/ i:=0; grst72: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),767(5,70))*/ decision /*#E*/ i<= maxNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),776(17,82))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),773(5,85))*/ task /*#E*/ t1 := trainArray(i); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),785(5,100))*/ decision /*#E*/ t1 = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),788(17,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),791(5,115))*/ output /*#E*/ newSignalState (t1, sigState) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),806(27,105))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),785(5,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),797(5,130))*/ task /*#E*/ i:=i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),944(42,77))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),815(30,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),767(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),767(5,70))*/ join /*#E*/ grst72; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),749(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),827(55,25))*/ state /*#E*/ period, event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),830(55,40))*/ input /*#E*/ trainArrived (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),836(55,55))*/ output /*#E*/ newTrain ('ts1'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),842(55,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),827(55,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),848(80,25))*/ state /*#E*/ period, event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),851(80,40))*/ input /*#E*/ trainPassed (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),854(80,55))*/ output /*#E*/ newTrain ('ts2'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1289(80,70))*/ task /*#E*/ i:=0; grst73: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1286(80,85))*/ decision /*#E*/ i<= maxNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1307(92,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1283(80,100))*/ task /*#E*/ t2 := trainArray(i); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1280(80,115))*/ decision /*#E*/ t1 = t2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1301(92,127))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1274(80,130))*/ task /*#E*/ i:=i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1298(117,122))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1316(105,130))*/ task /*#E*/ trainArray(i) := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1319(105,145))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1280(80,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1328(142,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1325(130,100))*/ call /*#E*/ printIt (t1 // 'not found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1331(130,115))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1286(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),1286(80,85))*/ join /*#E*/ grst73; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(2),848(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),962(30,25))*/ state /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),965(30,40))*/ input /*#E*/ creTimer; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1409(30,55))*/ decision /*#E*/ lastTrainNo> 0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1421(42,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1418(30,70))*/ task /*#E*/ precTrain := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1412(67,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1394(55,70))*/ task /*#E*/ precTrain := 'train' // (call integerToStr (lastTrainNo))// instName ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1409(30,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),977(30,85))*/ task /*#E*/ lastTrainNo:= lastTrainNo+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),971(30,100))*/ task /*#E*/ t1:= 'train' // (call integerToStr (lastTrainNo))// instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1028(30,115))*/ task /*#E*/ i:=0; grst74: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1004(30,130))*/ decision /*#E*/ i< maxNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1007(42,142))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),998(30,145))*/ decision /*#E*/ trainArray(i) = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1013(42,157))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),992(30,160))*/ task /*#E*/ i:=i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1004(30,130))*/ join /*#E*/ grst74; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1040(67,152))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1037(55,160))*/ task /*#E*/ trainArray(i):= t1; grst75: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1340(55,175))*/ output /*#E*/ go(t1) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),884(55,190))*/ output /*#E*/ initTrain (t1, td, sigState) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1685(55,205))*/ task /*#E*/ precPID := call getPID(precTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1448(55,220))*/ decision /*#E*/ precTrain = '' OR precPID = Null; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1451(67,232))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1427(55,235))*/ output /*#E*/ newSeqTrain (precTrain, t1) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1454(87,250))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1448(55,220))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1067(55,250))*/ /*#E*/ set (NOW+ perToCreateTrain, creTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1073(55,265))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),998(30,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1046(92,137))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1043(80,145))*/ task /*#E*/ maxNo := maxNo+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1049(80,160))*/ task /*#E*/ trainArray(maxNo):= t1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1340(55,175))*/ join /*#E*/ grst75; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1004(30,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),962(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1205(105,25))*/ state /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1214(105,40))*/ input /*#E*/ setPerToCreTrain (t1, perToCreateTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1226(105,55))*/ /*#E*/ reset (creTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1211(105,70))*/ /*#E*/ set (NOW+ perToCreateTrain, creTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1208(105,85))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(3),1205(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1109(30,25))*/ state /*#E*/ event, period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1115(30,40))*/ input /*#E*/ creNewTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1187(30,55))*/ /*#E*/ reset (creTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1478(30,70))*/ decision /*#E*/ lastTrainNo> 0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1481(42,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1475(30,85))*/ task /*#E*/ precTrain := ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1484(67,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1472(55,85))*/ task /*#E*/ precTrain := 'train' // (call integerToStr (lastTrainNo))// instName ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1478(30,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1121(30,100))*/ task /*#E*/ lastTrainNo:= lastTrainNo+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1118(30,115))*/ task /*#E*/ t1:= 'train' // (call integerToStr (lastTrainNo))// instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1124(30,130))*/ task /*#E*/ i:=0; grst76: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1106(30,145))*/ decision /*#E*/ i< maxNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1148(42,157))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1103(30,160))*/ decision /*#E*/ trainArray(i) = ''; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1145(42,172))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1100(30,175))*/ task /*#E*/ i:=i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1106(30,145))*/ join /*#E*/ grst76; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1136(67,167))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1127(55,175))*/ task /*#E*/ trainArray(i):= t1; grst77: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1346(55,190))*/ output /*#E*/ go(t1) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1352(55,205))*/ output /*#E*/ initTrain (t1, td, sigState) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1679(55,220))*/ task /*#E*/ precPID := call getPID(precTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1439(55,235))*/ decision /*#E*/ precTrain = '' OR precPID = NULL; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1442(67,247))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1433(55,250))*/ output /*#E*/ newSeqTrain (precTrain, t1) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1445(82,265))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1439(55,235))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1130(55,265))*/ nextstate /*#E*/ event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1103(30,160))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1163(92,152))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1097(80,160))*/ task /*#E*/ maxNo := maxNo+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1094(80,175))*/ task /*#E*/ trainArray(maxNo):= t1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1346(55,190))*/ join /*#E*/ grst77; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1106(30,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1109(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1178(105,25))*/ state /*#E*/ event; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1181(105,40))*/ input /*#E*/ setPerToCreTrain (t1, perToCreateTrain); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1196(105,55))*/ /*#E*/ set (NOW+ perToCreateTrain, creTimer); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1193(105,70))*/ nextstate /*#E*/ period; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1178(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1496(105,85))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1499(105,100))*/ input /*#E*/ newTrainStart (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1505(105,115))*/ output /*#E*/ newTrainStart (t1) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1511(105,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1496(105,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1517(130,85))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1520(130,100))*/ input /*#E*/ newTrainStop (t1, tr); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1523(130,115))*/ output /*#E*/ newTrainStop (t1, tr) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1526(130,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(4),1517(130,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1559(30,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1562(30,40))*/ input /*#E*/ repTrain (t1, repLifeDur, repStopDur); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1622(30,55))*/ task /*#E*/ tr :=(call dur2Real(repStopDur))/ (call dur2Real(repLifeDur)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1604(30,70))*/ task /*#E*/ maxRepNo:= maxRepNo+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1691(30,85))*/ task /*#E*/ ti := Fix (tr*100); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1697(30,100))*/ task /*#E*/ tr := Float (ti); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1616(30,115))*/ task /*#E*/ trainRepArray (maxRepNo):= tr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1610(80,70))*/ task /*#E*/ i:=1, tr := 0; grst78: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1628(80,85))*/ decision /*#E*/ i> maxRepNo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1637(92,97))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1634(80,100))*/ task /*#E*/ tr := tr+ trainRepArray (i); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1640(80,115))*/ task /*#E*/ i:=i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1655(117,92))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1652(105,100))*/ task /*#E*/ tr := tr/ Float(maxRepNo); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1673(105,115))*/ task /*#E*/ t1 := instName // ' '; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1658(105,130))*/ task /*#E*/ t1 := t1//(call realToStr (tr)); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1589(105,145))*/ call /*#E*/ putPanelVal( 'obj1',t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1571(105,160))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1628(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1628(80,85))*/ join /*#E*/ grst78; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr(5),1559(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvTrack_SDL/EnvTrackCtrl.spr,4)*/ endprocess EnvTrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sun,7)*/ USE Utils; USE Project; USE EnvRoad; USE EnvTrack; USE EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sun,4)*/ Package EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sun(1),122(60,55))*/ SIGNALLIST EnvCrossingInp = go, initTracks, initTracksDone, setPeriod, setDecrPer, genCars, setPerToCreTrain, creNewTrain; SIGNALLIST EnvCrossingOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sun(1),125(25,50))*/ block type EnvCrossing referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sun,4)*/ endpackage EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt,4)*/ block type EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),159(5,40))*/ (Env_ Crossing_ Inp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),165(167,40))*/ (Env_ Crossing_ Outp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(1),2069(50,60))*/ /* Signals to subobjects via a */ SIGNALLIST ai2 = (EnvGateInp) ; /* */ SIGNALLIST ai3 = (EnvTrackInp) ; /* */ SIGNALLIST ai4 = (EnvRoadInp) ; /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(1),2066(50,80))*/ /* Signals from subobjects via b */ SIGNALLIST bi2 = (EnvGateOutp); /* */ SIGNALLIST bi3 = (EnvTrackOutp); /* */ SIGNALLIST bi4 = (EnvRoadOutp); /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt,4)*/ substructure EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),128(27,32))*/ channel /*#E*/ oi from env via oi to EnvCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),129(35,40))*/ (EnvCrossingInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),119(157,32))*/ channel /*#E*/ oo from EnvCrossingCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),120(132,40))*/ (EnvCrossingOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),290(30,130))*/ channel /*#E*/ a.i4 from EnvCrossingCtrl to road1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),291(44,137))*/ (ai4); endchannel a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),284(30,115))*/ channel /*#E*/ a.i3 from EnvCrossingCtrl to tracks via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),285(44,122))*/ (ai3); endchannel a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),278(30,100))*/ channel /*#E*/ a.i2 from EnvCrossingCtrl to gate1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),279(44,107))*/ (ai2); endchannel a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),305(122,100))*/ channel /*#E*/ b.i2 from gate1 via oo to EnvCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),306(147,107))*/ (bi2); endchannel b.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),311(121,115))*/ channel /*#E*/ b.i3 from tracks via oo to EnvCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),312(147,122))*/ (bi3); endchannel b.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),317(121,130))*/ channel /*#E*/ b.i4 from road1 via oo to EnvCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),318(147,137))*/ (bi4); endchannel b.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),116(65,35))*/ block EnvCrossingCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),263(65,100))*/ block gate1:EnvGate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),266(65,115))*/ block tracks:EnvTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt(2),269(65,130))*/ block road1:EnvRoad; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt,4)*/ endsubstructure EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossing.sbt,4)*/ endblock type EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk,4)*/ Block EnvCrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),353(50,25))*/ SIGNALLIST aOut=(ai2),(ai3),(ai4); SIGNALLIST bIn=(bi2),(bi3),(bi4); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to EnvCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),129(17,72))*/ (EnvCrossingInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),182(150,65))*/ signalroute /*#E*/ b from env to EnvCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),183(127,72))*/ (bIn); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),173(42,80))*/ signalroute /*#E*/ a from EnvCrossingCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),174(40,87))*/ (aOut); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),119(166,81))*/ signalroute /*#E*/ oo from EnvCrossingCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),120(127,80))*/ (EnvCrossingOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),116(65,65))*/ process EnvCrossingCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),584(5,80))*/ connect a.i2, a.i3, a.i4 and a; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),689(177,82))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk(1),695(177,62))*/ connect b.i2, b.i3, b.i4 and b; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.sbk,4)*/ endblock EnvCrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr,4)*/ process EnvCrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),116(55,10))*/ DCL instName Charstring; DCL t1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1682(130,10))*/ DCL td TrackDurationType; DCL perToCreTrains Duration; DCL curTrackNbr Integer := 1; DCL i Integer; DCL nbr Integer; DCL perToCreCars Duration := 5; DCL perToDecrCars Duration := 3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1607(30,10))*/ /* EnvCrossingTask1 */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1604(80,10))*/ DCL gateState GateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1946(30,10))*/ DCL trackName Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),128(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),125(30,55))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),125(30,55))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),140(30,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),1559(30,85))*/ call /*#E*/ announceInstance (self, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),719(30,100))*/ output /*#E*/ go ('gate1'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),725(30,115))*/ output /*#E*/ go ('road1'//instName) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),1613(30,130))*/ nextstate /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(1),125(30,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1667(30,40))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1670(30,55))*/ input /*#E*/ initTracks (nbr, td, perToCreTrains); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1697(30,70))*/ task {/*#E*/ i := 1;}; grst79: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1703(30,85))*/ decision /*#E*/ i > nbr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1718(42,95))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1715(30,100))*/ task /*#E*/ t1 := 'track'//(call integerToStr(curTrackNbr))// instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1727(30,115))*/ output /*#E*/ go(t1) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1709(30,130))*/ output /*#E*/ initTrack(t1, td, perToCreTrains) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1739(30,145))*/ task {/*#E*/ curTrackNbr := curTrackNbr + 1; i := i + 1;}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1724(67,92))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1721(55,160))*/ nextstate /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1703(30,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1703(30,85))*/ join /*#E*/ grst79; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1667(30,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1751(80,40))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1754(80,55))*/ input /*#E*/ initTracksDone; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1766(80,70))*/ output /*#E*/ getGateState via a.i2 /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1799(130,70))*/ /* reception of newGateState is end of initialization for EnvCrossingCtrl */ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1787(80,85))*/ output /*#E*/ setDecrPer(perToDecrCars) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1781(80,100))*/ output /*#E*/ setPeriod(perToCreCars) via a.i4 /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1793(105,145))*/ /* starts the creation of cars */ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1760(80,115))*/ nextstate /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(2),1751(80,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1583(5,25))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1580(5,40))*/ input /*#E*/ newGateState (gateState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1577(5,55))*/ decision /*#E*/ gateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1592(17,67))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1574(5,70))*/ output /*#E*/ gateOpened via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1568(5,85))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1595(42,62))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1571(30,70))*/ output /*#E*/ gateClosed via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1565(30,85))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1577(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1583(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1526(80,25))*/ state /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1529(80,40))*/ input /*#E*/ newGateState (gateState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1532(80,55))*/ decision /*#E*/ gateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1550(92,67))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1535(80,70))*/ output /*#E*/ gateOpened via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1538(80,85))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1544(117,62))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1541(105,70))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1532(80,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1526(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1487(80,100))*/ state /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1490(80,115))*/ input /*#E*/ newGateState (gateState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1502(80,130))*/ decision /*#E*/ gateState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1511(92,142))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1508(80,145))*/ output /*#E*/ gateClosed via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1514(80,160))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1523(117,137))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1520(105,145))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1502(80,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(3),1487(80,100))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1817(30,25))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1820(30,40))*/ input /*#E*/ setPeriod (perToCreCars) ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1949(30,55))*/ output /*#E*/ setPeriod (perToCreCars) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1826(30,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1817(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1832(80,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1835(80,40))*/ input /*#E*/ setDecrPer (perToDecrCars) ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1955(80,55))*/ output /*#E*/ setDecrPer (perToDecrCars) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1838(80,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1832(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1847(30,85))*/ state /*#E*/ * (Init); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1850(30,100))*/ input /*#E*/ setPeriod (perToCreCars); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1862(30,115))*/ output /*#E*/ setPeriod (perToCreCars) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1853(30,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1847(30,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1889(80,85))*/ state /*#E*/ * (Init); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1892(80,100))*/ input /*#E*/ genCars(nbr); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1898(80,115))*/ output /*#E*/ genCars(nbr) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1940(80,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(4),1889(80,85))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1880(30,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1883(30,40))*/ input /*#E*/ setPerToCreTrain (trackName, perToCreTrains); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1907(30,55))*/ output /*#E*/ setPerToCreTrain (trackName, perToCreTrains) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1913(30,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1880(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1922(80,25))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1919(80,40))*/ input /*#E*/ creNewTrain (trackName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1925(80,55))*/ output /*#E*/ creNewTrain (trackName) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1928(80,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr(5),1922(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/EnvCrossing/EnvCrossingCtrl.spr,4)*/ endprocess EnvCrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sun,4)*/ Package RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sun(1),122(60,55))*/ SIGNALLIST RoadCtrlInp = go; SIGNALLIST RoadCtrlOutp = newCars; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sun(1),125(25,50))*/ block type RoadCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sun,4)*/ endpackage RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt,4)*/ Block Type RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),159(12,40))*/ (RoadCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),165(160,40))*/ (RoadCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt,4)*/ substructure RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to RoadCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),129(40,40))*/ (RoadCtrlInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),119(157,32))*/ channel /*#E*/ oo from RoadCtrlCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),120(132,40))*/ (RoadCtrlOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt(1),116(65,35))*/ block RoadCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt,4)*/ endsubstructure RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrl.sbt,4)*/ endblock type RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk,4)*/ Block RoadCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),128(12,65))*/ signalroute /*#E*/ oi from env to RoadCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),129(17,72))*/ (RoadCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),119(167,77))*/ signalroute /*#E*/ oo from RoadCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),120(127,80))*/ (RoadCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),116(65,65))*/ process RoadCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),134(2,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk(1),581(177,75))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.sbk,4)*/ endblock RoadCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr,4)*/ Process RoadCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),566(80,25))*/ DCL newCarsInVal Boolean; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),554(105,40))*/ EXPORTED procedure setPhysVal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),287(5,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),557(5,70))*/ call /*#E*/ announceInstance (self, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),452(5,85))*/ nextstate /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),239(55,40))*/ state /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),539(55,55))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),545(55,85))*/ output /*#E*/ newCars (newCarsInVal) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),476(55,100))*/ nextstate /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/RoadCtrlCtrl.spr,4)*/ endprocess RoadCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd,4)*/ Procedure setPhysVal /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd,1)*/ ;FPAR IN newValue CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),278(80,25))*/ DCL r Real; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),116(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),257(30,40))*/ task /*#E*/ r:= call toReal (newValue); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),281(30,55))*/ call /*#E*/ printIt (instName//': '// newValue, NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),254(30,70))*/ decision /*#E*/ r=1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),263(42,82))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),251(30,85))*/ task /*#E*/ newCarsInVal := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),269(67,77))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),245(55,85))*/ task /*#E*/ newCarsInVal := false; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),254(30,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd(1),248(35,100))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RoadCtrl_SDL/setPhysVal.spd,4)*/ endprocedure setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sun,4)*/ Package SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sun(1),122(60,55))*/ SIGNALLIST SignalCtrlInp = go, getSignalState, setSignalState; SIGNALLIST SignalCtrlOutp = newSignalState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sun(1),125(25,50))*/ block type SignalCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sun,4)*/ endpackage SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt,4)*/ Block Type SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),159(12,40))*/ (SignalCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),165(167,40))*/ (SignalCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt,4)*/ substructure SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to SignalCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),129(40,40))*/ (SignalCtrlInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),119(157,32))*/ channel /*#E*/ oo from SignalCtrlCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),120(132,40))*/ (SignalCtrlOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt(1),116(65,35))*/ block SignalCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt,4)*/ endsubstructure SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrl.sbt,4)*/ endblock type SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk,4)*/ Block SignalCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),128(12,65))*/ signalroute /*#E*/ oi from env to SignalCtrlMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),129(17,72))*/ (SignalCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),539(97,100))*/ signalroute /*#E*/ mo from SignalCtrlMasterCtrl to SignalCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),540(97,117))*/ (SignalCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),119(167,133))*/ signalroute /*#E*/ oo from SignalCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),120(127,137))*/ (SignalCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),116(65,65))*/ process SignalCtrlMasterCtrl(1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),536(65,125))*/ process SignalCtrlCtrl (0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),134(2,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk(1),551(177,132))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.sbk,4)*/ endblock SignalCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr,4)*/ Process SignalCtrlMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),551(55,10))*/ DCL t1 CharString; DCL instPID PID; DCL sigState SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),287(5,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),473(5,70))*/ create /*#E*/ SignalCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),470(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),485(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),461(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),458(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),479(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),467(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),749(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),464(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),470(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),527(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),524(5,40))*/ input /*#E*/ setSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),521(5,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),518(5,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),545(67,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),509(55,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),506(55,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),539(17,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),515(5,85))*/ output /*#E*/ setSignalState (t1, sigState) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),512(5,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),518(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),527(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),776(105,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),773(105,40))*/ input /*#E*/ getSignalState (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),770(105,55))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),767(105,70))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),794(167,77))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),758(155,85))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),755(155,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),788(117,82))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),764(105,85))*/ output /*#E*/ getSignalState (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),761(105,100))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),767(105,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr(2),776(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlMasterCtrl.spr,4)*/ endprocess SignalCtrlMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr,4)*/ Process SignalCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; DCL newSigState SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),287(5,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),452(5,85))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),239(55,40))*/ state /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),464(55,55))*/ input /*#E*/ setSignalState (ts1, newSigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),470(55,70))*/ decision /*#E*/ newSigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),485(67,82))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),479(55,85))*/ call /*#E*/ putAnalogVal (instName, 1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),476(55,115))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),518(92,77))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),515(80,85))*/ call /*#E*/ printIt ( 'ERROR1 in '//instname, NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),521(80,100))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),470(55,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),494(105,40))*/ state /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),497(105,55))*/ input /*#E*/ setSignalState (ts1, newSigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),500(105,70))*/ decision /*#E*/ newSigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),512(117,82))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),491(105,85))*/ call /*#E*/ putAnalogVal (instName, 0); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),488(105,115))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),536(142,77))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),527(130,85))*/ call /*#E*/ printIt ( 'ERROR2 in '//instname, NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),530(130,100))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),500(105,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),494(105,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),557(5,100))*/ state /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),560(5,115))*/ input /*#E*/ getSignalState (ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),566(5,130))*/ output /*#E*/ newSignalState (ts1, halt); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),572(5,145))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),557(5,100))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),578(30,100))*/ state /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),581(30,115))*/ input /*#E*/ getSignalState (ts1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),584(30,130))*/ output /*#E*/ newSignalState (ts1, go); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),587(30,145))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr(1),578(30,100))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/SignalCtrl_SDL/SignalCtrlCtrl.spr,4)*/ endprocess SignalCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sun,4)*/ Package GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sun(1),122(60,55))*/ SIGNALLIST GateCtrlInp = go, setGate; SIGNALLIST GateCtrlOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sun(1),125(25,50))*/ block type GateCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sun,4)*/ endpackage GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt,4)*/ Block Type GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),159(12,40))*/ (GateCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),165(162,40))*/ (GateCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt,4)*/ substructure GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to GateCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),129(37,40))*/ (GateCtrlInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),119(157,32))*/ channel /*#E*/ oo from GateCtrlCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),120(132,40))*/ (GateCtrlOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt(1),116(65,35))*/ block GateCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt,4)*/ endsubstructure GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrl.sbt,4)*/ endblock type GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk,4)*/ Block GateCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to GateCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),129(17,72))*/ (GateCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),119(167,65))*/ signalroute /*#E*/ oo from GateCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),120(127,72))*/ (GateCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),116(65,65))*/ process GateCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk(1),125(177,67))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.sbk,4)*/ endblock GateCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr,4)*/ Process GateCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL newState GateStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),287(5,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),422(5,70))*/ call /*#E*/ announceInstance (self, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),452(5,85))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),239(55,40))*/ state /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),458(55,55))*/ input /*#E*/ setGate (newState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),464(55,70))*/ decision /*#E*/ newState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),473(67,82))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),470(55,85))*/ call /*#E*/ putAnalogVal (instName, 1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),476(55,100))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),491(92,77))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),488(80,85))*/ call /*#E*/ printIt (instName // ' ERROR1', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),494(80,100))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),464(55,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),515(105,40))*/ state /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),512(105,55))*/ input /*#E*/ setGate (newState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),509(105,70))*/ decision /*#E*/ newState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),530(117,82))*/ (closed): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),506(105,85))*/ call /*#E*/ putAnalogVal (instName, 0); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),503(105,100))*/ nextstate /*#E*/ closed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),536(142,77))*/ (opened): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),500(130,85))*/ call /*#E*/ printIt (instName // ' ERROR2', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),518(130,100))*/ nextstate /*#E*/ opened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),509(105,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr(1),515(105,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/GateCtrl_SDL/GateCtrlCtrl.spr,4)*/ endprocess GateCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sun,7)*/ USE Utils; USE Project; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sun,4)*/ Package TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sun(1),122(60,55))*/ SIGNALLIST TrainSensCtrlInp = go; SIGNALLIST TrainSensCtrlOutp = newTrain; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sun(1),125(25,50))*/ block type TrainSensCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sun,4)*/ endpackage TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt,4)*/ Block Type TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),159(12,40))*/ (TrainSensCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),165(160,40))*/ (TrainSensCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt,4)*/ substructure TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),128(27,32))*/ channel /*#E*/ oi from env via oi to TrainSensCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),129(40,40))*/ (TrainSensCtrlInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),119(157,32))*/ channel /*#E*/ oo from TrainSensCtrlCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),120(132,40))*/ (TrainSensCtrlOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt(1),116(65,35))*/ block TrainSensCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt,4)*/ endsubstructure TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrl.sbt,4)*/ endblock type TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk,4)*/ Block TrainSensCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),128(12,65))*/ signalroute /*#E*/ oi from env to TrainSensCtrlMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),129(17,72))*/ (TrainSensCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),539(97,100))*/ signalroute /*#E*/ mo from TrainSensCtrlMasterCtrl to TrainSensCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),540(97,117))*/ (TrainSensCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),119(167,133))*/ signalroute /*#E*/ oo from TrainSensCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),120(127,137))*/ (TrainSensCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),116(65,65))*/ process TrainSensCtrlMasterCtrl(1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),536(65,125))*/ process TrainSensCtrlCtrl (0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),134(2,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk(1),551(177,132))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.sbk,4)*/ endblock TrainSensCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr,4)*/ Process TrainSensCtrlMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),287(5,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),473(5,70))*/ create /*#E*/ TrainSensCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),470(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),485(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),461(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),458(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),479(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),467(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),749(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),464(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),470(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlMasterCtrl.spr,4)*/ endprocess TrainSensCtrlMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr,4)*/ Process TrainSensCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),185(70,10))*/ DCL instName Charstring; DCL ts, ts1 CharString; DCL wheelDelay Duration := 2; TIMER wheelT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),554(130,10))*/ EXPORTED procedure setPhysVal referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),287(5,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),452(5,85))*/ nextstate /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),239(55,40))*/ state /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),539(55,55))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),596(55,70))*/ output /*#E*/ newTrain (instname) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),566(55,85))*/ /*#E*/ reset(wheelT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),572(55,100))*/ /*#E*/ set(NOW+wheelDelay, wheelT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),578(55,115))*/ nextstate /*#E*/ TrainPassing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),584(105,40))*/ state /*#E*/ TrainPassing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),587(105,55))*/ input /*#E*/ wheelT; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),557(105,70))*/ nextstate /*#E*/ idle; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),584(105,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),617(130,40))*/ state /*#E*/ TrainPassing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),614(130,55))*/ input /*#E*/ setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),611(130,70))*/ /*#E*/ reset(wheelT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),608(130,85))*/ /*#E*/ set(NOW+wheelDelay, wheelT); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),605(130,100))*/ nextstate /*#E*/ TrainPassing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr(1),617(130,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/TrainSensCtrlCtrl.spr,4)*/ endprocess TrainSensCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/setPhysVal.spd,4)*/ Procedure setPhysVal /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/setPhysVal.spd,1)*/ ;FPAR IN newValue CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/setPhysVal.spd(1),116(30,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/setPhysVal.spd(1),194(35,40))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrainSensCtrl_SDL/setPhysVal.spd,4)*/ endprocedure setPhysVal; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sun,7)*/ USE Utils; USE Project; USE SignalCtrl; USE TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sun,4)*/ Package TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sun(1),122(60,55))*/ SIGNALLIST TrackCtrlInp = go, setSignalState; SIGNALLIST TrackCtrlOutp = askForGo, noTrains, newSignalState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sun(1),125(25,50))*/ block type TrackCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sun,4)*/ endpackage TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt,4)*/ Block Type TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),159(12,40))*/ (TrackCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),165(157,40))*/ (TrackCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(1),2069(50,60))*/ /* Signals to subobjects via a */ SIGNALLIST ai1 = (TrainSensCtrlInp) ; /* */ SIGNALLIST ai2 = (SignalCtrlInp) ; /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(1),2066(50,80))*/ /* Signals from subobjects via b */ SIGNALLIST bi1 = (TrainSensCtrlOutp); /* */ SIGNALLIST bi2 = (SignalCtrlOutp); /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt,4)*/ substructure TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),128(27,32))*/ channel /*#E*/ oi from env via oi to TrackCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),129(35,40))*/ (TrackCtrlInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),119(157,32))*/ channel /*#E*/ oo from TrackCtrlCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),120(132,40))*/ (TrackCtrlOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),284(30,115))*/ channel /*#E*/ a.i2 from TrackCtrlCtrl to sig1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),285(44,122))*/ (ai2); endchannel a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),278(30,100))*/ channel /*#E*/ a.i1 from TrackCtrlCtrl to ts via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),279(44,107))*/ (ai1); endchannel a.i1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),305(122,100))*/ channel /*#E*/ b.i1 from ts via oo to TrackCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),306(147,107))*/ (bi1); endchannel b.i1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),311(121,115))*/ channel /*#E*/ b.i2 from sig1 via oo to TrackCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),312(147,122))*/ (bi2); endchannel b.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),116(65,35))*/ block TrackCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),263(65,100))*/ block ts:TrainSensCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt(2),266(65,115))*/ block sig1:SignalCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt,4)*/ endsubstructure TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrl.sbt,4)*/ endblock type TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk,4)*/ Block TrackCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),353(50,25))*/ SIGNALLIST aOut=(ai1),(ai2); SIGNALLIST bIn=(bi1),(bi2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to TrackCtrlMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),129(17,72))*/ (TrackCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),182(150,72))*/ signalroute /*#E*/ b from env to TrackCtrlMasterCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),183(127,80))*/ (bIn); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),587(100,97))*/ signalroute /*#E*/ mo from TrackCtrlMasterCtrl to TrackCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),588(100,112))*/ (TrackCtrlInp), (bIn); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),119(165,120))*/ signalroute /*#E*/ oo from TrackCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),120(127,120))*/ (TrackCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),173(19,135))*/ signalroute /*#E*/ a from TrackCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),174(40,137))*/ (aOut); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),116(65,65))*/ process TrackCtrlMasterCtrl(1,1) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),554(80,120))*/ process TrackCtrlCtrl(0, ) referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),575(177,122))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),584(5,132))*/ connect a.i1, a.i2 and a; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk(1),635(177,75))*/ connect b.i1, b.i2 and b; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.sbk,4)*/ endblock TrackCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr,4)*/ Process TrackCtrlMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),185(70,10))*/ DCL instName Charstring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1163(55,10))*/ DCL sigState SignalStateType; DCL t1, t2 CharString; DCL instPID PID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),287(5,40))*/ nextstate /*#E*/ Main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),287(5,40))*/ state /*#E*/ Main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),281(5,55))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),473(5,70))*/ create /*#E*/ TrackCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),470(5,85))*/ decision /*#E*/ offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),485(67,92))*/ (null): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),461(55,100))*/ call /*#E*/ printIt(instName//' ERROR: '// 'cannot dynamically create process', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),458(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),479(17,95))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),467(5,100))*/ output /*#E*/ go(instName) to offspring; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),749(5,115))*/ call /*#E*/ announceInstance (offspring, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),464(5,130))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),470(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),287(5,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),239(55,40))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(1),239(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1136(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1133(5,40))*/ input /*#E*/ setSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1127(5,70))*/ task /*#E*/ instPID := call getPID (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1124(5,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1154(67,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1118(55,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1112(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1151(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1121(5,100))*/ output /*#E*/ setSIgnalState (t1, sigState) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1115(5,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1124(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1136(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1190(105,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1187(105,40))*/ input /*#E*/ newSIgnalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1184(105,55))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1181(105,70))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1178(105,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1208(167,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1172(155,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1166(155,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1205(117,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1175(105,100))*/ output /*#E*/ newSIgnalState (t1, sigState) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1169(105,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1178(105,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(2),1190(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1304(5,25))*/ state /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1301(5,40))*/ input /*#E*/ newTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1298(5,55))*/ task /*#E*/ t2 := call cutFirstId (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1295(5,70))*/ task /*#E*/ instPID := call getPID (t2); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1292(5,85))*/ decision /*#E*/ instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1322(67,92))*/ (NULL): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1286(55,100))*/ call /*#E*/ printIt(t1//' ERROR: '// 'no matching process instance found', NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1280(55,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1319(17,97))*/ else: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1289(5,100))*/ output /*#E*/ newTrain (t1) to instPID; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1283(5,115))*/ nextstate /*#E*/ main; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1292(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr(3),1304(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlMasterCtrl.spr,4)*/ endprocess TrackCtrlMasterCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr,4)*/ process TrackCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),116(55,10))*/ DCL instName Charstring; DCL t1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),1784(105,10))*/ Timer tt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),191(5,25))*/ /* EnvTrackTask */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),1541(55,25))*/ DCL curTrainNo Integer := 0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1775(55,10))*/ DCL sigState SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),128(30,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),125(30,55))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),125(30,55))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),140(30,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),719(30,85))*/ output /*#E*/ go ('sig1'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),725(30,100))*/ output /*#E*/ go ('ts1'//instName) via a.i1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),731(30,115))*/ output /*#E*/ go ('ts2'//instName) via a.i1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),1841(30,130))*/ output /*#E*/ getSignalState ('sig1'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),146(30,145))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),125(30,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2009(80,40))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2012(80,55))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2018(80,70))*/ decision /*#E*/ sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2027(92,82))*/ (halt): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2024(80,85))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2033(117,77))*/ (go): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2030(105,85))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2018(80,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(1),2009(80,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1967(5,25))*/ state /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1964(5,40))*/ input /*#E*/ newTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1961(5,55))*/ decision /*#E*/ t1 = 'ts1'//instname; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1976(17,67))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1958(5,70))*/ task /*#E*/ curTrainNo := curTrainNo + 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2090(5,85))*/ output /*#E*/ askForGo (instName) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1955(5,100))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1982(42,62))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1952(30,70))*/ decision /*#E*/ curTrainNo = 0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1985(42,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1949(30,85))*/ task /*#E*/ curTrainNo := curTrainNo - 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2237(30,100))*/ decision /*#E*/ curTrainNo = 0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2240(42,112))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2243(30,115))*/ output /*#E*/ noTrains (instname); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2249(57,130))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2237(30,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1937(30,130))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),2003(92,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1931(80,85))*/ call /*#E*/ printIt ( 'ERROR1 in '//instname, NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1928(80,100))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1952(30,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1961(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(2),1967(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2150(5,25))*/ state /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2147(5,40))*/ input /*#E*/ newTrain (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2144(5,55))*/ decision /*#E*/ t1 = 'ts1'//instname; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2159(17,67))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2141(5,70))*/ task /*#E*/ curTrainNo := curTrainNo + 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2138(5,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2165(42,62))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2135(30,70))*/ decision /*#E*/ curTrainNo =0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2168(42,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2132(30,85))*/ task /*#E*/ curTrainNo := curTrainNo - 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2180(30,100))*/ decision /*#E*/ curTrainNo =0; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2183(42,112))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2195(30,115))*/ output /*#E*/ setSignalState ('sig1'//instName, halt) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2192(30,130))*/ output /*#E*/ newSignalState (instName, halt) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2252(30,145))*/ output /*#E*/ noTrains (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2129(30,160))*/ nextstate /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2222(67,107))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2180(30,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2174(67,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2126(55,85))*/ call /*#E*/ printIt ( 'ERROR2 in '//instname, NOW); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2135(30,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2123(55,115))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2144(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(3),2150(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2069(30,25))*/ state /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2066(30,40))*/ input /*#E*/ setSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2210(30,55))*/ output /*#E*/ setSignalState ('sig1'//instName, halt) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2207(30,70))*/ output /*#E*/ newSignalState (instname, halt) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2204(30,85))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2069(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2060(105,25))*/ state /*#E*/ halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2057(105,40))*/ input /*#E*/ setSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2054(105,55))*/ output /*#E*/ setSignalState ('sig1'//instName, go) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2051(105,70))*/ output /*#E*/ newSignalState (instname, go) via oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2048(105,85))*/ nextstate /*#E*/ go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr(4),2060(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/TrackCtrl_SDL/TrackCtrlCtrl.spr,4)*/ endprocess TrackCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sun,7)*/ USE Utils; USE Project; USE RoadCtrl; USE TrackCtrl; USE GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sun,4)*/ Package CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sun(1),122(60,55))*/ SIGNALLIST CrossingCtrlInp = go, initTracks, initTracksDone, setStrategy; SIGNALLIST CrossingCtrlOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sun(1),125(25,50))*/ block type CrossingCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sun,4)*/ endpackage CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt,4)*/ block type CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),159(12,40))*/ (CrossingCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),165(157,40))*/ (CrossingCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(1),2069(50,60))*/ /* Signals to subobjects via a */ SIGNALLIST ai2 = (GateCtrlInp) ; /* */ SIGNALLIST ai3 = (TrackCtrlInp) ; /* */ SIGNALLIST ai4 = (RoadCtrlInp) ; /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(1),2066(50,80))*/ /* Signals from subobjects via b */ SIGNALLIST bi2 = (GateCtrlOutp); /* */ SIGNALLIST bi3 = (TrackCtrlOutp); /* */ SIGNALLIST bi4 = (RoadCtrlOutp); /* */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt,4)*/ substructure CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),128(27,32))*/ channel /*#E*/ oi from env via oi to CrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),129(35,40))*/ (CrossingCtrlInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),119(157,32))*/ channel /*#E*/ oo from CrossingCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),120(132,40))*/ (CrossingCtrlOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),290(30,130))*/ channel /*#E*/ a.i4 from CrossingCtrl to road1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),291(44,137))*/ (ai4); endchannel a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),284(30,115))*/ channel /*#E*/ a.i3 from CrossingCtrl to tracks via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),285(44,122))*/ (ai3); endchannel a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),278(30,100))*/ channel /*#E*/ a.i2 from CrossingCtrl to gate1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),279(44,107))*/ (ai2); endchannel a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),305(122,100))*/ channel /*#E*/ b.i2 from gate1 via oo to CrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),306(147,107))*/ (bi2); endchannel b.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),311(121,115))*/ channel /*#E*/ b.i3 from tracks via oo to CrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),312(147,122))*/ (bi3); endchannel b.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),317(121,130))*/ channel /*#E*/ b.i4 from road1 via oo to CrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),318(147,137))*/ (bi4); endchannel b.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),116(65,35))*/ block CrossingCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),263(65,100))*/ block gate1:GateCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),266(65,115))*/ block tracks:TrackCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt(2),269(65,130))*/ block road1:RoadCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt,4)*/ endsubstructure CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbt,4)*/ endblock type CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk,4)*/ Block CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),353(50,25))*/ SIGNALLIST aOut=(ai2),(ai3),(ai4); SIGNALLIST bIn=(bi2),(bi3),(bi4); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),128(17,65))*/ signalroute /*#E*/ oi from env to CrossingCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),129(17,72))*/ (CrossingCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),182(150,65))*/ signalroute /*#E*/ b from env to CrossingCtrlCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),183(127,72))*/ (bIn); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),173(42,80))*/ signalroute /*#E*/ a from CrossingCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),174(40,87))*/ (aOut); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),119(166,81))*/ signalroute /*#E*/ oo from CrossingCtrlCtrl to env with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),120(127,80))*/ (CrossingCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),116(65,65))*/ process CrossingCtrlCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),134(7,67))*/ connect oi and oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),584(5,80))*/ connect a.i2, a.i3, a.i4 and a; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),689(177,82))*/ connect oo and oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk(1),695(177,67))*/ connect b.i2, b.i3, b.i4 and b; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrl.sbk,4)*/ endblock CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr,4)*/ process CrossingCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),116(55,10))*/ DCL instName Charstring; DCL t1 CharString; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),1502(105,10))*/ NEWTYPE TrackEntryType struct sig SignalStateType; train Boolean; trType TrackType; trDur Duration; ENDNEWTYPE; NEWTYPE TrackArrayType ARRAY (CharString, TrackEntryType) ENDNEWTYPE; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),191(5,25))*/ /* EnvTrackTask */ /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),1649(55,25))*/ DCL noOfTracks Integer := 0; DCL tracks TrackArrayType; DCL maxTracks Integer := 25; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2156(130,10))*/ DCL td TrackDurationType; DCL perToCreTrains Duration; DCL curTrackNbr Integer := 1; DCL i Integer; DCL nbr Integer; DCL perToCreCars Duration := 5; DCL perToDecrCars Duration := 3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1580(80,10))*/ DCL allHalt Boolean := True; DCL sigState SignalStateType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4544(55,25))*/ DCL fastTrainWait Boolean := False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1961(80,10))*/ DCL carsWait Boolean; DCL oneTrack Boolean; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1679(5,115))*/ procedure checkForHalt referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4547(105,40))*/ procedure checkFastTrains referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2012(30,10))*/ procedure sendGo referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),128(5,40))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),125(5,55))*/ nextstate /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),125(5,55))*/ state /*#E*/ Init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),140(5,70))*/ input /*#E*/ go (instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),2198(5,85))*/ call /*#E*/ announceInstance (self, instName); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),719(5,100))*/ output /*#E*/ go ('gate1'//instName) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),725(5,115))*/ output /*#E*/ go ('road1'//instName) via a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),2186(5,130))*/ nextstate /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(1),125(5,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2096(55,10))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2093(55,25))*/ input /*#E*/ initTracks (nbr, td, perToCreTrains); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2090(55,40))*/ task {/*#E*/ i := 1;}; grst80: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2087(55,55))*/ decision /*#E*/ i > nbr; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2108(67,65))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2084(55,70))*/ task /*#E*/ t1 := 'track'//(call integerToStr(curTrackNbr))// instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2081(55,85))*/ output /*#E*/ go(t1) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2177(55,100))*/ task /*#E*/ tracks(t1)! sig := Halt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2558(55,115))*/ task /*#E*/ tracks(t1)! trType := td!trType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2174(55,130))*/ task /*#E*/ tracks(t1)! train := false; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),4862(55,145))*/ task /*#E*/ tracks(t1)!trDur:= td!ts1Dur+td!ts1SigDur+ td!sigTs2Dur; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2075(55,160))*/ task {/*#E*/ curTrackNbr := curTrackNbr + 1; i := i + 1;}; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2123(92,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2072(80,130))*/ nextstate /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2087(55,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2087(55,55))*/ join /*#E*/ grst80; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2096(55,10))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2069(130,55))*/ state /*#E*/ init; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2066(130,70))*/ input /*#E*/ initTracksDone; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2147(130,85))*/ output /*#E*/ setGate (opened) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2159(130,100))*/ task /*#E*/ noOfTracks := curTrackNbr - 1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2141(130,115))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(2),2069(130,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2534(55,40))*/ state /*#E*/ *; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2531(55,55))*/ input /*#E*/ noTrains (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2528(55,70))*/ task /*#E*/ tracks(t1)!train:= false; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2525(55,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2534(55,40))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2522(30,55))*/ state /*#E*/ * (CPOpened, CPFTOpened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2519(30,70))*/ input /*#E*/ newCars (carsWait); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2516(30,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(3),2522(30,55))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1469(5,25))*/ state /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1478(5,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1688(5,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1484(5,70))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1490(5,85))*/ nextstate /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1469(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1460(30,25))*/ state /*#E*/ TPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1505(30,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1694(30,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1517(30,70))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1529(30,85))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1511(30,100))*/ nextstate /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1460(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1550(80,25))*/ state /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1547(80,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1538(80,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1568(80,70))*/ call /*#E*/ checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1574(80,85))*/ decision /*#E*/ allHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1577(92,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1583(80,100))*/ output /*#E*/ setGate (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1535(80,115))*/ nextstate /*#E*/ TPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1592(117,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1589(105,100))*/ nextstate /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1574(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1550(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1604(130,25))*/ state /*#E*/ TPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1601(130,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1598(130,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1616(130,70))*/ nextstate /*#E*/ TPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(4),1604(130,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2696(5,25))*/ state /*#E*/ TPOpened, CPOpened, CPFTOpened, UHOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2699(5,40))*/ input /*#E*/ setStrategy (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2702(5,55))*/ decision /*#E*/ t1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2723(17,67))*/ ('TrainsPrec'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4250(5,70))*/ task /*#E*/ oneTrack:= call sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4247(5,85))*/ decision /*#E*/ oneTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4256(17,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4244(5,100))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2705(5,115))*/ nextstate /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4265(42,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4262(30,115))*/ nextstate /*#E*/ TPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4247(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2732(42,62))*/ ('CarsPrec'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2693(30,70))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2735(82,62))*/ ('CarsFTPrec'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4394(55,70))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4412(117,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4427(105,85))*/ call /*#E*/ checkFastTrains; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4415(105,100))*/ decision /*#E*/ fastTrainWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4433(105,105))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4418(117,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4376(105,130))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4415(105,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4397(67,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4394(55,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4391(55,115))*/ task /*#E*/ oneTrack:= call sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4388(55,130))*/ decision /*#E*/ oneTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4403(67,142))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4385(55,145))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4382(55,160))*/ nextstate /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4409(92,137))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4379(80,145))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4388(55,130))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4055(167,62))*/ ('UserGo'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4040(155,70))*/ task /*#E*/ oneTrack:= call sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4034(155,85))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4031(155,100))*/ nextstate /*#E*/ UGClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4058(192,62))*/ ('UserHalt'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4025(180,100))*/ nextstate /*#E*/ UHOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2702(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2696(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2678(5,160))*/ state /*#E*/ TPClosed, CPClosed, CPFTClosed, UGClosed ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2681(5,175))*/ input /*#E*/ setStrategy (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2684(5,190))*/ decision /*#E*/ t1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2720(17,202))*/ ('TrainsPrec'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4280(5,205))*/ call /*#E*/ checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4277(5,220))*/ decision /*#E*/ allHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4286(17,232))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4274(5,235))*/ output /*#E*/ setGate (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4271(5,250))*/ nextstate /*#E*/ TPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4292(42,227))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4268(30,235))*/ nextstate /*#E*/ TPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4277(5,220))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2711(67,197))*/ ('CarsPrec'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4361(55,205))*/ call /*#E*/ checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4358(55,220))*/ decision /*#E*/ allHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4367(67,232))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4355(55,235))*/ output /*#E*/ setGate (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4352(55,250))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4373(92,227))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4349(80,235))*/ nextstate /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4358(55,220))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4019(92,197))*/ ('UserGo'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),3989(80,205))*/ nextstate /*#E*/ UGClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2708(117,197))*/ ('CarsFTPrec'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4508(105,205))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4523(167,212))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4514(155,220))*/ call /*#E*/ checkFastTrains; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4511(155,235))*/ decision /*#E*/ fastTrainWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4541(152,242))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4520(167,247))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4556(155,250))*/ output /*#E*/ setGate (opened) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4490(155,265))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4511(155,235))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4538(117,217))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4508(105,205))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4505(105,250))*/ task /*#E*/ oneTrack:= call sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4502(105,265))*/ decision /*#E*/ oneTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4532(117,277))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4496(105,280))*/ nextstate /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4526(142,272))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4493(130,280))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4502(105,265))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4022(192,197))*/ ('UserHalt'): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4004(180,220))*/ call /*#E*/ checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4001(180,235))*/ decision /*#E*/ allHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4010(192,247))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),3998(180,250))*/ output /*#E*/ setGate (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),3995(180,265))*/ nextstate /*#E*/ UHOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4016(217,242))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4886(205,280))*/ call /*#E*/ putPanelVal ('obj1', 'Warning, action rejected'); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),3992(205,295))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),4001(180,235))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2684(5,190))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(5),2678(5,160))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1766(5,25))*/ state /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1784(5,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1781(5,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1838(5,85))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1841(17,97))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1832(5,100))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2567(2,85))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1838(5,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1775(5,115))*/ nextstate /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1766(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1814(30,25))*/ state /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1811(30,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1808(30,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1847(30,70))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1850(42,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1805(30,85))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1802(30,100))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1799(30,115))*/ nextstate /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1853(67,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2039(55,85))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1847(30,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1814(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1892(80,25))*/ state /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1886(80,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1880(80,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1874(80,70))*/ call /*#E*/ checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1868(80,85))*/ decision /*#E*/ allHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1916(92,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1865(80,100))*/ output /*#E*/ setGate (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1859(80,115))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1919(117,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1862(105,100))*/ nextstate /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1868(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1892(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1889(130,25))*/ state /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1883(130,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1877(130,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1871(130,70))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1889(130,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1925(105,115))*/ state /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1946(105,130))*/ input /*#E*/ newCars (carsWait); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1955(105,145))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1967(117,157))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1982(105,160))*/ task /*#E*/ oneTrack:= call sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1994(105,175))*/ decision /*#E*/ oneTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2003(117,187))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2204(105,190))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2000(105,205))*/ nextstate /*#E*/ CPClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2009(142,182))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),2006(130,190))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1994(105,175))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1973(142,152))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1970(130,160))*/ nextstate /*#E*/ CPOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1955(105,145))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(6),1925(105,115))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2375(5,25))*/ state /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2372(5,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2369(5,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2363(5,70))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2396(42,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2570(30,85))*/ decision /*#E*/ tracks(t1)! trType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2579(30,92))*/ (fast): grst81: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2360(5,100))*/ output /*#E*/ setSignalState (t1, go) via a.i3; grst82: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2357(5,115))*/ nextstate /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2582(42,95))*/ (regular): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2357(5,115))*/ join /*#E*/ grst82; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2570(30,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2390(17,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2360(5,100))*/ join /*#E*/ grst81; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2363(5,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2375(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2354(55,25))*/ state /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2351(55,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2348(55,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2345(55,70))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2417(92,77))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2585(80,85))*/ decision /*#E*/ tracks(t1)! trType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2588(77,92))*/ (fast): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2591(92,95))*/ (regular): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2333(80,100))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2585(80,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2408(67,82))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2345(55,70))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2342(55,100))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2339(55,115))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2336(55,130))*/ nextstate /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2354(55,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2330(105,25))*/ state /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2327(105,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2324(105,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2321(105,70))*/ call /*#E*/ checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2318(105,85))*/ decision /*#E*/ allHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2432(117,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2315(105,100))*/ output /*#E*/ setGate (opened); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2312(105,115))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2438(142,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2309(130,100))*/ nextstate /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2318(105,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2330(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2282(155,25))*/ state /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2279(155,40))*/ input /*#E*/ newCars (carsWait); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2276(155,55))*/ decision /*#E*/ carsWait; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2465(167,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2273(155,70))*/ task /*#E*/ oneTrack:= call sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2270(155,85))*/ decision /*#E*/ oneTrack; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2471(167,97))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2267(155,100))*/ output /*#E*/ setGate (closed) via a.i2; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2264(155,115))*/ nextstate /*#E*/ CPFTClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2477(192,92))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2261(180,100))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2270(155,85))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2480(192,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2258(180,70))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2276(155,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2282(155,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2306(5,145))*/ state /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2303(5,160))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2300(5,175))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2297(5,190))*/ nextstate /*#E*/ CPFTOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(7),2306(5,145))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3227(5,25))*/ state /*#E*/ UHOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3215(5,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3203(5,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3131(5,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3227(5,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3125(30,25))*/ state /*#E*/ UHOpened; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3122(30,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3119(30,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3116(30,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3125(30,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3389(80,25))*/ state /*#E*/ UGClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3383(80,40))*/ input /*#E*/ askForGo (t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3377(80,55))*/ task /*#E*/ tracks(t1)!train := true; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),4901(80,70))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3353(80,85))*/ nextstate /*#E*/ UGClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3389(80,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3386(105,25))*/ state /*#E*/ UGClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3380(105,40))*/ input /*#E*/ newSignalState (t1, sigState); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3374(105,55))*/ task /*#E*/ tracks(t1)!sig := sigState; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3359(105,70))*/ nextstate /*#E*/ UGClosed; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr(8),3386(105,25))*/ endstate; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/CrossingCtrlCtrl.spr,4)*/ endprocess CrossingCtrlCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd,4)*/ procedure checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),119(55,10))*/ DCL i Integer := 0; DCL t CharString; DCL te TrackEntryType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),122(5,40))*/ task /*#E*/ i:=0; grst83: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),134(5,55))*/ decision /*#E*/ i> noOfTracks; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),152(17,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),158(5,70))*/ task /*#E*/ t1:='track'// (call integerToStr(i)) //instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),149(5,85))*/ task /*#E*/ te := tracks(t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),164(5,100))*/ decision /*#E*/ te!sig =Go; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),179(17,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),176(5,115))*/ task /*#E*/ i:= i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),194(42,107))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),188(30,115))*/ task /*#E*/ allHalt:= false; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),185(35,130))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),164(5,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),146(42,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),167(30,70))*/ task /*#E*/ allHalt:= True; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),140(35,85))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),134(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd(1),134(5,55))*/ join /*#E*/ grst83; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkForHalt.spd,4)*/ endprocedure checkForHalt; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd,4)*/ procedure sendGo /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd,1)*/ ;RETURNS Boolean; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),116(55,10))*/ DCL rB Boolean := false; DCL i Integer := 0; DCL t CharString; DCL te TrackEntryType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),119(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),149(5,40))*/ task /*#E*/ i:=0; grst84: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),146(5,55))*/ decision /*#E*/ i> noOfTracks; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),155(17,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),143(5,70))*/ task /*#E*/ t1:='track'// (call integerToStr(i)) //instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),140(5,85))*/ task /*#E*/ te := tracks(t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),137(5,100))*/ decision /*#E*/ te!train; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),164(17,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),134(5,115))*/ task /*#E*/ i:= i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),170(42,107))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),194(30,115))*/ output /*#E*/ setSignalState (t1, go) via a.i3; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),131(30,130))*/ task /*#E*/ rb:=True, i:=i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),137(5,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),176(42,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),122(35,70))*/ return /*#E*/ rB; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),146(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd(1),146(5,55))*/ join /*#E*/ grst84; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/sendGo.spd,4)*/ endprocedure sendGo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd,4)*/ procedure checkFastTrains; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),119(55,10))*/ DCL i Integer := 0; DCL t CharString; DCL te TrackEntryType; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),116(5,25))*/ start /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),122(5,40))*/ task /*#E*/ i:=0; grst85: /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),134(5,55))*/ decision /*#E*/ i> noOfTracks; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),152(17,67))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),158(5,70))*/ task /*#E*/ t1:='track'// (call integerToStr(i)) //instName; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),149(5,85))*/ task /*#E*/ te := tracks(t1); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),164(5,100))*/ decision /*#E*/ te!train; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),194(42,107))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),197(30,115))*/ decision /*#E*/ te!trType= fast; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),203(30,122))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),200(42,127))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),188(30,130))*/ task /*#E*/ fastTrainWait:= True; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),185(35,145))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),197(30,115))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),179(17,112))*/ (false): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),164(5,100))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),176(5,130))*/ task /*#E*/ i:= i+1; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),146(42,62))*/ (true): /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),167(30,70))*/ task /*#E*/ fastTrainWait := False; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),140(35,85))*/ return /*#E*/ ; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),134(5,55))*/ enddecision; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd(1),134(5,55))*/ join /*#E*/ grst85; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/CrossingCtrl_SDL/checkFastTrains.spd,4)*/ endprocedure checkFastTrains; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sun,7)*/ USE Utils; USE Project; USE EnvCrossing; USE CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sun,4)*/ Package RWCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sun(1),122(60,55))*/ SIGNALLIST RWCrossingInp = go; SIGNALLIST RWCrossingOutp = dummy; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sun(1),125(25,50))*/ block type RWCrossing referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sun,4)*/ endpackage RWCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt,4)*/ block type RWCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),158(20,32))*/ gate /*#E*/ oi in with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),159(12,40))*/ (RWCrossingInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),164(167,32))*/ gate /*#E*/ oo out with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),165(157,40))*/ (RWCrossingOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(1),2069(50,60))*/ /* Signals to subobjects via a */ SIGNALLIST ai4 = (EnvCrossingInp) ; /* */ SIGNALLIST ai5 = (CrossingCtrlInp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(1),2066(50,80))*/ /* Signals from subobjects via b */ SIGNALLIST bi4 = (EnvCrossingOutp); /* */ SIGNALLIST bi5 = (CrossingCtrlOutp); /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt,4)*/ substructure RWCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),128(27,32))*/ channel /*#E*/ oi from env via oi to RWCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),129(35,40))*/ (RWCrossingInp); endchannel oi; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),119(157,32))*/ channel /*#E*/ oo from RWCrossingCtrl to env via oo with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),120(132,40))*/ (RWCrossingOutp); endchannel oo; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),2258(30,145))*/ channel /*#E*/ a.i5 from RWCrossingCtrl to cc1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),2259(45,152))*/ (ai5); endchannel a.i5; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),290(30,130))*/ channel /*#E*/ a.i4 from RWCrossingCtrl to ec1 via oi with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),291(44,137))*/ (ai4); endchannel a.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),317(121,130))*/ channel /*#E*/ b.i4 from ec1 via oo to RWCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),318(147,137))*/ (bi4); endchannel b.i4; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),2264(122,145))*/ channel /*#E*/ b.i5 from cc1 via oo to RWCrossingCtrl with /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),2265(147,152))*/ (bi5); endchannel b.i5; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),116(65,35))*/ block RWCrossingCtrl referenced; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),269(65,130))*/ block ec1:EnvCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt(2),2255(65,145))*/ block cc1:CrossingCtrl; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt,4)*/ endsubstructure RWCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProjects/RailwayCrossing/ObjectType_SDL/RWCrossing_SDL/RWCrossing.sbt,4)*/ endblock type RWCrossing; /*#SDTREF(SDL,/zimmermann/tools/projects/docs/SFB501/ResearchProje