# E/A Puffer DB oder Merker



## Robot-Sun (1 November 2008)

Hallo,

ich bin gerade dabei mir ein Grundgerüst für meine SPS-Programme zu erzeugen.
Wie es wohl so üblich ist, möchte ich einen Ein- und Ausgangspuffer deklarieren, so dass ich bei Änderungen eines E/A nicht das komplette Programm umschreiben muss. Nun steht für mich die Frage, ob es Gefahren gibt, wenn ich z.B. einen DB Eingänge und einen DB Ausgänge nutze. Habe hier mal gelesen, dass das Verwenden von Merkern für schnellere Programme günstigere ist, da wohl der Zugriff schneller erfolgt. Für ein Übersichtlicheres Programm halte ich aber einen Datenbaustein für Günstiger.
Was denkt ihr darüber und wie handhabt ihr dass?

MFG Robert


----------



## vierlagig (1 November 2008)

da stößt du eine schöne diskussion an und ich weiß wie sie enden wird - KOP/FUP oder AWL, zotos wird kommen und sagen, dass das alles bullshit ist, dann kommen die SCL-vertreter aus ihren löchern gekrochen und versuchen die diskussion nochmal anzuheizen ... aber: wir werden sehen 

1. der zugriff auf merker erfolgt schneller
2. es spricht nichts dagegen mit datenbausteinen zu arbeiten, wenn deine zykluszeitanforderungen das zulassen
3. ist es nicht üblich das zu tun bzw. ist es nicht state of art
4. kannst du änderungen der ein- und ausgänge mit Extras->Umverdrahten sehr schnell in dein programm einpflegen, mußt dann nur noch deine symboltabelle dementsprechend anpassen

in den anlagen, die ich noch betreue ist es so realisiert, also eingänge auf merker und dann weiterverarbeitet ... früher dachte ich auch, hey, kann man ja ganz einfach mal ändern, stimmt soweit auch, aber einen wirklichen mehrwert hat es nicht. obwohl, deine merkerheißen überall gleich, aber wer, außer ein instandhalter, der täglich mit dieser maschine zu tun hat oder der programmierer, der nur diesen einen anlagentyp baut, lernt wirklich die merker auswendig? es ist viel mehr so, dass man irgendwann lernt "gehe zu..." richtig zu benutzen und zu interpretieren...

wenn du es machen willst, dann bin ich für merker


----------



## Larry Laffer (1 November 2008)

...
Ich teile die Ansicht von *Vierlagig* ...
Wenn du etwas standardisieren willst und diene Ein- und Ausgänge nicht direkt benutzen möchtest, dann nimm doch die IN- und OUT- und INOUT-Schnittstellen deiner Bausteine ...

Ansonsten (um bei dem schon genannten Argument zu bleiben) gibt es im Programm ja auch noch die Funktion "Umverdrahten".

Gruß LL


----------



## Robot-Sun (1 November 2008)

@Larry: zur Zeit sieht es wie folgt aus
       E0.0       DB1_Eingänge xy
-----| |------ ()
Aber das is sicher nich die Input/Output Schnittstelle..

Okay, mit "Umverdrahten" hab ich noch nie gearbeitet, bin auch erst ein Neuling.

-----

@vierlagig) ne sicher lernt keiner die Merker auswendig.

Bei dem Anlagentyp den ich vor mir habe sieht es wie folgt aus.
-Eine Basissoftware für 16 Gruppen
-es sind 4,8,12,... Gruppen möglich
-somit brauch nur eine Software gewartet werden (sieht aber dann für manche Fälle unübersichtlich aus)
-Die Merkernutzung lässt keinen Raum für Erweiterungen bzw. fängt man an Lücken zusuchen wo noch bissel Platz ist.
--> Daraus folgte die Idee mit der Nutzung von DBs

Weiterhin kann es z.B. sinnvoll sein beim 4er Typ nicht die DI -Baugruppen zu Nutzen sondern die "2 Freien Eingänge" der CPU. (Kosten)


