Warum Ausgänge nicht als Eingänge verwenden

Valentin96317

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

Ich mache gerade Probeprüfungen für die Weiterbildung zum staatlich geprüften Mechatroniktechniker. Dabei bin ich über eine Frage gestolpert.
"Darf man Ausgänge in der Programmierung auch als Eingänge verwenden? Bitte begründen Sie ihre Entscheidung."
Ich kann mich noch dran erinnern, dass uns der Lehrer das mal erklärt hat. Leider weiß ich die Begründung nicht mehr. Kann mir jemand bitte weiterhelfen.

Gruß

Valentin
 
Du meinst vermutlich Übergabeparameter von Bausteinen? Und daß man Ausgangsparameter nicht lesen soll?

Falls Ausgangsparameter als Referenz übergeben werden, dann führt ein Schreiben in den Ausgangsparameter dazu, das sofort die beim Bausteinaufruf "außen" angeschlossene Variable geändert wird. Bei einem (späteren Zurück-)Lesen wird aus der angeschlossenen Variable gelesen - deren Wert kann sich aber zwischenzeitlich geändert haben
- durch Multitasking oder Alarmverarbeitung
- oder weil an mehreren Ausgängen die selbe Variable angeschlossen ist
- oder weil eine Variable angeschlossen ist die man nicht lesen kann (Peripherieausgang)
Daher soll/darf man das besser nie nicht machen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wenn nun doch Eingänge und Ausgänge gemeint sind, die die SPS über Eingangs- oder Ausgangs-Karten/-Module mit der AussenWelt (Sensoren und Aktoren) verbinden?
Man kann nicht Ausgänge als Eingänge verwenden! Das sind gaaanz unterschiedliche Dinge! EinbahnStrassen, die aber in entgegengesetzten Richtungen verlaufen, sozusagen. ;)

Wahrscheinlich wird hier danach gefragt, ob man im Programm Ausgänge abfragen kann/soll/darf.
Grundsätzlich kann man und genauso grundsätzlich sollte man es sich gar nicht erst angewöhnen.
Einem Ausgang sollte man an nur 1 Stelle im Programm einen Wert zuweisen, damit das Programm lesbar und seine Auswirkungen nachvollziehbar und vorhersehbar bleiben.
Ohne dass man an zig Stellen im Programm kontrollieren und ausserdem im Auge behalten muss, in welcher Reihenfolge diese Stellen im Programm durchlaufen werden.
Die 1 Stelle ist bei einer Fehlersuche klar über die Querverweise zu finden.
Hält man sich daran, so wäre eine Abfrage des Ausgangs eigentlich harmlos, ABER sie wäre auch witzlos, denn man kennt ja eindeutig die Stelle, wo der Ausgang "gemacht" wird und man hat genau da die Information, die man auswerten möchte und man kann sie genau da auch direkt in eine Variable speichern, statt den Ausgang hierfür zu missbrauchen.
 
(Ich gehe mal von SPS-Ausgängen aus):
Technisch gesehen ja, im Prinzip ist der Ausgang nur ein Merker der am Ende des Zyklus noch auf einem Ausgang ausgegeben wird.
Ob das zum Programmierstil passt da scheiden sich die Geister. Ich finde es übersichtlicher nicht über zusätzliche Merker zu gehen.

Offtopic:
Einem Ausgang sollte man an nur 1 Stelle im Programm einen Wert zuweisen, damit das Programm lesbar und seine Auswirkungen nachvollziehbar und vorhersehbar bleiben.
Ohne dass man an zig Stellen im Programm kontrollieren und ausserdem im Auge behalten muss, in welcher Reihenfolge diese Stellen im Programm durchlaufen werden.

Wie machst du das dann in Schrittketten in denen Beispielsweise ein Zylinder mehrmals ausfahren muss?
Meiner Meinung nach macht einen Ausgang bedingt (durch if/case etc. SCL oder S KOP/FUP) zu setzen durchaus Sinn und ist der Leserlichkeit nicht hinderlich.
 
