Step 5 Anfängerfrage: S5-100U CPU100 - Eprom ausgelesen - Dekodierung möglich?

jogger1

Level-1
Beiträge
16
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich muss vorwegschicken, dass ich ein ziemlicher Neuling bzgl. SPS bin. Ich weiss zwar grob, was man damit macht, aber programmiert habe ich so eine Steuerung noch nie.

Da unsere "neue" Werkzeugmaschine aber eine ziemlich alte (30 Jahre) S5-100U im Schaltschrank sitzen hat, interessiert mich deren Funktionsweise jetzt doch.

Laut Schaltplan macht diese SPS nichts anderes, als aus zwei BCD-Ziffern (über 2x4 Digitaleingänge) und vier Steuerleitungen (Änderung Low-Byte, Änderung High-Byte, Rechtslauf, Linkslauf - insgesamt nochmal 4 Digitaleingänge) eine analoge Ausgangsspannung von -10 bis +10V zur Ansteuerung eines Servos zu erzeugen.

Das EPROM (2764) habe ich schon auslesen können und erwartungsgemäß belegt das Programm nur einen Bruchteil des Speichers (etwa 500 Byte).

In einem Hexeditor sieht man außer vielen Bytes interessanterweise auch einige Texte wie "ANALOG", "DIV:16", "SPAUSG".

Wie gesagt bin ich kein SPS-Programmierer, aber mich würde schon interessieren, wie dieses Programm aufgebaut ist und was es genau macht (schon, um im Fall der Fälle die SPS nachbilden/ersetzen zu können).

Daher meine Frage: Gibt es die Möglichkeit, aus den EPROM-Daten wieder das ursprüngliche Programm, also quasi den Quelltext, zu erzeugen - oder ist das schon der Quelltext?

Eine (vermutlich teure) Entwicklungssoftware etc. wäre für mich wohl übertrieben. Mir reicht es, wenn ich mir das Verhalten anschauen und darauf aufbauend dann bei Ausfall etc. (ist ja schon 30 Jahre alt) Ersatz per Mikrocontroller programmieren könnte.

Vielen Dank für jeden Tipp für einen Anfänger!

Chris
 
Zuletzt bearbeitet:
Ich habe mir die Daten auf den EPROMs selber noch nicht angesehen, aber ich denke schon dass sich daraus der AWL-Code wiederherstellen lässt.
Der eigentliche Bausteincode beginnt nach einem 0x7070, was dann folgt ist sog. MC5-Code der sich wieder in AWL zurückübersetzen lässt.

Dazu gibt es auch ein paar Opensource-Implementierungen, wobei ich nicht weiß wie gut diese funktionieren, und in wiefern du deine EPROM-Binärdatei anpassen musst damit das Programm das verarbeiten kann.

https://github.com/dotnetprojects/D...ree/master/LibNoDaveConnectionLibrary/PLCs/S5

Du kannst wenn möglich den EPROM-Inhalt hier ja mal anhängen. Evtl. macht dir jemand daraus wieder AWL-Code.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

vielen Dank für die rasche Antwort!

In der Tat beginnt der EPROM-Abzug direkt mit 0x7070 - es scheint also dieser MC5-Code zu sein.

Also muss ich nach einem "MC5 nach AWL"-Konverter suchen?
So etwas sollte es doch auch für Linux geben :)

Ich habe die 8kb aber mal angehängt (ging nur als Zip-Datei, weil andere Endungen nicht zugelassen sind).

Vielleicht hat ja jemand Zeit/Lust, das kleine Progrämmchen zu konvertieren.

Gibt es für die S5/AWL ein gutes Anfängerbuch oder ein Einführung/Tutorium im Netz, damit ich den Quellcode auch halbwegs verstehe?

Viele Grüße,
Chris

Anhang anzeigen CPU100-SPS.zip
 
In Step5 lässt sich die Datei leider nicht direkt laden. Aber ich habs gerade mal durch den Konverter hier:
https://sourceforge.net/projects/mc5decode/
umwandeln lassen.

Unverifiziertes Ergebnis:
Code:
Sync 1        = 70
Sync 2        = 70
Baustein Nr.  = 01
Baustein Typ  = OB
Baustein OK   = 03
PG Kennung    = 80
BIB 1         = 00
BIB 2         = 00
BIB 3         = 00
Bausteinlänge = 10 Bytes oder Worte je nach CPU

MC5 Offset 0
0000   84 SPA   	FB    	 1    
0002   51 SPA=  	      	 1    
0004   84 SPA   	FB    	 3    
0006   51 SPA=  	      	 1    
0008  139 BE    	      	      

-------------------------------------------------------

Sync 1        = 70
Sync 2        = 70
Baustein Nr.  = 02
Baustein Typ  = DB
Baustein OK   = 03
PG Kennung    = 00
BIB 1         = 00
BIB 2         = 00
BIB 3         = 00
Bausteinlänge = 15 Bytes oder Worte je nach CPU

MC5 Offset 0
0000    1 KEW   	      	      
FEHLER: Befehl nicht in der Symboltabelle 0x0004
0004    0 NOP0  	      	      
0006    4 FT    	T     	 000.0
0008  328 UN    	T     	 0    
0010    0 NOP0  	      	      
0012    0 NOP0  	      	      
0014    0 NOP0  	      	      
FEHLER: Befehl nicht in der Symboltabelle 0x0064
0018    0 NOP0  	      	      

