S7? B&R? Beckhoff

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn eine größere Anlage z.B. mit S7-400 aus mehreren Anlagenteilen besteht, die - u.a. aus technologischen und kapazitätmäßigen Gründen von mehreren
Programmierern parallel programmiert werden sollen. Das ist nicht etwa selten anzutreffen. Wie macht man sowas mit Beckhoff. Da kann der
Programmierer 1 nicht mal schnell was runterspielen.

Nicht in der Codeerzeugung sondern in solch praktischen Fragestellungen unterscheiden sich die Systeme.

Wir haben bald ein Projekt welches aus 3 Teilanlagen besteht. Es soll aber nur eine Beckhoffgesamtsteuerung vorhanden sein.
Diese 3 Teilanlagen würde man mittels S7 ohne Probleme völlig unabhängig voneinander programmieren können und jederzeit
die veränderten FC/FB/DBs runterladen. Wie ich das gleiche Vorgehen mit Beckhoff machen soll, das hätte ich sehr gerne gewußt.

Das Problem habe ich bald real. Vielleicht hat ja doch noch jemand einen
Tip aus der Beckhoff-Praxis. Da wir 3 Programmierer sind will ich nicht
unbedingt im 3 Schichtsystem proggen.

Gruß
 
Bei Beckhoff gibt's keine FBs die von selbst starten.
Es wird eine strikte Trennung von Hard- und Software praktiziert.

Ich überwache bei EtherCAT zwei Dinge:
1. Ist die Anzahl der konfigurierten Slaves gleich der Anzahl der aktuell aktiven Slaves? Wenn nein => Diagnose-FB anstoßen (z.B. Klemmenstatus auf ungleich "OP" abfragen und weiteres veranlassen)
2. Sind die Prozessdaten (einer Slave-Gruppe) gültig. Falls nicht (der "WcState" ist =1) => Diagnose-FB anstoßen.
Der Master gibt zudem noch codierte Meldungen aus, die man zusätzlich auswerten kann.

Solche Diagnosefuktionalitäten sind in meinen Programmen in extra FBs eingebunden. Je nach verwendetem Feldbussystem werden andere FBs benutzt.
Damit bleibt die Software für verschiedenste Hardwareplattformen und feldbusunabhängig portierbar.

Danke!

Damit liegt die Diagnose beim Anwender.

Wenn das System diese Aufgabe schon erledigt, braucht in der Anwendersoftware nichts mehr angepasst werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Damit liegt die Diagnose beim Anwender.

Wenn das System diese Aufgabe schon erledigt, braucht in der Anwendersoftware nichts mehr angepasst werden.
Klar liegt die Diagnose beim Anwender. Wo ist das denn nicht so?
Schließlich muss man in der Steuerung auf eine Störung reagieren. Kann mir schlecht vorstellen, dass man die gesamte Fehlerreaktion dem System überlassen kann.

Im TwinCAT System Manager sieht man auch die Diagnosemeldungen und Fehlerbilder, teils grafisch aufbereitet (siehe meine Links in vorigen beiträgen). Reagieren muss man aber selbst.
 
Klar liegt die Diagnose beim Anwender. Wo ist das denn nicht so?
Schließlich muss man in der Steuerung auf eine Störung reagieren. Kann mir schlecht vorstellen, dass man die gesamte Fehlerreaktion dem System überlassen kann.

Im TwinCAT System Manager sieht man auch die Diagnosemeldungen und Fehlerbilder, teils grafisch aufbereitet (siehe meine Links in vorigen beiträgen). Reagieren muss man aber selbst.

Bei der S7 werden solche Ausfälle immer erkannt, ohne dass der Anwender etwas dafür machen muss. Wenn er nicht darauf reagiert, geht das System
in den sicheren Zustand (Stop).

Wenn der Anwender Maßnahmen zur Fehlerbeherschung (Fehler-OBs) vorgesehen hat werden diese ausgeführt.

Aus meiner Sicht:
Bei Beckhoff wird mehr zum Anwender verlagert. Wenn sich der Anwender solcher Probleme nicht bewusst ist, dann hat er eine Lücke.
 
Bei der S7 werden solche Ausfälle immer erkannt, ohne dass der Anwender etwas dafür machen muss. Wenn er nicht darauf reagiert, geht das System
in den sicheren Zustand (Stop).


