Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Wie verwendet man die MODBUS RTU COM_MOD_MAST Fehlerdiagnose bei AC500-eco???

  1. #1
    Registriert seit
    28.07.2010
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!
    Auf einer AC500-eco versuche Ich mittels COM_MOD_MAST (RS485) Daten von mehreren Teilehmern zu auszutauschen.
    Dazu verwende Ich folgenden Kode:
    CASE RqCnt OF
    (*This is a new Communication Cycle! *)
    0:
    MB_Fct:=3; (* Rx Command!*)
    MBSlaveDvADR:=1;
    MBRxLngth:=20;
    MBSlaveRqAddr:=128;
    MBRxDataAdr:=ADR(tmH1St);
    1:
    MBSlaveRqAddr:=5;
    MBRxLngth:=1;
    MBRxDataAdr:=ADR(tmH1HD1St);
    2:
    In jedem weiteren Zweig werden jeweils verschiedene Parameter vorgegeben - Modbus Teilnehmer Addresse, Register etc.etc.
    3:
    .............
    12:
    .............
    ELSE
    PLC_St:=COMM_FAULT;
    END_CASE

    MBTxRq(EN:=FALSE);

    MBTxRq(EN:= TRUE,
    COM := 2,
    SLAVE := MBSlaveDvADR,
    FCT := MB_Fct,
    TIMEOUT := 250,
    ADDR := MBSlaveRqAddr,
    NB := MBRxLngth,
    DATA := MBRxDataAdr,

    DONE => MB_RDY,
    ERR => MB_ERR,


    ERNO =>Mod_ErrNum
    );

    Mod_Done:=MBTxRq.DONE;
    Mod_Error:=MBTxRq.ERR;

    RqCnt:=(RqCnt+1) MOD 13;

    Der Kode ist Bestandteil von einem zyklyschen POU (500 ms, PRI 5).
    Soweit OK - die Daten werden ausgetauscht. Dann habe Ich die RS485 Verbindung zu einem der MODBUS Slave Teilnehmer unterbrochen, und stellte fest, dass ERR und DONE staendig FALSE sind und somit keinerlei Diagnostik der Kommunikation moeglich ist. Alle Versuche die Werte von ERR und DONE auf andere Variablen - z.B Mod_Done und Mod_Error(global/lokal) zu uebertragen waren ergebnisslos. In der obigen Variante sind MB_ERR und MB_RDY digitale on-board Ausgaenge, auch das half nicht. Wenn aber auf den COM_MODE_MAST Block ein breakpoint gesetzt wird, werden ERR und DONE wie erwartet gesetzt -TRUE, sobald aber der Block verlassen wird, werden sie erneut FALSE!
    Zusaetzlich versuchte Ich die Ausfuehrungszeit von dem COM_MODE_MAST zu ermitteln - vor und nach Block mass Ich die laufende Zeit (TIME()) und speicherte sie in einer Matrix. Fuer alle Telegramme war sie < 1 ms - unabhaengig davon ob die Kommunikation erfolgreich oder nicht war, obwohl eine TIMEOUT vor 250 ms vorgegeben wurde.
    Offensichtlich ist etwas nicht wie es sein sollte, aber WAS?
    Ich waere fuer jede Hilfe SEHR dankbar!

    Frohe Ostern!
    Zitieren Zitieren Wie verwendet man die MODBUS RTU COM_MOD_MAST Fehlerdiagnose bei AC500-eco???  

  2. #2
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    hallo, timeout zw. kommunikationspartnern ist bei modbus rtu mind. 250 ms denke ich..... hat aber nichts mit der programmausführungszeit zu tun, welche du misst bg bb

  3. #3
    occam ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.07.2010
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke fuer die Interesse bits'bytes!
    Die Zeiten sind unterschiedlich - die angeschlossenen slave AC500-eco sind recht schnell - in ~110ms senden sie ~200 Byte - und das bei 19200 bps. Aber mit dem RS485 Analyzer den ich unter Windows verwende ist das mehr Richtwert als Messung! Die anderen Teilnehmer sind deutlich langsamer ~300 ms. Und das ist ein Teil des Problems - wenn der DONE Parameter aus dem COM_MOD_MAST Block nicht verfuegbar ist, muss Ich die Kommunikation timeout nach dem langsamsten Teilnehmer ausrichten!

Ähnliche Themen

  1. Modbus RTU in Twincat, wie anfangen?
    Von damiche im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 21.07.2011, 12:04
  2. ABB AC500-eco
    Von j.g. im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 25.01.2010, 09:58
  3. Wandeln von IEEE 754 Zahlen bei der Modbus-RTU Biliothek
    Von WaEv im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 14.01.2010, 19:26
  4. Wie verwendet man einen einmaligen AnlaufOB
    Von Elton_500 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.06.2008, 14:58
  5. Antworten: 9
    Letzter Beitrag: 03.09.2007, 08:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •