TIA Fehler beim Übertragen von Integer Werten auf ein I/O Device

robo7795

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich habe unter einer Siemens Steuerung einen AXC F 2152 Controller als I/O Device hinzugefügt nun will ich ein Integerwert von der Siemens Steuerung auf den Phönix Controller übertragen. Die Schnittstelle in der die Daten ankommen sollen ist PND_S1_INPUTS und ist ein Array von 512 Byte. Ich habe zuerst ein Baustein im TIA Portal geschrieben in dem der Intergerwert in zwei Bytes aufgeteilt wird (LOW- und HIGH Byte). Die Bytes will ich in die PND_S1_INPUTS[0] und PND_S1_INPUTS[1] senden, sodass sie wieder in die Phönix Steuerung zu einem Wert zusammengefasst werden können. Dazu habe ich auch im AXC F 2152 Controller die entsprechenden Variablen deklariert und ein kleines Programm geschrieben die mir die Werte wieder zu einem zusammenfassen. Leider kommt beim Laden des Programms immer der Fehler I/O Datenausfall und ich kann dabei nicht genau eingrenzen ob es an dem Siemens Controller liegt oder am Phönix Controller. Die Bilder mit den Fehlern habe ich unten eingefügt.
Ich hoffe ihr könnt mir bei meinem Problem helfen oder mir ein Tipp geben woran es liegen könnte.
Vielen Dank im Voraus.

Gruß robo7795
 

Anhänge

  • Unbenannt1.jpg
    Unbenannt1.jpg
    64,5 KB · Aufrufe: 38
  • Unbenannt (2).jpg
    Unbenannt (2).jpg
    107,4 KB · Aufrufe: 43
Kommt der Geräte-Ausfall nur in der Siemens Steuerung oder auch im AXC?
Sind die E/A-Bereiche spiegelbildlich In/Out deklariert? Wie sieht die E/A-Projektierung auf der Siemens-Seite und auf der AXC-Seite jeweils aus?
Ist die E/A-Projektierung in beide Geräte geladen?


Ich kenne die Phoenix-Software nicht, aber ich vermute Dein Zusammensetzen der Bytes ist nicht korrekt. Du kannst nicht beide Bytes mit der selben Konvertierfunktion (TO_INT) zu INT konvertieren - das wird bei einer der beiden Konvertierungen bei gesetztem höchsten Bit des Bytes einen falschen Wert liefern.
Du müsstest es etwa so machen:
Code:
Ergebnis_INT := TO_INT( SHL( TO_WORD(H_Byte), 8 ) OR TO_WORD(L_Byte) );

Warum musst Du überhaupt in Bytes zerlegen? Ist das in dem Phoenix-Programm nicht möglich, direkt die korrekte Struktur der 512 Empfangs-Byte anzugeben oder die Empfangsbytes auf eine Struktur zu kopieren? Oder spielen da unterschiedliche Indianer (Byte-Reihenfolge) eine Rolle?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es scheint dass etwas geht schief bei die Grundsätsliche IO Verbindung zwischen S7-1510SP und ACX als IO-Device.
Die Fehler "nicht unterstützte Gerätekonfiguration" kenne ich nicht.
Wenn du diese Zeile in Diagnosepuffer markiert, wass wird bei Ereigniss-ID angezeigt ?
 
Hallo,
danke für die Rückmeldungen. Das Problem konnte behoben werden in dem man die S7 Steuerung zuerst Online verbindet und dann die Phönix Steuerung startet. An der Programmierung lag es nicht aber spätestens bei der Übertragung von Gleitpunktzahlen ist die SHL Funktion sinnvoll. Zu der Struktur: Bislang wurde uns nur gesagt, dass die Phönix Steuerung zur Profinet Kommunikation ein Array von 512 Bytes hat und das es über PND_S1_INPUTS und PND_S1_OUTPUTS übertragen werden kann.

Gruß robo7795
 
Das Problem konnte behoben werden in dem man die S7 Steuerung zuerst Online verbindet und dann die Phönix Steuerung startet.
Es wird immer das Problem geben, daß einer der beiden Partner früher kommt und einer später. Es muß egal sein in welcher Reihenfolge. Das zuerst kommende Gerät wird dann einen Profinet-Fehler signalisieren bis das zweite Gerät kommt. Es kann auch die Verbindung unterbrochen werden und dann werden beide Geräte einen Profinet-Fehler signalisieren.
Was meinst Du mit "die S7 Steuerung zuerst Online verbinden"?

An der Programmierung lag es nicht aber spätestens bei der Übertragung von Gleitpunktzahlen ist die SHL Funktion sinnvoll.
Daß die Verbindungsprobleme nicht an dem Programmierungsfehler liegen war klar. Das Zusammensetzen des INT ist aber trotzdem fehlerhaft.

Zu der Struktur: Bislang wurde uns nur gesagt, dass die Phönix Steuerung zur Profinet Kommunikation ein Array von 512 Bytes hat und das es über PND_S1_INPUTS und PND_S1_OUTPUTS übertragen werden kann.
Woher weißt Du dann, welche Bytes zu INTs und REALs zusammengesetzt werden müssen? Also wurde wohl doch mehr informiert - die Informationen kann man auch ohne besondere Aufforderung zu einer passenden Struktur umsetzen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,
ich habe mit dem Online verbinden den Button oben im TIA Portal gemeint.
Ja mit dem Online verbinden hat es nichts zu tun. Hab es jetzt nochmal probiert ,es muss irgendein anderer Fehler gewesen sein.
Ich arbeite auch gerade an einem anderen Rechner da hat sofort alles funktioniert.

Ich habe jeweils I/O512_1 Adressen in beiden Programmen gefunden (siehe Bilder), diese Adressen hab ich dann verwendet.

Gruß robo7795
 

Anhänge

  • Screenshot 2020-10-09 164237.jpg
    Screenshot 2020-10-09 164237.jpg
    88,7 KB · Aufrufe: 13
  • Screenshot 2020-10-09 164532.jpg
    Screenshot 2020-10-09 164532.jpg
    112,5 KB · Aufrufe: 15
  • Screenshot 2020-10-09 164618.jpg
    Screenshot 2020-10-09 164618.jpg
    36,2 KB · Aufrufe: 12
Zurück
Oben