Wenn der Anwender Maßnahmen zur Fehlerbeherschung (Fehler-OBs) vorgesehen hat werden diese ausgeführt.
Erkannt werden die Störungen bei Beckhoff genauso. Diagnose-Bits und -meldungen (codiert) werden automatisch ausgeworfen.
Es steht dann natürlich nicht im Klartext da "Slave 1 ausgefallen". Schließlich kann ein Operation-Mode ungleich "OP" eines EtherCAT-Slave auch gewollt sein, oder Slaves können abgekoppelt werden.
Wie soll das ein automatisch startender Diagnose-Baustein unterscheiden?
Ein automatisches Stoppen des Busses ist nicht immer sinnvoll.
TwinCAT startet aber den EtherCAT-Master neu, wenn es zu viele Kommunikationsfehler nacheinander gibt. Das ist soweit ich weiß die einzige automatische Reaktion auf Busfehler im EtherCAT.

Was passiert denn bei Siemens, wenn z. B. ein Profinet-Salve seinen "normalen" Status verlässt? Es startet ein Diagnose-OB (also adaptiert auf CoDeSys/Beckhoff eine Art Event-Task). Was macht der, was muss der Anwender machen?
Der Anwender muss dann doch auch Auf das Event reagieren und ggf. die Slaves auf Kommando neu starten oder so?
... ich sehe hier keinen großen Unterschied.

Aus meiner Sicht:
Bei Beckhoff wird mehr zum Anwender verlagert. Wenn sich der Anwender solcher Probleme nicht bewusst ist, dann hat er eine Lücke.
Die Systeme Beckhoff und Siemens sind nicht einmal direkt vergleichbar. BEckhoff bietet die strikte Trennung von Hard- und Software. Sowas wie automatisch startende OBs gibts da nicht.
Der Anwender kann selbst entscheiden, was er tun will. Das sollte der Anwender natürlich wissen. Und im allgemeinen ist das auch so.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Klar liegt die Diagnose beim Anwender. Wo ist das denn nicht so?
Wenn ich es richtig verstanden haben:

Beckhoff:
Diagnose nur wenn es programmiert ist im Anwenderprogramm.
Ausnahme: Ethercat-Fehler werden genau erkannt und mit Diagnosetool angezeigt.

Siemens:
Diagnose mit STEP7, ohne das etwas im Anwenderprogramm vorbereitet werden muss.
Dazu den mögligheit das im Anwenderprogram das Hardware-Fehler ausgewertet werden und eventuell angezeigt (Fehler-OBs und/oder FC135).
Dazu den mögligheit das alle Diagnoseinformationen automatisch auf den HMI angezeigt werden (Report System Error).

Oder ist das Falsch ?
 
Wenn ich es richtig verstanden haben:

Beckhoff:
Diagnose nur wenn es programmiert ist im Anwenderprogramm.
Ausnahme: Ethercat-Fehler werden genau erkannt und mit Diagnosetool angezeigt.
Nein, die Diagnosemeldungen werden vom EtherCAT-Master schon automatisch bereitgestellt (Logger, Online-Anzeigen, Diag-Bits und coderierte Diag-Meldungen) und werden im "System Manager" angezeigt. Die Diagnose an sich muss nicht extra im Anwenderprogramm programmiert werden.

Zur Fehlerbehandlung kann entweder im System Manager per Button rumgeklickt werden oder im SPS-Programm werden die Prozessdaten vom Master (so ähnlich wie Status-Wörter) eingebunden und ausgewertet.
Mit diesen Diag-Meldungen kann der Anwender machen was er will, z.B. für jeden Slave oder eine Gruppe von Slaves und/oder für den Master eine anwenderspezifische Diagnose-Aktion programmieren. Dazu gibt es die ganzen FBs.
Siemens:
Diagnose mit STEP7, ohne das etwas im Anwenderprogramm vorbereitet werden muss.
Dazu den mögligheit das im Anwenderprogram das Hardware-Fehler ausgewertet werden und eventuell angezeigt (Fehler-OBs und/oder FC135).
Ist bei Siemens dann doch ähnlich wie bie Beckhoff :confused:
 
Also, bei Beckhoff System Manager werden alle die Hardware Diagnose meldungen im Klartext angezeigt. Nicht nur Ethercat Störungen, aber auch Modul-Fehler und CPU-Fehler ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, bei Beckhoff System Manager werden alle die Hardware Diagnose meldungen im Klartext angezeigt. Nicht nur Ethercat Störungen, aber auch Modul-Fehler und CPU-Fehler ?
Im System Manager wird alles angezeigt. Beachte: Es gibt bei Beckhoff die Trennung zwischen System/Hardware (System Manager) und Programmierung (PLC Control).

