Modbus RTU

Rauchegger

Level-2
Beiträge
377
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich möchte mit einer VIPA CPU 313C über PTP - Modbus RTU drei MX2 Umrichter von OMRON steuern (ImHB von VIPA steht net wirklich viel brauchbares drinen). Da Ich auf dem MODBUS Sektor noch ein richtiger Änfänger bin, bitte Ich um Hilfestellung.
Vieleicht hat ja jemand schon mal einen Umrichter dieser Art mit Modbus angesteuert !
Oder hat jemand ein Beispiel bei der Hand...
Bin DANKBAR für alles !
 
kleiner Hinweis

Servus Rauchegger,
wichtig ist, dass du dir die Registerbeschreibung von deinem Frequenzumrichter besorgst. Wie du die serielle Schnittstelle bei Vipa programmierst kann ich dir leider nicht sagen, für B&R, Schneider Electric und Codesys könnt ich es. Du musst über Bytes, die du aus der seriellen Schnittstelle sendest die Register (bei Modbus heissen sie so) ansprechen.

Schau mal ob du nicht einen Funktionsblock für Modbus bei Vipa findest.

Vlt hilft dir das für den Anfang,
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Rauchegger,

haste mal bei VIPA angerufen?
Ich bin mir sehr sicher dass die Dir mal ein Beispielprojekt zusenden können.

Ansonsten auf jeden Fall, wie giallo schon gesagt hat, musst Du Dir die Liste mit den Registern besorgen.

Alle Werte werden bei Modbus in 1 oder 16Bit Register abgelegt. Darüber werden dann die Daten ausgetauscht.
Es gibt, im Normalfall, Register von 1-9999, in denen die Daten drin stehen. Davor kommt der Funktionscode, der beschreibt, ob es sich um ein 1 oder 16Bit sowie um Schreib/Leserechte handelt.
Oft wird hier in den Holding Register (Funktionscode 4) die Daten getauscht. Ein Register 100 könnte dann so aussehen: 40100
 
Moin,

hier ein Beispiel für Modbuskommunikation mit einer Vipa
Im OB100 musst du SFC216 aufrufen und damit die Schnittstelle parametrieren. Schau mal rein

Ich sehe mir gerade dein Beispiel durch, und bin beim testen...
Ich stehe aber immer noch auf der Leitung wegen des telegram aufbaus

und zwar wenn Ich nun von Omron die Data List hernehme steht für Operation command COIL 0001h (1=Run;0=Stop)
Rotation direction command COIL 0002h (1=revers;0=forward);
Frequency source REGISTER 0001h; Function Code F001 (high) 0-40000
REGISTER 0002h; Function Code F001(low)

wie sieht jetzt das Telegramm dazu aus ?
lg
 
U M 100.7
L 2 //Slavenummer des Partners
T "Sendepuffer".Salvenr
L 5 //Funktioncode
T "Sendepuffer".Funktions_Code
L 1 //Ab 1. Bit lesen
T "Sendepuffer".Start_Adresse
L 32 //32 Bit lesen (2Worte)
T "Sendepuffer".Anzahl_Daten
CALL SFC 217
DataPtr:=P#DB2.DBX0.0 BYTE 6
DataLen:=MW12
RetVal :=MW14

UN M 100.7
L 2 //Slavenummer des Partners
T "Sendepuffer".Salvenr1
L 5 //Funktioncode
T "Sendepuffer".Funktions_Code1
L 1 //Ab 1. Bit lesen
T "Sendepuffer".Start_Adresse1
L 2000
T "Sendepuffer".Wert
L 38 //38 Bit lesen (3Worte)
T "Sendepuffer".Anzahl_Daten1
CALL SFC 217
DataPtr:=P#DB2.DBX8.0 BYTE 8
DataLen:=MW12
RetVal :=MW14

Stimmt das?????????????????
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Rauchegger,

haste mal bei VIPA angerufen?
Ich bin mir sehr sicher dass die Dir mal ein Beispielprojekt zusenden können.

Ansonsten auf jeden Fall, wie giallo schon gesagt hat, musst Du Dir die Liste mit den Registern besorgen.

Alle Werte werden bei Modbus in 1 oder 16Bit Register abgelegt. Darüber werden dann die Daten ausgetauscht.
Es gibt, im Normalfall, Register von 1-9999, in denen die Daten drin stehen. Davor kommt der Funktionscode, der beschreibt, ob es sich um ein 1 oder 16Bit sowie um Schreib/Leserechte handelt.
Oft wird hier in den Holding Register (Funktionscode 4) die Daten getauscht. Ein Register 100 könnte dann so aussehen: 40100

Hallo Prang!

die liste mit den registern habe ich ja schon aber wie stelle ich mir nun das telegramm für start und drehrichtung und drehzahl zusammen ?
 
