Ausgänge über Hilsmerker setzen

Mores

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal ne Frage in die Runde,
wir hatte unlängst eine Diskussion, in welcher ein erfahrener SPS´ler die These vertrat, daß man nie direkt auf Ausgänge zugreift sondern hierfür immer Merkel benutzt.
Mir stellt sich nun die Frage : hat dieser Mann recht, und wenn ja, warum ?

Vielleicht bringt jemand Licht ins Dunkel ... :rolleyes:
Beste Grüße
Mores
 
ich bin überhaupt für indirekte adressierung der ausgänge,sonst findet man diese ja in der symbolliste.:rolleyes:
nein im ernst,ich finde sowas nur verschwendung der resourcen.ausser vielleicht bei schrittketten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich bin auch nicht für das rangieren von ios, da dies wie schon genannt je nach anzahl phys. datenpunkte. desweiteren stellt dieses mapping immer eine fehlerquelle dar.

aber: ich persönlich finde die systemmatik in sofern nicht falsch, wie man sich quasi im anwenderprogramm nen prozessabbild schaffen kann, fürs debugen evtl. ganz nützlich

EDIT:

aber dazu muß ich sagen das ich trotzdem rangiere, was aber eher daran liegt das bei saia der wiederverwendbare code so ne schwierigere sache ist im fupla, was dazu führt das ich durch die entsprechenden fc / fb eine rangierung durch dessen schnittstelle habe
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hängt von der Sichtweise ab.
Man muss daher genauer wissen, um was es da ging .

Ich bin z.B. prinzipiell dagegen die Ausgänge direkt zu schalten,
das hängt aber vom Programm ab.

Was hier gemeint sein könnte, das man z.B S/R der Ausgänge direkt ausführt , und damit quasi z.B. die Schrittkette programmiert.

Bei mir gibt es eine Schrittkette z.B. nur aus Merkern und diese steuern die Ausgänge.

Ich könnte mir vorstellen das der programmierer genau diese damit sagen wollte.
Das verwenden von Merkern die unabhängig von den Ausgängen gesetzt werden macht es nach meiner Meinung einfacher Änderungen durchzuführen.
Nehmen wir mal eine einfache Schrittkette.
Wenn jetzt z.B. ein Schieber schon einen Schritt früher fahren soll,
würden die vom Schieber abgefragten Bewegungen auch früher starten.
Bei der Umsetzung über z.B. Merker (geht ja auch anders) würde ich nur bei der Ansteuerung des Schiebers einen anderen Schritt eintragen.
Ich gebe zu, hängt aber auch von der Anlage ab.
In meinem Fall habe ich aber z.B. immer einen handbetrieb und eine Automatik. Abhängig von der Betriebsart werden die Ausgänge geschaltet, im Netzwerk vom Ausgang sehe ich dann sofort von was der Ausgang angesteuert wird.

ich hoffe das war auf die schnelle einigermaßen verständlich.
 
... ich hänge mich da jetzt mal bei Onkel Dagobert und Jabba mit dran. Ich weise Ausgänge generell nur einmal im Programm zu. Diese Zuweisungen kommen natürlich zu 95% aus Schrittketten. Man kann natürlich auch an jedem Schritt den jeweiligen Ausgang setzen oder rücksetzen. Das macht sich dann in der Suche über die Querverweisliste richtig toll, wenn man einen Ausgang 30 mal mit "S" und genauso oft mit "R" sieht. Das ist dann für die Fehlersuche was Feines.
Im Grunde ist dies aber jetzt auch nur eine Bestätigung der bereits genannten Argumente ...

Gruß
LL
 
ich merke das es hier grundsätzlich um maschinensteuerungen u. vergleichbares geht, da ich aber aus der gebäudeautomation komme, sieht das wieder ein wenig anders aus, in diesen systemen gibt es in der regel unveränderliche regeln nach denen ausgänge gesetzt werden, natürlich werden diese programmweit auch nur von einer bedingung resultieren einem merker geschalten, im bereich der schrittketten-steuerung würde ich für meinen teil auch nicht auf die idee kommen innerhalb der schrittkette direkt nen ausgang zu beschalten, sondern wie schon angemerkt über eine "im notfall verriegelte" veroderung (je nach anforderung) den ausgang am ende der schrittkette setzen oder rücksetzen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ich hänge mich da jetzt mal bei Onkel Dagobert und Jabba mit dran. Ich weise Ausgänge generell nur einmal im Programm zu. Diese Zuweisungen kommen natürlich zu 95% aus Schrittketten. Man kann natürlich auch an jedem Schritt den jeweiligen Ausgang setzen oder rücksetzen. Das macht sich dann in der Suche über die Querverweisliste richtig toll, wenn man einen Ausgang 30 mal mit "S" und genauso oft mit "R" sieht. Das ist dann für die Fehlersuche was Feines.