-------------------------------------------------------

Sync 1        = 70
Sync 2        = 70
Baustein Nr.  = 01
Baustein Typ  = FB
Baustein OK   = 03
PG Kennung    = 84
BIB 1         = 00
BIB 2         = 00
BIB 3         = 00
Bausteinlänge = 76 Bytes oder Worte je nach CPU

MC5 Offset 10
NAME:ANALOG  
0000   33 A     	DB    	 2    
0002  318 UN    	E     	 2.0  
0004  318 UN    	E     	 2.1  
0006  295 U     	M     	 1.0  
0008  298 =     	M     	 1.1  
0010  295 U     	M     	 1.1  
0012  301 R     	M     	 1.0  
0014  312 O     	E     	 2.0  
0016  312 O     	E     	 2.1  
0018  297 S     	M     	 1.0  
0020  295 U     	M     	 1.1  
0022  326 SPB=  	      	 39   
0024  318 UN    	E     	 2.0  
0026  318 UN    	E     	 2.1  
0028  301 R     	M     	 1.2  
0030  301 R     	M     	 1.4  
0032  326 SPB=  	      	 49   
0034  320 ON    	E     	 2.0  
0036  320 ON    	E     	 2.1  
0038  326 SPB=  	      	 15   
0040  310 U     	E     	 2.0  
0042  310 U     	E     	 2.1  
0044  299 UN    	M     	 1.2  
0046  298 =     	M     	 1.3  
0048  295 U     	M     	 1.3  
0050  297 S     	M     	 1.2  
0052  299 UN    	M     	 1.3  
0054  326 SPB=  	      	 38   
0056   97 L     	EB    	 0    
0058   97 L     	EB    	 1    
0060  135 SLW   	      	 4    
0062   96 OW    	      	      
0064   41 T     	DL    	 8    
0066  326 SPB=  	      	 32   
0068  320 ON    	E     	 2.0  
0070  312 O     	E     	 2.1  
0072  326 SPB=  	      	 29   
0074  310 U     	E     	 2.0  
0076  299 UN    	M     	 1.4  
0078  298 =     	M     	 1.5  
0080  295 U     	M     	 1.5  
0082  297 S     	M     	 1.4  
0084  299 UN    	M     	 1.5  
0086  326 SPB=  	      	 22   
0088   97 L     	EB    	 0    
0090   97 L     	EB    	 1    
0092  135 SLW   	      	 4    
0094   96 OW    	      	      
0096   49 T     	DR    	 8    
0098   51 SPA=  	      	 16   
0100   67 L     	DW    	 8    
0102   68 T     	DW    	 0    
0104   56 L     	KF    	 1024 
0108   68 T     	DW    	 3    
0110   56 L     	KF    	 64512
0114   68 T     	DW    	 4    
0116   46 L     	KB    	 6    
0118   68 T     	DW    	 1    
0120   84 SPA   	FB    	 2    
0122   51 SPA=  	      	 1    
0124   67 L     	DW    	 0    
0126  135 SLW   	      	 4    
0128   68 T     	DW    	 0    
0130  139 BE    	      	      

-------------------------------------------------------

Sync 1        = 70
Sync 2        = 70
Baustein Nr.  = 02
Baustein Typ  = FB
Baustein OK   = 03
PG Kennung    = 84
BIB 1         = 00
BIB 2         = 00
BIB 3         = 00
Bausteinlänge = 106 Bytes oder Worte je nach CPU

MC5 Offset 10
NAME:DIV:16  
0000   46 L     	KB    	 0    
0002   20 T     	MW    	 118  
0004   46 L     	KB    	 1    
0006   20 T     	MW    	 126  
0008   67 L     	DW    	 0    
0010   20 T     	MW    	 114  
0012  299 UN    	M     	 114.7
0014  326 SPB=  	      	 3    
0016   10 KEW   	      	      
0018   14 SPO=  	      	 7    
0020   20 T     	MW    	 120  
0022   46 L     	KB    	 0    
0024   67 L     	DW    	 1    
0026   20 T     	MW    	 116  
0028   36 ><F   	      	      
0030  326 SPB=  	      	 4    
0032   46 L     	KB    	 1    
0034   49 T     	DR    	 2    
0036  140 BEA   	      	      
0038  299 UN    	M     	 116.7
0040  326 SPB=  	      	 3    
0042   10 KEW   	      	      
0044   14 SPO=  	      	 250  
0046   20 T     	MW    	 124  
0048   19 L     	MW    	 120  
0050   19 L     	MW    	 124  
0052   35 <F    	      	      
0054  326 SPB=  	      	 10   
0056   37 !=F   	      	      
0058  326 SPB=  	      	 39   
0060  135 SLW   	      	 1    
0062   20 T     	MW    	 124  
0064   19 L     	MW    	 126  
0066  135 SLW   	      	 1    
0068   20 T     	MW    	 126  
0070  299 UN    	M     	 124.7
0072  326 SPB=  	      	 244  
0074   19 L     	MW    	 126  
0076  171 SRW   	      	 1    
0078   20 T     	MW    	 126  
0080   46 L     	KB    	 0    
0082   37 !=F   	      	      
0084  326 SPB=  	      	 32   
0086   19 L     	MW    	 124  
0088  171 SRW   	      	 1    
0090   20 T     	MW    	 124  
0092   19 L     	MW    	 118  
0094   19 L     	MW    	 126  
0096  288 +F    	      	      
0098   20 T     	MW    	 118  
0100   19 L     	MW    	 120  
0102   19 L     	MW    	 124  
0104  116 -F    	      	      
0106   20 T     	MW    	 120  
0108   19 L     	MW    	 126  
0110  171 SRW   	      	 1    
0112   20 T     	MW    	 126  
0114   46 L     	KB    	 0    
0116   37 !=F   	      	      
0118  326 SPB=  	      	 15   
0120   19 L     	MW    	 124  
0122  171 SRW   	      	 1    
0124   20 T     	MW    	 124  
0126   19 L     	MW    	 120  
0128   34 >F    	      	      
0130  326 SPB=  	      	 245  
0132   36 ><F   	      	      
0134  326 SPB=  	      	 235  
0136   19 L     	MW    	 126  
0138   19 L     	MW    	 118  
0140  288 +F    	      	      
0142   20 T     	MW    	 118  
0144   46 L     	KB    	 0    
0146   20 T     	MW    	 120  
0148  299 UN    	M     	 114.7
0150  299 UN    	M     	 116.7
0152  326 SPB=  	      	 12   
0154  295 U     	M     	 114.7
0156  295 U     	M     	 116.7
0158  326 SPB=  	      	 4    
0160   19 L     	MW    	 118  
0162   10 KEW   	      	      
0164   20 T     	MW    	 118  
0166  299 UN    	M     	 114.7
0168  326 SPB=  	      	 4    
0170   19 L     	MW    	 120  
0172   10 KEW   	      	      
0174   20 T     	MW    	 120  
0176   46 L     	KB    	 0    
0178   20 T     	MW    	 112  
0180   49 T     	DR    	 2    
0182   19 L     	MW    	 118  
0184   68 T     	DW    	 0    
0186   19 L     	MW    	 120  
0188   68 T     	DW    	 1    
0190  139 BE    	      	      

