SPS Nockenschaltwerk- Software für S5 oder S7 Digitronic Steinbeisstraße 3 D - 72636 Frickenhausen Tel. (+49)7022/40590-0 Fax -10 Auf der Langwies 1 D - 65510 Hünstetten-Wallbach Tel.(+49)6126/9453-0 Fax -42 Internet: http://www.digitronic.com E-Mail: mail@digitronic.com
SPS Nockenschaltwerk - Digitronic Inhaltsverzeichnis 1. Einleitung...2 2. Aufbau der Software...2 2.1. Aufbau des FB0...3 2.1.1. Istwert Errechnung...3 2.1.2. Geschwindigkeits Errechung...4 2.1.3. Aufruf der Nockenberechnung...4 2.1.4. Fehlerauswertung der Istwertberechnung...5 2.2. Aufbau des FB1...5 2.2.1. Nockenberechnung in STEP 5...5 2.2.2. Nockenberechnung in einer Hochsprache...6 2.3. Aufbau des DB20...6 3. Anschluß des AAG60E10 an eine S5 95U Eingabebaugruppe...7 4. Leistungsdaten und Zykluszeiten der Software...7 5. Istwerterfassung für andere CPU Modelle...8 5.1. Istwerterfassung im Kontaktschaltplan...8 5.2. Istwerterfassung für eine S5-95U CPU...9 1. Einleitung Nockenschaltwerke werden in der Automationsindustrie zur Zeit hauptsächlich als externe Module oder als Einsteckkarte für den SPS Bus eingesetzt. Diese Baugruppen sind jedoch in manchen Anwendungen von ihrer Leistung her nicht notwendig oder von den Kosten her nicht rentabel. Die SPS Nockenschaltwerk - Software der Firma Digitronic bietet hier eine kostenkünstige Alternative zu diesen Geräten. Zur Erfassung des Istwertes der Maschine ist ein einfacher Absolutwertgeber mit parallelem 24V Graycodeausgang notwendig. Dieser wird an die normalen Eingänge der SPS angeschlossen und durch eine spezielle Software in einen für die SPS verständlichen Binärwert umgewandelt. Dieser Istwert kann nun durch einfache Vergleicher zum Setzen und Rücksetzen von Ausgängen oder Merkern verwendet werden. Zusätzlich kann die Stellung und die Geschwindigkeit der Maschine direkt durch die Eingabeeinheit (z.b. OP oder Textanzeige) der SPS dargestellt werden. 2. Aufbau der Software Die Software besteht aus dem Funktionsbaustein: 1. Istwerterfassung, Geschwindigkeitsermittlung und Errorauswertung 2. Nockenberechnung (Kern) zusätzlich wird noch ein Datenbaustein zum Hinterlegen der Nockenwerte, sowie zur Speicherung des Ist - und Geschwindigkeitswertes, benötigt. In der folgenden Software werden hierzu der Funktionsbaustein FB0, FB1 und DB20 verwendet. Zur Parameterübergabe und zur Errechnung des Ist - und Geschwindigkeitswertes werden noch die Merkerworte 100, 102 und 104 sowie der Timer T0 benötigt. Hiervon darf jedoch nur der Timer T0 nicht durch ein anderes Programmodul zerstört werden, da die Merker nur als lokale Variablen genutzt werden. Der FB0 wird am Anfang oder am Ende des OB1 durch einen SPA Befehl aufgerufen. Seite: 2 Ausgabe: Apr. 02
Digitronic SPS Nockenschaltwerk - 2.1. Aufbau des FB0 2.1.1. Istwert Errechnung Bei der Istwert Errechnung wird ein 360 Grad gekappter Graycode in einen 9 Bit Binärcode umgewandelt. Im Merkerwort 100 wird der gewandelte Binärcode hinterlegt, der an den Eingängen E0.0 bis E1.0 anliegt. E0.0 ist die Spur 1 (LSB) und E1.0 ist die Spur 9 (MSB) des Winkelcodierers. Im MB100 Bit 0 steht das MSB und im MB101 Bit 0 steht das LSB des Binärwertes. Da der Graycode bei einem 360 Grad Winkelcodierer gekappt ist, beinhaltet der Binärwert nun auch diese Kappung. Diese Kappung beträgt hier 76 und muß bei der späteren Auswertung entweder abgezogen oder berücksichtigt werden. Hinweis: Steht in Ihrer CPU der XOR Befehl nicht zur Verfügung, so finden Sie im Kapitel 5. Istwerterfassung für andere CPU Modelle auf Seite 8 zwei Beispiele zur Lösung dieses Problems. FB 0 NETZWERK 1 NAME: NSW NSW Modul :A DB 20 NSW Data :L KH 0000 Gestartet wird mit dem Löschen des alten Istwertes im :T MW 100 Merkerwort 100 :L EW 0 Das Eingangswort des Gebers wird ins Merkerwort 102 :T MW 102 übertragen, zur Errechnung des Istwertes, da hierdurch die : Eingangsbelegung leicht zu ändern ist. :U M 103.0 Starte Istwertauswertung mit dem MSB = Spur 9 des Winkelcodierers := M 100.0 :U M 102.7 In den nun folgenden Zeilen wird nun jeweils das höhere Datenbit mit :X M 100.0 dem Eingang des jeweils niedrigeren Datenbits XOR verknüpft. := M 101.7 Das Ergebnis hiervon ist nun wieder das höhere Datenbit :U M 102.6 der nächsten XOR Verknüpfung. :X M 101.7 := M 101.6 :U M 102.5 :X M 101.6 := M 101.5 :U M 102.4 :X M 101.5 := M 101.4 :U M 102.3 :X M 101.4 := M 101.3 :U M 102.2 :X M 101.3 := M 101.2 :U M 102.1 :X M 101.2 := M 101.1 :U M 102.0 M 101.0 = LSB = Spur 1 :X M 101.1 Im Merkerwort 100 steht nun der Binärwert des Winkelcodierers. := M 101.0 Da jedoch bei einer Auflösung von 360 Grad der Graycode :L MW 100 gekappt ist, muß diese Kappung nun abgezogen werden. :ADD KF -76 Diese beträgt bei 360 Grad = 76 Impulse. :T MW 100 Der fertige berechnete Istwert wird nun im Merkerwort 100 hinterlegt. Ausgabe: Apr. 02 Seite: 3
SPS Nockenschaltwerk - Digitronic 2.1.2. Geschwindigkeits Errechung :L DW 0 Der neue und der alte Istwert, werden voneinander abgezogen, :-F ist die Istwertdifferenz grösser als der halbe maximale Istwert, :L KF +180 (=+180 Grad) :<=F :TAK :SPB = M001 so wird hier, von der Istwertdifferenz, der maximale Istwert :L KF +36 abgezogen und das Ergebnis wird dann bei M002 zum Inhalt :-F von DW2 hinzuaddiert. :SPA = M002 M001 :L KF -180 Ist die Istwertdifferenz kleiner oder gleich als der halbe :>=F maximale Istwert und die Istwertdiffernz kleiner als der halbe negative :TAK maximale Istwert, so wird hier auf die Istwertdifferenz der maximal :SPB = M002 mögliche Istwert hinzuaddiert :L KF +360 und das Ergebnis wird dann bei M002 zum Inhalt :+F von DW2 hinzuaddiert. M002 :L DW 2 Die Summe der Istwertdifferenzen in einer Zeiteinheit (KT066.0) :+F wird um die neue Istwertdiffernz erhöht. Diese Summe wird im :T DW 2 DW2 zwischengespeichert bis der Timer T0 abgelaufen ist und somit :UN T 0 die Zeiteinheit der Geschwindigkeitserfassung abgeschlossen ist. :SPB = M003 :SLW 1 Die Summe wird zum Erkennen des Vorzeichens mit 2 multipliziert :SPP = M004 :SRW 3 und anschließend durch 8 geteilt. :SPA = M005 M004 :SRW 3 War die Summe negativ, so müssen die höchsten 3 Bit des :L KH E000 Geschwindigkeitswertes unbedingt wieder gesetzt werden, da :OW ansonst das Ergebnis im Vorzeichen falsch ist. M005 :T DW 1 Der nun fertig berechnete Geschwindigkeitswert wird im DW1 :L KH 0000 gespeichert, die Summe der Istwertdifferenzen wird gelöscht :T DW 2 und der Timer T0 wird neu gestartet. M003 :UN T 0 Durch die Veränderung der Zeiteinheit (KT066.0) läßt sich der :L KT 066.0 errechnete Geschwindigkeitswert den Gegebenheiten :SE T 0 der Maschine anpassen. 2.1.3. Aufruf der Nockenberechnung :L DW 4 Einschaltpunkt der ersten Nocke :T MW 102 :L DW 5 Ausschaltpunkt der ersten Nocke :T MW 104 :SPA FB 1 Aufruf des Berechnungs - FB s mit dem Istwert im MW 100, dem NAME :EINBIT Einschaltpunkt im MW 102 und dem Ausschaltpunkt im MW 104. BIT : A 2.0 A 2.0 wäre hier das zu berechnende Bit. :L DW 6 Einschaltpunkt der zweiten Nocke :T MW 102 :L DW 7 Ausschaltpunkt der zweiten Nocke :T MW 104 :SPA FB 1 NAME :EINBIT BIT : A 2.1 usw. Die Anzahl der Nocken ist durch diesen Aufbau beliebig erweiterbar. Die Grenze ist hierbei die Zykluszeit Ihrer S5 oder S7 Steuerung wenn die Wiederholgenauigkeit der Schaltpunkte nicht mehr ausreichend ist. Seite: 4 Ausgabe: Apr. 02
Digitronic SPS Nockenschaltwerk - 2.1.4. Fehlerauswertung der Istwertberechnung :L MW 100 Der Istwert wird zum Abschluß des FB0 zur Sicherung und Anzeige :T DW 0 in das DW0 von DB20 übertragen. :L KF +360 Zur Überwachung des Winkelcodierers und des Anschlußkabels :>=F wird nun noch der errechnete Istwert auf seine Zulässigkeit hin :SPB = ERR geprüft. :TAK Wenn der Istwert kleiner 0 oder größer gleich 360 Grad wird, :L KF +0 dann liegt ein Einlesefehler vor. :<F :SPB = ERR :BEA ERR :L KF +0 In diesem Fall sollten Sie sofort Ihre Maschine anhalten und :T AB 2 z.b. eine Fehlermeldung ausgeben. :S A 3.7 :BE 2.2. Aufbau des FB1 2.2.1. Nockenberechnung in STEP 5 MW100 = Istwert / MW102 = Einschaltpunkt / MW104 = Ausschaltpunkt FB 1 NETZWERK1 NAME: EINBIT BEZ: BIT E/A/D/B/T/Z: A BI/BY/W/D: BI N01 :L MW 104 Wenn der Einschaltpunkt größer als der :L MW 102 Ausschaltpunkt ist, dann müssen die Abfragen :<F geändert werden. :SPB =N10 :L MW 100 Wenn der Einschaltpunkt größer wie der Istwert ist, :>F dann resete den Ausgang. :SPB =RES :L MW 104 Wenn der Istwert kleiner wie der Ausschaltpunkt ist, :<F dann setze den Ausgang. :SPB =SET :SPA =RES Wenn keine Frage ok., dann resete den Ausgang N10 :L MW 100 Wenn der Istwert groesser oder :<=F gleich dem Einschaltpunkt ist, :SPB =SET dann setze den Ausgang. :L MW 104 Wenn der Istwert kleiner ist :<F wie der Ausschaltpunkt, :SPB =SET dann setze den Ausgang. RES: :U =BIT Wenn das Bit gesetzt ist :RB =BIT wird es nun rückgesetzt. :BEA Rücksprung SET :S =BIT Setze das Bit :BE Rücksprung Ausgabe: Apr. 02 Seite: 5
SPS Nockenschaltwerk - Digitronic 2.2.2. Nockenberechnung in einer Hochsprache Dies ist ein Beispiel für den Kern eines Nockenschaltwerkes in einer Hochsprache. Hieran läßt sich leicht die Funktion des FB1 erkennen. if( Istwert => Winkelcodiererauflösung or Istwert < 0 ) { output=0; error=1; } else { if( Einschaltpunkt < Ausschaltpunkt ) { if( Istwert => Einschaltpunkt and Istwert < Ausschaltpunkt ) output=1; else output=0; } else { if( Istwert => Einschaltpunkt or Istwert < Ausschaltpunkt ) output=1; else output=0; } } 2.3. Aufbau des DB20 Im DB20 werden: der errechnete Istwert, die Geschwindigkeit, eine Hilfsvariable zur Errechnung der Geschwindigkeit und die Nockenwerte gespeichert. DB 20 0: KF = +00000 Aktueller Istwert 1: KF = +00000 Aktuelle Geschwindigkeit 2: KF = +00000 Hilfsvariable für Geschwindigkeitsberechnung 3: KF = +00000 reserve 4: KF = +00000 Einschaltpunkt Nocke 1 5: KF = +00045 Ausschaltpunkt Nocke 1 6: KF = +00045 Einschaltpunkt Nocke 2 7: KF = +00090 Ausschaltpunkt Nocke 2 8: KF = +00135 Einschaltpunkt Nocke 3 9: KF = +00090 Ausschaltpunkt Nocke 3 10: KF = +00135 Einschaltpunkt Nocke 4 11: KF = +00180 Ausschaltpunkt Nocke 4 12: KF = +00180 Einschaltpunkt Nocke 5 13: KF = +00225 Ausschaltpunkt Nocke 5 14: KF = +00225 Einschaltpunkt Nocke 6 15: KF = +00270 Ausschaltpunkt Nocke 6 16: KF = +00270 Einschaltpunkt Nocke 7 17: KF = +00315 Ausschaltpunkt Nocke 7 18: KF = +00315 Einschaltpunkt Nocke 8 19: KF = +00000 Ausschaltpunkt Nocke 8 Seite: 6 Ausgabe: Apr. 02
Digitronic SPS Nockenschaltwerk - 3. Anschluß des AAG60E10 an eine S5 95U Eingabebaugruppe 4. Leistungsdaten und Zykluszeiten der Software Auflösung...360 Grad. Anzahl Nocken...beliebig Zykluszeitverbrauch bei 8 Nocken: in einer S5-95U CPU...ca. 10.5ms für jeden weiteren Nocken ca. 1ms zusätzlich. Eingangssignalverzögerung + Grundzyklus...ca. 6-7ms + ca. 4ms Maximale Drehzahl bei einem Grad Auflösung und ohne Anwenderprogramm (verz. ca.22ms)...ca. 7.5 U/min. in einer S7-313 CPU...ca. 2ms für jeden weiteren Nocken ca. 0.1ms zusätzlich Eingangssignalverzögerung + Grundzyklus...ca. 3ms + ca. 2ms Maximale Drehzahl bei einem Grad Auflösung und ohne Anwenderprogramm (verz. ca.7ms)...ca. 24 U/min. Ausgabe: Apr. 02 Seite: 7
SPS Nockenschaltwerk - Digitronic 5. Istwerterfassung für andere CPU Modelle 5.1. Istwerterfassung im Kontaktschaltplan Das nachfolgende Beispiel ist zur Demonstration im Kontaktplanverfahren geschrieben. Im Beispiel wird im Merkerwort 0 der Istwert des Winkelcodierers hinterlegt. Dieser kann nun weiter verarbeitet werden. Achtung: Die Auswertung der Spuren muß immer vom MSB aus erfolgen, d.h. die Reihenfolge der Netzwerke darf nicht verändert werden. E 1.0 M 0.0 +---] [---+---------+---------+---------+---------+---------+---------+--( )- E 0.7 M 0.0 M 1.7 E 0.7 M 0.0 E 0.6 M 1.7 M 1.6 E 0.6 M 1.7 E 0.5 M 1.6 M 1.5 E 0.5 M 1.6 E 0.4 M 1.5 M 1.4 E 0.4 M 1.5 E 0.3 M 1.4 M 1.3 E 0.3 M 1.4 E 0.2 M 1.3 M 1.2 E 0.2 M 1.3 E 0.1 M 1.2 M 1.1 E 0.1 M 1.2 E 0.0 M 1.1 M 1.0 E 0.0 M 1.1 Seite: 8 Ausgabe: Apr. 02
Digitronic SPS Nockenschaltwerk - 5.2. Istwerterfassung für eine S5-95U CPU Das nachfolgende Beispiel ist für eine Siemens S5-95U CPU geschrieben. Da die S5-95U CPU keinen XOR Befehl kennt muß dieser durch UND und ODER Verknüpfungen ersetzt weden. Im Beispiel wird im Merkerwort 2 der Istwert des Winkelcodierers hinterlegt. Dieser kann nun weiter verarbeitet werden. FB 0 NETZWERK 1 NAME :FB 00000 :L KH 0000 :T MW 0 Alter Istwert löschen :U E 0.3 :U E 1.0 :UN M 1.4 := M 0.0 :) :U E 0.7 :UN E 0.3 :UN M 0.0 :U M 1.4 :) :) := M 1.3 :UN E 0.7 :U M 0.0 :U E 0.2 :) :UN M 1.3 := M 1.7 :) :U E 0.6 :UN E 0.2 :UN M 1.7 :U M 1.3 :) :) := M 1.2 :UN E 0.6 :U M 1.7 :U E 0.1 :) :UN M 1.2 := M 1.6 :) :U E 0.5 :UN E 0.1 :UN M 1.6 :U M 1.2 :) :) := M 1.1 :UN E 0.5 :U M 1.6 :U E 0.0 :) :UN M 1.1 := M 1.5 :) :U E 0.4 :UN E 0.0 :UN M 1.5 :U M 1.1 :) :) := M 1.0 :UN E 0.4 :L MW 0 :U M 1.5 :ADD KF -76 :) :T MW 2 := M 1.4 : Achtung: Die Auswertung der Spuren muß immer vom MSB aus erfolgen, d.h. die Reihenfolge der Befehle darf nicht verändert werden. Ausgabe: Apr. 02 Seite: 9