CPU-Fehler in dem Sinne wie bei Siemens gibt's nicht. Entweder das System läuft (dann ist die Auslastung zu sehen), oder die Laufzeitsysteme sind gestoppt:
http://infosys.beckhoff.com/index.p...er/basics/tcsysmgr_onlineviewtask.htm&id=9956

Für jedes Ereignis (z.B. Stopp der Laufzeitsysteme, Watchdogs der Prozessabbilder, Feldbusfehler usw.) gibt's eine Meldung im Logger im Klartext:
http://infosys.beckhoff.com/index.p...anager/basics/tcsysmgr_logviewwnd.htm&id=9930

Die Diagnose-Prozessabbilder kann man sich auch ansehen und ggf. in die Steuerung verknüpfen zur Auswertung und Reaktion:
http://infosys.beckhoff.com/index.p...manager/basics/tcsysmgr_watchlist.htm&id=9929

Speziell für EtherCAT:
http://infosys.beckhoff.com/index.p...hercat/html/ethercat_diagnostics.htm&id=10096 (diese Info-Daten in der Baumanzeige können in die SPS verknüpft werden)
http://infosys.beckhoff.com/index.p...hercat/html/ethercat_topologydlg.htm&id=10100
http://infosys.beckhoff.com/index.p.../ethercat/html/ectopology_online.htm&id=11436
(der Topology-Dialog kann sogar als ActiveX-Element in eine Visu eingebettet werden)
Zusätzlich hat jeder Slave noch die Infodaten "WcState" (Prozessdaten gültig?) und "State" (OP-Mode, Verbindungsstatus, usw.), die auch in die SPS verknüpft werden können.

... jetzt verstanden?
 
Zuletzt bearbeitet:
Das Problem habe ich bald real. Vielleicht hat ja doch noch jemand einen
Tip aus der Beckhoff-Praxis. Da wir 3 Programmierer sind will ich nicht
unbedingt im 3 Schichtsystem proggen.

Gruß

Erstens: nein man kann nicht von verschiedenen Entwicklungspcs aus an der gleichen Steuerung arbeiten und der eine schiebt mal den einen Code runter, der andere einen anderen und die Steuerung läuft dabei munter weiter. Ist mir sowieso ein Rätsel, wie man dabei ablauffähigen Code erhalten will. Was macht man denn bei Siemens wenn man eine Aufrufschnittstelle ändern will, die auch von einem anderen verwendet wird?
Mit Beckhoff hat man dafür eine leistungsstarke Simulation, so dass man seine Codeänderungen nicht unbedingt auf der Steuerung testen muss.
Man kann auch eine Quellcodeverwaltung anbinden um die Quellen der 3 Entwickler auf vernünftige Weise konsistent zueinander zu halten. Wenn dann alle einen gemeinsamen Stand gefunden haben, spielt man die Sachen zusammen und testet dann das Gesamtsystem.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Werner.
Es ist ein Funktionalität das es gibt bei Siemens. Warum glaubst du das es nicht Funktioniert ? Dann hatten wir ja sicher davon gehört.

Ich bin der Meinung, das Beckhoff ist super geeignet für Maschinen und bis mittelgrosse Processanlagen.
Aber Beckhoff ist nicht geeignet für grosse bis sehr grosse Processanlagen.

Es fehlt einfach Sachen wie Configuration in Run, CPU-Redundanz, Netzwerk-Redundanz, i/o-Redundanz, eine integrierte HMI/SCADA System, und das gleichzeitige abeiten auf denselbe Projekt von mehrere Programmierer.

Mit Beckhoff hat man dafür eine leistungsstarke Simulation, so dass man seine Codeänderungen nicht unbedingt auf der Steuerung testen muss.
Hat Siemens auch. Aber es ist nicht das Thema.

Man kann auch eine Quellcodeverwaltung anbinden um die Quellen der 3 Entwickler auf vernünftige Weise konsistent zueinander zu halten. Wenn dann alle einen gemeinsamen Stand gefunden haben, spielt man die Sachen zusammen und testet dann das Gesamtsystem.
Es lautet als ob die Programmierer ein gemeinsame Framework verwenden, und nicht auf denselbe Projekt arbeiten. Aber vielleicht kann es dafür verwendet werden ?
 