-------------------------------------------------------

Sync 1        = 70
Sync 2        = 70
Baustein Nr.  = 03
Baustein Typ  = FB
Baustein OK   = 03
PG Kennung    = 84
BIB 1         = 00
BIB 2         = 00
BIB 3         = 00
Bausteinlänge = 27 Bytes oder Worte je nach CPU

MC5 Offset 10
NAME:SPAUSG  
0000  318 UN    	E     	 2.2  
0002  318 UN    	E     	 2.3  
0004   46 L     	KB    	 0    
0006  110 T     	AW    	 88   
0008  326 SPB=  	      	 12   
0010  318 UN    	E     	 2.2  
0012  326 SPB=  	      	 5    
0014   33 A     	DB    	 2    
0016   67 L     	DW    	 0    
0018   10 KEW   	      	      
0020  110 T     	AW    	 88   
0022  318 UN    	E     	 2.3  
0024  326 SPB=  	      	 4    
0026   33 A     	DB    	 2    
0028   67 L     	DW    	 0    
0030  110 T     	AW    	 88   
0032  139 BE

Der Datenbaustein 2 scheint von dem Programm nicht korrekt erkannt zu werden.
DIV:16 ist soweit ich weiß eine Bibliotheksfunktion.
Bei dem Rest müsste ich auch erst das S5 Handbuch hernehmen.
 
Vielen Dank für die Konvertierung :)

Kann es sein, dass die Konvertierung in Step5 nicht geht, weil ich das komplette EPROM ausgelesen hatte (also mit knapp 7700 mal 0xFF am Ende)?

Jetzt muss ich mir nur die ganzen Begriffe klar machen: was genau ein Datenbaustein ist usw.
"SPAUSG" dürft vermutlich eine Abkürzung für "Spannungsausgabe" sein.

Falls es hilft: ich habe mal ein Foto der SPS mit den Modulen angehängt.

Warum da ein Fehler drin steckt, weiss ich (natürlich) nicht. Ich habe es aber drei Mal ausgelesen und die Dateien verglichen - die waren identisch.
Kann es sein, dass da vielleicht nach der langen Zeit ein Bit gekippt ist oder wird immer eine Prüfsumme über den Baustein gebildet, bevor das Programm ausgeführt wird?

Den entsprechenden Servomotor habe ich ehrlich gesagt auch noch nicht angesteuert (das ist der Werkzeugantrieb des Revolvers eines Drehautomaten) weil ich ihn noch nicht benötigte. Es könnte also durchaus sein, dass das Programm nun fehlerhaft ist.

Ich teste das mal heute Nachmittag.

Chris

sps.jpg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Datenbaustein ist in etwa ähnlich einer Struct in C.
Also z.B.
struct DB2 {
int wert1;
int wert2;
};

"A DB 2" öffnet in S5-Sprech einen Datenbaustein, das entspricht ungefähr dem Setzen eines Zeigers auf Struct DB2. Intern gibt es da noch einen Zwischenschritt über eine Adresstabelle an der DB 2 letztendlich im Speicher steht, aber das hat dich hier nicht weiter zu interessieren.

Mit Step5 lassen sich nur S5D-Dateien öffnen, diese haben noch ein Bausteinverzeichnis und evtl. ein paar weitere Informationen vor dem eigentlichen Bausteincode also den ersten 0x7070, das bei dir fehlt. Wenn du so ein Programmabzug mit der Step5 Software machst, dann ist das alles vollständig. Die Software erzeugt dir auch automatisch die Sprunglabel zu den Sprüngen (SPB, SPA), bei dem was ich oben gepostet habe sind das noch Sprungweiten.