Zuletzt bearbeitet:
Wie machst du das dann in Schrittketten in denen Beispielsweise ein Zylinder mehrmals ausfahren muss?
Ich gestehe, dass ich das auch schon gemacht habe, zu S5-AWL-Zeiten. Und innerhalb einer Schrittkette kann das ein durchaus übersichtlicher und naheliegender Lösungsweg sein.
Wie das immer so ist: Ausnahmen bestätigen die Regel ... in dem Sinne, dass man nicht von Ausnahme reden würde, wenn es keine Regel gäbe.
Es wird ja lediglich vor auschweifendem Gebrauch bzw. Missbrauch dieser Möglichkeit gewarnt.
Und die Ansichten darüber, was als übersichtlich empfunden wird, gehen recht weit auseinander. Geschmackssache eben. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die Lesbarkeit sind bedingte S/R nicht hinderlich, wenn man so eine Programmstelle vor sich hat. Wenn aber an vielen Stellen im Programm ein Ausgang gesetzt oder rückgesetzt wird, dann viel Spaß bei der Fehlersuche, wenn ein Ausgang nicht so kommt wie er sollte. Typisch für solche Programmiererei sind unnötige Angst-Rücksetz-Orgien an allen möglichen Programmstellen, weil der Programmierer dem eigenen Programm nicht traut ;) wenn nach einer sorgfältigen Verriegelung etwas später womöglich alles wieder über den Haufen geworfen wird ...
Wenn Kunden zur Problembehebung das Programm beobachten wollen/müssen, dann wird solche Programmierung (mit mehrfachen S/R/Zuweisungen an Ausgänge) für Lieferanten oft verboten, weil die Problemanalyse-Zeit des Kunden ein Vielfaches teurer ist als einige einmalig eingesparte Programmierer-Stunden.

Wie machst du das dann in Schrittketten in denen Beispielsweise ein Zylinder mehrmals ausfahren muss?
Code:
O Schritt_1
O Schritt_5
O Schritt_7
= Q_Zylinder

Harald
 
Hallo Zusammen,

Ich mache gerade Probeprüfungen für die Weiterbildung zum staatlich geprüften Mechatroniktechniker. Dabei bin ich über eine Frage gestolpert.
"Darf man Ausgänge in der Programmierung auch als Eingänge verwenden? Bitte begründen Sie ihre Entscheidung."
Ich kann mich noch dran erinnern, dass uns der Lehrer das mal erklärt hat. Leider weiß ich die Begründung nicht mehr. Kann mir jemand bitte weiterhelfen.

Gruß

Valentin

Man weis nicht wie die Frage gemeint ist. Ich vermute mal "Kann man Ausgänge im Programm als Zwischenspeicher nutzen"
 
"Darf man Ausgänge in der Programmierung auch als Eingänge verwenden? Bitte begründen Sie ihre Entscheidung."
Wie lang ist denn die Weiterbildungs-freie Phase vom Valentin? Am Freitag kurz vor Mittag hier die Frage abladen und dann vielleicht am Dienstag die Antworten einsammeln? Und sich zwischendurch gar nicht um die Nachfragen kümmern?

Eigentlich müssten wir nun noch jede Menge spekulative Beiträge hier posten, die das Wort "Ausgänge" enthalten, damit ihm das Finden der erwarteten Antworten nicht zu leicht gemacht wird ;)

Harald
 
Wie lang ist denn die Weiterbildungs-freie Phase vom Valentin? Am Freitag kurz vor Mittag hier die Frage abladen und dann vielleicht am Dienstag die Antworten einsammeln?
Die SendePause dauert an. Diese Woche scheint nicht "Valentins Tag" zu sein. Vielleicht tut sich nach den HerbstFerien wieder etwas? ;)

Auf die leicht modifizierte Frage "Warum Ausgänge nicht wie Eingänge verwenden?" habe ich eine Antwort anzubieten:
Weil man normalerweise Eingänge nur abfragt und ihnen keinen Wert zuweist. Ausgänge, denen man nie einen Wert zuweist sind jedoch total überqualifiziert (= "over fluid"). :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Weil man normalerweise Eingänge nur abfragt und ihnen keinen Wert zuweist. Ausgänge, denen man nie einen Wert zuweist sind jedoch total überqualifiziert (= "over fluid"). :ROFLMAO:

Was willst du machen wenn du 8 Ausgänge auf der Karte hast aber nur 5 brauchst ? Man könnte die ja spaßeshalber auf Eingänge verdrahten und regelmäßig testen. Ob das gemeint ist mit : Ausgänge als Eingänge ? BTW : so haben wir früher in den ersten Busmodulen die Anwesenheit überprüft :)
 
Hallo Zusammen.

Es gibt aber Hersteller, die haben tatsächlich "Universal-E-A"
Da kann man dann in der HW Konfiguration einstellen,
ob es ein Eingang oder Ausgang sein soll.

Gruß Timo
 
Zurück
Oben