Es lautet als ob die Programmierer ein gemeinsame Framework verwenden, und nicht auf denselbe Projekt arbeiten. Aber vielleicht kann es dafür verwendet werden ?
Werner meint die Nutzung einer Quellcodeverwaltung über das "Engineering Interface" (ENI), glaube ich. Man bindet das PLC-Projekt in eine Quellcodeverwaltung mit MS SourceSafe oder Subversion ein. Dann könne die Programmierer einzelne Teile oder das gesamte Projekt "auschecken". Andere Programmierer können den ausgecheckten Teil nicht bearbeiten. Ist der Programmierer fertig, wird der Teil wieder eingecheckt und ggf. mit bestehenden Teilen zusammengefügt.
Aber trotzdem kann nur einer auf dem Zielsystem online arbeiten und es kann nur ein Projekt aus einer Quellcodedatei auf die PLC geladen werden (es können nicht Teilnehmern A und B jeweils verschiedene Teile, z. B. FBs, separat laden)
Ich bin der Meinung, das Beckhoff ist super geeignet für Maschinen und bis mittelgrosse Processanlagen.
Aber Beckhoff ist nicht geeignet für grosse bis sehr grosse Processanlagen.

Es fehlt einfach Sachen wie Configuration in Run, CPU-Redundanz, Netzwerk-Redundanz, i/o-Redundanz, eine integrierte HMI/SCADA System, und das gleichzeitige abeiten auf denselbe Projekt von mehrere Programmierer.
Da geb ich dir recht. Aber wenn man mal in die Produktpalette schaut, sieht man, dass Beckhoff anscheinend nicht den Anspruch verfolgt, ein durchgängiges Konzept für die Prozessindustrie anzubieten. Dazu fehlen Entscheidende Komponentenm, wie du schon richtig angemekrt hast.
Ich finde Beckhoff klasse. Jedenfalls für Maschinensteuerungen. Was die da technologisch anbieten (TwinCAT, EtherCAT, "XfC") und strategisch hinsichtlich Offenheit verfolgen (Softwareanbindung mit "ADS"), da haben die meisten Mitbewerber das nachsehen.
 
Zuletzt bearbeitet:
Werner.
Es ist ein Funktionalität das es gibt bei Siemens. Warum glaubst du das es nicht Funktioniert ?
Ich kenne Siemens nicht. Ich frage mich nur wie man das vernünftig einsetzt.
und das gleichzeitige abeiten auf denselbe Projekt von mehrere Programmierer.
Kommt diese Anforderung aus der Prozessindustrie? Wie macht man das denn einigermassen sicher? Wenn Entwickler A einen Baustein X ändert und B auch, was passiert denn dann?
Entwickler A editiert Baustein X. Entwickler B editiert Baustein Y.
X ruft Y auf. Wie soll das funktionieren, das beide unabhängig voneinander geändert werden?
Wie bekommt man denn den Aufruf in X und die Definition in Y wieder zusammen? Gibt das nicht ständig Laufzeitfehler?
Ich behaupte nicht, dass es nicht geht, ich weiss nur nicht wie.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie macht man das denn einigermassen sicher? Wenn Entwickler A einen Baustein X ändert und B auch, was passiert denn dann?
Entwickler A editiert Baustein X. Entwickler B editiert Baustein Y.
X ruft Y auf. Wie soll das funktionieren, das beide unabhängig voneinander geändert werden?
Wie bekommt man denn den Aufruf in X und die Definition in Y wieder zusammen? Gibt das nicht ständig Laufzeitfehler?
Ich behaupte nicht, dass es nicht geht, ich weiss nur nicht wie.

Es gibt einige Varianten des PARALLELARBEITENS:

1. Zwei Programmierer OHNE lokales Projekt + 1 Server mit aktivem Projekt
Beide arbeiten zur selben Zeit mit dem Projekt sind aber jeder für sich an der
SPS angebunden. Der erste der einen Baustein oder die Hardwarekonfig öffnet kann
editieren der zweite nur geschützt öffen.
D.H. man kann sich nicht gegenseitig überschreiben.
[D.h. für viele unbekannt ist jede S7 Installation eine Datenserver und
ermöglicht das Zugreifen von Ausserhalb]


2. Ein Programmierer OHNE lokales Projekt + 1 Programmierer mit STEP7 und MIT Projekt. STEP7 dient als Server
Erster Programmierer verbindet sich auf den Zweiten. Resultat wie oben