Um das Programm zu verstehen, würde ich als erstes die Belegung der Eingänge herausfinden, und dann im Programm Ex.y durch ein entsprechendes Symbol ersetzen.
 
Wo kommst Du denn her?
Das Programm aus der S5 auszulesen und ein lesbares PDF daraus zu machen ist ja keine Tagesaufgabe.
Passende Software und Adapter vorausgesetzt.

Respekt in Step5 über den MC5 Code aus einzusteigen
 
Das hab ich im Thread auf Mikrocontroller.net damals auch schon geschrieben, dass sich das eigentlich nur rechnet wenn seine Arbeitszeit für den Kunden kostenlos ist.

Bei einer Anfrage von einem Kunden für so etwas, würde ich direkt eine 1214c oder etwas in der Art anbieten.
Anreise, vor Ort Programm auslesen und in TIA umschreiben, Austausch gegen 1200er. Voraussichtlich 6 Stunden, Abrechnung nach Aufwand. Und dann hat er wieder was industrietaugliches drin.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Oh, da habt Ihr etwas falsch verstanden - es gibt keinen Kunden, das ist meine Maschine :)

Mir geht es darum, dass ich die Maschine wirklich in- und auswendig kennen möchte, um die doch in die Jahre gekommene Elektronik im Fehlerfall rasch reparieren bzw. ersetzen zu können. Dazu gehören auch so Dinge wie der langfristige Ersatz der alten Sinumerik durch ein LinuxCNC-System. Im Moment ist die Maschine noch nicht in der Produktion, sondern wird erstmal aufgearbeitet und für 24/7-Betrieb fit gemacht (automatischer Stangenlader etc.). Wenn die dann produziert, will ich im Fehlerfall natürlich keine langen Stillstandzeiten, daher das Backup-System mit LinuxCNC.

Gleiches gilt eben für diese "S5-Hilfs-SPS", die offenbar nicht allzuviel tut. Und darüber wurde mein Interesse an SPS allgemein geweckt, das ich jetzt langfristig befriedigen möchte. Im Moment bin ich also quasi ein interessierter Laie (allerdings mit sehr viel Erfahrung im Bereich CNC und Elektronikentwicklung).

Adapter etc. habe ich hier natürlich nicht - daher musste ich etwas löten, um das Kärtchen (ungesockeltes EPROM, sehr ärgerlich) steckfertig für meinen EPROM-Programmer zu bekommen. Hat aber problemlos funktioniert.

Thomas, vielen Dank für die ersten Erklärungen der Programmstruktur.

Ich habe jetzt mal in den Schaltplänen geschaut. Die Eingänge sind wie folgt verdrahtet:

E0.0 bis E0.3 <----- Low-Byte (BCD, Wertigkeiten 1,2,4,8 )
E1.0 bis E1.3 <----- High-Byte (BCD, Wertigkeiten 10,20,40,80)
E2.0 <----- "Änderung Low- Byte"
E2.1 <----- "Änderung High-Byte"
E2.2 <----- "Rechtslauf"
E2.3 <----- "Linkslauf"

Der Ausgang der Digital/Analog-Baugruppe:
CH0 -----> Ausgang Spannungssollwert +/-10V
CH1 unbeschaltet

Gestern bin ich leider nicht mehr zum Testen des Servos gekommen (im Moment ist die halbe Maschine zerlegt, um alles zu reinigen und neu zu fetten). Mache ich heute :)

Beste Grüße,
Chris

@edison: Ich sitze im Raum Koblenz
 
Hallo!

Ich habe am Samstag mal den Servo mit der SPS getestet (musste nur erst herausfinden, wie man die Drehzahl im NC-Programm überhaupt einstellt, nämlich mit "H").

Mit "H4000" wird bspw. eine Drehzahl von 4000/min des Werkzeugantriebs eingestellt. Dabei fiel mir auf, dass die Anzeige der LEDs nicht BCD-codiert ist - die Angaben im Schaltplan sind also Unsinn.

Es erfolgt die Übertragung von zwei Bytes hintereinander, dafür sind dann auch die Leitungen "Änderung Low-byte" und "Änderung High-Byte" gedacht. Bei 4000 wird zuerst 4000 modulo 256=160 mit "Änderung LowByte" gesetzt und danach 4000 div 256 = 15 mit "Änderung High-Byte". Insgesamt also eine 16-Bit-Ganzzahl, die dann auch besser zum A/D-Modul passt.

Freigegeben wird der Antrieb dann mit M23 (Linkslauf) bzw. M24 (Rechtslauf), M25 stoppt den Motor.

Soweit funktioniert die SPS bzw. deren Programm also noch :)

H-Werte über 9999 blockt die NC-Sinumerik direkt mit Fehler, aber ab 8000/min steigt der Antriebsregler sowieso aus (Störung).

Das bringt mich auf die Idee, dass man H-Werte oberhalb von 8000 schön für weitere Steuerungsaufgaben verwenden könnte, solange der Werkzeugantrieb nicht benötigt wird. Damit hätte ich 2000 verschiedene Zustände zur Verfügung, ohne großartig in die Sinumerik eingreifen zu müssen.

