Grundsätzliche Frage zur Programmierung

settelma

Level-1
Beiträge
356
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe mal ne grundsätzlich Frage zur Programmierung.
Ich habe im Programm einen Handbetrieb und einen Autobetrieb.
In beiden Betriebsarten will ich ein Ventil schalten. Ich setzt in
den Betriebsarten jeweils einen Merker ( Auto M1.1, Hand M0.1 )um diese dann in einem anderen
FC1 ( Aktoren ) zu verwenden ( den Ausgang setzten ). Gleichzeitig hab ich zum M1.1 und M0.1 einen Abzweig drin.
Ich schreibe mir praktisch das gleiche Bit nochmal in einen DB für die
Visualisierung am Panel.
Kann ich mir nicht die Merker sparen und mit dem Bit im DB das ich auch
für die Visu verwende gleichzeitig in meinem Aktoren FC1 den Ausgang
ansteuern oder sollte man da doch Merker verweden?

Wer super wenn mir jemand helfen könnte

Danke

Markus
 

Anhänge

  • Baustein.jpg
    Baustein.jpg
    66,2 KB · Aufrufe: 61
grundsätzlich kannst du es dir sparen...das ist eine reine stilfrage ... aber der zugriff auf datenbausteine dauert länger (x,y µs-bereich ... cpu-abhängig) als der auf merker...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst du mir sagen wie es üblich ist?
Ich versuch gerade etwas Struktur in meine Programmierung zu bringen.
Habe aber leider niemanden bei dem ich abschauen kann.

Gruß Markus
 
ich hab meistens einen DB für die visu, zweigeteilt, anzeigewerte und steuerwerte ... die anzeigewerte verwende ich nicht im programm ... aber das ist nur meine sicht der dinge, hier sollten sehr viele meinungen mehr gehört werden!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin der selben Ansicht wie der Herr Vierlagig. Wenn du schon einen separaten DB für die HMI-anbindung machst (wie sich das gehört), dann würde ich im Programm nicht auf diese Werte zurückgreifen.

Da ich aus der PC-Welt zur SPS gekommen bin, sind mir aber auch die Merker etwas unsympatisch, wenn sie auch auf eine Low-Level Programmierung wie in der SPS Welt sehr verbreitet und zt. auch sehr nützlich sind.
Ich programmiere fast ausschliesslich in SCL und versuche wo immer möglich die Daten durch eine saubere Übergabe an den unterlagerten / überlagerten Baustein weiterzureichen.
 
ich hab meistens einen DB für die visu, zweigeteilt, anzeigewerte und steuerwerte ... die anzeigewerte verwende ich nicht im programm ... aber das ist nur meine sicht der dinge, hier sollten sehr viele meinungen mehr gehört werden!

*ACK*

Wenn ein Wert, der als Anzeigewert auf der Visu deklariert ist, noch zig mal im Programm verwendet wird, steigert das nicht unbedingt die Übersicht.
Dem Ersteller des Programms ist die Funktion klar, aber was ist, wenn ein Kollege ran muss, oder man selbst nach Jahren eine Erweiterung machen muss?
Besser ist es eine Arbeitsvariable zu haben, deren Wert an geeigneter Stelle auf die Visuschnittstelle geschoben wird.

Ob die SPS eine LowLevel Programmierung ist, möchte ich in Frage stellen.

Die Zeiten von
Code:
U "Taster Auf"
UN "Endschalter OBEN"
= "Tor Auf"
sind vorbei.
Und SCL ist super für Berechnungen. Aber bei Bitverknüpfungen sind meiner Meinung nach AWL,FUP,KOP übersichtlicher.

Gruss
Audsuperuser
 
Schliesse mich meinem Vorredner zu 100% an !!!!

Nicht alles was NICHT kompliziert aussieht ist auch einfach.

Und einem Elektriker in der Instandhaltung kann ich per KOP oder FUP auf der Bitebene sehr viel einfacher erläutern was ich da verbrochen habe.

peter(R)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ob die SPS eine LowLevel Programmierung ist, möchte ich in Frage stellen.

zu recht wird das von dir in frage gestellt! ...müssen nur aufpassen jetzt nicht in eine andere diskussion abzugleiten :rolleyes:

zum thema visu fällt mir da noch ein: ein anlagenbauer von uns macht es so, dass er mit merkern arbeitet, dabei natürlich eine struktur einhält und bestimmte merkerbereiche in den visu-DB kopiert, somit doppelzuweisungen ála

Code:
*
U    "irgendwas"
=    "für prog"
=    DB."für visu"

vermeidet ... das müßte man mal durchrechnen, würde aber behaupten, dass ab einer bestimmten zahl von elementen, dass kopieren schneller ist, als die zuweisungen...

