# TwinCat Beckhoff-Soft-SPS (Update 27. juni)



## drfunfrock (9 März 2005)

Update
Ich habe als blutiger SPS-Anfänger (keine Vorkenntnisse) mit einer Beckhoff-Soft-SPS eine Produktionsanlage für elektronische Module von Grund auf neu programmiert und wegen guter Erfahrung mit dieser, will ich einmal meine Erfahrungen hier niederschreiben.

Die Anlage wurde vor etwa 4 Jahren auf Basis einer Montrac-Bahn aufgebaut. Am Anfang war es nur ein Ring mit etwa 10 Stationen. Seitdem wurde die Anlage immer wieder erweitert und nun hat die Anlage 40 Stationen mit 4 Paralellspuren.

Die Programmierung hielt nicht so ganz mit den Erweiterungen mit, so dass man getrosst von einem Chaos sprechen konnte. Den einzigen Vorwurf, den man dem verantwortlichen Ing. hätte machen können, war der dass er nicht gegenüber dem Management energisch genug auftrat. Nun er hatte dann das Unternehmen auch nach 4 Jahren verlassen, weil er die Überstunden satt hatte.

Als die nochmalige Erweiterung anstand, kapitulierten die beteiligten Techniker und nichts ging mehr. Diverse Stationen für die Widerstandstrimmung mit dem Laser standen ungenutzt herum. Den Vorschlag alles neu zu machen, wagten sie auch nicht. Zu gross war die Angst wieder am Ausgangspunkt zu landen. Da ich kein Urlaubsanspruch letztes Jahr hatte, versuchte ich in der Urlaubszeit mit den beiden zusammen einen simplen Moore-Automaten in ST für eine ungenutzte Station zusammenzubasteln. Es klappte, nur die Turnaroundzeiten für die Phoenix-SPS warten grausig (10min). 

Daraufhin informierte ich mich über diverse SPS und bin an Beckhoff hängengeblieben, weil 

- die Turnaroundzeiten unter 30s lagen
- eine Demoversion 15 Tage funktionfähig war, so dass wir einiges erproben konnten.
- Die Doku ist wirklich übersichtlich.
- Das Packet von Beckhoff war einfach zu ordern. Zusatzoptionen waren erstmal nicht notwendig.

Siemens fiel aus dem Raster, weil ich mit der Webseite meine Probleme hatte. Der Seitenaufbau war träge und es war nicht zu erkennen, was nun gekauft werden musste. Sagen wir es einmal so, es war meine Unkenntnis.

Nach 3 Tagen konnten wir uns entschliessen zum Chef zu laufen, um das Projekt zu starten. Schnell also PC mit TwinCat bestellt und warten. Da Beckhoff sich gerade erweiterte wurden daraus 3 Monate. Während dieser Zeit habe ich dann ins Blaue hinein programmiert, ohne eine Zeile an der Realität checken zu können. Im nachhinein war das nicht schlecht, da ich so Zeit hatte mehr über das Programmierkonzept nachzudenken. Als die SPS kam, hatten wir dann genau noch 8 Wochenenden Zeit, da in der Woche die Produktion mit der alten SPS lief. 

Wir haben die Anlage so organisiert, das zu jedem Wagen eine Art Rezept mitgeführt wird. Ein Pointer zeigt auf den aktuellen Prozess, der für die Produktion notwendig ist. Bietet eine Station diesen Prozess an, wird dieser ausgeführt. Die Eingangsstation hat einen Barkodeleser, der die Wagennummer liest. Dort werden dann auch die Wagendaten initialisiert. Da so ein Leser 2K Euro kostet und damit nur einer gekauft wurde, muss die Wagennummer im Programm für jede Station verwaltet werden. Das wurde über eine FIFO für jede Station realisiert. Das Problem hier ist, dass die Anlage gestoppt werden muss, wenn es hier Probleme mit Unter- oder Überlauf gibt. Diese geschahen schon deshalb, weil einige Stationen schlecht justiert waren.

Die Stationen arbeiteten unabhängig vom Wagenkode, so dass die Kommunikation über Messages gesteuert wird. Das hatte den Vorteil, dass die Stationen in einem Task liegen können, der eine Zykluszeit von nur 20ms hat, während der Wagenkode eine Zykluszeit von 50ms hatt. Die 50ms musste ich wählen, weil ansonsten die Ausgangssensorensensoren der Weichen nicht schnell genug gelesen worden wären. Ich hätte diese natürlich auch in einen Extra-Task packen können. 

Der Wagenkode war nicht trivial, weil ich im Programm immer die Wagennummer mitzuschleppen hatte. An den Weichen muss man in Abhängigkeit der Weichenstellung die Wagennummer an die nächste Station senden. Weichen werden benötigt, da Stationen gleicher Funktion parallel liegen, um die Kapazität zu erhöhen. Mittlerweile kann ich das auch so steuern, dass Stationen mit gleicher Funktion auch hintereinander liegen können. Die Steuerung erfolgt über die Prozesslisten. Das Programmierkonzept in ST ist für eine zyklusorientierte SPS recht heftig,  dafür aber übersichtlich und einfach zu erweitern. Der zu bezahlende Preis war der Grosse dafür notwendige PC.

