# Wozu Merker in IEC 61131 (z.B. CoDeSys oder Multiprog)



## chstad (20 Januar 2007)

Hallo zusammen,

ich arbeite gerade am Umstieg von Siemens in die IEC Welt mit CoDeSys und Multiprog.
Was ich bisher noch nicht genau herausgefunden habe ist, wozu benötige ich bei der IEC noch Merker?!?


----------



## zotos (20 Januar 2007)

chstad schrieb:


> Hallo zusammen,
> 
> ich arbeite gerade am Umstieg von Siemens in die IEC Welt mit CoDeSys und Multiprog.
> Was ich bisher noch nicht genau herausgefunden habe ist, wozu benötige ich bei der IEC noch Merker?!?



Also die IEC61131 ist ja eine Norm und diese Norm sieht eben Merker vor. Daher wurden diese auch in CoDeSys realisiert.

Warum man diese nun im allgemeinen benötigt weis ich nicht. Bei uns werden sie als Freigrabebedingung eingesetzt da auf Grund der Adresse (via BITADR) eine eindeutige Nummer ermittelt werden kann. Das hätten wir aber auch anders lösen können.

Also meiner Meinung nach braucht man keine Merker.

Warum braucht man diese eigentlich noch bei Siemens? Und warum muss man die Bausteine durchnummerieren?


----------



## Rayk (20 Januar 2007)

Wenn ich mit einem HMI-Gerät auf eine Steuerung, welche mit CoDeSys programmiert wurde, zugreifen möchte benötige ich ja Merker bzw. Datenbausteine als Kommunikatonsvariablen in der Steuerung.


----------



## zotos (20 Januar 2007)

Rayk schrieb:


> Wenn ich mit einem HMI-Gerät auf eine Steuerung, welche mit CoDeSys programmiert wurde, zugreifen möchte benötige ich ja Merker bzw. Datenbausteine als Kommunikatonsvariablen in der Steuerung.



Hmm... kann sein bei welcher Visu denn? 
Wir benutzen nur OPC und da greife ich auf die Variablen von CoDeSys zu brauchen keine Merker. Und die 3s eigene Visu greift auch auf die Variablen zu.


----------



## zotos (20 Januar 2007)

Was ist den ein Datenbaustein? Ich kenne bei CoDeSys) nur Datentypen und deren Instanzen.


----------



## Rayk (20 Januar 2007)

Ich hatte mal ein Projekt für eine S5-95U welches nach IEC 1131 mit CoDeSys programmiert wurde (der Kunde wolllte es so). An dieser CPU war ein OP7 angeschlossen. Da benötigte ich Merker bzw. Datenbausteine... Habe aber mit CoDeSys lange nix mehr für Siemens CPU's gemacht.
Gruß


----------



## zotos (20 Januar 2007)

Rayk schrieb:


> Ich hatte mal ein Projekt für eine S5-95U welches nach IEC 1131 mit CoDeSys programmiert wurde (der Kunde wolllte es so). An dieser CPU war ein OP7 angeschlossen. Da benötigte ich Merker bzw. Datenbausteine... Habe aber mit CoDeSys lange nix mehr für Siemens CPU's gemacht.
> Gruß



Danke für die Erklärung.


----------



## UniMog (20 Januar 2007)

Ich hab auch mal eine "dumme" Frage.
Kann man eigentlich mit CoDeSys ein Programm aus der CPU laden ???
Die alten Versionen die ich kenne konnten immer nur in die CPU laden.

Gruß


----------



## zotos (20 Januar 2007)

UniMog schrieb:


> Ich hab auch mal eine "dumme" Frage.
> Kann man eigentlich mit CoDeSys ein Programm aus der CPU laden ???
> Die alten Versionen die ich kenne konnten immer nur in die CPU laden.
> 
> Gruß




Das ist keine dumme Frage. 
Also CoDeSys erzeugt ja nativen Machinencode also ein Compiler. 
Sprich ohne den passenden Quellcode ist man aufgeschmissen.


