melderz de

Upload: buburuzazboara

Post on 06-Jul-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Melderz De

    1/8

  • 8/17/2019 Melderz De

    2/8

    02.97.01 So/Al/20/KRLMeldErzeug de 2

    Inhaltsverzeichnis

    1 Programmieren von Anwendermeldungen 3. . . . . . . . . . . . . . . . . . . .1.1 Begriffsbestimmung 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1.1 Hinweismeldungen 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1.2 Zustandsmeldungen 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1.3 Quittierungsmeldungen 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1.4 Dialoganfragen 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1.5 Simulation 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2 Anwendung 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.1 Hinweismeldungen 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.2 Zustandsmeldungen 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.3 Quittierungsmeldungen 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.4 Dialoganfragen 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.5 Simulation 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3 Beispielprogramm“MSG_DEMO.SRC” 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.4 Variablen und Deklarationen 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  • 8/17/2019 Melderz De

    3/8

    02.97.01 So/Al/20/KRLMeldErzeug de 3

    1 Programmierenvon AnwendermeldungenInnerhalbvon Anwenderprogrammen und Technologiepaketen (KRL) bestehtdie Möglich-

    keitfreidefinierbareMeldungenzurAnzeige auf demKCP zu bringen. Grundsätzlich kannmanhierzwischenHinweismeldungen,Zustandsmeldungen,QuittungsmeldungenundDia-loganfragen unterscheiden. Wichtigster Bestandteil ist hierfür eine standardisierteSchnitt-stelle zwischen Grundsystem und Bedienoberfläche. Die jeweils unterschiedlichen Mel-dungstypen erfordern spezifische Handhabung, wobei darüber hinaus noch zwischenMeldungen mit Datenbankzugriff (TECH--Pakete) und einfachen User--Meldungen ohneDatenbankzugriff unterschieden wird.Für Inbetriebnahme und Testzwecke, steht mitder sogenannten Simulation einMechanis-mus zur Verfügung, der es erlaubt logische Ausdrücke durch UND--Verknüpfung mit einerdirektvonderBedienoberflächesteuerbarenVariablezusimulieren.Sinnvolleinsetzenkannman diesen Mechanismus vor allemin Schleifenabruchbedingungen.

    1.1 Begriffsbestimmung

    1.1.1 HinweismeldungenEinfachsteArtvonMeldungendielediglichInformationscharakterbesitzen.DieAbarbeitungdes laufendenAnwenderprogramms wirdnichtunterbrochen. DieMeldungen müssen nichtquittiertwerden.Denkbar istauchderenEinsatz fürProgrammfortschrittsanzeigen ineinemspeziellen Fenster der BOF. Hinweismeldungen lassen sich von der KRL--Ebene nicht lö-schen.

    1.1.2 ZustandsmeldungenZustandsmeldungenbesitzenInformationscharakterundwerdenquasi automatischzurück-genommen. Die Abarbeitungdes laufenden Anwenderprogramms kannbedingt unterbro-chen werden.Zustandsmeldungen sind nicht quittierbar, sie müssen vom Verursacher (Anwenderpro-gramm) explizitgelöscht werden. Es kannjeweils nur eine aktive Meldung abgesetzt wer-den.

    1.1.3 QuittierungsmeldungenQuittierungsmeldungenzeigenStörungendes Programmfortschrittes an. Erstnachexplizi-tem Quittieren der anstehenden Meldung kann der Programmlauf fortgesetzt werden. Mitder Quittierung wirddie Aktive Meldung automatisch gelöscht.

    1.1.4 DialoganfragenÜberDialoganfragenwirdderBedieneraufgefordertzwischenfreidefinierbarenAlternativenauszuwählen. Das Ergebnis der Bedienereingabe wirdin einer entsprechenden KRL-- Va--riablehinterlegt. Mitder Bedienereingabe wirdderDialogautomatischgeschlossen undderzuvor unterbrochene Programmlauf fortgesetzt.

    1.1.5 SimulationIn Analogie zuder bekanntenSimulationstaste beiWAIT FOR-- Anweisungen wirdautoma-tisch dieSimulationstastezurAnzeige gebracht.Das Drückender SimulationstastebewirktdasLöschenderkorrespondierendenMeldungundläßteineentsprechendebool’scheKRL--Variable aufFALSE abfallen. DerProgrammablauf wirdnichtunterbrochen. DieSimulationkann zumgezielten Verlassen von Schleifen eingesetzt werden.

  • 8/17/2019 Melderz De

    4/8

    02.97.01 So/Al/20/KRLMeldErzeug de 4

    1.2 AnwendungDie Schnittstelle zwischenKRL--Anwenderprogrammund Bedienoberfläche wirddurchdiesogenannte MSG--Struktur repräsentiert. Um allen, der möglichen Einsatzfälle gerecht zuwerden, ist die MSG--Struktur als rechtkomplexes Gebilde angelegt.STRUC MSG_T

    BOOL VALID

    FeuertdieMeldungab(TRUE). J e nachMeldungstypwirdVALID unterschiedlichbehandelt. (siehe 1.1.1 bis 1.1.4)

    BOOL RELEASE

    veranlaßt das Löscheneiner ZustandsmeldungMSG_TYP TYP,

    Definition des Meldungstypsgültige Werte: #NOTIFY Hinweismeldung

    #STATE Zustandsmeldung#QUIT Quittierungsmeldung#DIALOG Dialoganfrage

    CHAR MODUL[12]

    Textvariable die einen eindeutigenModulbezeichner (Mo--dulschlüssel) enthält, welcherdemDatenbankzugriffdient.IstMODUL einLeerstringsowirdKEY als Meldungstextin--terpretiert . Wenn KEY einemPlatzhalter für PARAM ent--hältwerden beide verknüpft. IstModulnichtleerund inderDatenbank kann kein Eintragmit entsprechendemSchlüsssel gefunden werden , dannwird KEY als Mel--dungstextausgegeben, wobei KEY nichtmit einemPara--meter verknüpft werdenkann.

    CHAR KEY[40]

    Textvariable die einen eindeutigenSchlüssel zumMel--dungstextderDatenbankenthält. IstMODUL einLeerstringoder MODUL wird in der Datenbank nicht gefunden, wirddies imMeldungsfenster unter Verursacher angezeigt undder KEY direkt als Meldungstext interpretiert.

    MSG_PRM_TYP PARAM_TYP

    Typ -- Definition vonPARAMgültige Werte: # VALUE Zahlenwertoder Text

    ohne Datenbankzugriff.PARAM wird direktmitdemKey verknüpft.

    #WORDS $MSG.PARAM[] wird ig--noriert

    #KEY Datenbankschlüssel,existiertkein entspre--chender Eintrag im“MO--DUL”wirdder Schlüsselals Parameterstringüber--nommen

    CHAR PARAM[20]

    zusätzlicher Parameter der mit demeigentlichen Mel--dungstextverknüpft zur Anzeige gebracht wird. Der Inhaltvon PARAM wird in Abhängigkeit von PARAM_TYP inter--pretiert.

  • 8/17/2019 Melderz De

    5/8

    02.97.01 So/Al/20/KRLMeldErzeug de 5

    CHAR DLG_FORMAT[70]

    Formatstringder bei Dialoganfragen die Beschriftung derSoftkeys definiert. DieeinzelnenSoftkeys werdendurch“|”voneinander getrennt. Es könnenmaximal 7 Softkeys belegtwerden. J ederSoftkeyrepräsentiertdabei einemögli--che Dialogantwort. Es ist darauf zu achten, daß die Be--schriftung jedes einzelnen Softkeys nicht länger als ca.10Zeichen ist und nur die jeweils benötigte Anzahl Softkeysdefiniertwird. DiemöglichenAntwortensollteneinensinn--vollen Zusammenhang mit demMeldungstextergeben.z.B.: MSG.MODUL=”BAUTEIL1.SRC ”

    MSG.KEY=”Wiederholen?”MSG.DLG_FORMAT=”J a|Nein”

    Dieso definiertenSoftkeys werdendynamischinderSoft--keyleiste an jeweils freienPositionen eingereiht.

    INT ANSWER Liefertdas ErgebniseinerDialoganfrage.Derzurückgelie--ferte Wertgibtan welcher Softkey gedrücktwurde. DieZählungergibt sichbei aufsteigenderReihenfolgeausdenFormatstringDLG_FORMAT, wobei die Zählungmit1be--ginnt. In Anlehnungandas vorhergehendeBeispiel würdedas Drückendes Softkeys “Nein”ANSWER =2zurücklie--fern.

    Standardvorbesetzung der MSG--Struktur:

    DECL MSG_T $MSG_T= { VALID FALSE, RELEA SE FALSE ,TYP #NO TIFY, MODUL[] ” ”, KEY[] ” ”,PARAM_TYP #VALUE, PARAM[] ” ”, DLG_FORMAT[] ” ”, ANSWER }

    DerSimulationsmechanismuskommtmiteinersehreinfachenSchnittstelleaus,dieüberfol-gende globale Variablen realisiert ist.

    BOOL $LOOP_CONT

    Simulationsergebnis das als Schleifenabbruchbedingungeingesetztwerdenkann. $LOOP_CONT fälltauf den WertFALSE ab, sobald die Simulationstaste gedrückt wurde.Muß auf den WertTRUE geschaltetwerden bevor mittels$LOOP_MSG gefeuertwird.

    CHAR $LOOP_MSG[60]

    Feuert die Simulation sobaldder Wertungleich Leerstringist und bringt den enthaltenen Textsowie dieSimulations--taste zur Anzeige.

    Muß auf Leerstringzurück gesetztwerden umdieSimula--tion zu beenden.

    GrundsätzlicheerfordertjedeArtvonMeldungundderSimulationsmechanismus eine spe-zifischeAbfolgeimAnwenderprogramm(Handshake). IndenPunkten1.1.1 -- 1.1.5istdiesezeitliche Abfolge dargestellt.

    1.2.1 Hinweismeldungen

    (1) $MSG_T--Struktur füllen;

    (2) Feuern indem$MSG_T.VALID =TRUE gesetzt wird;

    (3) Meldung wird nun angezeigt;(4) Warten $MSG_T.VALID==FALSE(5) weiter mitnächster Meldung

  • 8/17/2019 Melderz De

    6/8

    02.97.01 So/Al/20/KRLMeldErzeug de 6

    1.2.2 Zustandsmeldungen(1) $MSG_T--Struktur füllen;(2) $MSG_T.RELEASE =FALSE setzen;

    (3) Feuern indem$MSG_T.VALID =TRUE gesetzt wird;(4) Zustandsmeldungwird nun angezeigt;G

    G

    G

    (5) Zustandsmeldungwieder Löschen indem$MSG_T.RELEASE=TRUE gesetzt wird;(6) Meldung istnicht mehr sichtbar;(7) Warten auf $MSG_T.VALID==FALSE ;(8) Weiter mitnächster Meldung;

    1.2.3 Quittierungsmeldungen(1) $MSG_T--Struktur füllen;(2) Programmlauf stoppen(3) Feuern indem$MSG_T.VALID =TRUE gesetzt wird;(4) Quittierungsmeldung wirdnun angezeigt;G

    G

    G

    (5) QuittierungsmeldungkannbeiBedarfgelöschtindem$MSG_T.RELEASE=TRUE ge-setzt wird;

    (6) Wenn der Bediener die Meldung quittiert wird $MSG_T.VALID automatisch auf FALSE zurück gesetzt;

    (7) Sobald$MSG_T.VALIDaufFALSE gehtkannmitdemProgrammlauffortgesetztwer-den;

    (8) Weiter mitnächster Meldung;

    1.2.4 Dialoganfragen

    (1) Programmlauf stoppen(2) $MSG_T--Struktur füllen;n(3) Feuern indem$MSG_T.VALID =TRUE gesetzt wird;(4) Dialoganfrage wird nun angezeigt;G

    G

    G

    (5) Dialoganfrage kann bei Bedarf gelöscht werden indemMSG.RELEASE=TRUE ge-setzt wird;

    (6) Wenn der Bediener die Meldung quittiert wird $MSG_T.VALID und $MSG_T.REA-LEASE automatischauf FALSE zurück gesetzt;

    (7) Sobald $MSG_T.VALID auf FALSE geht kann das Ergebnis der Anfrage in

  • 8/17/2019 Melderz De

    7/8

    02.97.01 So/Al/20/KRLMeldErzeug de 7

    $MSG_T.ANSWER abgeholt und mit demProgrammlauf fortgesetzt werden;(8) Weiter mitnächster Meldung;

    1.2.5 Simulation(1) $LOOP_CONT=TRUE setzen;(2) Feuern indem$LOOP_MSG=”Meldungstext”gesetzt wird;(3) Simulationstaste und Meldungstext werden nun angezeigt;(4) Simulation kann aktivbeendetwerden indem$LOOP_MSG[] =”“gesetzt wird;G

    G

    G

    (5) Sobaldder Anwender die Simulationstaste betätigtwird$LOOP_CONT automatischauf FALSE gesetzt.

    (6) Simulation beendenindem$LOOP_MESSAGE[]mitLEERZEICHEN aufgefülltwird.(7) Simulationsmeldungund Softkey ”SIMULATION”werden nicht mehr angezeigt.(8) Weiter mitnächster Simulation oder Meldung;

    1.3 Beispielprogramm“MSG_DEMO.SRC”

    DECL INT ANSWER

    DECL INT OFFSET

    DECL STATE_T STATE

    DECL MSG_T EMPTY_MSG EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] ” ”,KEY[] ” ”,PARAM_T YP #VALUE,PARAM[] ” ”,DLG_FORM AT[] ” ”,ANSWE R 0}

    ;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --QUIT TIE RUN GSMELD UN G -- -- -- -- -- -- -- -- -- --

    $MSG_T= EMPTY _MSG ;Reinitialisierung

    $MSG_T.MODUL[]=” ”

    $MSG_T.KEY[]=”DEMO : QUIT --MESS AGE + % 1”

    $MSG_T.PARAM[]=”PARAM”

    $MSG_T.PARAM_TYP=#WORDS

    $MSG_T.TYP=#QUIT $MSG_T.VALID=TRUE ;feuern

    WHILE $MSG_T.VALID ;auf Quittierung warten

    WAIT SEC 0.05

    ENDWHILE

    ;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --DIALO GANFRA GE -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    $MSG_T= EMPTY _MSG ;Reinitialisierung

    $MSG_T.MODUL[]=” ”

    $MSG_T.KEY[]=”DEMO: DIALOG + %1”

    $MSG_T.PARAM[]=”PARAM”

    $MSG_T.PARAM_TYP=#KEY

    $MSG_T.TYP=#DIALOG

  • 8/17/2019 Melderz De

    8/8

    02.97.01 So/Al/20/KRLMeldErzeug de 8

    $MSG_T.DLG_FORMAT[]=”A|B|C”

    $MSG_T.VALID=TRUE ;feuern

    WHILE $MSG_T.VALID ;auf Beantwortung warten

    WAIT SEC 0.05

    ENDWHILE

    ANSWER=$MSG_T.ANSWER

    ;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --HINWEISMELD UNG -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    $MSG_T= EMPTY _MSG ;Reinitialisierung

    $MSG_T.MODUL[]=” ”

    $MSG_T.KEY[]=”DEMO: DIALOG ANSWER = %1” ;”%1” symbolisiert einen Platzhalter fuer den Parameterstring

    OFFSET=0

    SWRITE($MSG_T.PARAM[],STATE,OFFSET,”%d”,ANSWER)

    ;formatierte Ausgabe der vorhergehenden

    ;Dialogantwort in den Parameterstring

    $MSG_T.PARAM_TYP=#VALUE ;warten um Meldung sicher zu Anzeige zu bringen

    $MSG_T.VALID=TRUE ;feuern

    WHILE $MSG_T.VALID

    WAIT SEC 0.05

    ENDWHILE

    ;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- SIM UL ATIO N-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    $LO OP_C ON T= TRU E ;Vorbesetzung

    $LOOP_M SG[]=”HALLO ich die SIMULATION von $IN[10] !” ;feuern

    WHILE $LOOP_CONT or $IN[10] ;Simulation der Abruchbedingung $IN[10]==TRUE

    ENDWHILE

    $LOOP_MSG[]=” ”

    EN D

    1.4 Variablen und Deklarationen

    Implementiert in $operate.datund$option.datauf Steuerungsebene.ENUM MSG_TYP NOTIFY, STATE, QUIT, DIALOG

    ENUM MSG_PRM_TYP VALUE, WORDS, KEY

    STRUC MSG_T BOOL VALID, BOOL RELEASE, MSG_TYP TYP, CHAR MODUL[12],CHAR KEY[40], MSG_PRM_TYP PARAM_TYP, CHAR PARAM[20], CHAR DLG_FOR- MAT[70], INT ANSWER

    DECL MSG_T $MSG_T={ VALID FALSE, RELEASE FALSE, TYP #NOTIFY, MODUL[] ” ”, KEY[] ” ”, PARAM_TYP #VALUE, PARAM[] ” ”, DLG_FO RMAT[] ” ”, ANSW ER 0, }

    BOOL $LOOP_CONT=FALSE

    CHAR $LOOP_MSG[60] 1