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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Codesys V3.5 Modbus Master -> Real senden

  1. #1
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich versuche einen Real Wert per MODBUS an einen Slave zu senden. Ich kann aber unter "Write Single Register" oder "Write Multiple Registers" kein REAL einstellen und somit auch kein REAL Wert mappen. Geht das überhaupt, also direkt einen REAL Wert senden ?

    modbus.JPG

    Gruß Kay
    Zitieren Zitieren Codesys V3.5 Modbus Master -> Real senden  

  2. #2
    Registriert seit
    18.12.2011
    Beiträge
    219
    Danke
    6
    Erhielt 24 Danke für 22 Beiträge

    Standard

    Hallo Kay,

    Du kannst nur ein Word senden und empfangen.
    Nimm Dein Realwert am Sender mal zehn dann real_to_word --> am Empfänger word_to_real durch 10.
    Willst Du zwei Steuerungen damit verbinden??

    Wolfgang

  3. Folgender Benutzer sagt Danke zu wolfi-sps für den nützlichen Beitrag:

    Kayle (05.01.2015)

  4. #3
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Wolfgang,

    danke für Deine Antwort. Ich möchte Temperaturwerte von der einen Codesys Steuerung zur anderen schicken. Das ganze könnte ich auch über die Netzwerkvariablen machen, möchte ich aber nicht. Ich würde das gerne per Modbus machen, da ich noch nicht weiß ob die zu sendende Steuerung eine Codesys bleibt.

    Ich werde das mit real_to_word probieren. Danke.

    Gruß Kay

  5. #4
    Registriert seit
    18.12.2011
    Beiträge
    219
    Danke
    6
    Erhielt 24 Danke für 22 Beiträge

    Standard

    Hallo Kay,

    Ja, auf die Netzwerkvar wollte ich hinaus
    Wenn Du eine andere Steuerung nehmen willst, kann die auch Netzwerk Var ? Sollte dann Port 1202 nutzen.
    Geht halt viel einfacher.

    Wolfgang

  6. #5
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Wolfgang,

    die eigentliche Steuerung die ich einsetzen will ist ein reines embedded Linuxsystem ( ohne CODESYS Runtime ). Dort habe ich nicht die Möglichkeit Netzwerkvariablen einzusetzen. Ich habe gerade im CODESYS Simulator den Test mit real_to_word und word_to_real gemacht. Funktioniert tadellos. Danke für den Tip.

    Gruß Kay

  7. #6
    Registriert seit
    13.01.2007
    Beiträge
    304
    Danke
    35
    Erhielt 29 Danke für 25 Beiträge

    Standard

    Ein REAL einfacher Genauigkeit benötigt zwei Register. Dazu einfach eine Variable als REAL deklarieren und über die Adresse auf den gleichen Adressbereich zweier aufeinanderfolgender Register legen. Der Empfänger muss dann lediglich den Registerinhalt entsprechend auch so interpretieren. Damit können bei Bedarf alle Datentypen (LREAL, DINT etc.) per Modbus übertragen werden.

    Beispiel:
    Codesys.jpg

  8. Folgender Benutzer sagt Danke zu MarkusP für den nützlichen Beitrag:

    Kayle (06.01.2015)

  9. #7
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo,

    ok das habe ich verstanden. Nur eins will mir nicht in den Sinn -> Wie übertrage ich negative Werte ? Real kann ja sowohl positiv als auch negativ.

    Gruß Kay

  10. #8
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Du kannst den Inhalt eines oder mehreren REAL´s als WORD übertragen wenn du auf die Daten über UNION abgreifst:

    Code:
    TYPE REALCONVERT : UNION
     rVar : REAL;
     wVar : ARRAY[0..1] OF WORD;
     END_UNION
    END_TYPE
    Ich stand genau vor dem selbigen Problem.
    Geändert von Lars Weiß (06.01.2015 um 08:18 Uhr)
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  11. Folgender Benutzer sagt Danke zu Lars Weiß für den nützlichen Beitrag:

    Kayle (06.01.2015)

  12. #9
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo,

    danke für Eure Lösungsvorschläge. Als nicht SPS Programmierer habe ich allerdings einen anderen Weg gefunden:

    Code:
    temperatur := -8.5;
    temp_1 := temperatur + 100;
    temp_2 := temp_1 * 100;
    temp_word := REAL_TO_WORD(temp_2);
    
    (*####################################*)
    
    temp_real := WORD_TO_REAL(temp_word);
    temp_real_2 := temp_real / 100;
    temp_real_3 := temp_real_2 - 100;
    Ich sorge einfach dafür das ich keine negativen Werte übertragen muss. Ist vielleicht nicht elegant, funktioniert aber fürs erste.

    Gruß Kay

  13. #10
    Registriert seit
    13.01.2007
    Beiträge
    304
    Danke
    35
    Erhielt 29 Danke für 25 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kayle Beitrag anzeigen
    Hallo,

    ok das habe ich verstanden. Nur eins will mir nicht in den Sinn -> Wie übertrage ich negative Werte ? Real kann ja sowohl positiv als auch negativ.

    Gruß Kay
    Wenn Du mein Beispiel genau angeschaut hast, dort ist die Temperatur negativ. (habe ich extra so gemacht)
    Des Rätsel Lösung ist, dass das höchstwertige Bit als Vorzeichen interpretiert wird.
    Daher gibt es z.B. auch INT und UINT, bei INT stehen nur 15 Bit für den Wert zur Verfügung, das 16. Bit ist für das
    Vorzeichen.
    Gruße Markus

Ähnliche Themen

  1. EthernetIP-Master / Modbus-Master
    Von mkersch im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 27.04.2013, 19:19
  2. Modbus über ET200s Modbus Master Modul
    Von vollmi im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 19.11.2012, 14:37
  3. Galileo an Codesys senden
    Von Sheldon im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 03.11.2012, 13:42
  4. Modbus Master
    Von ellawo im Forum Feldbusse
    Antworten: 12
    Letzter Beitrag: 18.02.2011, 09:09
  5. Antworten: 0
    Letzter Beitrag: 05.08.2010, 08:14

Lesezeichen

Berechtigungen

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