----------



## MSB (20 Januar 2007)

... was der mit Abstand größte Nachteil dieser IEC Geschichte ist.


----------



## winny-sps (20 Januar 2007)

> Was ist den ein Datenbaustein? Ich kenne bei CoDeSys) nur Datentypen und deren Instanzen.



Hallo Zotos,

wir realisieren Datenbausteine in TwinCAT als Struct die dann einer Globalen Variable zugeordnet werden.


----------



## zotos (20 Januar 2007)

MSB schrieb:


> ... was der mit Abstand größte Nachteil dieser IEC Geschichte ist.



Das ist doch eine Sache der Entwicklungsumgebung und nicht der IEC.

Ich finde es auch nicht schlimm. Wenn Du ein PC Programm kompilierst ist es ja auch Maschinencode und ohne Quellcode geht bei VB, C/C++, Delphi, usw. auch nichts. 
Man kann ja auch bei vielen Visu systemen nicht das Projekt aus dem Panel ziehen.
Und jetzt komm mir keiner und sag er will eine Änderung an einer Maschine machen wo er den Quellcode nicht dafür hat... was macht hier eigentlich wenn die CPU das Programm verliert weil sie z.B. "Abraucht" ?


----------



## zotos (20 Januar 2007)

winny-sps schrieb:


> Hallo Zotos,
> 
> wir realisieren Datenbausteine in TwinCAT als Struct die dann einer Globalen Variable zugeordnet werden.



Ja das kenne ich es heisst eben nicht DB ;O)


----------



## MSB (20 Januar 2007)

Doch genau das, Änderungen an der Steuerung ohne Quellcode.
Ich mache auch verhältnismäßig viele Reperaturen bei Kunden, die
KEINEN Quellcode mitgeliefert bekommen haben, von diversen Herstellern
in diversen Branchen.

OK, es geht in dem Fall meistens nur um Störungssuche,
aber ich kann mir dann zumindest den Programmcode laden,
und auf Fehlersuche gehen.
Bei den gängigen IEC IDE's habe ich beim auslesen dann nur einen
haufen wirren Code.

Bei den anderen dann zumindest eine Chance wieder was zum laufen zu bringen.


Das ganze oben ist bei größeren Firmen sicher kein Thema, aber bei vielen kleineren ohne "Steuerungsabteilung" sehr wohl.


----------



## zotos (20 Januar 2007)

Also die Kunden begeben sich dann aber auf sehr, sehr dünnes Eis.
  Das ist so als würde man einen vorinstallierten PC kaufen ohne die Installations-CDs oder zumindest eine Recovery CD mit zu bekommen.
 Also das ist ja nun wirklich abenteuerlich.
 Ich habe ja früher in einer Firma gearbeitet wo wir den Quellcode (C-Programme) auch nicht mit der Maschine raus gegeben haben  aber wir haben dem Kunden wenigstens CDs gegeben mit denen er nach einem Festplatten-crash etc die Maschine wieder zum laufen bekommen hat. 

 Ob ich dem Kunden keine andere Wahl lasse als bei mir nachzufragen wenn die Maschine stehe oder ihn mit einem guten Notfallplan ausstatte. Beides sind Formen der Kundenbindung.


----------



## zotos (20 Januar 2007)

Was spricht eigentlich dagegen den Hersteller anzurufen und nach dem Quellcode zu fragen?


----------



## MSB (20 Januar 2007)

a) Das passiert aus prinzip am Sonntag abend ...
b) Die rücken den Quellcode meist nicht raus
, von manchen bekommt man dann auch die Antwort:
"Den haben wir damals mitgeliefert, wir haben den nicht mehr"
c) manchmal gibt es den Hersteller einfach nicht mehr
d) Zeitmangel, es pressiert ja dann meistens


----------



## zotos (20 Januar 2007)

MSB schrieb:


