Befehlsverständnis (Eingänge spiegeln)

Daimonion

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

Ich hab gerade in einer neuen Firma den Posten als Softwareentwickler übernommen und bin auch schon dabei die ersten Projekte zu programmieren. Um die neuen Kollegen nicht vollends für ein neues Programmierkonzept zu stoßen, hab ich mir erst mal deren bestehende Projekte angesehen und möchte das System derer adaptieren.

Dabei ist mir folgendes Netzwerk aufgefallen das unter dem Namen Signalumsetzer läuft:

Code:
      L     ED    32
      T     ED    20
      L     ED    36
      T     ED    24
      L     ED    40
      T     ED    28
      L     ED    44
      T     ED    32
      L     ED    48
      T     ED    36

Ist doch eigentlich Blödsinn dieses Netzwerk oder?
Meine Kenntnisse sagen mir, dass das gar nicht geht, da die Eingangsbytes zum einen ja mit jedem Zyklus als Prozessabbild geschrieben werden und zum anderen hier die Eingänge mehrmals überschrieben werden (siehe ED32).

Sollte dieses Netzwerk einen echten Sinn haben, so würde ich euch bitten mir den zu schildern.

Danke für die Infos.

PS.: Ich hab nochmal einen Screenshot des Netzwerks gemacht, damit ihr euch das Ding in der gewohnten Step7-Umgebung anschauen könnt.
 

Anhänge

  • Eingänge spiegeln.png
    Eingänge spiegeln.png
    3,3 KB · Aufrufe: 29
also a) es geht. nach bearbeitung dieses netzwerkes sind die 20byte ab EB32 auf den 20byte ab EB20 verfügbar

b) den tieferen sinn kann dir nur der erklären, der es verzapft hat (da ja auch jegliche kommentare fehlen und das umfeld nicht bekannt ist...)
 
das macht schon sinn, es wird hier mit dem Peripherieabbild gearbeitet.
die eingänge werden von höheren auf niedrigere adressen verschoben.
könnte seine ursache in einer anpassung haben z.b. wenn andere peripherie verbaut wurde und die adressen nicht im ganzen programm
nachgezogen werden sollen.
ist aber def. kein schöner stil!
besser währe dann schon umverdrahten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... hab ich mir erst mal deren bestehende Projekte angesehen und möchte das System derer adaptieren.
Dabei ist mir folgendes Netzwerk aufgefallen ...
derartiges würde ich nicht adaptieren wollen.

... Ist doch eigentlich Blödsinn dieses Netzwerk oder? ...
tnt369 hat dazu eigentlich bereits alles gesagt. Was mir noch dazu einfällt, ist, dass möglicherweise Deine Kollegen es gewohnt sind, mit absoluter Adressierung zu arbeiten.
 
Okay, danke dann bin ich ja beruhigt, dass nicht ich mit gefährlichem Halbwissen arbeite, sondern offensichtlich der andere Programmierer. ;)

Kurz zum Umfeld.

Es sind neue Anlagen und es handelt sich nicht um eine Umverdrahtung. Neben einigen Steuerungsaufgaben hat die CPU hauptsächlich die Aufgabe die Schnittstelle zwischen den unterschiedlichen Maschinenteilen zu bilden. Daher der eigentliche Name, des FC "Schnittstellenumsetzer". (Hab ich vorhin nicht erwähnt)

Das das Netzwerk selber so schon funktioniert ist mir klar, auch dass die Peripherie der Eingänge verändert wird. Halt nur bis zum nächsten Prozessabbild. ;)
Die Sinnhaftigkeit stell ich hier jetzt mal ganz groß in Frage. Ursprünglich ging ich davon aus, dass es sich um einen Schreibfehler handelt und der Programmierer (er ist nicht mehr in der Firma) die Eingänge auf die Ausgänge spiegeln wollte (Signalumsetzer). Lustigerweise findet sich dieses Netzwerk aber in fast jeder Anlage die eine Siemens CPU hat und ähnliche Aufgaben erledigt. Also entweder nur Blind kopiert oder Mist gebaut. Die genauen Auswirkungen auf die eigentlichen Aufgaben muss ich mir nochmal anschauen da der FC ungefähr in der Hälfte des OB1 Zykluses aufgerufen wird.


Danke für eure Antworten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
[Klugscheißmodus] + [Ego-Modus]
Na ja, jetzt bin ich ja da... ;)
[/Klugscheißmodus] + [/Ego-Modus]

Im Ernst. Die Firma hängt hinsichtlich der Softwareentwicklung bei Ihren Anlagen noch in den Seilen. Es soll nun aber eine Abteilung aufgebaut werden die das Auffangen soll.

Ich hoffe für meine Zukunft hier, dass ich alles zur Zufriedenheit erledigen kann und auch nicht selbst mal Mist baue. Manchmal sieht man ja den Wald vor lauter Bäumen nicht. ;)
 