Die Realisierung müsste ich dann aber wohl per µC-Schaltung vornehmen - es sei denn, ich lerne wirklich S5-Programmierung und koppele weitere Ein-Ausgabe-Module an. Wobei es da im Schaltschrank eng wird. Eine eigene Ersatzschaltung dürfte deutlich kleiner ausfallen.

Übrigens hat die Sinumerik offenbar auch eine (abgespeckte) S5 softwaremäßig integriert, um die Anpassung an die verschiedenen Maschinen durch den Maschinenhersteller zu ermöglichen. Die entsprechende S5-Datei meiner Maschine habe ich auch.

Es kann sich also durchaus für mich lohnen, tiefer in S5 einzusteigen, um weitere Funktionen (Teilezuführung per Roboterarm etc.) zu ermöglichen

Es bleibt also spannend :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Sascha,

vielen Dank für das Angebot.

Ausgelesen habe ich das EPROM ja (siehe zip-Datei weiter oben) - reicht Dir das auch schon?

Von der Sinumerik habe ich auch schon das SPS-Programm runterziehen können (auch mit zweimal 0x70 0x70 am Anfang, das sollte also passen).

Wegen Deines ebay-Links kam mir noch eine Idee:

Es gibt für die S5-Serie ja wirklich viele schöne und robuste Module für DIN-Schienen mit schönen Eigenschaften (bspw. galvanische Trennung meiner Analog-Ausgänge hier.) - die man gebraucht sehr preiswert erwerben kann.

Ich kenne mich leider nicht mit dem Bussystem aus, das diese Module verbindet, aber wäre es nicht möglich, dass ich die CPU100 komplett rausschmeiße und dafür quasi meinen eigenen Mikrocontroller (STM32 oder auch AVR) verwende, den ich schön als FSM und in C programmieren könnte? Dafür hätte ich ja auch alles zum flashen etc. vor Ort und könnte meiner Programmierertätigkeit direkt nachgehen, ohne mich groß einarbeiten zu müssen.

Voraussetzung dafür ist natürlich, dass ich das Busprotokoll habe, um die Schnittstelle zu den Modulen für meinen Controller implementieren zu können. Wo finde ich darüber Informationen? Es muss sie ja geben, weil andere Hersteller ja auch Hardware-Module anbieten.

Oder gibt es so etwas in der Art sogar schon fix und fertig, also eine Art Mikrocontroller-Modul, an das ich diese schöne SPS-hardware stöpseln kann, das sich aber in C/C++ etc. programmieren lässt?

Viele Grüße,
Chris

P.S.: Ich habe eben nochmal überlegt - ich kann ja auch neue Ausgänge einführen, obwohl ich den Werkzeugantrieb verwende. Mir muss nur klar sein, dass alle Werte für H unter 8000 sich immer auf die neue Spindeldrehzahl beziehen und alle über 8000 eben auf meine neuen Schaltausgänge (oder was auch immer). Die Werte unter 8000 müssen also zum A/D-Wandler, der Rest zu den neuen Ausgängen (oder was auch immer ich damit vorhabe).
 
Zuletzt bearbeitet:
Willst du dir das wirklich so antun?
Edison wollte vermutlich das EPROM um es in eine CPU zu stecken und dann das Programm auf "herkömmlichem" Weg auszulesen.

Vielleicht solltest du auch darüber nachdenken?
Programmiersoftware für S5 gibt's bestimmt irgendwo im Netz.

Ansonsten das hier:
https://www.ibhsoftec.com/epages/63444704.sf/de_DE/?ObjectPath=/Shops/63444704/Products/10018
Ggf. kann die DEMO dir schon etwas helfen.

Ein Kabel kostet nicht viel, lässt sich aber auch selber löten.
USB --> RS232 Adapter --> TTY (Bei USB Adapter möglichst FTDI Chipsatz, der macht idr keine Probleme)


Die Teile für die 100er Serie der S5 kostet quasi nichts mehr.
Wir haben letztes Jahr eine Kiste davon direkt in den Schrott geschmissen weil die Preise bei Ebay so niedrig sind.


Daraus ergibt sich Variante-1 für dich:
Du hast ein Programm.
Mache ein Backup davon.
Decke dich für wenig Geld mit Ersatzteilen bei Ebay ein.
--> werde glücklich und produziere 24/7


Noch besser: Variante-2 Baue auf eine aktuelle Steuerung um (z.b. wie von Thomas vorgeschlagen eine 1200er)
besorge dir TIA Portal und programmiere den Code nach.
Ersetze die Hardware. (Die billigste 1200er CPU, die CPU1211C kostet gerade Mal 150€...)
Diese Variante macht Sinn wenn du ohnehin vor hast dich in das Thema einzuarbeiten.
--> werde glücklich und produziere 24/7


Den alten Rückwandbus der S5 reversengineeren um die alten I/O an einen UC zu bekommen?
Das ist nicht wirklich dein Ernst?
 
Spindel Drehzahlen werden eigentlich mit S und nicht mit H programmiert. Was hast Du denn da für eine NC?
H-Funktionen gibt es bei den Sinumeriks 810, 850, 880, 840C auch in der Form H00=xxxx, H01=xxxx, H02=xxxx, u.s.w. . . . H99=xxxx.
H00=xxxx entspricht Hxxxx. Du müsstest dann nicht alles in den nicht benutzten ZahlenBereich der einen H-Funktion quetschen.
Wenn "Deine" PLC nicht diejenige ist, die direkt an der NC "hängt", wie kommst Du überhaupt an die Info, die von der NC per H-Fkt an die PLC gereicht wird b.z.w., die von der PLC aus der NC gelesen werden muss?