Unten angehängt mal ein Beispieltelegramm (Anfrage Master an den Slave). Die Nummern sind dezimal.

Hier die Analyse in Hex:


Code:
Frame Analysis (01 03 00 fd 00 03 94 3b)
--------------

The frame has no errors.

Poll Analysis
-------------
Device Address =1       =0x01
Function       =3       =0x03 =Read Holding Registers
Point Address  =40254   
Point Count    =3

im Beispiel wäre das dann eine Anfrage des Masters an den Slave mit der Adresse 1, es soll ein "Holding Register" gelesen werden.

Um dem FU das Startbit auf 1 zu setzen sollte es dann wenn ich keinen Fehler gemacht habe so aussehen:


Code:
Frame Analysis (01 05 00 00 ff 00 8c 3a)

The frame has no errors.

--------------
Poll Analysis
-------------
Device Address =1       =0x01
Function       =5       =0x05 =Force Single Coil
Point Address  =1       
Required State =0xff00  On    (0xff00=On, 0x0000=Off)

Für Rückwärts dann:

Code:
Frame Analysis (01 05 00 01 ff 00 dd fa)
--------------

The frame has no errors.


Poll Analysis
-------------
Device Address =1       =0x01
Function       =5       =0x05 =Force Single Coil
Point Address  =2       
Required State =0xff00  On    (0xff00=On, 0x0000=Off)

Vorwärts wäre:

Code:
Frame Analysis (01 05 00 01 00 00 9c 0a)
--------------

The frame has no errors.


Poll Analysis
-------------
Device Address =1       =0x01
Function       =5       =0x05 =Force Single Coil
Point Address  =2       
Required State =0000  Off    (0xff00=On, 0x0000=Off)

Jeweils vorausgesetzt dass der FU die Adresse 1 hat.
 

Anhänge

  • Empfangene Daten.bmp
    211 KB · Aufrufe: 33
Moin,

du musst dir zwei DB´s anlegen, Sende- und EmpfangsDB Aufbau siehe Bilder.

Dann musst du die Daten in die DB´s so schreiben wie bei Oberchefe.

Anschließend die SFC 217 aufrufen und wenn der Fertig dann SFC218 um die Daten abzuholen.
Bin diese Woche leider nur sehr wenig im Büro deshalb die Kurzfassung, hoffe du kannst damit etwas anfangen :ROFLMAO:
 

Anhänge

  • DB100_Empfangspuffer.JPG
    DB100_Empfangspuffer.JPG
    116,2 KB · Aufrufe: 46
  • DB101_Sendepuffer.JPG
    DB101_Sendepuffer.JPG
    126,7 KB · Aufrufe: 38
  • Lesefunktion.JPG
    Lesefunktion.JPG
    120,5 KB · Aufrufe: 42
  • NW_Lesen.JPG
    NW_Lesen.JPG
    107,8 KB · Aufrufe: 43
  • NW_Senden.JPG
    NW_Senden.JPG
    111,4 KB · Aufrufe: 39
Zuviel Werbung?
-> Hier kostenlos registrieren
Multiway

Entschuldigt, dass ich dies erst jetzt gesehen habe.
Da gibt es also jetzt 2 Probleme auf einmal.
Dies muss man teilen in:
1. Wie programmiere ich die Vipa und
2. Welche Codes muss ich senden (hier hat Oberchefe schon geholfen)

Man braucht nur einen PC nehmen, RS485-Schnittstelle dranmachen und an den MX2 schließen (B=+=SP , A=-= SN )
Und dann auf dem PC Multiway laufen lassen und die Bytekombinationen ausprobieren. (Siehe Oberchefe)

http://support-omron.fr/MultiwayE.php
 
Entschuldigt, dass ich dies erst jetzt gesehen habe.
Da gibt es also jetzt 2 Probleme auf einmal.
Dies muss man teilen in:
1. Wie programmiere ich die Vipa und
2. Welche Codes muss ich senden (hier hat Oberchefe schon geholfen)

Man braucht nur einen PC nehmen, RS485-Schnittstelle dranmachen und an den MX2 schließen (B=+=SP , A=-= SN )
Und dann auf dem PC Multiway laufen lassen und die Bytekombinationen ausprobieren. (Siehe Oberchefe)

http://support-omron.fr/MultiwayE.php

Hallo, Danke für deine Antwort,Ich habe mir einen Converter von USB auf RS485 zugelegt und mit dem Multiway den FU angesteuert... wunder es geht
und wenn man das richtige Telegram herausgefunden hat funktioniert es über die VIPA auch, DANK EUCH...
Ich hatte mit der Schnittstellenansteuerung immer Probleme Request = 7002.....
und was noch dazu kommt das Handbuch von Omron MX2 is a net so besonders Hilfreich Registernummer -1 und so....

Aber Danke fürs erste an alle......................
 
Zurück
Oben