Step 7 Pneumatik- Ventil- Inseln testen (Labor- Aufbau in der Werkstatt)

mega_ohm

Well-known member
Beiträge
568
Punkte Reaktionen
27
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Forum,

wir haben Ventil- Inseln (Norgren bzw. Festo ).

-> Beschreibung der Aufgabe:
Auf Grund von Einsparungen wird seit Jahren auf eine Pneumatik- Wartungseinheit vor Ort (Haupthahn, Wasser- Abscheider, Öler ) verzichtet.
Wir haben eine zentrale Druckluft- Anlage (Ring- Leitung ) mit Air- Dryer.
Trotzdem "vertrocknen" Pneumatik- Ventile (einmal Öl- Spray --> und schon läuft es wieder ) oder altern .. oder verklemmen durch Partikel [wo auch immer die herkommen ... eigentlich ist es ein
geschlossenes System ]

Der "Steuer- Kopf" der Ventil- Inseln (Spannungsversorgung + Bus ) geht eigentlich fast nie kaputt. Die Probleme entstehen in der eigentlichen Pneumatik - der "Ventil- Scheibe".
Eine Ventilscheibe kostet wohl im unteren 2-stelligen €- Bereich (ca. 25€ ), eine komplette Ventil- Insel im unteren 4-stelligen Bereich.

Ich möchte nach dem Wechsel der Ventil- Scheiben (lt. Hersteller "Ja, die verschleißen schon so nach 2- 3 Jahren bei idealen Voraussetzungen" ) die Funktion der Ventil- Insel mit 8 Ventil- Scheiben
in der Werkstatt ... sozusagen unter Labor- Bedingungen ... testen.

Das "Programm 3" soll jede Ventilscheibe der 8 max. Ventil- Scheiben für x-Durchläufe einmal in 1- danach in 0- danach in 2- Stellung (und danach wieder 0- Stellung ) steuern.

Code:
P_3:  U  M   102.0             --Taktmerker- Bezug lt. Programm
      UN M   102.1             --FM; Taktmerker- Bezug lt. Programm
      SPBN  P_33               --
      U  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      SPBN  P_31               --
      L   0                    --
      T   MW  552              --MW; Ausgangs-Byte -> AdressNummer
      SPA   P_32               --
P_31: L   1                    --
      T   MW  552              --MW; Ausgangs-Byte -> AdressNummer
P_32: L   MW  552              --MW; Ausgangs-Byte -> AdressNummer
      SLD 3                    --
      LAR1                     --
      L   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      +AR1                     --
      AUF DB  10               --ProfiBus; Ventil- Scheiben der Ventilinsel ansteuern
      =  DBX [AR1,P#0.0]       --
      U  M   102.0             --Taktmerker- Bezug lt. Programm
      UN M   102.1             --FM; Taktmerker- Bezug lt. Programm
      X  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      =  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      SPA   P_3E               --
P_33: UN M   102.0             --Taktmerker- Bezug lt. Programm
      U  M   102.1             --FM; Taktmerker- Bezug lt. Programm
      SPBN  P_3E               --
      L   0                    --
      T   DB  10.DBW0          --PB-Ausgang; Ventilscheibe 1 -> aufwärts angesteuert
//      SPA   P_3E
      U  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      SPBN  P_3E               --
      L   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      INC 1                    --
      T   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      U(                       --
      L   DB  1.DBW8           --max. Ventilscheiben
      L   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      <=I                      --
      )                        --
      SPBN  P_3E               --
      L   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      INC 1                    --
      T   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      R  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      L   0                    --
      T   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      U(                       --
      L   DB  1.DBW10          --SOLL_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      L   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      <=I                      --
      )                        --
      SPBN  P_3E               --
P_39: S  M   11.0              --M; Programm fertig bearbeitet (Ready )
      L   0                    --
      T   DB  10.DBW0          --PB-Ausgang; Ventilscheibe 1 -> aufwärts angesteuert
      T   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      T   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
P_3E: NOP 0                    --


Was ist gegeben ?:
Der Taktmerker ist über das Programm einstellbar (funktioniert auch ! )
Die Adressierung und der Programm- Durchlauf sind über das Programm einstellbar (funktionieren )

Meine Frage:
Das 1. Bit ("Ventil 1 Up " ) funktioniert in keinem Durchlauf.
Was sehe ich nicht - wo ist der Fehler ?

Mfg mega_ohm
 

TP-Inc

Well-known member
Beiträge
525
Punkte Reaktionen
101
Ist der Code von dir? Muss der so sein? Recht kompliziert zu lesen. Ginge nicht KOP/FUP?
 
OP
M

mega_ohm

Well-known member
Beiträge
568
Punkte Reaktionen
27
Sooo schlimm ist AWL doch nicht. ;)
Mich irritiert eher die Verwendung von SPBN. Und die Zeilen mit 'U(' und ')' sind doch wohl überflüssig?
Aber so richtig habe ich noch nicht hingeschaut. :oops:
Du hast recht - die Zeilen U( bzw. ) sind überflüssig und die eine Kommentar- Zeile auch. Das habe ich geändert.

