# Programmierung Allgemein



## The Blue (30 November 2009)

Sind Eure Programme(Bausteine) immer Bibliothekfähig ??
Und in welchen Baustein macht ihr die E/A-Zuweisung ?? im OB1 ??
Für was braucht man denn noch Merker,
wenn ich doch Globale und InstanzDBs habe ??


----------



## Jan (30 November 2009)

Da scheiden sich die Geister.
Es gibt Leute, die schieben alles in DBs.
Es gibt Leute, die programmieren ohne Merker.

Wir haben Standartbausteine, die in einer Bibliothek gedammelt sind.
Bausteine für besondere einmalige Funktionen werden so geschrieben.
Ich persönlich arbeite relativ viel mit Merkern. Alle Daten (für und von dem PLS) werden in sortierten DBs übergeben.
Eingänge werden direkt verwendet und Ausgänge nur einmal in einem Programm verwendet.

Wir haben einen Standart, der sich über Jahre bewährt hat. Und ich persönlich finde ihn recht gut, wenn auch ausbaufähig; auch wenn er nicht meine Erfindung ist.


----------



## mitchih (30 November 2009)

Hallo,

dann geb ich mal meinen Kommentar dazu ab.

Also wenn ich Programme ohne Merker sehe, bekomme ich immer das kalte grauen.

Habe gerade eine Anlage, da hat der Programmierer im Programm nicht mit einem Merker oder globalen Variable im Programm gearbeitet. Alles wird über Schnittstellen übergeben und ist total verschachtelt, ich denke er weiß in 2 Monaten selber  nicht mehr was er da gemacht hat.

