Step 7 Fehlersuche bei Anlagenstörung in SCL

Azrael666

Level-1
Beiträge
239
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Leute,

es geht um das klassische Step7 Version 5.4.

Folgendes Problem: Bei unserem Kunden werden SPS Steuerungen in der Regel im KOP programmiert. Bausteine (FB oder FC) die mit SCL oder AWL erstellt werden, bekommen immer eindeutige Eingänge und Ausgänge. Alles was in diesen Bausteinen verarbeitet wird, wird über Eingänge dem Baustein übergeben und die Ergebnisse als Ausgang ausgegeben. Diese Bausteine werden dann klassisch in einem KOP-FC aufgerufen.
Das Instandhaltungspersonal ist es somit gewohnt und kann es auch nicht anders, bei Störungen und einer Fehlersuche im SPS Programm sich mit dem Befehl "Gehen zu Verwendungsstelle" durch das Programm zu hangeln um die Fehlerquelle zu finden. Soweit so gut.

Jetzt haben die aber eine Anlage bekommen, die konsequent in SCL bzw AWL programmiert wurde und zwar alles. Die Programmierer dieser Anlage kommen aus der Codesys- bzw Beckhoff-Ecke, und somit ist dieses Ding ein einziges riesiges SCL/AWL Schachtelwerk mit einem gigantischen Wust an Bausteinen, die alle irgendwie ineinandergreifen und sich gegenseitig beeinflussen.

Problem an der Sache ist jetzt natürlich die Fehlersuche, weil "Gehen zu" gibts da nicht und im Fall einer Störung muss es natürlich schneller als schnell gehen den Fehler zu finden.

Was kennt ihr so für Vorgehensweisen um sich durch solch ein Programm zu hangeln, um die Fehlerquelle zu finden?

MFG
 
Ich arbeite relativ viel mit SCL in Step7

Zur Arbeitserleichterung nutze ich Notepad++. D.h. ich exportiere alle S7 Quellen in einen Ordner und kann dann mittels Notepad++
die Variablen oder sonstiges Projektweit suchen

Ich habe mal ein Bild angehängt, wie man eine Variable in einem Ordner sucht
xx.png

Letztendlich kann man dann sehen, wo die Variable überall beschrieben, verglichen usw. wird, wenn man z.B. nach "Variable[x] :=" sucht.
Und noch vieles mehr natürlich.

Zum exportieren der Quellen einfach alle markieren, rechts klicken und "Quellen exportieren" wählen
 
Zuletzt bearbeitet:
Wurden in dem Programm denn globale Variablen verwendet?
Wenn man den Dialog "Gehe zu Verwendungsstelle" in einem AWL/KOP/FUP-Baustein öffnet, werden die globalen Variablen in der Referenz auch dann angezeigt, wenn diese in einem SCL-Baustein liegen.
Innerhalb des SCL-Bausteins geht natürlich auch [STRG]+[F] zum Suchen von Variablen.
 
Innerhalb des SCL-Bausteins geht natürlich auch [STRG]+[F] zum Suchen von Variablen.

Ja, dass geht aber glücklich wird man damit nicht, da man keine Übersicht hat. Er springt dann ja immer nur von Variable
zu Variable. Das ist halt der Vorteil von Notepad++. Er zeigt einem alle Verwendungsstellen im Projekt oder wenn gewünscht
nur in einem oder zwei FBs. Somit hat man schon einmal viel mehr Übersicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Tigerente1974 : Das Problem ist ja, dass es in dieser Anlage keinen einzigen KOP/FUP Baustein gibt, es ist so gut wie alles in SCL und ein paar Sachen in AWL
Variablen-technisch sieht es da so aus, dass es natürlich auch globale Variablen gibt, aber meistens wird in einem SCL-Baustein auf andere Instanzvariablen aus anderen Bausteinen symbolisch zugegriffen und dann teilweise in andere Instanz-DBs von anderen Bausteinen weitergeschoben.​

@DeltaMikeAir : Das klingt zielmlich interessant, das muss ich mir mal näher ansehen, vieleicht könnte das helfen.

 
@Azrael:
TIA wäre für euch keine Option ...?
Hier hättest du dann auch die Möglichkeit zu SCL-Variablen Querverweise zu ermitteln ...

Das man mit SCL (gerade wenn man aus der Beckhoff-Welt kommt) so richtig schönen Spaghetti-Code erzeugen kann habe ich auch schon gesehen.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@DeltaMikeAir: wie machst du das denn, wenn Instanzvariablen aus verschiedenen SCL-FBs in einem einzigen SCL-FB verwendet werden und alle den selben symbolischen Namen haben?