> a) Das passiert aus prinzip am Sonntag abend ...
> b) Die rücken den Quellcode meist nicht raus
> c) manchmal gibt es den Hersteller einfach nicht mehr
> d) Zeitmangel, es pressiert ja dann meistens



Ist Punkt b) Erfahrung oder Schätzung. Also bei uns ist der Kunde immer noch König.


----------



## MSB (20 Januar 2007)

Ich hatte schon einige Sachen, da war Punkt b Erfahrung,
das ist natürlich nicht grundsätzlich so.

Ich erhielt auch schon solche Antworten:
"Den haben wir damals mitgeliefert, wir haben den nicht mehr"


----------



## zotos (20 Januar 2007)

MSB schrieb:


> Ich hatte schon einige Sachen, da war Punkt b Erfahrung,
> das ist natürlich nicht grundsätzlich so.
> 
> Ich erhielt auch schon solche Antworten:
> "Den haben wir damals mitgeliefert, wir haben den nicht mehr"



Das Zitat ist der Hammer. Bei so einer Firma würde ich nichts mehr kaufen.
Wo findet man den heute noch Kunden die sowas mit sich machen lassen?


----------



## UniMog (20 Januar 2007)

Kann man eigentlich den Quellcode mit dem Inhalt der SPS unter CoDeSys vergleichen ????
Gibt es dort ähnlich der Step7 Software so eine Funktion.???
Ich hatte früher mit dieser ProSys (CoDeSys) so komische Erlebnisse wie zB. das Programm beobachten ohne das ich den neusten Stand in die CPU laden mußte.

@MSB 

Die Ausreden kenne ich auch "Das Programm" haben wir nicht mehr.
Was auch toll ist wenn man dann was bekommt ist es meistens nicht der letzte Stand.


----------



## zotos (20 Januar 2007)

UniMog schrieb:


> Kann man eigentlich den Quellcode mit dem Inhalt der SPS unter CoDeSys vergleichen ????
> Gibt es dort ähnlich der Step7 Software so eine Funktion.???
> Ich hatte früher mit dieser ProSys (CoDeSys) so komische Erlebnisse wie zB. das Programm beobachten ohne das ich den neusten Stand in die CPU laden mußte.
> 
> ...



Man kann zwei verschiedene Quellcode Dateien miteinander Vergleichen. Der online/offline vergleich gibt nur eine qualitative rückmeldung gleich oder ungleich. Zwei offline Dateien kann man auf einzellene Unterschiede hin untersuchen. Wie gesagt es ist eben Maschienencode auf der Steuerung.

Das mit dem Vergleich online/offline geht auch nur dann wirklich gut wenn man die Datei nach dem erzeugen des Bootprojektes speichert.


----------



## Kurt (20 Januar 2007)

UniMog schrieb:


> Ich hab auch mal eine "dumme" Frage.
> Kann man eigentlich mit CoDeSys ein Programm aus der CPU laden ???
> Die alten Versionen die ich kenne konnten immer nur in die CPU laden.


Bei Codesys kann man, genug Speicher im Zielsystem/Steuerung vorrausgesetzt, 
den Quellcode in die Steuerung laden, besser gesagt, hinterlegen.

Arbeitsbereich-> Sourcedownload...
und Online->Datei in/aus Steuerung laden/schreiben gibt es auch noch.

kurt


----------



## UniMog (20 Januar 2007)

Kurt schrieb:


> Bei Codesys kann man, genug Speicher im Zielsystem/Steuerung vorrausgesetzt,
> den Quellcode in die Steuerung laden, besser gesagt, hinterlegen.
> 
> Arbeitsbereich-> Sourcedownload...
> ...


 
Aha ähnlich wie Step7 wenn man eine große MMC hat.
Ich habe mir jetzt mal Unterlagen bestell über CoDeSys.
Hoffe das ich diesmal mehr am Ball bleibe wie damals aber wie gesagt wenn man nur Kollegen hat die auf Step7 schwören und keiner da ist mit dem man sich austauschen kann ist das nicht immer einfach.
Hoffe das ich auch mal ein paar Kunden von Steuerungen überzeugen kann die man mit CoDeSys programmiert.
Ohne echten Anwendungsfall verliert man schnell die Lust wieder.