Gruß
LL

Ob man jetzt einen Ausgang x-mal setzt / rücksetzt oder einen Merker. Wo liegt da der Unterschied ?
Außer dem, daß es sich anders liest.

Im Übrigen brauche ich dann für jeden Ausgang (welchen ich ja genauso abfragen kann) einen Merker (Resourcenverbrauch).

So ganz leuchtet diese Vorgehensweise noch nicht ein.
 
Zuletzt bearbeitet:
Also gehen wir mal von einer Schrittkette aus:
Entweder der aktuelle Schritt wird durch eine Zahl repräsentiert,
oder durch Merker, oder durch Bits in irgend einem DB.

Also mit anderen Worten: ein Schrittmerker ist sowieso sinnvoll.

In der Schrittkette selbst habe Ausgänge meiner Meinung nach schlicht nichts verloren.

Also schreibst du bei der Ausgangszuweisung:
O Schritt_1
O Schritt_2
= Motor

O Schritt_2
O Schritt_3
= Ventil

...


Ausgänge setzen bzw. rücksetzen sollte man sowieso vermeiden, wo auch immer möglich.

Mfg
Manuel
 
Ob man jetzt einen Ausgang x-mal setzt / rücksetzt oder einen Merker. Wo liegt da der Unterschied ?
Außer dem, daß es sich anders liest.

Da ist kein Unterschied, nur das man nicht Merker oder Ausgänge X-mal setzen/rücksetzen sollte. Aber auch das ist eine Sache der Ansicht.
Versuch mal ein Programm in AWL zu lesen, ohne Kommentare über 500 Zeilen, in denen ein Ausgang z.B. 10mal gesetzt und wieder zurückgesetzt wird.

Wir reden hier nicht davon was technisch möglich ist, nur was sinnvoll ist.
Der Programmiere hat ja nur gesagt so etwas sollte man nicht und geht nicht.
Man kann das so machen, und als Know-How Schutz deklarieren
Und wenn hier einer von Resourcen spricht, in der Beziehung hab ich noch nie Probleme gehabt, und ich setzte aus Kostengründen immer nur das notwendigste ein.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
...also ich stimme da auch jabba, MSB und LL zu Merker oder DBX zu verwenden und Ausgänge nicht in S/R Gliedern verwenden ist schon sehr sinnvoll. Das mit den Resourcen ist auch so eine sache, die CPU's sind heute so Leistungsfähig, wenn man da wirklich an Grenzen stößt nimm man die nächst größere....

gruß helmut
 
Ob man jetzt einen Ausgang x-mal setzt / rücksetzt oder einen Merker. Wo liegt da der Unterschied ?..
Theoretisch gibt es keinen Unterschied, praktisch allerdings schon! Der Unterschied liegt in der einfacheren Rückverfolgbarkeit. Hast du fünf Merker, die einen Ausgang setzen, so hast du auch fünf "Pfade" zum Rückverfolgen.

Ebenso trifft es auf Programmänderungen zu. Was machst du, wenn durch einen Umbau eine grundsätzliche Verriegelung notwendig wird? Spätestens dann wird "umverdrahtet". Man findet leider immer wieder solche Schei..Programme. Meist sind es simple Vorrichtungen, manchmal auch komplexere Sachen. Es sind in jedem Fall immer wieder böse Fallen.


Gruß, Onkel
 
Ich verändere mal zur Veranschaulichung das Beispiel von MSB ein bißchen. Dann wird das angesprochene mehrfach Setzen/Rücksetzen vielleicht auch klarer ...

In der Schrittkette selbst habe Ausgänge meiner Meinung nach schlicht nichts verloren.

Also schreibst du bei der Ausgangszuweisung:
u (
O Schritt_1
O Schritt_2
)
U Motorschutzschalter
U Steuerung_Ein
= Motor

u (
O Schritt_2
O Schritt_3
)
U Vorrichtung_oben
= Ventil_Vorrichtung_vorfahren

Gruß
LL
 
dann stemm ich mich mal gegen die Rangiererei:

