E/A Puffer DB oder Merker

Robot-Sun

Level-1
Beiträge
83
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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 :rolleyes:

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 :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
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
 
@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? )
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@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?
 
Weis nu noch jemand wie man das mit der Zykluszeit am besten rausbekommt.

operationsliste -> ausführungszeiten -> zusammenrechnen! :D

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 :ROFLMAO:
 
Zuletzt bearbeitet:
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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;)
 
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
 
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.!
 
...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
 
Zurück
Oben