Du bist mittlerweile nicht mehr von der BCD-Darstellung der Drehzahl "überzeugt"? Die hast Du aber unverändert und unveränderbar an der Schnittstelle zwischen PLC und DekadenSchaltern vorliegen!
Beim Lesen des H-FunktionsWertes kannst Du vielleicht wählen, ob der Wert Dual oder BCD sein soll. Zur Weitergabe an den Regler musst Du wahrscheinlich sowieso in Dual wandeln bzw. das ist wahrscheinlich in Deiner PLC bereits realisiert.
Die ByteAuswahl dient anscheinend dazu, dass Du mit einem 2-stelligen DekadenSchalter die 4-stellige Drehzahl eingeben kannst (die linken beiden Stellen und die rechten beiden Stellen).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Markus,

Ansonsten das hier:
https://www.ibhsoftec.com/epages/63444704.sf/de_DE/?ObjectPath=/Shops/63444704/Products/10018
Ggf. kann die DEMO dir schon etwas helfen.

Ein Kabel kostet nicht viel, lässt sich aber auch selber löten.
USB --> RS232 Adapter --> TTY (Bei USB Adapter möglichst FTDI Chipsatz, der macht idr keine Probleme)

VIelen Dank, das schaue ich mir mal an.

Die Teile für die 100er Serie der S5 kostet quasi nichts mehr.
Wir haben letztes Jahr eine Kiste davon direkt in den Schrott geschmissen weil die Preise bei Ebay so niedrig sind.

Da hast Du schon einen Grund dafür, warum ich gerne eine Anbindung für meine Controller dafür hätte:
Das ist sehr, sehr preiswerte, robuste Hardware, die ich sehr gut für meine weiteren Projekte einsetzen könnte.
Das Alter würde für mich keine Rolle spielen, da das praktisch nur für Eigenentwicklungen eingesetzt würde.

Daraus ergibt sich Variante-1 für dich:
Du hast ein Programm.
Mache ein Backup davon.
Decke dich für wenig Geld mit Ersatzteilen bei Ebay ein.
--> werde glücklich und produziere 24/7

Noch besser: Variante-2 Baue auf eine aktuelle Steuerung um (z.b. wie von Thomas vorgeschlagen eine 1200er)
besorge dir TIA Portal und programmiere den Code nach.
Ersetze die Hardware. (Die billigste 1200er CPU, die CPU1211C kostet gerade Mal 150€...)
Diese Variante macht Sinn wenn du ohnehin vor hast dich in das Thema einzuarbeiten.
--> werde glücklich und produziere 24/7

Ja, wahrscheinlich lasse ich es einfach bei der S5 und mache mich eher in neueren Steuerungen schlau.

Den alten Rückwandbus der S5 reversengineeren um die alten I/O an einen UC zu bekommen?
Das ist nicht wirklich dein Ernst?

Nein, das wäre für mich in der Tat nur interessant, wenn es dafür die entsprechende Doku gibt. Die Umsetzung in eine entsprechende Schnittstelle wäre dann für mich kein größeres Problem.
Wobei ich mir eigentlich nicht vorstellen kann, dass es nach der langen Zeit dazu keine umfassenden Infos geben sollte.

Ich baue immer wieder Sondermaschinen für eigene Entwicklungen/Produktion und musste die Schnittstellen nach außen hin immer extra implementieren.

Da wären solche Hardware-Module schon eine große Erleichterung, insbesondere wenn man quasi so einen "Karton voll S5-Module" als Bastelkiste rumstehen hätte :wink:

Heinileini schrieb:
Spindel Drehzahlen werden eigentlich mit S und nicht mit H programmiert. Was hast Du denn da für eine NC?

Es handelt sich um eine Sinumerik 810T GA1.
Ja, so dachte ich auch. Aber mit S passierte nichts. Ich habe dann die paar Programme durchforstet, die noch aufgespielt waren und habe dort dann den H-Wert immer vor der Servo-Freigabe gefunden.
Der Werkzeugantrieb gehört zu einem 12-fach-VDI-Werkzeugrevolver mit angetriebenen Werkzeugen.

die H-Funktionen gibt es bei den Sinumeriks 810, 850, 880, 840C auch in der Form H00=xxxx, H01=xxxx, H02=xxxx, u.s.w. . . . H99=xxxx.H00=xxxx entspricht Hxxxx. Du müsstest dann nicht alles in den nicht benutzten ZahlenBereich der einen H-Funktion quetschen.

Ja, so etwas würde ich lieber versuchen. Noch lieber wären mir selbst definierbare M-Funktionen. Leider weiss ich nicht, wie man so etwas bei einer 810 einstellt. Vermutlich muss man dazu Hand an die interne SPS legen, um das an die entsprechenden Ausgänge zu bringen. Ich habe auch noch eine Menge an Ausgängen auf den Ausgabe-Modulen der Sinumerik zur Verfügung (insg. sind es 128 Eingänge und 64 Ausgänge, von denen längst nicht alle belegt sind). Ideal wäre es, wenn ich die verwenden könnte.

