Zeit umzudenken: Indirekte Adressierung???

MeTh

Level-2
Beiträge
69
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin Elektriker und bin bei uns in der Fa. unter anderem zuständig für SPSn.
Ich hatte in der Schule S5 und einen Kurs für Step7 bei Siemens.

D.h mein erlerntes ist...
Code:
U E1.0
U E1.1
= A1.0
... und dass auch noch in FUB.

Ich habe mir einiges in AWL angeeignet, benutze aber überwiegend FUB.

Da ich im Forum immer wieder von "indirekter Adressierung" gehört habe,
und (so glaube ich) einigermaßen verstanden habe, wie dass Funktioniert und ich für "neues" offen bin, hab ich vorab dann doch noch ein paar kritischere Fragen:

1.Fehlersuche
Ich gehe bisher immer so vor, dass ich mir die Globalvariablen (M, A, E, ...)
Anschaue und dann im Status auf Fehlersuche gehe.

Bei VB ist es so, dass man einen Haltepunkt setzten kann in der Funktion, in der man den Fehler sucht.

Wie Funktioniert dass bei der indirekten Adressierung? Man kann dann werder noch einsetzten.

2.Übersichtlichkeit
Wird das Programm übersichtlicher, wenn man indirekt Adressiert?

3.Geschwindigkeit und Speicherplatz
Ich denk mal Speicherplatz müsste man sparen können. Aber Geschwindigkeit?

4.Schnellere Programmerstellung?
Wenn man so Programmiert, kommt man dann schneller an's Ziel
(wenn man mit der Technik vertraut ist).

5.Vorgaben an Programmierer
Wir kaufen einige Anlagen zu. Macht es Sinn diesen Programmierern vorzuschreiben, das Programm so zu schreiben?



Wenn der Trend in diese Richtung geht und die Vorteile deutlich höher sind als anders, dann werde ich versuchen diese Richtung einzuschlagen.

Hoffe, dass sich viele melden.
Wenn es weitere Vor-/Nachteile gibt, immer her damit.

Danke.de und weiterhin viel Erfolg

MeTh.
 
Warum versuchst Du das indirekte adressieren in Konkurrenz zu irgendetwas zu setzen es ist ein "Werkzug" um bestimmte Aufgaben zu lösen. Man sollte nicht immer nach Vor- und Nachteilen suchen sondern die Stärken und Schwächen erkennen und es nach Möglichkeit richtig einsetzen. Die indirekte Adressierung ist wahrscheinlich nur für einen kleinen Teil eines Programms wirklich wichtig. Aber meist sind das die kniffligen Stellen im Programm. Noch haben wir hier ja einen guten Anteil an Profis die gerade an den schwierigen Stellen hier oft mit indirekter Adressierung die Aufgabe lösen können die der Fragesteller führ schwer gehalten hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1.Fehlersuche
Ich gehe bisher immer so vor, dass ich mir die Globalvariablen (M, A, E, ...)
Anschaue und dann im Status auf Fehlersuche gehe.

Bei VB ist es so, dass man einen Haltepunkt setzten kann in der Funktion, in der man den Fehler sucht.

Wie Funktioniert dass bei der indirekten Adressierung? Man kann dann werder noch einsetzten.
stimmt, man kann dann nur noch die Statusbits, AKKUs und Adressregister in AWL beobachten, Querverweise gibts auch keine mehr

2.Übersichtlichkeit
Wird das Programm übersichtlicher, wenn man indirekt Adressiert?
NEIN
3.Geschwindigkeit und Speicherplatz
Ich denk mal Speicherplatz müsste man sparen können. Aber Geschwindigkeit?
weder noch

4.Schnellere Programmerstellung?
Wenn man so Programmiert, kommt man dann schneller an's Ziel
(wenn man mit der Technik vertraut ist).
NEIN

5.Vorgaben an Programmierer
Wir kaufen einige Anlagen zu. Macht es Sinn diesen Programmierern vorzuschreiben, das Programm so zu schreiben?
bist du verrückt??

Wenn der Trend in diese Richtung geht und die Vorteile deutlich höher sind als anders, dann werde ich versuchen diese Richtung einzuschlagen.
Indirekte Programmierung (zumindest bei S7) ein reines Mittel zum Zweck - aber nur wenns nicht anders geht. Wer will schon einen Eingang suchen, der mit
Code:
L E [MD0]
adressiert ist. Mir ist da immer noch
Code:
L E 0.0
lieber.