Gibt es denn Erfahrungswerte in welchen Rahmen die DB bzw. Merker variante liegen bzw. die dierekte Nuzung des Eingangs.

Ich spreche von so ca. 80 Eingängen.  (Eingägne kann man doch auch direkt einen Namen geben und nich immer E0.0 oder so hinschreiben oder? )


----------



## Gerhard K (1 November 2008)

egal ob ein/ausgänge, merker oder DB´s.du kannst fast allem einen namen geben.
rechte maustaste--> symbole bearbeiten und schon kannst du deiner fantasie freien lauf lassen.


----------



## MSB (1 November 2008)

Man könnte natürlich auch die Symbolik intelligent nutzen.

In Verbindung mit Operandenvorrang Symbolik,
und der Bausteinkonsistenzprüfung ein gutes Werkzeug.

Dann kannst du dir den Merker/DB Scheiß komplett sparen.

Im Normalfall suche ich in Programmen nach EA's die ich mir aus dem Schaltplan suche,
Merker oder auch DB's finde ich in dem Fall bestenfalls noch verwirrend.

P.S. Wenn du schon immer eine Basissoftware für immer dasselbe hast,
vielleicht solltest du dann mal über einen vernünftig parametrierbaren FB
nachdenken, imho die beste Lösung.

Mfg
Manuel


----------



## vierlagig (1 November 2008)

da ich eure software nicht kenne, kann ich nur vermuten...

80 eingänge? vielleicht solltet ihr eure software nochmal gründlich untersuchen. bei so wenigen eingängen ist eine sinnvolle kapselung von kleinen funktionseinheiten sehr einfach zu realisieren, so dass du es vielleicht sogar schaffen könntest, die einzelnen eingänge nur an einer stelle aufzurufen und zwar an der schnittstelle zu einergekapselten funktion ... 

aber wie gesagt, ich kenn eure software und eure anlage erst recht nicht...

ja, du kannst eingänge über ihren symbolischen namen aufrufen und wenn du dein projekt mit symbolvorrang betreibst sollte eigentlich eine änderung der symboltabelle bei der änderung eines eingangs ausreichen ... aber ich kenne keinen, der darauf vertraut 

[edit] 3 posts in 3 minuten und 2 davon sagen dir das selbe ... ich glaub wir sind alles nur kranke spinner *ROFL* [/edit]


----------



## MSB (1 November 2008)

P.S. Das danke an Vierlagig gilt vor allem den kranken Spinnern *ROFL*


----------



## Robot-Sun (1 November 2008)

@MSB) Ich versuche mir zur Zeit eine Basissoftware zu erarbeiten. Vielleicht gabs das Thema (Basissoftware) hier schonmal??

Symbolikinteleganz? z.B. E_Last1 (Eingang Lastsensor1) mit Kommentar E0.0 usw??

----
@vierlagig: Kapslung = FB ?
ich glaube das das nur bis zu einem bestimmten rahmen möglich sein wird...
----
Weis nu noch jemand wie man das mit der Zykluszeit am besten rausbekommt.
oder heißt das da probieren und während des betriebes testen?
----
achso ne frage die hier vielleicht nich ganz passt...

kann es sinnvoll sein programmteile zu überspringen, wenn eine Bedinungung 1 
bereits nicht erfüllt ist und die folge Prüfungen somit sinnlos sind? wenn ja wo, allerdings wird die zykluszeit ja dann nur für manche fälle geringer was ja nix bringen sollte oder?


----------



## vierlagig (1 November 2008)

Robot-Sun schrieb:


> Weis nu noch jemand wie man das mit der Zykluszeit am besten rausbekommt.



operationsliste -> ausführungszeiten -> zusammenrechnen! 



Robot-Sun schrieb:


