Prüfstelle AWL

Flux

Well-known member
Beiträge
314
Punkte Reaktionen
11
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich möchte eine simple Prüfstelle in AWL programmieren. Zum Aufbau:

Denkt euch drei Förderbänder in Reihe (Motor 1, 2 und 3). Jeder Bandmotor ("Mot1", ..., "Mot3") wird von einem Standard-Baustein angesteuert, wenn "Mot_EN" aktiviert ist. Ausgangssituation ist ein einfahrendes Werkstück (vom 1. aufs 2. Band), d.h. "Mot2_EN" und damit "Mot2" sind aktiv. Im mittleren Band ist ein Bero ("Pos"). Erreicht das Werkstück "Pos", dann soll es für 5 sek anhalten, damit eine Prüfung durchgeführt werden kann. Nach 5 sek wird das Prüfergebnis gespeichert und das Band soll weiterfahren.

Ich habe Schwierigkeiten diese Logik zu realisieren:

Code:
//Band fährt ein
U "Pos"
U "Mot2_EN" //Motor ist an
UN "Weiter" //Merker
R "Mot2_EN" //Werkstück hält in Prüfposition

//Band steht, starte Timer
U "Pos"
UN "Mot2_EN"
UN "Mot2"
L S5T#5S
SE "Warten"
U "Warten"
S "Weiter"

//Nach Ablauf Timer Prüfergebnis speichern..
U "Weiter"
SPBN blub
//Prüfergebnisspeichern..
blub: NOP 0

//..und Bandmotor wieder starten
U "Weiter"
S "Mot2_EN" //weiterfahren (Standard-FB schaltet "Mot2" wieder ein)

 //Wenn Werkstück die Prüfstelle verlassen hat, dann Reset Merker
U "Weiter"
UN "Pos"
R "Weiter"

CALL "Motorbaustein"
//...

Hat jemand ne bessere Idee das zu programmieren?
 
Zuletzt bearbeitet:

Maggi

Well-known member
Beiträge
51
Punkte Reaktionen
6
Hi!
Beschreib doch noch einmal genauer was dein Programm ausführen soll?!

Wenn du einfach nur ein Förderband steuern sollst bis eine Position erreicht ist, dort 5 sekunden wartet und dann wieder anläuft zum abtransport, würde ich das als Schrittkette Programmieren:
Code:
// Initialisierungsschritt 0
      U     E      0.0                  //Initialisierung
      FP    M      1.0                  //Flanke Initialisierung
      O     
      U     M      0.3                  //Schritt 3
      U     E      0.3                  //Teil Abtransportiert
      S     M      0.0                  // Schritt 0
      U     M      0.1                  // Schritt 1
      R     M      0.0                  // Schritt 0
//Schritt 1
      U     M      0.0
      U     E      0.1                  //Start Förderband
      S     M      0.1                  //Schritt 1
      =     A      4.0                  //Förderband Ein
      U     M      0.2                  // Schritt 2
      R     M      0.1                  // Schritt 1
// Schritt 2
      U     M      0.1
      U     E      0.3                  //Position Prüfstelle
      S     M      0.2                  //Schritt 2
      L     S5T#5S                      //Wartezeit 5 sek
      SE    T      1                    //Setzt Wartezeit
      U     M      0.3                  //Schritt 3
      R     M      0.2                  //Schritt 2
// Schritt 3
      U     M      0.2
      U     T      1                    //Wartezeit abgelaufen
      S     M      0.3                  //Schritt 3
      =     A      4.0                  //Start Förderband
      U     M      0.0                  //Schritt 0
      R     M      0.3                  //Schritt3
 

Blockmove

Supermoderator und User des Jahres 2019
Teammitglied
Beiträge
9.223
Punkte Reaktionen
2.427
Zuviel Werbung?
->Hier kostenlos registrieren
@Maggi
Ich hab schon zig Kilometer von Fördertechnik in meinem Berufsleben programmiert.
Und wenn ich eines gelernt hab zu hassen, dann sind es normale Schrittketten bei Fördertechnik.
Was machst wenn jemand in Schitt 1 das Teil runter nimmt?

Wenn du es einfach willst, dann realisierst eine Fördertechnik als Verknüpfungssteuerung, wenn du es kompliziert willst, dann halt als Zustandsautomat.

Gruß
Dieter
 

Sinix

Well-known member
Beiträge
1.588
Punkte Reaktionen
216
Hallo Flux,

ich gehe mal davon aus, dass es dir zunächst nur um den Zwischenstop am zweiten Förderer geht.
Sieht ja so schlecht gar nicht aus.
Hier meine kleinen Änderungen passend für deine Codierung:
Code:
//Band fährt ein 
U "Pos" 
U "Mot2_EN" //Motor ist an 
UN "Weiter" //Merker
 R "[COLOR=#ff0000]Einlauf[/COLOR]" //Einlaufmerker, evtl. gesetzt durch vorgelagerten Antrieb

//Band steht, starte Timer 
U "Pos" UN "Mot2_EN" 
UN "Mot2"
 L S5T#5S 
SE "Warten" 
U "Warten" 
S "Weiter"   //Wenn Werkstück die Prüfstelle verlassen hat, dann Reset Merker 

//Auslauf beendet
U "Weiter" 
UN "Pos" 
R "Weiter"


//..und Bandmotor [COLOR=#ff0000]einschalten[/COLOR] 
U "Weiter"
[COLOR=#ff0000]O "Einlauf" //Merker Einlauf[/COLOR] 
= "Mot2_EN" //weiterfahren (Standard-FB schaltet "Mot2" wieder ein)
   
CALL "Motorbaustein" 
//...

//Nach Ablauf Timer Prüfergebnis speichern..
[COLOR=#ff0000]//hier am Ende, da es mit dem Steuern des Antriebs nichts zu tun hat[/COLOR]
 U "Weiter" 
SPBN blub 
//Prüfergebnisspeichern.. 
blub: NOP 0

@Blockmove: Teile deine Ansicht bezüglich Schrittketten nicht ganz, es kommt auf den Anwendungsfall an.
Bei Stückgut ist es sicher nicht sinnvoll, beim Transport einzelner Stücke sehe ich durchaus Vorteile.
Die Entnahme von Transportgut ist entweder vorher definiert
oder ein irregulärer Eingriff der erkannt werden kann und eine gesonderte Bedienung erfordert.

Gruß MK
 
Zuletzt bearbeitet:
Oben