TwinCAT war trotz diverser Fehler meinerseits unproblematisch. Die Konfiguration des Interbusses machte leichte Probleme, nachdem wir ein RS232-Modul entfernt hatten, aber ansonsten hat man sich in die Software sofort hineingefunden.  Das schöne an TwinCat ist, man kann viel probieren ohne sich in endlosen Konfigurationsdialogen zu verlieren.
Zudem kann man sich die Demoversion installieren und kann dort programmieren, um dann den Kode übers Netzwerk auf die SPS zu schicken. Es gibt also keine speziell zu bezahlende Entwicklungsumgebung. Nach 15 Tagen funktioniert auf dem eigenen PC nur die SPS nicht mehr. Der Compiler usw. läuft weiter.  Das gab uns die Sicherheit, dass wie auch mit einem def. PC keine Probleme bekommen, wie mit Phoenix. Wir verloren damals eine Phoenix-Entwicklerlizenz, weil der PC kaputt ging und die Lizenz an den PC gebunden war. 

Der einzige Wermutstropfen ist die ADS-Anbindung über TCP/IP an den PC für die Einstellung der SPS und der Kontrolle der Produktion. Es gibt willkürlich Verbindungsabbrüche, die vom VB-Programm abgefangen werden, die aber "Reste" in der SPS hinterlassen, so dass die Prozessorlast stetig steigt. Nach 2 Tagen benötigt die SPS einen Reboot.

Da dasselbe auch mit der Entwicklerumgebung passiert, ist das wohl ein grundsätzliches Problem von Beckhoff. Es hat sich aber schon gebessert. Für viele Anwendungen dürfte das ein KO-Kriterium sein. Schade eigentlich.

Ein weiteres Problem stellen die Montrac-Stationen dar, da die nur eine Sensor für die Wagendetektion haben. Wenn ein Operator Mist baut und den Wagen rückwärts schiebt, wird dieser 2 mal gezählt und der FIFO-Unterlauf ist absehbar. Ein ähnliches Problem ist die Justage dieser Sensoren, so dass unstabiles Verhalten von Sensoren zum FIFO-Unterlauf führen. 

Ich würde es so  nicht mehr machen wollen. Am besten jede Station hat einen RFID-Leser, so dass die FIFO-Verwaltung entfällt und die Anlagenstops unwahrscheinlicher werden. Nun ja, die Produktivität der Anlage wurde um 250% gesteigert und die Chefetage ist erstmal zufrieden.

ch habe das mit dem .NET-Interface von Beckhoff gemacht. die Gründe waren: 

 - VB ist hier akzepiert 
 - Das .NET-Interface hatte gute Schnittstellen, die die Entwicklung von eigenen Obekten ermöglichen. 
 - Hier haben wir eine Windowskultur und wer will den PC pflegen? 

 Das Problem war die Verbindung aufzubauen und zu halten. Wenn der PC zu stark belastet war, gab es einen Verbindungsabruch. Ich habe dann Threads genommen, damit erreichte ich weniger Timeouts. Es gibt allerdings auch noch andere Verbindungsabbrüche, deren Grund ich nicht ermitteln kann. Mein Programm baut die Verbindung sofort wieder auf, aber schön ist das nicht. Mit den neueren Version von TwinCat ist die Verbindung jetzt zuverlässig geworden. 

Doc Funfrock


----------



## Zottel (10 März 2005)

*Re: TwinCat Beckhoff-Soft-SPS*



			
				drfunfrock schrieb:
			
		

> ...
> Der einzige Wermutstropfen ist die ADS-Anbindung über TCP/IP an den PC für die Einstellung der SPS und der Kontrolle der Produktion. Es gibt willkürlich Verbindungsabbrüche, die vom VB-Programm abgefangen werden, die aber "Reste" in der SPS hinterlassen, so dass die Prozessorlast stetig steigt. Nach 2 Tagen benötigt die SPS einen Reboot.
> ...


Hmm... habe an ein paar BECKHOFF-Sachen laufen, aber nigendwo TwinCat. Den Rest deines Beitrags werde ich nochmal sorgfältig lesen und auch zu Bedenken gegen TwinCat Stellung nehmen.
Aber eine ADS-Anbindung habe ich, unter Linux, nun seit 80 Tagen ohne reboot laufen. In dieser Anwendung dient es nur zur Aufzeichnung einiger Temperaturen. BC9000 + einige Analoginputs mit Thermoeingang. Beckhoffs .DLL ist ja nur für Windows.  Beckhoff bechreibt in den Unterlagen ADS einigermaßen. Nach einigen Stunden Arbeit läßt es sich unter Linux implementieren. Ein paar Unklarheiten mit Versuch & Irrtum ausgemerzt (oder verschoben?). Funktioniert aber klaglos. 
Im Prinzip läuft das ununterbrochen seit fast 9 Monaten. Reboots waren nicht dem ADS geschuldet, sondern dasselbe Programm holt ca. 5 Datensätze/Sekunde von einer S7 und auf demselben Rechner läuft eine HMI-Oberfläche, die diverse Werte aus dem Prozeß zeigt. Aus Zeiten der Einführung hatte es sich einfach bei den Leuten eingebürgert, Crl-Alt-Del zu drücken, wenn sie den Eindruck hatten, daß die Anzeige nicht "wechselt". Das scheint sich jetzt zu legen.
Die SPS, die einen Reboot benötigt, ist in deinem Fall die Soft SPS mit TwinCat unter Windows?