Wo ist das Problem bei SPBN ?

Mfg mega_ohm
 

Heinileini

Well-known member
Beiträge
3.729
Punkte Reaktionen
717
Wo ist das Problem bei SPBN ?
Nur in meinem Kopf! Muss immer zig-mal darüber nachdenken, wann gesprungen wird und wann nicht. Ist ja alles ganz einfach und trotzdem bin ich immer wieder verunsichert.
Habe einfach zu viele Jahre in S5 (ohne SPBN) programmiert und zu wenige in S7. ;)
 
OP
M

mega_ohm

Well-known member
Beiträge
568
Punkte Reaktionen
27
Zuviel Werbung?
->Hier kostenlos registrieren
Nur in meinem Kopf! Muss immer zig-mal darüber nachdenken, wann gesprungen wird und wann nicht. Ist ja alles ganz einfach und trotzdem bin ich immer wieder verunsichert.
Habe einfach zu viele Jahre in S5 (ohne SPBN) programmiert und zu wenige in S7. ;)
:icon_mrgreen: Ich wusste sofort nach Deiner Frage, dass es nur ein "Schönheits- Problem" sein kann.

Aber natürlich hat mich Dein Klammer- Tipp dazu bewegt, dass im Programm zu ändern - und nebenbei auch den Fehler zu finden.

Jetzt läuft's wie geplant.

Ich danke Dir für Deine Mühe und Hilfe.

Mfg mega_ohm
 

Heinileini

Well-known member
Beiträge
3.729
Punkte Reaktionen
717
Jetzt läuft's wie geplant.
Super!
Ich habe auch noch mal darüber geschaut, aber den Fehler leider (noch?) nicht gefunden. :-( :oops:
Ich verstehe, dass das VentilBit mit der pos. Flanke des Taktes ausgegeben und mit der neg. Flanke das nächste Bit "vorgelegt" wird.
Dabei habe ich lediglich weiteres EinsparPotenzial endeckt:
Code:
      U  M   102.0             --Taktmerker- Bezug lt. Programm
      UN M   102.1             --FM; Taktmerker- Bezug lt. Programm
      X  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      =  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
... kann ersetzt werden durch ...
Code:
      UN M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      =  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )

D.h. die Erkennung der pos. Flanke ist hier überflüssig, da dieser ProgrammAbschnitt sowieso nur bei einer pos. Flanke durchlaufen wird.
Aber, um M 11.2 hier umzuknipsen, muss 'X' dann in 'UN' (bzw. in 'ON' oder in 'XN') geändert werden.

Gruss, Heinileini

PS:
Dürfen wir noch erfahren, wo der Fehler war?
 
OP
M

mega_ohm

Well-known member
Beiträge
568
Punkte Reaktionen
27
Super!
Ich habe auch noch mal darüber geschaut, aber den Fehler leider (noch?) nicht gefunden. :-( :oops:
Ich verstehe, dass das VentilBit mit der pos. Flanke des Taktes ausgegeben und mit der neg. Flanke das nächste Bit "vorgelegt" wird.
Dabei habe ich lediglich weiteres EinsparPotenzial endeckt:
Code:
      U  M   102.0             --Taktmerker- Bezug lt. Programm
      UN M   102.1             --FM; Taktmerker- Bezug lt. Programm
      X  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      =  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
... kann ersetzt werden durch ...
Code:
      UN M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      =  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )

