TIA Eingangswort ab Basisadresse lesen....wie macht man das am besten....

Zuviel Werbung?
-> Hier kostenlos registrieren
Wir verwenden dafür immer get_io und set_io.
Zu dieser GETIO/SETIO-Geschichte habe ich 2 Fragen:
  • Wie sehen die Querverweise und der Belegungsplan der E/A-Adressen aus, wenn man per GETIO/SETIO auf die E/A zugreift?
    PS: Wie sehen die Querverweise und der Belegungsplan aus, wenn man per PLC-Datentyp die E/A an den FB übergibt?
  • Die TIA-Hilfe (V13 und V14) erklärt daß bei modularen Devices (wie hier beim TE) GETIO/SETIO nur auf ein Modul des Devices zugreift - muß man da nun wirklich jedes einzelne E-Modul und A-Modul am FB verschalten damit im FB mit GETIO/SETIO auf die E/A-Adressen zugegriffen werden kann?
    Falls das so ist, warum verwendet man dann so umständlich/aufwändig GETIO/SETIO? Dann könnte man ja auch einfach direkt die E/A-Adressen/Symbole beim FB-Aufruf verschalten (oder die beiden PLC-Datentypen).

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
  • PS: Wie sehen die Querverweise und der Belegungsplan aus, wenn man per PLC-Datentyp die E/A an den FB übergibt?
Im Belegungsplan wird nur die Belegung der Anfangsadresse angezeigt:
In meinem Beispiel von oben, EW2-5 wird nur E2.0 angezeigt, bleibt man mit dem Mauszeiger auf dem Punkt, wird auf die Variable in der Variablentabelle verwiesen.

Belegungsplan.PNG

Querverweis:
Querverweise.PNG
(Wird einmal von einem FB im OB1, NW2 gelesen)
 
Also, ich habe es aufgebaut und es geht. Der Speicherplatz hat sich nun verschoben. Erst war er in dem IDB von dem Baustein in der ich die LogikWaage aufgerufen habe. Nun ist der Speicher in den Aufruf der LogikWaage selber. Aber das ist mir sogar noch lieber. Denn nun kann ich es "einfacher" finden. Danke für die Hilfe.

Ich muss noch ein Output machen. Aber das kann ich ja genau so aufbauen und das Beispiel zeigt es ja.
 
PS: Wie sehen die Querverweise und der Belegungsplan aus, wenn man per PLC-Datentyp die E/A an den FB übergibt?
Die Querverweise so, wie die Zugriffe erfolgen.
Zugriffe auf den gesamten udt, werden auch nur dort angezeigt.
Zugriffe direkt auf eine Variable des udt, werden beim gesamten udt und bei der einzelnen Variable angezeigt.

Lokale Zugriffe auf einzelne Variablen eines insgesamt an den Baustein übergebenen udt werden nicht an den einzelnen Variablen angezeigt, nur der Übergabepunkt für den gesamten udt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zu dieser GETIO/SETIO-Geschichte habe ich 2 Fragen:
  • Wie sehen die Querverweise und der Belegungsplan der E/A-Adressen aus, wenn man per GETIO/SETIO auf die E/A zugreift?
    PS: Wie sehen die Querverweise und der Belegungsplan aus, wenn man per PLC-Datentyp die E/A an den FB übergibt?
  • Die TIA-Hilfe (V13 und V14) erklärt daß bei modularen Devices (wie hier beim TE) GETIO/SETIO nur auf ein Modul des Devices zugreift - muß man da nun wirklich jedes einzelne E-Modul und A-Modul am FB verschalten damit im FB mit GETIO/SETIO auf die E/A-Adressen zugegriffen werden kann?
    Falls das so ist, warum verwendet man dann so umständlich/aufwändig GETIO/SETIO? Dann könnte man ja auch einfach direkt die E/A-Adressen/Symbole beim FB-Aufruf verschalten (oder die beiden PLC-Datentypen).

Harald

Naja der TE wollte Symbolisch programmieren! Und symbolisch beginnt nun mal in der Hw Konfig!

