TIA Instanzbereich fehlerhaft

RoPiHa

Member
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde.
Ich habe folgendes Problem. Eine "UDT_Manuell_HZ" ist mit 12 UDT´s "U_Manuell" á 2 Byte, also gesamt 24 Byte und einem Reserve-Array "Res" aus gesamt 6 Byte befüllt. In Summe sind also 30 Byte belegt.
Im FN Heizsegment ist diese Struktur im InOut-Bereich deklariert und wird hier auch korrekt angezeigt. (Siehe Bild 1).
Allerdings reserviert TIA hier statt der 30 Byte nur 6 Byte, was an der Startadresse des Static-Bereiches erkennbar ist.

Im übergeordneten, aufrufenden Baustein "Betrieb" sieht man ebenfalls nur die 6 belegten Bytes.
Zusätzlich fehlt die Aufklappbarkeit der Struktur. Ich kann somit nicht auf die einzelnen Variablen zugreifen. (Siehe Bild 2)
Auch in der Visu kann ich sie nicht verarbeiten, da die Variablen von da nicht sichtbar sind.

Das Häkchen "Erreichbar aus HMi" lässt sich NICHT setzen.

Komplette Neugenerierungen aller UDT´s und DB´s waren erfolglos.

Auch die Kürzung des Strukturnamens von "Handbedien" auf "Hand" hat nichts gebracht (Es lag die Vermutung nahe, dass die Gesamtlänge des Variablennamens zu lang sein könnte.

Hat jemand eine Lösung für mich?

Vielen Dank vorab.





"Ich gönne jedem der mich kennt, zehnmal soviel, wie er mir gönnt."
 

Anhänge

  • InOut_Bereich mit Handbedienungsstruktur iO.PNG
    InOut_Bereich mit Handbedienungsstruktur iO.PNG
    81,5 KB · Aufrufe: 62
  • Instanzbereich_FB_Betrieb.PNG
    Instanzbereich_FB_Betrieb.PNG
    61,1 KB · Aufrufe: 60
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die rege Bemühung, zu helfen. Die Häkchen sind in den beiden UDT´s komplett gesetzt.
Als DB gibt es nur den DB zum FB Betrieb, dieser ist nicht auf optimierten Zugriff eingestellt.
 
Was sagt mir das?
Das heisst, der Instanddatenbaustein ist nicht fehlerhaft, er enthält das was er enthalten sollte, nämlich die Referenzadresse auf den tatsächlichen Speicherbereich der Daten. Und da es keinen Sinn macht die Referenzadresse der HMI zugänglich zu machen, ist dieser Haken auch nicht vorhanden.

Du hast also erstmal zwei Möglichkeiten, entweder den DB auf den Zugegriffen wird, dem HMI zugänglich machen, oder den FB dem du den DB übergibts anders zu übersetzen als der DB, will heissen:
Wenn DB nicht optimiert ist, musst du den FB auf optimiert stellen. Dann wird dein UDT als Kopie übergeben und du kannst die Kopie in der Instanz auf der HMI zur Verfügung stellen (wozu auch immer das sinnvoll sein sollte).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Muss da der FB, indem die Struktur angelegt ist, optimiert werden oder der übergeordnete FB, indem die einzelnen Instanzen dann aufgerufen werden? Momentan sind beide nicht optimiert.
 
Vorsicht mit einer Mischung aus optimiert und nicht optimiert! Wenn am HMI etwas verändert wird während er den Baustein abarbeitet, wird hinterher der alte Stand zurück kopiert, die HMI Änderung geht verloren.
 
Muss da der FB, indem die Struktur angelegt ist, optimiert werden oder der übergeordnete FB, indem die einzelnen Instanzen dann aufgerufen werden? Momentan sind beide nicht optimiert.
FB und übergebener DB müssen einfach unterschiedlich sein, welcher was ist, ist irrelevant. einer Optimiert der andere nicht optimiert.
Vorsicht mit einer Mischung aus optimiert und nicht optimiert! Wenn am HMI etwas verändert wird während er den Baustein abarbeitet, wird hinterher der alte Stand zurück kopiert, die HMI Änderung geht verloren.
Das ist allerdings bei Kopien im IN/OUT an FBs immer der Fall. Basisdatentypen werden ja sowieso per Kopie übergeben.
Da fallen dann viele drauf rein die mit den Quelldaten im GlobalenDB arbeiten. Wenn da irgendwo mit Kopien gearbeitet wird, wird man seines Lebens nicht mehr froh.
Es ist immens Wichtig dass man versteht wo mit Kopien und wo mit Referenzen gearbeitet wird und man sich darauf einstellt. Das war früher nur für die 400er Leute von Belang. Jetzt trifft es aber jeden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich mache nichts am HMi (im Moment)
Es ging darum, dass am HMI eine Variable geändert UND gleichzeitig in der SPS eine andere Variable aus der gleichen Struktur beschrieben wird.

In diesem Fall wird durch die SPS die komplette Struktur (mitsamt dem alten Wert vor Änderung am HMI) zurückgeschrieben und somit geht die Änderung, die am HMI vorgenommen wurde, verloren.
 
Es ging darum, dass am HMI eine Variable geändert UND gleichzeitig in der SPS eine andere Variable aus der gleichen Struktur beschrieben wird

Dazu musst du nichts in der SPS beschreiben. Du hast beispielsweise in dem UDT einen Jog-Button am HMI mit dem du einen Motor verfährst. Jetzt lässt du den Knopf am HMI in dem Moment los, in dem die SPS den Code deines Bausteins ausführt. Das HMI schreibt die Variable auf 0. Die Ausführung des Codes des Bausteins ist dann einen Moment später beendet und es wird die Kopie mit dem Stand vom Baustein Start plus die Änderungen die vom Programm bei der Bausteinausführung gemacht wurden auf den UDT zurück kopiert. Jetzt ist die Variable wieder 1 und der Motor dreht munter weiter solange bis der Knopf erneut gedrückt und wieder losgelassen wird (während der Baustein gerade nicht ausgeführt wird.
 
OK, dass Schreiben von zwei verschiedenen Stellen aus seine Nebenwirkungen mit sich bringt, ist ja klar. Aber es erklärt alles leider noch nicht, warum im InOut-Bereich des Instanz-FBs, respektive demzufolge auch im DB des übergeordneten FBs, der Bereich der UDT_Manuell_HZ nur mit 6 Byte anstatt 30 Byte aufgelöst wird und die Einzeldaten somit nicht mehr zu sehen sind.
 
Zurück
Oben