Gruß und schönes WE


----------



## gravieren (20 Januar 2007)

Hi

Datensicherung CoDeSys:

Z.b. bei Wago  750-851.

Browser starten,   z.b.  ftp:192.168.1.1   
Alle 3 Ordner inklusive den dazugehörigen Dateien auf Rechner kopieren.

Bei Crash einfach alle Ordner und Dateien auf einen neuen Controller über 
einen Browser zurückkopieren.


----------



## chstad (21 Januar 2007)

zotos schrieb:


> Was ist den ein Datenbaustein? Ich kenne bei CoDeSys) nur Datentypen und deren Instanzen.


 

Ein Datenbaustein bei Siemens ist, wenn man diesen mal als AWL Quelle betrachtet, nichts anderes als ein Daten - STRUCT.


----------



## Fx64 (21 Januar 2007)

UniMog schrieb:


> Aha ähnlich wie Step7 wenn man eine große MMC hat.
> Ich habe mir jetzt mal Unterlagen bestell über CoDeSys.
> Hoffe das ich diesmal mehr am Ball bleibe wie damals aber wie gesagt wenn man nur Kollegen hat die auf Step7 schwören und keiner da ist mit dem man sich austauschen kann ist das nicht immer einfach.
> Hoffe das ich auch mal ein paar Kunden von Steuerungen überzeugen kann die man mit CoDeSys programmiert.
> ...



Du kannst auch eine 30 Tage TwinCAT Demo von der Beckhoff Page laden, zum Kennenlernen.

Viele Grüsse


----------



## Werner29 (22 Januar 2007)

*Wozu Merker?*

Hallo allerseits,

ich beziehe mich mal auf den ursprünglichen Thread-Titel. Es gibt zwei Anwendungsfälle für Merker:

1. der Datenaustausch zu anderen Programmen, da ist es manchmal praktisch mit Adressen zu arbeiten.

2. es gibt in der IEC kein UNION-Konstrukt wie in C oder so. Mit Merkern kann man das nachbilden. Allerdings würde ich dazu lieber Pointer nehmen. Die gibt es zwar in der IEC nicht, aber in CoDeSys.

zum Thema Sourceupload:
Ich verstehe schon dass man sich an so ein Feature gewöhnt, aber CoDeSys kann das technisch bedingt einfach nicht bieten, wie zotos schon richtig angemerkt hat. 
Es gibt ja überhaupt nur zwei Möglichkeiten das zu realisieren:
1. man lädt den Quellcode mit auf die Steuerung, das geht auch bei CoDeSys, erfordert aber erstens Speicher und zweitens Disziplin (bzw. guten Willen).
2. man editiert direkt den Assembler oder den Interpretercode, der von der Steuerung verarbeitet wird. Dabei nimmt man entweder in Kauf in einer unpraktischen Programmiersprache zu arbeiten, oder die Abarbeitung ist sehr langsam. 

Bei einem C-Programm erwartet niemand, dass man es ohne Quellcode bearbeiten kann. Tatsächlich kommt das auch vor, das der Quellcode nicht mehr vorhanden ist, aber es ist dann eben eine ziemliche Schlamperei.

Bernhard


----------



## MarkusP (26 Januar 2007)

chstad schrieb:


> Hallo zusammen,
> 
> ich arbeite gerade am Umstieg von Siemens in die IEC Welt mit CoDeSys und Multiprog.
> Was ich bisher noch nicht genau herausgefunden habe ist, wozu benötige ich bei der IEC noch Merker?!?


 

Hallo,