Ich gebe dir jedoch recht das es über getio und setio sicher aufwändiger ist, als einfach einen UDT anzulegen. Fakt ist, bei Siemens ist es fast nicht möglich komplett Symbolisch zu programmieren. Also kann man es weglassen...
 
Zuletzt bearbeitet:
Fakt ist, bei Siemens ist es fast nicht möglich komplett Symbolisch zu programmieren.
Na, irgendwo muß doch ein EA-Symbol mit einer EA-Adresse verknüpft werden - was kann man Siemens da vorwerfen? :confused:


Könntest Du mit Deiner Erfahrung bitte noch meine Frage beantworten:
  • Die TIA-Hilfe (V13 und V14) erklärt daß bei modularen Devices (wie hier beim TE) GETIO/SETIO nur auf ein Modul des Devices zugreift - muß man da nun wirklich jedes einzelne E-Modul und A-Modul am FB verschalten damit im FB mit GETIO/SETIO auf die E/A-Adressen zugegriffen werden kann?
Mit anderen Worten: kann man GETIO/SETIO irgendwie so verwenden, daß mit nur 1 Aufruf die Werte aller Steckplätze einer Baugruppe gelesen bzw. geschrieben werden oder muß man wirklich GETIO/SETIO für jeden Steckplatz einzeln extra aufrufen (also genau wie DPRD_DAT/DPWR_DAT)?

Harald
 
Könntest Du mit Deiner Erfahrung bitte noch meine Frage beantworten:

Mit anderen Worten: kann man GETIO/SETIO irgendwie so verwenden, daß mit nur 1 Aufruf die Werte aller Steckplätze einer Baugruppe gelesen bzw. geschrieben werden oder muß man wirklich GETIO/SETIO für jeden Steckplatz einzeln extra aufrufen (also genau wie DPRD_DAT/DPWR_DAT)?

Harald

Ja muss man.

Ich habe Siemens überhaupt nichts vorgeworfen. Ich sage lediglich das nicht durchgehend symbolisch programmieren kann wie bei Rockwell zum Beispiel.

Den Spruch mit der Erfahrung kannst du dir schenken... Ich wollte nur helfen und lasse mich definitiv nicht von der Seite anmachen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier hat dich niemand blöd angemacht, bist du heute mit dem falschen Fuß aufgestanden? Trink mal ein Beruhigungsbier.

PN/DP hat doch ganz normal gefragt, weil du mit dieser Methode offenbar mehr Erfahrung hast, als er.
 
Könntest Du mit Deiner Erfahrung bitte noch meine Frage beantworten:

Mit anderen Worten: kann man GETIO/SETIO irgendwie so verwenden, daß mit nur 1 Aufruf die Werte aller Steckplätze einer Baugruppe gelesen bzw. geschrieben werden oder muß man wirklich GETIO/SETIO für jeden Steckplatz einzeln extra aufrufen (also genau wie DPRD_DAT/DPWR_DAT)?

Harald
Ja muss man.
Hmm, ich meine, mal irgendwo bei Siemens gelesen zu haben daß GETIO/SETIO mit nur einem Aufruf sämtliche Steckplätze eines Gerätes ansprechen würde - da muß ich wohl was falsch verstanden haben. (Und hatte das dummerweise auch noch hier im Forum als Fakt verkündet :oops:)

Ich habe mit GETIO/SETIO Null Erfahrung und kann mir nun nicht vorstellen, wozu diese neumodischen Funktionen überhaupt gut sein sollen.
Wieso eigentlich nennt Siemens die Anweisung GETIO in der TIA-Hilfe "GETIO: Prozessabbild lesen"? Was hat GETIO mit einem Prozessabbild zu tun?