Und weil es dann mit seinen Schnittstellen zu kompliziert wurde, hat er zum schluß direkt auf die Bits im Instanz DB zugegriffen. Aber wehe jemand ändert jetzt die DB`s, dann gibts Bruch.

Ich selber habe immer eine Mischung.

Standars FB`s und FC`s haben natürlich nur interne Variablen und eine Schnittstelle.

Spezielle FB`s haben meist Merker und Datenbits. Wobei ich hier gerne mit UDT`s arbeite.

Habe ich allerdings Anlagen mit 2 oder mehr Linien so arbeite ich auch ohne Merker und bilde eine parametrierbare Schnittstelle.

Versuche aber die Anzahl der Übergaben so gering wie möglich zu halten, und stattdessen lieber einen UDT zu übergeben.


----------



## Thomas_v2.1 (30 November 2009)

mitchih schrieb:


> Also wenn ich Programme ohne Merker sehe, bekomme ich immer das kalte grauen.
> 
> Habe gerade eine Anlage, da hat der Programmierer im Programm nicht mit einem Merker oder globalen Variable im Programm gearbeitet. Alles wird über Schnittstellen übergeben und ist total verschachtelt, ich denke er weiß in 2 Monaten selber  nicht mehr was er da gemacht hat.



 Ich denke das hängt davon ab was ein Programmierer evtl. vor seiner SPS-Zeit gemacht hat. Ist dieser mit S5 aufgewachsen, muss ein Programm unbedingt gespickt mit Merkern, Timern und Zählern sein. Schmiermerker gehören dort auch in S7-Programmen noch zum guten Ton.

Kommt man eher von der Hochsprachen-/ PC-Programmierung, ist man es gewohnt viel über Schnittstellen zu lösen. Globale Variablen setzt man nur ein wenn es nicht anders geht. Und Merker sind nunmal globale Variablen, dazu muss ich auch noch eine Adresse angeben was die Verwendung noch unpraktischer macht.

Bei Codesys komme ich überhaupt nicht auf die Idee auf Merker zurückzugreifen, da ich dort hauptsächlich in ST programmiere.
Bei der S7-Programmierung in AWL/FUP benutze ich die noch ab und an mal, allerdings dann eher wenn ich mal auf die schnelle was testen will.

Was macht ein SPS-Programm so besonders, dass man auf Merker angeblich nicht verzichten kann?


----------



## Paule (1 Dezember 2009)

Thomas das hast Du wirklich gut geschrieben.
*ACK*




Thomas_v2.1 schrieb:


> Ich denke das hängt davon ab was ein Programmierer evtl. vor seiner SPS-Zeit gemacht hat. Ist dieser mit S5 aufgewachsen, muss ein Programm unbedingt gespickt mit Merkern, Timern und Zählern sein. Schmiermerker gehören dort auch in S7-Programmen noch zum guten Ton.


Aber ich hoffe doch dass nicht jeder so festgefahren ist und sich auch an anderen Beispielen orientieren kann und erkennt, dass manches viel einfacher und komfortabler ist als der alte Stiel.

Also das Taktmerkerbyte nehme ich schon noch gerne.


----------



## AUDSUPERUSER (1 Dezember 2009)

Merker haben den Vorteil, dass es codesparende zugriffe sind.

U M0.0 = 1 anweisung

U DB1.DBX0.0 = 2 anweisungen.

Arbeitsspeicher und Geschwindigkeit sind nicht mehr so das Thema wie früher. Aber vielleicht reicht so noch die kleinere Steuerung.

Kotzen könnte ich, wenn ich sehe

Auf DB1

U DBX0.0

Wie schon ein Vorredner gesagt hat, in zwei Monaten weiss keiner mehr was das soll.


----------



## Approx (1 Dezember 2009)

Paule schrieb:


> Aber ich hoffe doch dass nicht jeder so festgefahren ist und sich auch an anderen Beispielen orientieren kann und erkennt, dass manches viel einfacher und komfortabler ist als der alte Stiel.
> 
> Also das Taktmerkerbyte nehme ich schon noch gerne.


*ACK* Ich progge seit über 15 Jahren, bin also auch noch ein "alter S5'ler", aber wenn ich heute AUF DB19 und T MB200 bei einer S7 sehe, dann kotze ich jedesmal. Das wird dann gleich geändert!  

(Ich bin ein in der Instandhaltung fest eingestellter Programmierer und sehe immer zu, daß die Kollegen auch verstehen, was ich da gemacht habe... )

Gruß


----------



## Flow23 (28 Dezember 2009)

Ich bin erst seit 2,5 jahren am S5/S7/WINCC/Telemechniuq am Programmiren und ich muß Approx beipflichten.

S5 ist mir in erster Linie lieber alls S7 und für unsere machinen voll ausreichend.
Meine Cods die ich in die Maschiene einbinde Prog ich immer nur mit Merkern.
UEX
SMX
UMX
=AX
Wo das nun Drin steht hängt von der Funktion ab die gecodet wurde.
Mit andern worten wir nutzen einen Baustein für den Ablauf/Duckmessung/Wegmessung/Kamaraauswertung etz. so ist immer Klar wo was im Prog sein muß.

Normal nutzen ja die meisten Step5, aber ich bevorzuge das accon PG.


----------



## kolbendosierer (28 Dezember 2009)

> (Ich bin ein in der Instandhaltung fest eingestellter Programmierer und sehe immer zu, daß die Kollegen auch verstehen, was ich da gemacht habe...:wink: )


 
Geht mir genauso. Programmieren kann ja (fast) jeder. Aber so programmieren das es andere, die nicht unbedingt immer was mit der Materie zu tun haben verstehen ist die Kunst.

Robert


----------



## kolbendosierer (28 Dezember 2009)

AUDSUPERUSER schrieb:


> Merker haben den Vorteil, dass es codesparende zugriffe sind.
> 
> U M0.0 = 1 anweisung
> 
> ...


 
Vielle haben es aber manche so gelernt oder abgeschaut.
Ganz ehrlich, wenn ich in einem Baustein nur einen DB benutze würde ich es aber genauso machen. So spart man auch Zeit beim Tippen. Wenn ich nur mit einem DB arbeite, dann öffne ich diesen im NW 1 und gut ist. So schlimm finde ich das nicht.

Ich habe mal bei Prog. gesehen, das war so übertrieben mit Indirekter Adr. geschrieben. Der Typ hat es zwei Stunden später schon nicht mehr kapiert .

lol rofl omg


greetz 

Robert


----------



## StefanK (28 Dezember 2009)

*Schnittstelle..?!?*



kolbendosierer schrieb:


> Wenn ich nur mit einem DB arbeite, dann öffne ich diesen im NW 1 und gut ist. So schlimm finde ich das nicht.
> 
> Ich habe mal bei Prog. gesehen, das war so übertrieben mit Indirekter Adr. geschrieben. Der Typ hat es zwei Stunden später schon nicht mehr kapiert


 
Hi, meiner Meinung nach ist "AUF DB nn" eine grausame Sache. Schon mal versucht sämtliche verwendungsstellen zu finden?

Indirekte Adressierung gehört für mich in eine in sich geschlossene Funktion mit Schnittstelle.

Gruß
Stefan


----------



## kolbendosierer (28 Dezember 2009)

StefanK schrieb:


> Hi, meiner Meinung nach ist "AUF DB nn" eine grausame Sache. Schon mal versucht sämtliche verwendungsstellen zu finden?
> 
> 
> Gruß
> Stefan


 
*ACK*

Gebe ich dir natürlich Recht. Bei einer großen Anlage verliert man schnell den Überblick.

Überzeugt.


----------



## peter(R) (29 Dezember 2009)

Das braucht keine "große Anlage" zu sein. Ein Baustein mit 20 Netzwerken genügt und schon ist man nur noch am rumsuchen welcher DB gemeint ist.
Dann auch noch alles in AWL da hat man ganz schnell einen AUF DBxx übersehen.

peter(R)


----------



## Paule (29 Dezember 2009)

kolbendosierer schrieb:


> Ganz ehrlich, wenn ich in einem Baustein nur einen DB benutze würde ich es aber genauso machen. So spart man auch Zeit beim Tippen. Wenn ich nur mit einem DB arbeite, dann öffne ich diesen im NW 1 und gut ist. So schlimm finde ich das nicht.


Da kann ich absolut *nicht* mitgehen!
Egal ob große oder kleine Anlage.
Du kannst dem Datenwort doch kein Symbol geben. 
Was sagt das schon aus? :

```
[COLOR=black][FONT=Verdana]L DBW 2 ???[/FONT][/COLOR]
L DBW 4 ???
+I
T DBW 0 ???
```
Schreibst Du dann immer einen Kommentar dahinter? Ich hoffe es doch sehr sonst kennt sich ja wieder keiner aus.
Aber wenn Du schon einen Kommentar dahinter schreibst, spart das dann Tipparbeit?
Nächste Problem:
Wenn Du Deinen Datenbaustein ein bisschen gegliedert hast in Soll und Ist Werte, schiebe jetzt doch mal eine neuen Wert irgendwo dazwischen, damit die Unterteilung auch weiterhin passt.
Das geht nach Deiner Variante nicht, oder Du musst das komplette Programm durchforsten und von Hand alle Datenwörter verschieben.

Daher nur Symbolisch und dann ergibt sich automatisch:

```
[COLOR=black][FONT=Verdana]L "Daten".Soll.Drehzahl_Antrieb  // kein Kommentar notwendig[/FONT][/COLOR]
```
-----------------------------------------------------------------------
Könnte es sein das ich mich wiederhole? 



StefanK schrieb:


> Hi, meiner Meinung nach ist "AUF DB nn" eine grausame Sache.


Nett gesagt Stefan. 
----------------------------------------------------------------------- 
Aber ich glaub Du wurdest ja schon bekehrt. 


kolbendosierer schrieb:


> Überzeugt.


----------



## kolbendosierer (29 Dezember 2009)

Paule;234915Aber ich glaub Du wurdest ja schon bekehrt. ;)[/QUOTE schrieb:
			
		

> JAJAJAJA  ich bekenne mich schuldig.
> 
> Man lernt nie aus!!!
> 
> ...


----------