@Larry: Es war tatsächlich schon die Idee, das Programm in TIA zu migrieren weil das dort mit den Querverweisen so funktioniert wie bei Codesys, allerdings ist es ja eine laufende Produktionsanlage. D.h. man müsste das in TIA migrierte Programm "nebenher" auf dem Panel-PC haben um dann Fehler zu suchen.

Das ergibt die Probleme:
1. Kosten für Lizensen
2. Kosten für die Migrierung

Ergo, ist dass eine Variante, die vermutlich als letztes gewählt werden würde.

PS: apropos Spagetti-Code, hier sind das wahrlich prächtige Spagetti
 
Zuletzt bearbeitet:
@Azrael:
Ihr müßt euch selber überlegen, was ihr macht (in Zukunft machen wollt).
Vielleicht wäre auch ein Programmier-Leitfaden für Zulieferer eine Option (für die Zukunft) ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Tigerente1974 : Das Problem ist ja, dass es in dieser Anlage keinen einzigen KOP/FUP Baustein gibt, es ist so gut wie alles in SCL und ein paar Sachen in AWL
Variablen-technisch sieht es da so aus, dass es natürlich auch globale Variablen gibt, aber meistens wird in einem SCL-Baustein auf andere Instanzvariablen aus anderen Bausteinen symbolisch zugegriffen und dann teilweise in andere Instanz-DBs von anderen Bausteinen weitergeschoben.​


Ich gehe mal nicht darauf ein, ob das ein gelungener Programmierstil ist. Trotzdem kannst Du doch in irgendeinem AWL-Bautein den Dialog "Gehe zu Verwendungsstelle" öffnen und dort die Variable aus dem IDB eingeben. So findest Du auf jeden Fall die Verwendungsstellen.
 
z.b. sowas hier:

Code:
IF      ("VAR_GLOBAL2".FB_Formfunktionen[1].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[1].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[1].ManArbstlg)        OR        ("VAR_GLOBAL2".FB_Formfunktionen[2].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[2].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[2].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[3].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[3].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[3].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[4].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[4].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[4].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[5].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[5].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[5].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[6].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[6].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[6].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[7].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[7].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[7].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[8].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[8].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[8].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[9].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[9].Prioritaet  > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[9].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[10].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[10].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[10].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[11].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[11].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[11].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[12].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[12].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[12].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[13].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[13].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[13].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[14].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[14].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[14].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[15].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[15].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[15].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[16].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[16].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[16].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[17].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[17].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[17].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[18].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[18].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[18].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[19].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[19].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[19].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[20].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[20].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[20].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[21].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[21].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[21].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[22].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[22].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[22].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[23].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[23].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[23].ManArbstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[24].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[24].Prioritaet > 0  AND "VAR_GLOBAL2".FB_Formfunktionen[24].ManArbstlg)        THEN


        "clc_LI5".xstfofkt2:=    "VAR_GLOBAL2".xstfofktasmn;                    (* Start Formfunktion zur Arbeitsstellung Handbetrieb *)
        "VAR_GLOBAL2".mfofktfg2 := TRUE;


ELSIF    ("VAR_GLOBAL2".FB_Formfunktionen[1].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[1].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[1].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[2].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[2].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[2].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[3].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[3].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[3].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[4].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[4].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[4].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[5].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[5].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[5].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[6].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[6].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[6].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[7].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[7].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[7].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[8].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[8].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[8].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[9].Vorwahl        AND "VAR_GLOBAL2".FB_Formfunktionen[9].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[9].ManGrundstlg)        OR
        ("VAR_GLOBAL2".FB_Formfunktionen[10].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[10].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[10].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[11].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[11].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[11].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[12].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[12].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[12].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[13].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[13].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[13].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[14].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[14].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[14].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[15].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[15].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[15].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[16].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[16].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[16].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[17].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[17].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[17].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[18].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[18].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[18].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[19].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[19].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[19].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[20].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[20].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[20].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[21].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[21].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[21].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[22].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[22].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[22].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[23].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[23].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[23].ManGrundstlg)    OR
        ("VAR_GLOBAL2".FB_Formfunktionen[24].Vorwahl    AND "VAR_GLOBAL2".FB_Formfunktionen[24].Prioritaet > 0     AND "VAR_GLOBAL2".FB_Formfunktionen[24].ManGrundstlg)    THEN


        "clc_LI5".xstfofkt2:=    "VAR_GLOBAL2".xstfofktgsmn;                    (* Start Formfunktion zur Grundstellung Handbetrieb *)
        "VAR_GLOBAL2".mfofktfg2 := TRUE;