Du solltest den Ego-Mode eine Weile aktiviert lassen und dein eigenes Programmkonzept etablieren. Geh einfach mal davon aus, dass Du in den nächsten Jahren dort sitzen wirst. Da willst Du dich bestimmt nicht mit Altlasten rumschlagen.
Eine Frage hätte ich dann doch noch:
Welche Adressen werden in der Hardwareconfig für die Eingänge verwendet?
Werden dann innerhalb des Programmes diese Eingänge abgefragt?
Und wenn ja welche? ED20 oder ED 32?
Und was passiert wenn Du den Baustein mal nicht aufrufst?

Upps das waren mehrere Fragen :)
 
Hallo,

wenn schon so etwas gemacht wird ( L ED32, T ED20) dann doch bitteschön so: L PED32, T PED20 !! Dann hast Du wenigstens den aktuellen E-Status.

Deine CPU liest erst die Eingänge, dann Abarbeitung Programm, dann schreibe Ausgänge,......

Wenn nun auf PED/PAD gelesen/geschrieben wird, dann ist das unmittelbar (als wenn das Programm gestoppt, die Ein-und Ausgänge eingelesen werden, danach das Programm weiterläuft).....

MfG Stephan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
da stimme ich nicht zu. peripherie eingänge können dirket gelesen werden, aber das schreiben auf einen eingang in der peripherie ist nicht möglich.

das direkte lesen von der peripherie macht sinn wenn der zustand des eingang während des zyklus aktualisiert werden soll.

dto. ist das lesen eine peripherie ausgang ebenfalls nicht möglich, das schreiben aber sehr wohl.

in dem fred geht es aber um das bearbeiten des abbild, und da ist sowohl lesen wie schreiben möglich.
 
Du solltest den Ego-Mode eine Weile aktiviert lassen und dein eigenes Programmkonzept etablieren. Geh einfach mal davon aus, dass Du in den nächsten Jahren dort sitzen wirst. Da willst Du dich bestimmt nicht mit Altlasten rumschlagen.

Das werde ich auch machen! ;)

Eine Frage hätte ich dann doch noch:
Welche Adressen werden in der Hardwareconfig für die Eingänge verwendet?
Werden dann innerhalb des Programmes diese Eingänge abgefragt?
Und wenn ja welche? ED20 oder ED 32?
Und was passiert wenn Du den Baustein mal nicht aufrufst?

Also in der Hardwarekonfig werden die oberen Adressen an dem jeweiligen Gerät parametriert, also z.B. ED32 aufwärts und die unteren (ED20, etc.) werden nicht vergeben. Insofern ist das momentan nur halb so schlimm und die Anlagen funktionieren ja auch. Aber ich frag mich wieso dort nicht gleich die richtigen EA Adressen angegeben wurden...

Testen kann ich das alles nicht mehr, da die Anlagen seit einigen Jahren in Betrieb sind..

Anyway. Ich werde mal bei Gelegenheit meinen Kollegen drauf ansprechen. Vielleicht weiß der was darüber. Nur ist er leider momentan nicht da.
 
@ Stephan:

also bitteschön ...

Das Verbiegen des PAE, dazu noch mitten im Programmablauf ist schon nicht schön. Aber jetzt nicht auch noch mit Peripherie direkt lesen anfangen. Wenn man es ganz normal über PAE abwickeln kann, hat man schon mindestens zwei Stolpersteine weniger.
 
Hallo,

@Perfektionist

Ab und an benutzt man halt PED, um bei langsamen CPU evtl. Signale einzusammeln die relevant sind (Vorschubkontrollen, Teilekontrollen, etc.), der Betreiber sich aber davor sträubt,in eine schnellere CPU zu investieren...

MfG Stephan
 
was mir noch einfällt: evtl. wird das "verbiegen" der eingänge mitten im zyklus dazu genutzt um mit zwei "eingangs-signal-quellen" ein und dieselbe funktion zu versorgen.

im ersten teil des zyklus arbeitet die funktion mit e20...
dann werden die eingänge umkopiert
im zweiten teil arbeitet die funktion dann wieder mit e20... (in dem fall aber in wirklichkeit mit e32...)

evtl. wird das ganze ja bedingt aufgerufen?

es ist und bleibt aber kein schöner programmierstil

bei der anlage möchte ich keine fehler suchen (ist e20... nun da oder nicht? oder ist es e32... ???) ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Solche Dinge findest du öfters in modularen Serienmaschinen. Ist wohl historisch gewachsen und ein Relikt aus uralten S5-Tagen.
Damit kannst für jedes Anlagenmodul den Programmteil beibehalten und adaptierst nur durch diese "tollen" Netzwerke die Hardware.

Wenn du es "modernisieren" willst, dann schreibst du deine E/A's in DBs.

Gruß
Dieter
 
@Stephan SST:
ich nutze das lesen (aktualisieren) der eingänge meist in zeitgesteuerten bausteinen um ein möglichst aktuelles signal zu haben (z.B. impulse zählen).

dabei achte ich aber darauf die eingänge nicht zu verbiegen. es sollte nur auf den selben eingang (z.b. L PEW20 T EW20) oder auf temp. variablen umkopiert werden.
 
Zurück
Oben