> kann es sinnvoll sein programmteile zu überspringen, wenn eine Bedinungung 1
> bereits nicht erfüllt ist und die folge Prüfungen somit sinnlos sind? wenn ja wo, allerdings wird die zykluszeit ja dann nur für manche fälle geringer was ja nix bringen sollte oder?



sicher ist das sinnvoll...frag mich nicht warum, aber es klingt gut


----------



## alfonsmoeller (1 November 2008)

*Zykluszeit bestimmen*

Ich würde hier eine Schleife bilden und den Befehl Notfalls 1000 mal pro Zyklus ausführen und über einer anderen schaltbaren Bedingung den anderen Befehl ausführen. Dann hat man die Möglichkeit über die Diagnose Zykluszeit beide Befehle die Prozesslast zu vergleichen.


----------



## Ralle (1 November 2008)

Ich würde auch nicht sagen, daß es üblich ist, alle EA auf DB abzubilden, m.E. auch nicht unbedingt sinnvoll. Früher hatte ich in der Symbolik immer noch E0.0 etc. stehen, mach ich inzwischen auch nicht mehr, weil es nur zusätzliche Arbeit beim Umverdrahten ist, die Symbole hinterher auch noch zu berichtigen. Dann schon eher Funktion und Station alá "s6_Greifer1_GS" für Station 6 Greifer 1 Grundstellung. Man hat ja nur 24 Zeichen, also kurz fassen. Es gibt zwei Möglichkeiten Projekte anzupassen, entweder über die Step7-Funktion Umverdrahten oder über die Bausteinkonsistenzprüfung. Man kann mit symbolischem Vorrang arbeiten, dann braucht man in der Symboltabelle nur die Absolutadressen ändern, eine Konsistenzprüfung durchführen lassen und fertig. Aber damit muß man sehr sorgfältig umgehen, ich arbeite im allgemeinen mit Vorrang auf Absolut und nutze den Symbolischen Vorrang nur bei Bedarf, erspart viel Ärger! Noch wichtiger um Zeit zu sparen, auch für Hardwareprojekte, also die EA einen Standard nutzen. Zumindest was die Bezeichnungen angeht ist das wichtig, dann ist das Ändern der Software wesentlich einfacher.


----------



## alfonsmoeller (1 November 2008)

*Zykluszeit messen war für einen anderen Beitrag gemeit*

Entschuldigt meinen Fehler !


----------



## alfonsmoeller (1 November 2008)

*E/A Puffer DB Merker*

Soviel ich weiß wird vor jedem Aufruf des OB1 "sozusagen die Zentrale aller eingebundenen Prozesse" ein Prozessabbild aller Eingänge und nach dem Verlassen das Prozessabbild erzeugt. Ausgenommen sind hier natürlich alle Weckaufrufe (Interrupts). Für meine Begriffe macht es keinen Sinn das Prozessabild noch einmal in ein weitertes Abbild zu verschiffen. Da sollte man sich eher über die Symbolik Gedanken machen. Das sind Konstanten die sich während des Prozesses eh nicht ändern und somit auch nicht ständig errechnet werden müssen. Es sei denn man kann es mit Pointern erledigen.


----------



## kermit (1 November 2008)

*lass um Gottes Willen das Rangieren auf DB oder Merker bleiben!*

ich kenne absolute Programmieung noch von S5 - und hasse sie.

ne, also ich kann sagen: in meinen Programmen wird vollsymbolisch programmiert. Umverdrahten mach ich in meinen Programmen, was den E/A-Bereich anbetrifft, grundsätzlich bedenkenlos über Symbolikänderung und Bausteinkonsistenzprüfung. Im Merkerbereich kann eventuell mal was dabei sein, wo das nicht funktioniert, sei es, dass innerhalb von Worten mit Bitadressen zugegriffen wird oder mal gepointert wird. Das versuche ich aber zunehmend so zu programmieren, dass das Problem nicht besteht. Davon abgesehen, versuche ich ohnehin, weitestgehend auf Merker (Globalvariablen) zu verzichten und alles möglichst gekapselt in FB mit jeweiligen Instanzen unterzubringen.