Den Spruch mit der Erfahrung kannst du dir schenken... Ich wollte nur helfen und lasse mich definitiv nicht von der Seite anmachen!
Ohh, aus Deinem Spruch "Wir verwenden dafür immer get_io und set_io." hatte ich interpretiert, daß Du mehr Erfahrung haben müsstest als ich, der noch nie GETIO/SETIO verwendet hat. Und daß Dir die Beantwortung meiner mich brennend interessierenden Frage daher wohl ziemlich leicht fallen müsste. In #26 hast Du meine Frage zwar zitiert, aber nicht beantwortet, bist überhaupt nicht drauf eingegangen. Deshalb habe ich meine Frage nochmal gestellt mit der Andeutung daß ich auf Deine Erfahrung baue... ich habe nicht geahnt, daß ich damit bei Dir irgendeinen Punkt treffe ;)

Wie oben geschrieben befand ich mich gerade in einer "Glaubenskrise" was ich glauben soll - der oft fehlerhaften TIA-Hilfe und den Unser-TIA-ist-super!-Artikeln kann man ja nicht ohne eigenes Nachprüfen trauen... Ich wollte halt eine Erklärung von jemandem der GETIO/SETIO wirklich anwendet und tatsächlich praktische Erfahrungen damit hat.


Ich habe Siemens überhaupt nichts vorgeworfen. Ich sage lediglich das nicht durchgehend symbolisch programmieren kann wie bei Rockwell zum Beispiel.
Was genau kann man denn bei Siemens nicht symbolisch programmieren, was man aber bei Rockwell kann? Wie spricht man bei Rockwell Hardware-EA "durchgehend symbolisch" an? Ich frage, weil ich mit Rockwell auch fast keine Erfahrungen habe.

Harald
 
Ohh, offiziell von mir Entschuldigung, ich hatte dies ganz falsch verstanden...

Nun nochmals ganz in Ruhe von oben nach unten:

Ich habe mit GETIO/SETIO Null Erfahrung und kann mir nun nicht vorstellen, wozu diese neumodischen Funktionen überhaupt gut sein sollen.
Wieso eigentlich nennt Siemens die Anweisung GETIO in der TIA-Hilfe "GETIO: Prozessabbild lesen"? Was hat GETIO mit einem Prozessabbild zu tun?

Wenn du so willst liest du ja nichts anderes als über eine Hardwarekennung das Prozessabbild. Oder verstehe ich das falsch?

Was genau kann man denn bei Siemens nicht symbolisch programmieren, was man aber bei Rockwell kann? Wie spricht man bei Rockwell Hardware-EA "durchgehend symbolisch" an? Ich frage, weil ich mit Rockwell auch fast keine Erfahrungen habe.

Vielleicht bin ich das etwas spitzfindig, aber wenn ich symbolisch programmiere will ich nirgends eine Adresse sehen. Ich gebe dir zu 100% Recht das es der schönste Weg ist in der Variablentabelle einen UDT zu nehmen und auf einen Eingang zu Mappen. Jedoch ist es da bereits nicht mehr 100% symbolisch, weil du eben auf eine Adresse das Mapping machst. Wenn ich das recht verstehe geht das aber auch nur bis 32Bit oder? Wenn du jetzt in der Hardwarekonfiguration eine neue Karte dazwischen schiebst, musst du in der Variablentabelle sämtliche verweise ändern. Mit GETIO und SETIO musst du das nicht, weil die Hardwarekennung die gleiche bleibt. Jedoch brauchen wir das auch nur bei Profinet Teilnehmer die einen Haufen Bits zum aufschlüsseln haben und nicht bei ET200 oder so.

Bei Rockwell hast du bereits bei der Hardwarekonfiguration einen Symbolischen Namen den du im ganzen Programm brauchen kannst. Wenn ich also etwas in der Hardwarekonfiguration ändere, zum Beispiel irgendwo eine Karte dazwischenschiebe damit ich die 16er Eingänge alle beieinander habe, spielt mir das keine Rolle, denn der Name des Einganges ist sogar an die Hardware gekoppelt.

Du kannst natürlich auch bei Siemens "Umverdrahten", jedoch bin ich da immer ein wenig nervös ;-) Meiner Meinung nach ist das TIA im Moment noch eine schlechte Kopie des Studio 5000 von Rockwell. Denn mit dem Studio 5000 ist es echt geil zu arbeiten.