Mir ist nicht so recht klar, wie man so einen Thread verfassen kann. Hast Du den Begriff "Indirekte Programmierung" irgendwo aufgeschnappt, und denkst Du jetzt dass dies das Nonplusultra ist?? Was verstehst Du darunter, dass es Dich jetzt so fasziniert?

mfg
Maxl
 
Also als abschreckendes oder anspornendes Beispiel sollte das hier dienen:
http://www.sps-forum.de/showpost.php?p=80267&postcount=7
S7-Guy hat die Methodik der indirekten Adressierung wirklich voll durchgezogen.

Lad dir die ZIP-Datei mal runter und schau dir das an,
wenn es das ist was du willst kannst du das dann von mir aus auch vorschreiben :)!

Indirekte Adressierung ist manchmal zwar unumgänglich bzw. sinnvoll,
aber außer bei SCL ist diese bei Siemens irgendwie unübersichtlich.

Mfg
Manuel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also so sollte man die indirekte Adressierung nicht unbedingt einsetzen. Das ist schon ein bissel übertrieben.

Man sollte sie dort einsetzen wo man sie braucht oder sie etwas vereinfacht!
 
Mein lieber Herr Gesangverein, das Beispiel fetzt :-D

.

Aber es fetz eher abartig, das würde ich mich wohl nicht trauen, einem Kunden vorzusetzen. Ob S7-Guy das selbst Inbetriebnehmen mußte? Wirklich ein abschreckendes Beispiel, zeigt aber, daß er immerhin wußte wie es funktioniert.

Ansonsten kann man indirekte Adressierung schon einsetzen, aber da wo es sinnvoll ist.
 
Aber es fetz eher abartig, das würde ich mich wohl nicht trauen, einem Kunden vorzusetzen. Ob S7-Guy das selbst Inbetriebnehmen mußte? Wirklich ein abschreckendes Beispiel, zeigt aber, daß er immerhin wußte wie es funktioniert.

Ansonsten kann man indirekte Adressierung schon einsetzen, aber da wo es sinnvoll ist.

@Ralle

das ... fetzt... war unabhängig vom ggfn. Einsatz.

UND

Es gibt alleswissenwollende - allesselbstmachenwollende - sichalleserklärenlassenwollende - allesverstehenwollende KUNDEN


UND

Es gibt zehnjahredauersehlsorgepatienten


Bei letzteren Kunden da kannste machen "waste" willst.



Aber man sollte alles schon noch selbst in ein paar Jahren verstehen können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Ralle

das ... fetzt... war unabhängig vom ggfn. Einsatz.

UND

Es gibt alleswissenwollende - allesselbstmachenwollende - sichalleserklärenlassenwollende - allesverstehenwollende KUNDEN


UND

Es gibt zehnjahredauersehlsorgepatienten


Bei letzteren Kunden da kannste machen "waste" willst.



Aber man sollte alles schon noch selbst in ein paar Jahren verstehen können.

100% Ack, LOGO :ROFLMAO:
 
nocht nicht gebraucht

Hier auch noch mein Senf dazu:

Ich hab's bis jetzt noch nicht gebraucht (Es sei denn, ihr zählt die AT - Anweisung in SCL auch dazu)

Ich behaupte es ist unnötig und funktioniert auch ohne indirekte Adressierung. Vielleicht etwas umständlicher auf den ersten Blick, aber im Nachhinein vorteilhafter.

Aber ihr könnt gern mal ein Beispiel bringen, wo es gebrauch werden sollte ...

Gruss

Frank
 
Hier auch noch mein Senf dazu:

Ich hab's bis jetzt noch nicht gebraucht (Es sei denn, ihr zählt die AT - Anweisung in SCL auch dazu)

Ich behaupte es ist unnötig und funktioniert auch ohne indirekte Adressierung. Vielleicht etwas umständlicher auf den ersten Blick, aber im Nachhinein vorteilhafter.

Aber ihr könnt gern mal ein Beispiel bringen, wo es gebrauch werden sollte ...

Gruss

Frank

