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

Ergebnis 1 bis 2 von 2

Thema: Variaeln synchronisieren in PCWorx

  1. #1
    Registriert seit
    08.02.2012
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen

    Ich bin fleissiger Mitleser und stell nun das erstemal eine Frage:

    Hardware: ILC151ETH mit IB IL RS 485/422 Pro

    Ich habe ein Projekt welches via MODBUS/RTU mit einem BMS System kommunizieren soll.
    Wir sind MODBUS Slave. Ich verwende den Baustein MB RTU 485 Slave V102.

    Ich stehe nun vor dem Problem, dass ich meine internen Variabeln mit den MODBUS Registern ( z.B. im uidtHoldingRegisters Array) synchronisieren möchte.
    Das heisst wenn das MODBUS Registe ändert soll sich auch meine interne Variable ändern und umgekehrt.

    Man kann das ja folgendermassen lösen:

    IF AltitudeOffset <> AltitudeOffsetOld Then
    udtHoldingRegisters[0]:= UDINT_TO_Word(AltitudeOffset);
    AltitudeOffsetOld:=AltitudeOffset;
    End_If;
    IF udtHoldingRegisters[0]<> udtHoldingRegistersOld[0] Then
    AltitudeOffset:=WORD_TO_UDINT(udtHoldingRegisters[0]);
    udtHoldingRegistersOld[0]:=udtHoldingRegisters[0];
    End_If;



    Diese Lösung ist jedoch sehr umständlich, wenn viele Variabeln synchronisiert werden sollen.
    Nun zu meiner Frage: Wie Löst Ihr das ?
    Ich wollte eigentlich das ganze mit einer Funktion lösen welcher ich die jeweilige Adresse der Variabeln übergeben würde. (Pointer)
    Ich habe jedoch keine Möglichkeit in PC Worx gefunden das zu realisieren.


    Besten Dank

    Guss

    Reto
    Geändert von blabeli (25.07.2014 um 21:21 Uhr)
    Zitieren Zitieren Variabeln synchronisieren in PCWorx  

  2. #2
    Registriert seit
    08.09.2010
    Ort
    Blomberg
    Beiträge
    420
    Danke
    1
    Erhielt 66 Danke für 63 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo blabeli

    Das was Du machst ist korrekt.
    Um nicht so viele if Anweisungen zu schreiben kann man auch eventuell eine for schleife nutzen
    In dem Beispiel werden hier 2 Arrays verglichen.
    Beispiel:
    for Index := 0 to 100 do
    if udtHoldingRegister[Index] <> Value_Register[Index] then
    Value_Register[Index] := udtHoldingRegister[Index];
    end_if;
    end_for;

    Gruß
    Uwe
    PHOENIX CONTACT Deutschland GmbH
    Hotline: 05281-946-2888
    automation-service@phoenixcontact.com
    www.phoenixcontact.de

Ähnliche Themen

  1. PCworx Handbuch
    Von Deguoren im Forum PC- und Netzwerktechnik
    Antworten: 6
    Letzter Beitrag: 04.07.2017, 09:26
  2. PCWORX Problem
    Von Step7Neuling im Forum Sonstige Steuerungen
    Antworten: 6
    Letzter Beitrag: 04.11.2011, 06:29
  3. PCWorx Ergebnisse kürtzen
    Von dabotetz im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 15.03.2011, 21:24
  4. PcWorx und Multiprog
    Von snowbda im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 17.09.2009, 21:51
  5. Hilfe PcWorX
    Von manf im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 06.05.2008, 10:21

Lesezeichen

Berechtigungen

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