3. Zwei Programmierer MIT jeweils lokales Projekt - KEINE Server
Jeder hat am Morgen z.B. exakt den selben Programmstand auf seinem PG
über den Tag hinweig arbeitet er in seinen Bereichen. Abends werden die
Änderungen wieder (geordnet) zusammengeschmissen. Es ist bei dieser
Variante klar, dass nur einer Änderungen an der HW machen sollte.
Allerdings falls zufälligerweise wirklich beide mal den gleichen FC ONLINE
beobachten wollen wird der Zeite abgewiesen.

Das sind bei vielen Firmen die ich kenne völlig normale Vorgehensweisen
allerdings meißt die Variante 3.

Ich möchte das eigentlich nicht mehr missen.

Gruß

Frank
 
Zuletzt bearbeitet:
@IBFS

danke fürs Erklären. Ich habe auch immer nur von Variante 3 gehört, und mir kommt das irgendwie abartig unsicher vor.
Variante 1 und 2 könnte ich mir vorstellen, aber alle Varianten setzen doch einen sehr begrenzte Anzahl von Entwicklern voraus. Also eine Entwicklungsabteilung mit 10 Leuten kann doch so nicht mehr arbeiten, oder täusche ich mich?

Gruss, Bernhard
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@IBFS

danke fürs Erklären. Ich habe auch immer nur von Variante 3 gehört, und mir kommt das irgendwie abartig unsicher vor.
Variante 1 und 2 könnte ich mir vorstellen, aber alle Varianten setzen doch einen sehr begrenzte Anzahl von Entwicklern voraus. Also eine Entwicklungsabteilung mit 10 Leuten kann doch so nicht mehr arbeiten, oder täusche ich mich?
Gruss, Bernhard

Planloses Losprogrammieren geht natürlich nicht, aber das sollte man
ja auch nicht an einer Einzelmaschine machen. Also Disziplin ist
Voraussetzung aber es geht wenigstens. Und - wie ich schon sagte - sind
manche Projekte nur mit solchen Methoden durchzuziehen. Da hat SIEMENS
als sie 199x mit S7 begonnen haben schon sehr weit gedacht. Aber
solche Wünsche waren anscheinend damals schon vorhanden sonst
würde man solche Funktionalitäten nicht in ein System integrieren.

Gruß, Frank
 
Ich habe immer gerne mit anderen Programmierern gleichzeitig am selben Projekt gearbeitet, da hat
man wenigstens mal einen verständigen Diskussionspartner, wenn man Lösungsvarianten abwägen will.
Auch zwingt einen eine solche Zusammenarbeit mehr zu einem Top-Down-Entwurf des Programms und
man schreibt automatisch bessere Programm-Kommentare (kann ja gleich am nächsten Tag jemand lesen).
Wir waren immer maximal 3 Programmierer auf der selben CPU, 10 Leute waren nie nötig. Bei ganz
großen Projekten gab es immer mehrere CPUs, auf die sich die Programmierer verteilt haben.

Natürlich ist hauptsächlich Disziplin der beteiligten Programmierer und ein Plan nötig.
(Solch große Projekte beginnt man sowieso nicht ohne Struktur und ohne Plan.)

Wenn die Programmierer sich vernünftig vorher absprechen und abgrenzen, wer welchen Anlagenteil
programmiert und die zu verwendenden Ressourcen (Merker, Timer, DB-Nummern, FB/FC-Nummern)
aufteilen, dann kommen die sich sehr selten in die Quere.
Die Hardware-Konfig macht am besten nur ein Programmierer (muß ohnehin selten geändert werden)
und der OB1 wird am besten nur einmal am Tag geändert (z.B. Bausteinaufrufe zufügen).

Auch als Einzel-Programmierer sollte man sich vor größeren Projekten Gedanken machen und nicht
wahllos Merker und Bausteinnummern belegen.

Alles andere hat Frank schon in #55 und #58 erklärt.

Gruß
Harald
 
Zuletzt bearbeitet:
Warum ist das bei Siemens alles so kompliziert? Bei Beckhoff keine DB's, VATs, Merkerbereiche und diese ganze andere Mist.
Gerade bei der Teamarbeit wird deutlich, wie genial eigentlich das Konzept der Datenbausteine ist.
Werden mehr Variablen benötigt, dann wird einfach ein DB vergrößert oder ein neuer DB angelegt und
man hat garantiert noch nicht verwendeten Variablenspeicher zur Verfügung. Die Adressen anderer
Variablen werden dabei nicht verändert.

Gruß
Harald
 
Zurück
Oben