ELSIF   NOT "VAR_GLOBAL2".FB_Formfunktionen[1].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[1].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[2].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[2].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[3].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[3].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[4].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[4].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[5].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[5].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[6].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[6].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[7].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[7].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[8].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[8].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[9].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[9].ManGrundstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[10].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[10].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[11].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[11].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[12].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[12].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[13].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[13].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[14].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[14].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[15].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[15].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[16].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[16].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[17].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[17].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[18].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[18].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[19].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[19].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[20].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[20].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[21].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[21].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[22].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[22].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[23].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[23].ManGrundstlg     AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[24].ManArbstlg         AND
        NOT "VAR_GLOBAL2".FB_Formfunktionen[24].ManGrundstlg     THEN
        "clc_LI5".xstfofkt2    := 0;                            (* Step Formfunktion zur Grundstellung / Arbeitstellung *)
        "VAR_GLOBAL2".xfofktcount1          := 0;                            (* Formfunktion Zähler für Priotität *)


END_IF;
 
@Azrael:
Ihr müßt euch selber überlegen, was ihr macht (in Zukunft machen wollt).
Vielleicht wäre auch ein Programmier-Leitfaden für Zulieferer eine Option (für die Zukunft) ...

Gruß
Larry

:) gibt es, wurde sich aber ,aufgrund Zeitdruck, nicht daran gehalten


@Tigerente1974 : in AWL kann das schon funktionieren, nur ist AWL ein sehr kleiner Teil. 90% sind SCL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da hatte der Programmierer aber Glück, dass es 24 und nicht 200 Formfunktionen gab. Sonst hätten die Finger geblutet, wenn man alles zu Fuß macht.
Dennoch sollte der Querverweis auf dem von mir beschriebenen Umweg gehen.
 
("VAR_GLOBAL2".FB_Formfunktionen[3].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[3].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[3].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[4].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[4].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[4].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[5].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[5].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[5].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[6].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[6].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[6].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[7].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[7].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[7].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[8].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[8].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[8].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[9].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[9].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[9].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[10].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[10].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[10].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[11].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[11].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[11].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[12].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[12].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[12].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[13].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[13].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[13].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[14].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[14].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[14].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[15].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[15].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[15].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[16].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[16].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[16].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[17].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[17].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[17].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[18].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[18].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[18].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[19].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[19].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[19].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[20].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[20].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[20].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[21].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[21].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[21].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[22].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[22].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[22].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[23].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[23].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[23].ManArbstlg) OR
("VAR_GLOBAL2".FB_Formfunktionen[24].Vorwahl AND "VAR_GLOBAL2".FB_Formfunktionen[24].Prioritaet > 0 AND "VAR_GLOBAL2".FB_Formfunktionen[24].ManArbstlg)

Im Prinzip könnte man sowas mit einer FOR Schleife übersichtlicher machen. Vielleicht hat man dies so gelöst, um besser beobachten zu können ??
 
Im Prinzip könnte man sowas mit einer FOR Schleife übersichtlicher machen.
Ich denke nicht, daß es dann übersichtlicher wäre. Man würde aber erreichen daß die Verwendungsstellen in der FOR-Schleife dann nicht mehr in den Querverweisen zu finden sind - also das Gegenteil von dem was der TE braucht.

Harald
 
Naja das hier ist nur ein winzig winzig kleiner Teil des Programmcodes. Ich würde mal schätzen unter 1%. Aber so in etwa ist die gesamte Anlage programmiert.
Immerhin 330FBs, 800FCs und 900DBs.

Wie gesagt, dass eigentliche Problem ist die Instandhaltung, die es gewohnt ist mit "Gehen zu" zu arbeiten. Für die Leute muss ich für diese Anlage eine einfache Möglichkeit finden, damit diese im Notfall eine Störung beheben können, die aus der VISU nicht ersichtlich ist.
 
nicht vertragsgemäß geliefert? ---> nacharbeiten lassen?

Harald

Naja da bin ich außen vor, das ist eine Sache zwischen meinem Kunden und dessen Kunden der die Anlagensoftware geliefert hat.
Ich bin nur ein dritter Unbeteiligter, der Lösungen finden soll.
Denke nicht, dass an der Programmier-Art etwas geändert wird, immerhin ist es eine laufende Anlage, die über zig hundert Parameter feinjustiert ist und in der 5 Mann-Jahre Arbeit stecken.
 
Zurück
Oben