Entschuldigung nochmals und ich hoffe das es jetzt wieder konstruktiv weitergeht :-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
RogerSchw85;691306. Ich gebe dir zu 100% Recht das es der schönste Weg ist in der Variablentabelle einen UDT zu nehmen und auf einen Eingang zu Mappen. Jedoch ist es da bereits nicht mehr 100% symbolisch schrieb:
Wenn ich das recht verstehe hat Rockwell die Variabelntabelle in die Hardwarekonfig gelegt, mehr halt nicht.
was du mit 32 Bit meinst ist mir unklar ? Der UDT der auf einen Eingangsbereich gelegt wird kann jedenfalls mehr als 32 Bit.

Ein dazwischen schieben von Karten in der Hardwarekonfiguration verursacht jedenfalls keine Bearbeitung der Variablentabelle , da ja der Karte ein Adressbereich zugeordnet wird.

wenn der UDT 4 Eingangsbyte umfasst dann ist dem UDT das ziemlich egal ob wo in der Hardware sich diese EB befinden .
 
Wenn ich das recht verstehe hat Rockwell die Variabelntabelle in die Hardwarekonfig gelegt, mehr halt nicht.
was du mit 32 Bit meinst ist mir unklar ? Der UDT der auf einen Eingangsbereich gelegt wird kann jedenfalls mehr als 32 Bit.

Das habe ich mir selbst beantwortet und ist klar, er kann mehr da er nicht auf das Doppelwort begrenzt ist...

Ein dazwischen schieben von Karten in der Hardwarekonfiguration verursacht jedenfalls keine Bearbeitung der Variablentabelle , da ja der Karte ein Adressbereich zugeordnet wird.

Wenn du eine zusätzliche 16er Eingangskarte vor die nächsten 8er schiebst, schieben alle weiteren 8er Eingänge um 16Bit. Wenn die Karte sauber integrieren willst, musst du das fortlaufen integrieren. TIA fragt dich nun bei jeder Änderung eines Eingangbereichs ob du die Eingänge "mitschieben" willst. Auch nicht schlecht, jedoch ein riesen Aufwand je nach grösse des ET200SP
 
Zuletzt bearbeitet:
Bezugnehmend auf das Thema des Threaderstellers wäre ja eine Alternative die HW-ID zu übergeben und die Kommunikation über SFC14/15 laufen zu lassen. Diese läuft aber nicht Slot-Übergreifend, aber ist dafür konsistent. Wie ist das eigentlich mit dem UDT und einer gemappter Adresse? Ich nehme mal an dass es slotübergreinfend ist, sonst würde es keinen Sinn machen, aber wie stehts mir der Konsistenz?. Was meint eigentlich Siemens zu der ganzen Thematik? Welche Art der Programmierung sehen die als bevorzugt an?

Was mir bei der Verwendung der UDTs auffällt ist, das ja die Reihenfolge des Aufbaus der Daten logischerweise eine Rolle spielt. Genauer gesagt, es sind die Adressen. Aber Adressen werden ja im Editor nicht mehr angezeigt, weil ja alles "symbolisch" ist und die Reihenfolge ja keine Relevanz mehr hat. An dieser Stelle aber eben nicht. Irgendwie inkonsequent von Siemens.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ob die Variablen in der UDT-Instanz eine Adresse haben und ob sie evtl. in anderer Reihenfolge als deklariert im Speicher abgelegt werden, hängt davon ab in welchem Speicher die UDT-Instanz liegt. Peripherieadressen und Prozessabbild der E/A liegen in nicht-optimiertem Speicher, deshalb passt das so, daß die Struktur-Variablen in der deklarierten Reihenfolge auf den E/A-Adressen liegen.