... und jetzt kommen die, die einem FC eine DB-Nummer übergeben und schon immer eine feststehende Datenstruktur hatten


----------



## rostiger Nagel (1 November 2008)

guten abend,
bei 80 Eingängen und vielleicht so viel Ausgänge, braucht mann bei Symbolischer Programmierung und Bausteinkonstinzprüfung ca. 0,5 - 1h, je nach dem wie gut mann mit der Tastatur ist und schon steht das Programm. (Am meisten Zeit kostet das starten von Step 7)
Über Zykluszeiten müsste man sich heute eigendlich keine Gedanken machen es gibt bestimmt für jede Anwendung eine leistungsstarke CPU.

gruss Helmut


----------



## alfonsmoeller (1 November 2008)

*80 Eingänge*

Ich bin erstaunt das man 80 Eingänge in 0,5-1,0 Stunden eingeben kann und deren Funktion voll taulich in Betrieb setzen kann. Irgend was habe ich in den letzten 30 Jahren falsch gemacht.!


----------



## Gerhard K (1 November 2008)

ich denke mit der zeitangabe hat helmut die erstellung der symbolik gemeint.


----------



## vierlagig (1 November 2008)

Gerhard K schrieb:


> ich denke mit der zeitangabe hat helmut die erstellung der symbolik gemeint.



leider sieht sein satz nicht danach aus...aber du liegst näher dran 

ansonsten kann ich nur beipflichten: kapseln, soviel wie geht. normal müßte man sogar, dank multiinstanz und anderer hilfsmittel an merkern komplett vorbeikommen


----------



## rostiger Nagel (1 November 2008)

...ja, ja natürlich meinte ich die symbolik, für Programme dieser größer brauch ich 2-3 Jahre...schließlich bin ich schon 42...noch 3-4 Projekte und ich geh in Rente...das habe ich mir verdient...
Gerhard und Steffen ihr versteht mich...danke!

schönen Abend noch


----------



## Thomas_v2.1 (2 November 2008)

Ralle schrieb:


> Ich würde auch nicht sagen, daß es üblich ist, alle EA auf DB abzubilden, m.E. auch nicht unbedingt sinnvoll.


Ein Kollege von mir macht Anlagen bei denen der gesamte E/A Bereich in DBs hineinkopiert, und am Ende vom DB wieder auf die Ausgänge zurückgeschrieben wird (Vorgabe).

Den einizigen Vorteil sehe ich darin, dass man alle Signale gleich ggf. negieren kann, sodass diese im DB immer mit den korrekten Signal stehen.
Damit meine ich z.B. drahtbruchsichere Störeingänge oder Endlagen.
Hat man im DB "Störung" stehen, dann ist diese auch bei 1-Signal eine Störung.

Ich schreibe meine Symboliken aber direkt so, dass aus dem Symbol auch die Signal"richtung" hervorgeht. Ist also ein Eingang bei 1-Signal Ok, dann benenne ich diesen auch mit "...keine Störung" oder "...Steuerspannung OK".


----------



## vierlagig (2 November 2008)

Thomas_v2.1 schrieb:


> Den einizigen Vorteil sehe ich darin, dass man alle Signale gleich ggf. negieren kann, sodass diese im DB immer mit den korrekten Signal stehen.
> Damit meine ich z.B. drahtbruchsichere Störeingänge oder Endlagen.
> Hat man im DB "Störung" stehen, dann ist diese auch bei 1-Signal eine Störung.



und warum sollte ich das machen? warum soll ich nicht

UN

oder

---|/|---

oder

 ..|
.o|
..|

benutzen dürfen 

wenn du es da negierst, mußt du es vielleicht an anderer stelle wieder umdrehen...

darüber hinaus mach ich alarme drahtbruchsicher


----------



## Thomas_v2.1 (2 November 2008)