bei S7 V5.4 mit Operandenvorrang Symbol ist es nicht notwendig, zu rangieren.

Wird bei einem Ausgang eine zusätzliche Verknüpfung notwendig, und die Verwendung ist unübersichtlich über das Programm verstreut, hat man immer noch die Möglichkeit, diesen Ausgang durch einen Merker zu substituieren (davon abgesehen, dass so eine verstreute Verwendung fragwürdig ist).
 
...
So ganz leuchtet diese Vorgehensweise noch nicht ein.
das hatte ich überlesen ... also beantworte ich mal diese Frage:

stell Dir eine SPS wie z.B. die S5 vor: dort ist nur absolute Programmierung möglich. Jeder Programmierer bekommt für seinen Code einen Arbeitsbereich zugewiesen, in dem auch seine E/A im Merkerbereich liegen. Und dann wird mit dem Werkzeug des Rangierens der Codeschnipsel in den größeren Zusammenhang eingebunden. Daher kommt das. Und inzwischen pflegt man weitere gute Gründe dafür, obwohl inzwischen keine Hindernisse durch die absolute Adressierung mehr da sind und somit der ursprüngliche Grund weggefallen ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
weil es gerade gut zum Thema passt, hier ein praktisches Beispiel.
Vor mir liegt ein S5-Programm für eine relativ einfache Maschine (Ablaufsteuerung). Der Programmierer hat sich wahrscheinlich irgend etwas gedacht als er das Programm entwickelt hat. Laut Aussage des Betreibers ist die Maschine aber nie vernünftig gelaufen.


Hier mal der Code des ersten PB (PB254) komplett:
Code:
NETZWERK   1
0000      :U   E  8.0
0001      :=   M  64.0
0002      :U   E  8.1
0003      :=   M  64.1
0004      :U   E  8.2
0005      :=   M  64.2
0006      :U   E  8.3
0007      :=   M  64.3
0008      :U   E  8.4
0009      :=   M  64.4
000A      :U   E  8.5
000B      :=   M  64.5
000C      :U   E  8.6
000D      :=   M  64.6
000E      :U   E  8.7
000F      :=   M  64.7
0010      :***
 
NETZWERK   2
0011      :U   E  9.0
0012      :=   M  65.0
0013      :U   E  9.1
0014      :=   M  65.1
0015      :U   E  12.6
0016      :=   M  65.2
0017      :U   E  9.2
0018      :=   M  65.3
0019      :U   E  9.3
001A      :=   M  65.4
001B      :U   E  9.5
001C      :=   M  65.5
001D      :U   E  9.6
001E      :=   M  65.6
001F      :U   E  9.7
0020      :=   M  65.7
0021      :
0022      :***
 
NETZWERK   3
0023      :U   E  10.0
0024      :=   M  66.0
0025      :U   E  10.1
0026      :=   M  66.1
0027      :U   E  10.2
0028      :=   M  66.2
0029      :U   E  10.3
002A      :=   M  66.3
002B      :U   E  10.4
002C      :=   M  66.4
002D      :U   E  10.5
002E      :=   M  66.5
002F      :U   E  10.6
0030      :=   M  66.6
0031      :U   E  10.7
0032      :=   M  66.7
0033      :***
 
NETZWERK   4
0034      :U   E  11.0
0035      :=   M  67.0
0036      :U   E  11.1
0037      :=   M  67.1
0038      :U   E  11.2
0039      :=   M  67.2
003A      :U   E  11.3
003B      :=   M  67.3
003C      :U   E  11.4
003D      :=   M  67.4
003E      :U   E  11.5
003F      :=   M  67.5
0040      :U   E  11.6
0041      :=   M  67.6
0042      :U   E  11.7
0043      :=   M  67.7
0044      :***
 
NETZWERK   5
0045      :U   E  12.0
0046      :=   M  68.0
0047      :U   E  12.1
0048      :=   M  68.1
0049      :U   E  12.2
004A      :=   M  68.2
004B      :U   E  12.3
004C      :=   M  68.3
004D      :U   E  12.4
004E      :U   E  23.0
004F      :=   M  68.4
0050      :U   E  12.5
0051      :=   M  68.5
0052      :UN  M  24.7
0053      :U   E  9.4
0054      :=   M  68.6
0055      :U   E  12.7
0056      :=   M  68.7
0057      :***
 