Die "Krücke" mit H8000-H9999 kam mir als Idee nur, weil ich dafür nur die Eingänge der kleinen S5 parallel auf meinen Controller legen könnte, und der dann ab H8000 reagieren kann, ohne dass ich wissen müsste, wie man die Sinumerik selbst umprogrammiert. Wenn das Umprogrammieren nicht schwer ist, dann würde ich natürlich die Lösung direkt dort mit eigenen Ausgängen bevorzugen.

Wenn "Deine" PLC nicht diejenige ist, die direkt an der NC "hängt", wie kommst Du überhaupt an die Info, die von der NC per H-Fkt an die PLC gereicht wird b.z.w., die von der PLC aus der NC gelesen werden muss?

Siehe oben. Ich war auch ziemlich ratlos, bis ich in den Teileprogrammen gesucht habe und glücklicherweise fündig wurde. Ansonsten hätte ich wohl den Vorbesitzer kontaktieren müssen.

Du bist mittlerweile nicht mehr von der BCD-Darstellung der Drehzahl "überzeugt"? Die hast Du aber unverändert und unveränderbar an der Schnittstelle zwischen PLC und DekadenSchaltern vorliegen!Beim Lesen des H-FunktionsWertes kannst Du vielleicht wählen, ob der Wert Dual oder BCD sein soll. Zur Weitergabe an den Regler musst Du wahrscheinlich sowieso in Dual wandeln bzw. das ist wahrscheinlich in Deiner PLC bereits realisiert. Die ByteAuswahl dient anscheinend dazu, dass Du mit einem 2-stelligen DekadenSchalter die 4-stellige Drehzahl eingeben kannst (die linken beiden Stellen und die rechten beiden Stellen).

Ich habe einfach einen Drehzahlmesser an den Servo gehängt und dann begonnen, die Werte zu ändern und geschaut, was passierte. Da die S5 offenbar sehr langsam ist, konnte man schnell feststellen, dass nacheinander zwei Werte an den 8 Eingängen der S5 anlagen, wobei das letzte Byte sichtbar blieb. Darüber kam ich schnell drauf, dass das das Highbyte sein muss, weil die Anzeige nicht wirklich zu BCD passte. Bei H=255 blitzten alle acht LEDs kurz auf, bei H=256 blieb Bit 0 an, bei H=4096 wurde dual 12 dauerhaft angezeigt usw.
Das ist also definitiv eine 16-Bit-Dualzahl, bei der zuerst das Low-Byte und dann das High-Byte zur SPS rausgeschoben werden.

Grüße,
Chris
 
Es handelt sich um eine Sinumerik 810T GA1.
Musste früher mal mit der 810M GA1 kämpfen. Haben wir nur für Werkzeug-/Werkstück-MagazinSteuerungen eingesetzt.
SchnittStelle zwischen NC und PLC recht bescheiden. Befehlssatz der PLC sehr bescheiden.
Die BCD-in-DUAL-Wandlung für 4-stellige Zahlen dürfte schon recht anspruchsvoll für die PLC der 810T sein.
ProgrammSpeicher der PLC ebenfalls sehr bescheiden (max. ca. 2.000 Worte - ca. bedeutet, es war nie ein eindeutiges Maximum zu ermitteln).
Nur die Bausteine PB1 und PB2 oder FB1 und FB2 möglich - wenn mich die grauen Zellen nicht täuschen - und keine DBs.

Ja, so dachte ich auch. Aber mit S passierte nichts. Ich habe dann die paar Programme durchforstet, die noch aufgespielt waren und habe dort dann den H-Wert immer vor der Servo-Freigabe gefunden.
Der Werkzeugantrieb gehört zu einem 12-fach-VDI-Werkzeugrevolver mit angetriebenen Werkzeugen.
Da liegt ein Missverständnis vor: S für ("Haupt-")SpindelDrehzahl. WerkzeugRevolver mit angetriebenen Werkzeugen passt schon zu H-Fkt.

Ja, so etwas würde ich lieber versuchen. Noch lieber wären mir selbst definierbare M-Funktionen. Leider weiss ich nicht, wie man so etwas bei einer 810 einstellt. Vermutlich muss man dazu Hand an die interne SPS legen, um das an die entsprechenden Ausgänge zu bringen. Ich habe auch noch eine Menge an Ausgängen auf den Ausgabe-Modulen der Sinumerik zur Verfügung (insg. sind es 128 Eingänge und 64 Ausgänge, von denen längst nicht alle belegt sind). Ideal wäre es, wenn ich die verwenden könnte.
Ja, die Umsetzung der M-Funktionen (und anderer) erfordert Änderungen im PLC-Programm.

Die "Krücke" mit H8000-H9999 kam mir als Idee nur, weil ich dafür nur die Eingänge der kleinen S5 parallel auf meinen Controller legen könnte, und der dann ab H8000 reagieren kann, ohne dass ich wissen müsste, wie man die Sinumerik selbst umprogrammiert. Wenn das Umprogrammieren nicht schwer ist, dann würde ich natürlich die Lösung direkt dort mit eigenen Ausgängen bevorzugen.
Verständlich. Kannst Du ausschliessen, dass die H-Funktionen > H8000 in der 810T zu unerwünschten NebenWirkungen führen?

Siehe oben. Ich war auch ziemlich ratlos, bis ich in den Teileprogrammen gesucht habe und glücklicherweise fündig wurde. Ansonsten hätte ich wohl den Vorbesitzer kontaktieren müssen.
Na ja, das Rätsel hast Du gelöst!