wir benötigen %M bzw. %MW z.B. immer noch, wenn ein Bediengerät über MODBUS oder MODBUS-TCPIP auf die Steuerung zugreifen muss.
Damit sind wir zu fast allen PANEL-Herstellern kompatibel.

Liebe Grüße


----------



## BFlat (14 Juni 2011)

*dumme Frage*

mit dieser "dummen Frage" sind wir auf den Kern des Problems gestossen.

Eigentlich bräuchte man garkeine SPS Sprachen.
Man könnte Alles ganz einfach in einer der gerade opportunen Hochsprachen programmieren, Schaltschranktür zu und nie wieder auf....

Was geschieht, wenn die Anlage irgendwo in Amazonien aufgestellt wird, dort zehn Jahre brav produziert und nun will man schnell 'mal ein neues Förderband anschließen?

Die Programmierer haben längst Karriere gemacht, der outgesourcte Steuerungsbau wurde von einem Investor in irgendeine kompetenzlose Hochglanzbude verwandelt, der Vertrieb des Anlagenbauers schickt Hochglanzprospekte der aktuellen Anlagen: Germany bye bye.

Bei einer "echten" SPS kann man nun eine Programmiersoftware kaufen und das Programm aus der Steuerung HOCHLADEN. Die Ein- Ausgänge werden aus dem SCHALTPLAN nachkommentiert, es tauchen freie E-A Adressen auf. Je nach Fleiß kann man die Funktion der Zeitgeber in der Sprache Amazoniens (portugiesisch) nachkommentieren und schließlich auch die Funktion einiger, durch den Upload namenlos gewordener Merker bezeichnen, und bald schon beginnt das Förderband koordiniert die Anlage zu beschicken.

DAFÜR gibt es SPS Sprachen!
Dafür sind auch die "physikalischen" Merkeradressen sinnvoll




BFlat


----------



## Ludewig (14 Juni 2011)

Totaler Unsinn!


----------



## bugatti66 (16 Juni 2011)

BFlat schrieb:


> mit dieser "dummen Frage" sind wir auf den Kern des Problems gestossen.
> 
> Eigentlich bräuchte man garkeine SPS Sprachen.
> Man könnte Alles ganz einfach in einer der gerade opportunen Hochsprachen programmieren, Schaltschranktür zu und nie wieder auf....
> ...


 
Ich finde, genau so ist es! Danke BFlat.

Außerdem muß eine SPS die einen Assembler-Code direkt verarbeitet nicht unbedingt langsam sein. Die OMRON-SPSen haben einen Zusatz-ASIC, der die Bitbefehle direkt hardwaremäßig abarbeiten, ohne Interpreter. Also gleichzeitig, schnell, kein zusätzlicher Speicher und hochladbar und detaillierte Vergleichsergebnissen mit Unterschieden, auch bei eingefügtem und damit verschobenem Code.

Andererseits bin ich dafür, dass man keine festen Adressen mehr einsetzt, das geht auch bei der OMRON. Machen nur viele Programmierer der alten Schule nicht.

Selbst bei der Kommunikation über Ethernet/IP werden Varablennamen übermittelt, es bedarf also dafür keine festen Adressen.


----------



## shevek (20 Juni 2011)

bugatti66 schrieb:


> Selbst bei der Kommunikation über Ethernet/IP werden Varablennamen übermittelt, es bedarf also dafür keine festen Adressen.



Das scheint mir aber nicht pauschal für alle IP-basierten Busse zu gelten. Zumindest wüsste ich nicht, wie ich das bei ModbusTCP realisieren soll.

Gruß,
Michael


----------



## bugatti66 (22 Juni 2011)

Hi,
geht natürlich nur bei Ethernet/IP wobei IP für Industrial Protocol steht (nicht für Internet Protokoll).  siehe http://de.wikipedia.org/wiki/EtherNet/IP
Bei Modbus TCP brauchst du halt noch deine Haftmerkeradressen oder ähnliches.


----------