D.h. die Erkennung der pos. Flanke ist hier überflüssig, da dieser ProgrammAbschnitt sowieso nur bei einer pos. Flanke durchlaufen wird.
Aber, um M 11.2 hier umzuknipsen, muss 'X' dann in 'UN' (bzw. in 'ON' oder in 'XN') geändert werden.

Gruss, Heinileini

PS:
Dürfen wir noch erfahren, wo der Fehler war?
Code:
P_3:  U  M   102.0             --Taktmerker- Bezug lt. Programm
      UN M   102.1             --FM; Taktmerker- Bezug lt. Programm
      SPBN  P_33               --
      U  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      SPB   P_31               --
      L   0                    --
      T   MW  552              --MW; Ausgangs-Byte -> AdressNummer
      SPA   P_32               --
P_31: L   1                    --
      T   MW  552              --MW; Ausgangs-Byte -> AdressNummer
      =  M   11.1              --M; komplette Ventilscheibe (Auf-/Abwärts ) fertig bearbeitet (Ready )         [COLOR=#ff0000]  << eingefügt[/COLOR]
P_32: L   MW  552              --MW; Ausgangs-Byte -> AdressNummer
      SLD 3                    --
      LAR1                     --
      L   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      +AR1                     --
      AUF DB  10               --ProfiBus; Ventil- Scheiben der Ventilinsel ansteuern
      =  DBX [AR1,P#0.0]       --
//      U  "TaktM_Prog"
//      UN "FM_TaktM_Prog"       [COLOR=#ff0000]<< hier habe ich mal den ursprünglichen Code 'auskommentiert', fliegt natürlich raus[/COLOR]
//      X  "Vent_Up_Rdy"
      UN M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      =  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      SPA   P_3E               --
P_33: UN M   102.0             --Taktmerker- Bezug lt. Programm
      U  M   102.1             --FM; Taktmerker- Bezug lt. Programm
      SPBN  P_3E               --
      L   0                    --
      T   DB  10.DBW0          --PB-Ausgang; Ventilscheibe 1 -> aufwärts angesteuert
      U  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      SPB   P_3E               --
      UN M   11.1              --M; komplette Ventilscheibe (Auf-/Abwärts ) fertig bearbeitet (Ready )           [COLOR=#ff0000]<< eingefügt[/COLOR]
      SPB   P_3E               --
      L   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      INC 1                    --
      T   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      L   DB  1.DBW8           --max. Ventilscheiben
      L   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      <=I                      --
      SPBN  P_3E               --
      L   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      INC 1                    --
      T   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      R  M   11.1              --M; komplette Ventilscheibe (Auf-/Abwärts ) fertig bearbeitet (Ready )           [COLOR=#ff0000]<< eingefügt[/COLOR]
      R  M   11.2              --M; Ventilscheibe (Aufwärts ) fertig bearbeitet (Ready )
      L   0                    --
      T   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      L   DB  1.DBW10          --SOLL_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      L   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
      <=I                      --
      SPBN  P_3E               --
P_39: S  M   11.0              --M; Programm fertig bearbeitet (Ready )
      L   0                    --
      T   DB  10.DBW0          --PB-Ausgang; Ventilscheibe 1 -> aufwärts angesteuert
      T   DB  1.DBW4           --akt. Ventilscheibe = Aufwärts
      T   DB  1.DBW12          --IST_Cnt; Zähler für "Autom. Durchläufe" der Ventilscheiben ="aufwärts"
P_3E: NOP 0                    --
Hallo, Du Einspar- Fuchs ;)
natürlich hattest Du mit Deinem Tipp schon wieder recht. Ich danke Dir ganz herzlich dafür.
Ich habe das Gefühl - wenn Du Dir mein Programm noch eine Weile anschaust, bleibt ein 2- Zeiler übrig, der genauso funktioniert.
:s12:

Mfg mega_ohm
 
Oben