Ich habe einfach einen Drehzahlmesser an den Servo gehängt und dann begonnen, die Werte zu ändern und geschaut, was passierte. Da die S5 offenbar sehr langsam ist, konnte man schnell feststellen, dass nacheinander zwei Werte an den 8 Eingängen der S5 anlagen, wobei das letzte Byte sichtbar blieb. Darüber kam ich schnell drauf, dass das das Highbyte sein muss, weil die Anzeige nicht wirklich zu BCD passte. Bei H=255 blitzten alle acht LEDs kurz auf, bei H=256 blieb Bit 0 an, bei H=4096 wurde dual 12 dauerhaft angezeigt usw.
Das ist also definitiv eine 16-Bit-Dualzahl, bei der zuerst das Low-Byte und dann das High-Byte zur SPS rausgeschoben werden.
Also ein GedankenAustausch zwischen den beiden PLCs auf Ebene der Ein- und Ausgänge.

PS:
Habe ein wenig rumgesucht, aber bisher leider keine Bestätigung dafür gefunden, dass die 810 (GA1) die erweiterten Adressen (H01=xxxx, . . . ) beherrscht.
 
Musste früher mal mit der 810M GA1 kämpfen. Haben wir nur für Werkzeug-/Werkstück-MagazinSteuerungen eingesetzt.
SchnittStelle zwischen NC und PLC recht bescheiden. Befehlssatz der PLC sehr bescheiden.
Die BCD-in-DUAL-Wandlung für 4-stellige Zahlen dürfte schon recht anspruchsvoll für die PLC der 810T sein.
ProgrammSpeicher der PLC ebenfalls sehr bescheiden (max. ca. 2.000 Worte - ca. bedeutet, es war nie ein eindeutiges Maximum zu ermitteln).
Nur die Bausteine PB1 und PB2 oder FB1 und FB2 möglich - wenn mich die grauen Zellen nicht täuschen - und keine DBs.

Für mich sind das alles böhmische Dörfer - noch ;)

Ja, die 810 ist natürlich eine alte Steuerung (noch schön mit Grün-Monitor, aber noch sehr gut ablesbar). Andererseits reicht die für das, was wir hier produzieren (wollen) absolut aus. Die Programme sind kurz und wenn einmal geschrieben, werden sie wohl über Jahre nicht geändert werden. Soweit habe ich auch alle EPROMs gesichert und bin dabei, mir nach und nach Ersatzplatinen der Einschübe hinzulegen. Dank umfangreicher Schaltplandoku wäre es aber auch kein größeres Problem, bspw. ein LinuxCNC als Ersatz aufzuflanschen.

Da liegt ein Missverständnis vor: S für ("Haupt-")SpindelDrehzahl. WerkzeugRevolver mit angetriebenen Werkzeugen passt schon zu H-Fkt.

Ah, ok. Also ist das nicht besonders exotisch? Gut.

Ja, die Umsetzung der M-Funktionen (und anderer) erfordert Änderungen im PLC-Programm.

Das hatte ich befürchtet. Es ist wirklich eine Schande, diese ganzen Ein- und Ausgänge nicht zu nutzen. Die Maschine gab es auch mit vier schaltbaren Druckluftanschlüssen als Option. Diese sind zwar nicht eingebaut, aber die Ausgänge der I/O-Boards schalten. Das könnte ich also leicht nachrüsten.

Übrigens sind diese Siemens 6FX1124-6AA02 (meine hat zwei davon) schöne Boards mit 32 24V-Ausgängen und 64 24V-Eingängen mit Kurzschlussschutz etc. Die gibt es auch für sehr wenig Geld gebraucht. Ideal zum basteln :D.

Verständlich. Kannst Du ausschliessen, dass die H-Funktionen > H8000 in der 810T zu unerwünschten NebenWirkungen führen?

Nein, komplett ausschließen kann ich es nicht. Allerdings werden alle Werte von 0 bis 9999 auf die kleine S5 ausgegeben und auch übernommen. Nur der Servoantrieb steigt ab 8000/min mit Fehlermeldung aus und der Servo trudelt aus. Ab H10000 steigt die Sinumerik mit Fehlermeldung aus und es wird nichts mehr ausgegeben.

Ich denke, man kann also davon ausgehen, dass auf H00 nur die Servosollgeschwindigkeit ausgegeben wird. Es gibt auch keine Regelschleife in der S5 oder der NC. Die Endstufe überwacht das ausschließlich selbst.

PS:
Habe ein wenig rumgesucht, aber bisher leider keine Bestätigung dafür gefunden, dass die 810 (GA1) die erweiterten Adressen (H01=xxxx, . . . ) beherrscht.

In der Programmieranleitung steht im Kapitel 4, dass so Dinge wie M3=124 oder S2=1000 möglich sind.

Ob das also auch für H gilt? Ich kann das ja mal testen.

Zu H steht dort:
"Für Schaltfunktionen an der Maschine oder Bewegungen, die nicht der numerischen Kontrolle unterliegen, steht mit der Adresse H eine Hilfsfunktion je Satz zur Verfügung. H kann mit vier Dekaden programmiert werden. Die Bedeutung der Funktionen ist aus der Programmieranleitung des Werkzeugmaschinenherstellers zu ersehen."

Die vier Dekaden decken sich zumindest mit den Fehlermeldungen ab H10000.

Viele Grüße,
Chris
 
Zuletzt bearbeitet:
Zurück
Oben