NETZWERK   6
0058      :U   E  13.0
0059      :=   M  76.0
005A      :U   E  13.1
005B      :=   M  76.1
005C      :U   E  13.2
005D      :=   M  76.2
005E      :U   E  13.3
005F      :=   M  76.3
0060      :U   E  13.4
0061      :=   M  76.4
0062      :U   E  13.5
0063      :=   M  76.5
0064      :U   E  13.6
0065      :=   M  76.6
0066      :U   E  13.7
0067      :=   M  76.7
0068      :***
 
NETZWERK   7
0069      :U   E  18.0
006A      :=   M  74.0
006B      :U   E  18.1
006C      :=   M  74.1
006D      :U   E  18.2
006E      :=   M  74.2
006F      :U   E  18.3
0070      :=   M  74.3
0071      :U   E  18.4
0072      :=   M  74.4
0073      :U   E  18.5
0074      :=   M  74.5
0075      :U   E  18.6
0076      :=   M  74.6
0077      :U   E  18.7
0078      :=   M  74.7
0079      :***
 
NETZWERK   8
007A      :L   EW 64
007B      :T   MW 100
007C      :L   EW 72
007D      :T   MW 102
007E      :L   EW 80
007F      :T   MW 104
0080      :L   EW 88
0081      :T   MW 106
0082      :L   EW 96
0083      :T   MW 108
0084      :L   EW 104
0085      :T   MW 110
0086      :L   EW 112
0087      :T   MW 112
0088      :L   EW 120
0089      :T   MW 114
008A      :***
 
NETZWERK   9
008B      :O   M  3.1
008C      :O   M  7.5
008D      :U   M  76.0
008E      :O(
008F      :O   M  3.2
0090      :O   M  7.5
0091      :U   M  76.1
0092      :)
0093      :S   M  24.7
0094      :U   M  68.4
0095      :R   M  24.7
0096      :***
 
NETZWERK   10
          :BE
Das Ganze natürlich ohne ein Wort Kommentar.
Im Anhang kann man die Programmstruktur bewundern.
Fazit für mich: Es gibt eben absolute Könner. An denen sollte man sich kein Beispiel nehmen.
Ansonsten: Allen einen guten Rutsch und schon mal Prosit Neujahr !
eNDe
 

Anhänge

  • Struktur- Win.pdf
    28,8 KB · Aufrufe: 81
Hallo
Der Programmierer hat sich wahrscheinlich irgend etwas gedacht als er das Programm entwickelt hat.

Wenn ich nicht gerade meine Lieblings SPS programmiere, programmiere ich bei Bedarf auch öfters so...

Damit schaffe ich mir so quasi eine gewisse "Hardware-Unabhängigkeit" und kann meinen Code auf verschiedenen AG's sofort weiterverwenden. Ist nicht besonders schön (Geschmacksache), aber der Vorteil überwiegt die Nachteile. Damit bin ich bei den von mir verwendeten Kleinststeuerungen sehr flexibel, wenn der Auftraggeber aus Kostengründen wieder einmal eine andere SPS einbaut.

TwinCAT mappt übrigens E/A's die mit %I* bzw. %Q* addressiert sind, eigentlich ja auch auf "Merker", die dann eben im Systemmanager gemappt werden.

Ich wünsche Euch Allen einen guten Rutsch in's neue Jahr :sm19:
 
Ich arbeite zwar nicht mit Schrittketten aber ob man einen Merker oder einen Ausgang setzt ist völlig gleich (abgesehen von den remanenten Merkern bei Ausgangsanwendungen). Wenn mehrere Merker in einer ODER-Vernküpfung einem Ausgang zugewiesen sind dann macht das keinen Unterschied. Für mich ist es nicht sinnvoll die Eingänge und Ausgnänge auf Merker zu legen. Jedenfalls nicht auf Biegen und Brechen.
Ein Kollege fasst alle ein und ausgangsbits zu Merkwörter zusammen und trennt diese dann in Merkbits. Das macht sehr viel Spass wenn jemand mit Hilfe des E-Plans als Ausgangsbasis arbeiten muß.

Prinzipiell schreibe ich aber auch nur einmal in Oder-verknüpfungen auf Ausgänge.
Die Fehlersuche wird dadurch einfacher.
Gegen ein mehrmaliges verwenden von Eingängen spricht jedoch nichts.

Das Argument bei Ändern der EIngangsadresse mit Merkern "flexibler" zu sein kann mit Hilfe des "umverdrahtens" und der "Symboltabelle" entkräftet werden.
 
Zurück
Oben