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

Ergebnis 1 bis 6 von 6

Thema: Wago als Modbus Master soll mehrere Register schnell abrufen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    bin gerade dabei einen Modbus Slave über die Wago mit den ETHERNET_MODBUSMASTER_TCP Baustein auszulesen
    Es geht hier um Messwerte daher heißt es um so schneller um so besser.
    Jedoch ist das slave Register mit 30000 Einträgen bestückt und der Slave lässt nur ca. 50 Einträge in einen schwung zu??

    Somit habe ich Anfangs mit 3 Bausteinen die verschiedenen Bereiche die benötigt werden ausgelesen alle paar minuten kommt es dann aber zur kollision zwischen den Baustenen wenn sie auf den gleichen slave zugreifen.

    dann habe ich mir gedacht ich mache nur einen Modbus Baustein und wechsle nur noch die Adresse, die Quantity und den Kopierort des Poiner Arrays,
    (wollte auch gleichzeitig das erneute Verbinden über TCP verhindern)
    dann habe ich bei jedem Ready vom Modbus baustein einen Zähler hochgezählt und wollte dann eigentlich in einer Codesys Aktion in ST mit einer IF Anweisung die Variablen für die entsprechenden Register anpassen. jedoch erlaubt die Codesys bei IF nur Boolische Werte???
    in der Hilfe steht das auch jedoch im Beispiel dann ==> IF temp<17 da kann doch was nicht stimmen...

    Hat einer eine Lösung für eine schnelle Modbus Abfrage
    und hat einer eine Lösung für was man anstelle von IF Then nehmen kann?

    Vielen Dank
    Zitieren Zitieren Wago als Modbus Master soll mehrere Register schnell abrufen  

  2. #2
    Registriert seit
    03.01.2013
    Beiträge
    95
    Danke
    4
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hi,

    probier mal die Bedingung in der IF in Klammern () zu setzen.

    IF (temp < 17) THEN

    Gruß
    HMIman

  3. #3
    Registriert seit
    13.01.2013
    Beiträge
    622
    Danke
    26
    Erhielt 64 Danke für 59 Beiträge

    Standard

    Also IF xy<17 oder ähnliches geht auf jeden Fall. Ich habe aber festgestellt das bspw =< oder Ähnliches zu Fehlermeldungen führen kann.
    Lag damals glaube ich nur an der Reihenfolge wie die Zeichen hintereinander standen.

  4. #4
    Registriert seit
    19.01.2015
    Beiträge
    14
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallöchen,

    Zitat Zitat von Gog Beitrag anzeigen
    in der Hilfe steht das auch jedoch im Beispiel dann ==> IF temp<17 da kann doch was nicht stimmen...
    Das stimmt schon. IF kann nur nach Bool abgefragt werden. "temp < 17" liefter ja auch schließlich TRUE oder FALSE zurück.

    Du kannst auch z.B. AND und OR einbauen in die Abfrage. Letztendlich muss aber TRUE oder FALSE rauskommen.

    Ich kenne zwar deinen Code nicht, aber neben IF kann sich auch die CASE-Abfrage als nützlich erweisen.

    Gruß

  5. #5
    Gog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.03.2010
    Beiträge
    5
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke!

    jetzt bin ich drauf gekommen ich hatte immer nach der Variablen einen Doppelpunkt ==> IF ZyklusNr: = 0 THEN

    so geht es jetzt zumindest mal weiter:
    IF ZyklusNr = 0 THEN
    READ_ADDRESS :=1008;
    READ_QUANTITY:=4;
    read_buffer :=read_buffer2;
    ELSIF ZyklusNr = 1 THEN
    usw.
    ELSE
    ZyklusNr:=0;

    ob der Rest geht schau ich jetzt mal.
    Falls einer ein vorschlag hat um die geschwindigkeit zu erhöhen bitte melden.

    Grüße

  6. #6
    Registriert seit
    19.01.2015
    Beiträge
    14
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    den Doppelpunkt benötigst du nur, wenn du eine Variable beschreiben möchtest.

    Je nachdem wie hoch dein Wert ZyklusNr wird, errachte ich an dieser Stelle die von mir genannte Case-Anwendung für sinniger.

    Code:
    Case ZyklusNr OF
    1:READ_ADDRESS :=1008;
    READ_QUANTITY:=4;
    read_buffer :=read_buffer2;
    2: usw..
    ...
    n:
    ELSE
     ....
    END_CASE

  7. Folgender Benutzer sagt Danke zu ChickenWingZ für den nützlichen Beitrag:

    Gog (09.08.2016)

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 27.10.2015, 19:40
  2. Antworten: 12
    Letzter Beitrag: 13.10.2015, 18:52
  3. Modbus TCP: Mehrere Master/Slaves
    Von Curby im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 06.02.2014, 23:57
  4. S7 1200 als slave mit PC als master (modbus poll)
    Von Sternius im Forum Feldbusse
    Antworten: 0
    Letzter Beitrag: 24.09.2012, 07:59
  5. S7 als Modbus RTU Master???
    Von RichiSPS im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 03.11.2005, 20:39

Stichworte

Lesezeichen

Berechtigungen

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