----------



## drfunfrock (27 Juni 2005)

*Update.*

Im Posting oben habe ich noch den neuesten Stand eingearbeitet.


----------



## Zottel (28 Juni 2005)

*Re: Update.*



			
				drfunfrock schrieb:
			
		

> Im Posting oben habe ich noch den neuesten Stand eingearbeitet.


Ich hätte den neuesten Stand gerne in einem Folgeposting gelesen. Mir aus dem geänderten Text zusammenzureimen, was du wohl vor 3 Monaten geschrieben hast und was heute, mute ich mir lieber nicht zu.
Auch weil Beitrage hier und da zitiert werden, finde ich es nicht gut, alte Beiträge zu editieren. Einige Foren unterbinden das Editieren, wenn der Beitrag ein gewisses Alter erreicht.


----------



## drfunfrock (28 Juni 2005)

*Re: Update.*



			
				Zottel schrieb:
			
		

> drfunfrock schrieb:
> 
> 
> 
> ...



Das ist ein guter Einwand. Ich werde es denn nachholen.


----------



## tobias (30 Juni 2005)

Hallo
... wg. Linux '.dll'. 
Ich habe mit dem Wago 842 (TCP/IP Buscontroller) einige Zeit versucht - finde aber bisher nicht so ganz den richtigen Ansatz da mir die Modellpalette der einzelnen Baugruppen usw. ziemlich unbekannt ist und ich immer nur ausprobieren kann was ich grad so habe. das ist nicht unbedingt viel.

Um jedenfalls die Digitalausgänge 'umzulegen' (schalten) bzw. das Bitabbild einzulesen und auszuwerten fand ich für die x86 Architektur && Linux dazu eine Datei bei dilnetpc.com. Damit ist der Zugriff auf die Wago750 Busklemmenserie anscheinend möglich - zumindest klappte das ohne Änderungen bei meinem x386. Ich konnte auch mit einigen Tricksereien eine RS232 Baugruppe ansprechen - die ist allerdings von Beckhoff. 

Mehr weiss ich davon nicht - wenn Interesse besteht suche ich das mal raus, ist wohl 'open source'. Ich denke (???) der BC9000 ist fast baugleich dem Wago Dingens (abgesehen des BootP Servers der IP-Adressierung - gibt dort keine Dipschalters) . Ich komme aber mit den Dingern nicht weiter weil mir die Software noch fehlt und ich von mir zufällig aufgeflashte Programmfragmente von der Kiste nicht wieder runter bekomme. 
Gruss
tobias


----------



## drfunfrock (1 Juli 2005)

tobias schrieb:
			
		

> Hallo
> ... wg. Linux '.dll'.
> Um jedenfalls die Digitalausgänge 'umzulegen' (schalten) bzw. das Bitabbild einzulesen und auszuwerten fand ich für die x86 Architektur && Linux dazu eine Datei bei dilnetpc.com. Damit ist der Zugriff auf die Wago750 Busklemmenserie anscheinend möglich - zumindest klappte das ohne Änderungen bei meinem x386. Ich konnte auch mit einigen Tricksereien eine RS232 Baugruppe ansprechen - die ist allerdings von Beckhoff.
> 
> Mehr weiss ich davon nicht - wenn Interesse besteht suche ich das mal raus,



Das würde mich einmal interessieren. Suchst du das einmal heraus? Ich denek es funktioniert bei allen Devices, die mit ADS arbeiten 

Doc Funfrock


----------



## Kurt (1 Juli 2005)

Glaube:
die WAGO hat nur Modbus TCP/IP.

Der Beckhoff BK9000 Ethernet TCP/IP kann:
TwinCat ADS, ModbusTCP, Beckhoff RealTime.

Unter http://www.modbus.org/relatedlinks.htm gibt es etwas zu schmökern. 
Auch ein Sourceforge Projekt.
http://jamod.sourceforge.net/

kurt


----------



## tobias (1 Juli 2005)

@doc
Hallo
Dieser Link führt zur Übersicht :

http://www.ssv-embedded.de/ipc/support.htm
(Suchwort 'WAGO' im Browser)

Download der schon verwendeten sourcen direkt:
www.ssv-embedded.de/ftp/ssv/tools/linux/demos/wago_tcp_0.3.tgz
Das Ding funktioniert bei mir. Ich denke (bzw. versuchte) bisher allerdings auch nur 'dieses ModBus' Protokoll. Lt. Aussage Wago allerdings nicht die einzigste Möglichkeit. 

Wenn die Links nicht funktionieren musste Dich nochmal melden - ich hab' die Dinger auch hier.

gruss
tobias


----------

