PAC3200 - Probleme beim auslesen

ansgar96

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe hier vor mir ein PAC3200 von Siemens liegen, welches ich über Modbus TCP auslesen möchte um mir die Werte auf einem XV102 von Eaton anzuzeigen.
Ich kriege zwar Werte rein, diese springen aber willkürlich rum und ergeben keinen Sinn.

Kann mir jemand sagen was ich falsch gemacht habe und warum es falsch ist? Ich bringe mir das ganze programmieren großteils selbst bei und wüprde auch gerne verstehen wie man's richtig macht! :)

modbus.jpg

pac3200_var.jpg

pac3200_var_online.jpg

Freundliche Grüße
Ansgar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

wenn ich die Register ab 16#0002 lese bekomme ich Kommunikationsprobleme und die Meldung "Der Bus läuft nicht" / "Diagnosemeldung verfügbar" (wo ich diese sehen kann habe ich leider noch nicht herausgefunden, die Meldung springt aber auch ca im 0,5sek Takt von ok zu Fehler).

Freundliche Grüße
Ansgar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Poste mal bitte ein Bild vom E/A Abbild.

Code:
U_L1_N at %IW2 : REAL

kann eigentlich nicht richtig sein. Ich weiss nicht ob der Compiler:

Code:
U_L1_N at %ID2 : REAL

versteht. Für den Fall das nicht musst du die Wörter von Hand zusammen basteln, mit Union geht das ganz gut:

Code:
TYPE REALCONVERT : UNION rVar : REAL;
 wVar : ARRAY[0..1] OF WORD;
 END_UNION
END_TYPE
 
Zuletzt bearbeitet:
Alos das E/A-Abbild sieht so aus:

EA_Abbild.jpg

Mir ist leider nicht so ganz klar wie und wo ich Union benutzen soll.
Kann man die Funktion in einem extra Baustein anlegen und dann für wVar einen Eingang und rVar einen Ausgang anlegen?
Ich hab im Netz auch noch nichts finden können was mir das etwas verständlicher macht :???:

Trotzdem schonmal vielen Dank für deine Bemühungen! :)

Freundliche Grüße
Ansgar
 
Der Code Realconvert ist ein DUT, den fügst du ein und bindest ihn in dein Programm ein:

Als Variable REG2R eingefügt:

Code:
PROGRAM PLC_PRG

VAR
    REG2R : realconvert;
    MW: REAL;
END_VAR

Und im Programm aufgerufen:

Code:
REG2R.wVar[1] := %IW1; // Wort 1    
REG2R.wVar[0] := %IW2; // Wort 2
MW := REG2R.rVar; // Realwert umspeichern

Idealerweise in einem Loop ausgeführt und anstatt nur einem Wert ein ganzes Real-Array beschreiben.
 
Zuletzt bearbeitet:
Zurück
Oben