Z.Bsp. suche ich meinen Störmelde-DB über indirekte Adressierung durch, ob eine Störmeldung anliegt. Das ist dann eine kleine, einfache Schleife. Natürlich, wenn man alle Sachen, die man in AWL mit indirekter Adressierung besser machen kann, in SCL auslagert, braucht man nicht unbedingt mit indirekter Adressierung umzugehen. SCL macht es im generierten Code allerdings massiv, nicht nur beim AT-Befehl.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier auch noch mein Senf dazu:

Ich hab's bis jetzt noch nicht gebraucht (Es sei denn, ihr zählt die AT - Anweisung in SCL auch dazu)

Ich behaupte es ist unnötig und funktioniert auch ohne indirekte Adressierung. Vielleicht etwas umständlicher auf den ersten Blick, aber im Nachhinein vorteilhafter.

Aber ihr könnt gern mal ein Beispiel bringen, wo es gebrauch werden sollte ...

Gruss

Frank

Wie Ralle schon sagt bei Störmeldungen usw setze ich es auch ein oder wenn ich einzelne Bits von Variablen adressieren will.
Bei meinem Werkmeisterprojekt hab ich bei meiner Anlage eine Stapelanlage auch dabei gehabt und da habe ich die Ablagepositionen nur über indirekte Adressierung erreichen können usw...

godi
 
...
Es hat eben unmittelbar etwas mit der Aufgabenstellung zu tun.

In einem Standard-Programm habe ich auch keine ind. Adressierung drin. Wenn ich aber einen Speicherbereich (DB) durchsuchen oder irgendwie manipulieren möchte, dann geht es m.E. nicht ohne. Ich muss allerdings auch gestehen, dass ich in letzter Zeit diese Dinge fast nur noch mit SCL mache ...
 
Na das klingt jetzt so, ich bin überzeugter AWL'er aber in Wirklichkeit anonymer SCL-FAN ;-)

Ne, mal im Ernst, die meisten denke ich tun sich mit einer Schleife über ein Array (was in der Tat nach der Überstezung auf eine indirekte Adressierung rausläuft, aber dann nicht mehr interessiert) leichter, wenn man in drei Jahren da nochmal reinschaut - oder wenn man's nachvollziehen muss, was ein anderer gemacht hat, der aber nicht mehr verfügbar ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na das klingt jetzt so, ich bin überzeugter AWL'er aber in Wirklichkeit anonymer SCL-FAN ;-)

Ne, mal im Ernst, die meisten denke ich tun sich mit einer Schleife über ein Array (was in der Tat nach der Überstezung auf eine indirekte Adressierung rausläuft, aber dann nicht mehr interessiert) leichter, wenn man in drei Jahren da nochmal reinschaut - oder wenn man's nachvollziehen muss, was ein anderer gemacht hat, der aber nicht mehr verfügbar ist.

Ja sicher, aber nicht jeder hat SCL (sogar eher wenige, in meinem Umfeld), nicht jeder kann SCL und nicht jeder darf SCL einsetzen. Ich mach es meißt gleich in AWL, weil ich keinen extra Baustein brauche und es i.d.R. um kleinere Sachen geht oder um Dinge, die eh in einem eigenen"Standard-Baustein" drin sind. Auf jeden Fall überwiegt der Anteil der "normalen" Logik im eigentlichen Programm.
 
Interessantes Thema mit der indirekten Adressierung.
Ich kenne eine Anlagenfirma die die gesamte Ein-und Ausgangsperiferie.
über die indirekte Adressierung einliest, nach einem sebst geschiebenen
Schlüssel in Datenbausteinen verschwinden lässt.
Selbst ihre eigene Visualisierung ist mit der Automatisierung mit speziellen
Bausteinen unzertrennlich verzahnt.
Das System ist sehr schwer zu entschlüsseln, aber das ist ja von der Firma auch so gewollt. Abhängigkeiten schaffen.
Leider geht der Schuss nach hinten los. Diese Anlagen stehen bei uns
auf der Liste der Anlagen, die als erstes umgebaut werden.
Diese Firma bekommt bei uns keinen Auftrage mehr.
 
Interessantes Thema mit der indirekten Adressierung.
Ich kenne eine Anlagenfirma die die gesamte Ein-und Ausgangsperiferie.
über die indirekte Adressierung einliest, nach einem sebst geschiebenen
Schlüssel in Datenbausteinen verschwinden lässt.
Selbst ihre eigene Visualisierung ist mit der Automatisierung mit speziellen
Bausteinen unzertrennlich verzahnt.
Das System ist sehr schwer zu entschlüsseln, aber das ist ja von der Firma auch so gewollt. Abhängigkeiten schaffen.
Leider geht der Schuss nach hinten los. Diese Anlagen stehen bei uns
auf der Liste der Anlagen, die als erstes umgebaut werden.
Diese Firma bekommt bei uns keinen Auftrage mehr.

