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

Ergebnis 1 bis 1 von 1

Thema: WAGO Modbus Master über serielle Schnittstelle: Aussetzer bei der Kommunikation

  1. #1
    Registriert seit
    06.10.2011
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein Problem mit dem Zugriff auf einen Modbus-Slave über die Serielle Schnittstelle eines WAGO Controllers.
    Hier mal der Code:

    Request.SlaveAddress:=4;
    Request.FunctionCode:=3;
    CASE state OF

    0: (*Read analog data*)
    Request.Read_Quantity:=17;
    Request.Read_StartAddress:=30101;
    Start:=TRUE;
    JobActive:=Start;

    1: (*Read digitital Data*)
    Request.Read_StartAddress:=30001;
    Request.Read_Quantity:=1;
    Start:=TRUE;
    JobActive:=Start;

    2: (*Read Error Data*)
    Request.Read_StartAddress:=30301;
    Request.Read_Quantity:=7;
    Start:=TRUE;
    JobActive:=Start;
    3: (*Software Version*)
    Request.Read_StartAddress:=30201;
    Request.Read_Quantity:=6;
    Start:=TRUE;
    JobActive:=Start;
    END_CASE

    Modbus_RTU( ENABLE := Enable,
    ASCII_Mode := ASCII_Mode,
    bCOM_PORT := bCOM_PORT,
    cbCOM_BAUDRATE := BAUD_19200,
    cbsCOM_BYTESIZE := BS_8,
    cpCOM_PARITY := PARITY_EVEN,
    csCOM_STOPBITS := STOPBITS_1,
    cfCOM_FLOW_CONTROL := HALFDUPLEX,
    tTIME_OUT := TimeOut,
    StartFunction := Start,
    ExtQuery := Request,
    Response := Response);


    IF NOT Start AND JobActive=TRUE THEN
    JobActive:=FALSE;
    IF Response.SlaveAddress = 4 AND Modbus_RTU.MB_Error=MB_NO_ERROR THEN
    IF state=0 THEN
    FOR i:=0 TO 16 DO
    AnalogData[i]:=Response.Data[i];
    END_FOR
    i:=0;
    readCount:=readCount+1;
    state:=1;
    IF readCount=1000 THEN readCount:=1; END_IF
    ELSIF state=1 THEN
    DigitalData:=Response.Data[0];
    state:=0;
    StateDelay:=StateDelay+1;
    IF StateDelay=1 THEN
    state:=2;
    END_IF
    ELSIF state=2 THEN
    FOR i:=0 TO 6 DO
    ErrorData[i]:=Response.Data[i];
    END_FOR
    i:=0;
    StateDelay:=0;
    (*state:=3;*)
    state:=0;
    ELSIF state=3 THEN
    FOR i:=0 TO 5 DO
    SystemData[i]:=Response.Data[i];
    END_FOR
    i:=0;
    state:=0;
    END_IF

    END_IF
    END_IF

    Die Kommunikation läuft nicht richtig ab. Es gibt "Aussetzer". Hat jemand eine Idee? Der Baustein wird von Außen über Enable aktiviert. Dann sollen die 4 Zustände abgearbeitet und die Adressbereiche ausgelesen werden.
    Es kommt zu vermehrten CRC-Fehler.
    Wie kann man die vermeiden. Muss ich bei der Speicherzuweisung etwas beachten?

    Vielen Dank und Gruß,

    Ossi
    Geändert von Ossi (19.06.2013 um 12:54 Uhr)
    Zitieren Zitieren WAGO Modbus Master über serielle Schnittstelle: Häufige CRC-Fehler  

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 08.01.2016, 13:30
  2. Antworten: 1
    Letzter Beitrag: 21.01.2013, 11:00
  3. Antworten: 0
    Letzter Beitrag: 18.08.2012, 13:35
  4. Wago Codesys Modbus über RS485 Kommunikation nur Probleme
    Von vollmi im Forum CODESYS und IEC61131
    Antworten: 12
    Letzter Beitrag: 10.02.2012, 17:20
  5. ET 200 - S7 300 - Serielle Kommunikation (Modbus?!)
    Von saarlaender im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 06.11.2011, 09:06

Stichworte

Lesezeichen

Berechtigungen

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