eine andere frage, die auch gut hier rein passt: von der visu auf instanz-DBs zugreifen? also hauptsächlich lesend - ist das sauber? :rolleyes:
...so hätte (habe ;)) ich für jeden antriebs-FB in der visu immer die selbe struktur - verbindlich und garantiert - und brauch nur die DB-nummer oder bei multiinstanzen den offset anpassen ...
 
eine andere frage, die auch gut hier rein passt: von der visu auf instanz-DBs zugreifen? also hauptsächlich lesend - ist das sauber? :rolleyes:
...so hätte (habe ;)) ich für jeden antriebs-FB in der visu immer die selbe struktur - verbindlich und garantiert - und brauch nur die DB-nummer oder bei multiinstanzen den offset anpassen ...

Du hast Recht, es wäre so recht einfach.
Aber, soweit ich weiss, sind nach Norm Zugriffe von aussen auf InstanzDBs nicht erlaubt. Ich kann hier auch falsch liegen, bitte verbessert mich.
Wenn man viele Multiinstanzen einsetzt, und dann direkt auf den IDB zugreift, besteht die Gefahr, dass, wenn mann nicht aufpasst, sich der DB ändert, und die Zugriffe nicht mehr stimmen, wenn noch absolut programmiert wird.
Hier kommt wieder der Kollege ins Spiel, der an die Anlage muss, sie aber nicht so gut kennt wie der Programmierer.

Gruss
Audsuperuser
 
Aber, soweit ich weiss, sind nach Norm Zugriffe von aussen auf InstanzDBs nicht erlaubt.

die böse, böse norm - warum kommt sie mir nur immer in die quere? :rolleyes:
vermutlich, weil sie an irgendwelchen schreibtischen entsteht und nicht aus der praxis heraus wächst ... aber vielleicht kann ja hier maxi noch ein wenig licht ins dunkel bringen und verwirrung stiften :ROFLMAO:

ok, gespeichert, zugriff auf instanzen aus der visu ist nich drin, nagut, kann ich mit leben - kopier ich die struktur des instanz-dbs halt in den visu-db ... ein schwachsinn diese ganze kopiererei ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast Recht, es wäre so recht einfach.
Aber, soweit ich weiss, sind nach Norm Zugriffe von aussen auf InstanzDBs nicht erlaubt. Ich kann hier auch falsch liegen, bitte verbessert mich.
Von welcher Norm sprichst Du?
Die aktuell gültige 61131-3 kennt keine Datenbausteine:D
 
Zugriffe auf einen Fremden Instanzbaustein sind zwar möglich, SOLLTEN aber nicht gemacht werden.
Diese Idee kommt nicht so von ungefähr, dass man den Softis das Programmieren erschweren will, vielmehr will man damit Laufzeitfehler verhindern. Das Risiko für einen Laufzeitfehler wird erheblich gesteigert, wenn man wie wild in fremde IDB's rein schreibt.

Ein Hauptpunkt ist da wohl auch, dass ich nur durch absolute Adressierung in einen IDB schreiben kann (ist doch so, oder nicht??). Das würde dann auch heissen, dass ich nach einer Schnittstellenänderung im zugehörigen FB prlötlich auf eine falsch Adresse schreibe.
 
wenn man wie wild in fremde IDB's rein schreibt.

würde mich aufs lesen beschränken - das schreiben in instanzen kannst du gern mit ralle diskutieren :ROFLMAO: ... lesend von der visu aus seh ich eigentlich kein problem, außer natürlich die nachträglichen änderungen, aber die muß ich auch einpflegen, wenn ich mir die daten zusammenkopiere, oder?

btw: ja, es ist möglich absolut zu adressieren
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Hauptpunkt ist da wohl auch, dass ich nur durch absolute Adressierung in einen IDB schreiben kann (ist doch so, oder nicht??).
Nö, ist nicht so. Auch ein IDB ist halt nur ein DB. Da sind alle Zugriffe möglich, die auch sonst auf DB-Komponenten möglich sind.
Und absolute oder symbolische Adressierung interessiert nur den Editor. Die SPS kennt so was nicht. Lese mal eine SPS in ein leeres Projekt. Da wirst Du weder die IDB-Struktur, noch irgendwelche Datentypen, geschweige denn Symbolik finden.

Das würde dann auch heissen, dass ich nach einer Schnittstellenänderung im zugehörigen FB plötzlich auf eine falsche Adresse schreibe.
Das ist ja bei indirektem Zugriff viel schlimmer. Da nützt auch kein Symbolvorrang etwas.
Ich persönlich arbeite viel mit direktem Zugriff auf IDB-Komponenten. Wie ich an anderer Stelle anmerkte, wieso soll ich die schon vorhandenen Bits noch mal umkopieren?
Was ich generell zu vermeiden suche, ist indirekter Zugriff auf egal was.
Wenn's sich nicht vermeiden läßt, dann den zu bearbeitenden Bereich als Struktur an den bearbeitenden Baustein legen. Damit findet man die Verwendung zumindest grob in der Referenz.
 
Zurück
Oben