100% Ack

Ich halte es auch so, indirekte Adressierung nur da einzusetzen, wo nötig.
U.a. auch aus den von dir genannten Gründen. Wir haben auch fast nur Kunden, die auch selbst mal bei einem Problem in die SPS reinschauen wollen. Mir ist das auch durchaus recht, das spart mir u.U. einen Serviceeinsatz, also versuch ich es so zu proggen, daß auch andere das verstehen können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... also versuch ich es so zu proggen, daß auch andere das verstehen können.

Lobenswerte Einstellung - wird leider nicht von jedem geteilt - aber das hatten wir ja schon.

Dennoch läßt es sich ja nicht leugnen, dass es da hin und wieder ein paar Aufgaben gibt, die sich nur (oder besser) mit ind. Adressierung lösen lassen. Sei es , dass ich ein Aggregat (oder eine ganze Maschine) mal mit dem einen und mal mit dem anderen Datensatz laufen lassen möchte. Oder ich möchte einen bestimmten Wert in einer Werte-Tabelle finden ... oder ... oder ... oder ...

@Kiestumpe: Ich bin kein anonymer sondern ein bekennender SCL-Fan.
 
Vollkommen richtig, das wo es notwendig ist setzt ich es ja auch ein.
Aber um mich unentbehrlich zu machen, das geht in meinen Augen für die
Anlagenbauer voll nach hinten ab.
Wie schon gesagt, der bekommt bei uns nicht mehr auf´n Hof.
Der Ergeiz ist so groß, das bei notwendigen Änderungen andere Wege
eingeschlagen werden um ja nicht mit der Firma zu arbeiten.:ROFLMAO:
 
1.Fehlersuche
2.Übersichtlichkeit
3.Geschwindigkeit und Speicherplatz
4.Schnellere Programmerstellung?
5.Vorgaben an Programmierer

Zu 1. 2. 4.
Die Übersichtlichkeit ist bei weitem nicht so gut wie bei "konventioneller" Programmierung. Die Fehlersuche wird deutlich schwieriger. Man muß immer um die Ecke denken, denn man sieht den Zustand der Operanden nicht mehr direkt sondern nur doch Verweise darauf.

Allein schon das keine Querverweise zu den indirekt angesprochenen Operanden möglich sind, ist Grund genug um weitgehend ohne Pointer zu arbeiten.

Jeder brauchbare SPS-Programmierer, der Wert auf die Les- & Wartbarkeit seiner Software legt wird Pointer sparsam einsetzen und nur dort verwenden wo diese auch sinnvoll sind.

Zu 3.
Es gibt Teilaufgaben / Problemstellungen (z.B. Speicherbereiche durchsuchen) in fast jeder Software die lassen sich mit Pointern recht komfortabel lösen und die Nachteile verschmerzen. Dort wird man natürlich nicht auf die Zeiger verzichten.

Zu 5.
Ich rate Dir nie etwas vorzuschreiben das Du nicht kennst bzw. dessen Auswirkungen Du Dir nicht sicher bist. Im worst case erhältst Du eine Software die quasi unwartbar ist.

Am besten ist es Du schreibst das vor was ihr beherrscht. Nimm die Punkte die Dir bei den bestehenden Maschinen gut gefallen und forme daraus ein Vorschriftenpaket das die Softwareentwicklung in die richtige Richtung leitet. Ob das nun Modern ist oder nicht ist erstmal nebensächlich. Wenn Ihr nur FUP könnt, dann schreibe für die wesentlichen Programmteile FUP vor. (wobei es m.E. besser wäre AWL und/oder ST zu lernen.. )

Wichtig erscheint mir die Abhängigkeit von einem externen Programmierer gering zu halten. Die Software muß so aufgebaut und kommentiert sein, dass man selbst oder ein Mitbewerber das Programm ändern bzw. erweitern kann.

Formuliere Dein Lastenheft so, dass auch deutlich wird, dass neue Ideen des Programmieres willkommen sind, aber mit Dir vor Umsetzung abgestimmt werden müssen.
 
Zurück
Oben