Meine Theorie bei dem Slot-übergreifenden UDT-Mapping: die S7-1500 sollte es eigentlich beherrschen, selbständig konsistent die Peripherieadressen mit dem Prozessabbild zu aktualisieren (einlesen/schreiben). Ein eigener Aufruf von DPRD_DAT/DPWR_DAT oder GETIO/SETIO sollte nur nötig sein, wenn die E/A-Adressen außerhalb des projektierten Prozessabbilds liegen (Gibt es ein "außerhalb des Prozessabbilds" bei S7-1500 überhaupt? oder werden bei eigenem Aufruf im OB1 die EA-Daten unötigerweise zweimal aktualisiert?).
Wird der UDT auf die Peripherieadressen gemappt oder auf die Prozessabbilder der E/A?

Harald
 
Was mir bei der Verwendung der UDTs auffällt ist, das ja die Reihenfolge des Aufbaus der Daten logischerweise eine Rolle spielt. Genauer gesagt, es sind die Adressen. Aber Adressen werden ja im Editor nicht mehr angezeigt, weil ja alles "symbolisch" ist und die Reihenfolge ja keine Relevanz mehr hat. An dieser Stelle aber eben nicht. Irgendwie inkonsequent von Siemens.
Die Reihenfolge der Daten ist doch das, was die Waagen (in diesem Fall) interessiert. Welche Adressen das real sind, interessiert die Waage IMHO nicht.
Und Siemens interessiert die absolute Adresse nur insofern, dass die Daten nun mal an irgendeiner Hardwareadresse miteinander verknüppert sind, bei der dann das UDT-Mapping gestartet wird.
Dabei ist die Reihenfolge, wie von Harald bereits bemerkt, in genau der Reihenfolge, wie im UDT angelegt. Auch wenn die interne Speicherung aufgrund einer eventuellen Optimierung eine andere Reihenfolge haben sollte.


Wird der UDT auf die Peripherieadressen gemappt oder auf die Prozessabbilder der E/A?
Ich mappe auf die Prozessabbilder.
Kann gar nicht sagen, ob's auf die Peripherieadressen auch geht.



Das UDT-Mapping geschieht ab einer Anfangsadresse des Prozessabbildes fortlaufend in der Größe des UDT.
Welche(r) Slot(s) das dabei ist und ob es diese Adressen real überhaupt gibt (geben sollte/muss), ist Sache des Programmierers.
 
Mit Adressen habe ich weniger die realen Adressen gemeint, sondern vielmehr die Speicherbreite der einzelnen Variablen des UDT und des gesamten UDT. Es findet hier ja ein 1:1 Mapping auf die Hardware-Adressen statt in der Reihenfolge wie man die Daten angelegt hat. Also muss man als Programmierer wissen wie groß der UDT ist und wie die einzelnen Offsets der Variablen sind damit sie auf die in der HW angelegten Bereiche passen, denn hier passiert ja schlußendlich etwas, was bezgl. der Verknüpfung nichts mehr mit Symbolik usw zu tun hat. Klar das geht natürlich auch ohne diese Information durch Abzählen, aber eigentlich gehört diese Anzeige doch zu einem sauberen Programmiersystem dazu. Da wurde was wegrationalisiert, was trotz Symbolik halt immer noch da ist, zumindest in diesem Anwendungsfall.
Was nun tief intern in der Hardware und vom OS für Speicheradressen verwendet werden und wie das verwurstet wird, das ist ja nun wieder was anders. Darauf haben und hatten wir nie Einblick und brauchen wir auch nicht.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die realen Hardwareadressen werden in der Variablentabelle auch beim UDT-Mapping normal für alle enthaltenen einzelnen Variablen angezeigt, wenn man den UDT aufklappt.
Und die Speicherbreiten werden ja hier von der externen Hardware vorgegeben.
 
Zuletzt bearbeitet:
Er hat schon recht das der UDT ansich immer Adress, bzw. genauer Offsetlos angezeigt wird. Das wiederum bedeutet für diese konkrete Anwendung halt manuell "Zählen"...

Gesendet von meinem SM-N950F mit Tapatalk
 
Zurück
Oben