vierlagig schrieb:


> und warum sollte ich das machen? warum soll ich nicht
> 
> UN
> 
> ...



"Ich" kopiere das ja auch nicht in DBs ;-) sondern benutze auch direkt die Eingänge. Ich habe nur überlegt welche Vorteile es haben könnte, da es ja den ein oder anderen gibt der so programmiert.

Wenn man aber im DB die Signale alle mit dem korrekten Pegel stehen hat, und meine Bausteine alle passend geschrieben sind brauche ich im Programm normal nichts mehr zu negieren.

Softwaremäßig gibt es ja keine Drahtbruchsicherheit.

Evtl. könnte es bei Bausteinaufrufen auch schneller sein, da nichts mehr über Lokaldaten kopiert werden muss um die Eingänge ggf. zu negieren.

In FUP setzt der Step7 Editor das zwar auch auf Lokaldaten um wenn es eigentlich nicht nötig wäre. Ich könnte dann aber einen FC-Aufruf in AWL schreiben ohne vorher über Lokaldaten oder schlimmer noch "Schmier"-Merker zu negieren.

Wichtiger finde ich aber, dass wie ich oben geschrieben habe die Symboliken dem Signalpegel entsprechend benannt sind.


----------



## vierlagig (2 November 2008)

Thomas_v2.1 schrieb:


> Softwaremäßig gibt es ja keine Drahtbruchsicherheit.



aber man kann es dem servicetechniker einfach machen, in einer UND-verknüpfung KOP sieht er IMHO schneller, welches signal fehlt 
ich denk da immer an den elektriker, der ja einen schaltplan lesen kann und darauf fixiert ist, dass verriegelungen drahtbruchsicher ausgeführt sind...


----------



## kermit (2 November 2008)

nun gut, das mit sich drehender Logik ist etwas unschön bei symbolischer Programmierung.

Wenn also der Eingang bei Programmerstellung "Pegel_erreicht" hieß, dann bei Inbetriebnahme der INI aber "nicht_Pegel_erreicht" meldet. Dann ist bei der Nacharbeit an den Verwendungsstellen mehr Aufmerksamkeit gefordert, als wenn vorab das Signal auf einen Merker oder DB umrangiert wurde und dann eben nur an dieser einzigen Stelle zu ändern ist.

Aber dann steht es einem immer noch frei, nachträglich den Ex.x durch einen Mx.x zu substituieren und am OB1-Anfang

```
UN Ex.x
=  Mx.x
```
zu schreiben (natürlich in Symbolen: UN "nicht_Pegel_erreicht" = "Pegel_erreicht")


----------



## alfonsmoeller (2 November 2008)

*Symbolik*



Gerhard K schrieb:


> ich denke mit der zeitangabe hat helmut die erstellung der symbolik gemeint.


 
Habe wohl nicht richtig überlegt, da ich die Symbolik nie von Anfang an schreibe.
Ich möchte jedoch für alle die diesen Weg evt. nicht kennen hinzufügen:
Die meisten Zeichenprogramme haben eine Funktion Ein- und Ausgänge exportieren in eine csv-Datei (Excel). Dann werden alle Texte aus der Zeichnung (Ein-Ausgänge) in eine csv-Datei geschrieben. Diese importiere ich als Quelle in der Symbolik. Bis hier habe ich dann noch keinen Finger krum gemacht und habe bis jetzt eine fehlerfreie Symbolik.


----------



## vierlagig (2 November 2008)

alfonsmoeller schrieb:


> Zeichenprogramme



 paint? corel? oder doch die programmierung in KOP/FUP?


----------



## alfonsmoeller (2 November 2008)

*paint? corel? oder doch die programmierung in KOP/FUP?*

Verstehe ich nicht!!


----------



## alfonsmoeller (2 November 2008)

*Zeichenprogramme*

Ich meinte Zeichenprogramme wie ELCAD, nicht Malprogramme!


----------

