TIA Datenbaustein Kommunikation Reovib S7 1200

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

hat jemand von euch schon mal eine Kommunikation über PN (TIA V14 SP1) mit dem Reovib MFS Frequenzumrichter mit PN.

Möchte über Profinet auf dem Reovib zugreifen und 3 Parameter (Code 008 Datei) ändern Förderleistung + Maximalbegrenzung und Frequenz .
Wie soll das funktionieren ? Wäre sehr dankbar wenn mir jemand dabei helfen könnte.
Vielen Dank im voraus für eure Tipps & Untestützung.
 

Anhänge

  • MFS_268_ProfiNet_V01_Anhang_rev04.de.pdf
    940,8 KB · Aufrufe: 21

Oberchefe

Well-known member
Beiträge
2.801
Punkte Reaktionen
530
Welcher DB, welcher FC?

Du brauchst eine Schrittkette, in der Du nacheinander die Kommandos wie im Beispiel ab Seite 13 auf die 4 Ausgangsworte abschickst, dann jeweils auf die passende Antwort auf den 4 Eingangsworten wartest. Sobald die da ist, geht es weiter im nächsten Schritt. Also so ungefähr:

Case Schritt OF:

1:
//Schreibfreigabe einschalten
WordOut1 := 16#0000;
WordOut2 := 16#C0DE;
WordOut3 := 16#B5E7;
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#C0DE AND WordIn3 = 16#B5E7 AND WordIn4 = 16#C0DE Then
Schritt := Schritt +1;
END_IF;
2:
//Parameter xxHz schreiben
WordOut1 := 16#0000;
WordOut2 := 16#9005;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(rSollFrequenz * 100.0));
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#9005 AND WordIn3 = DINT_TO_WORD(REAL_TO_DINT(rSollFrequenz * 100.0)) AND WordIn4 = 16#C0DE Then
Schritt := Schritt +1;
END_IF;
3:
//Parameter Maximale Aussteuerbegrenzung schreiben
WordOut1 := 16#0000;
WordOut2 := 16#9009;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(ROUND((rMaxAusst*65535)/100)));
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#9009 AND WordIn3 = DINT_TO_WORD(REAL_TO_DINT(ROUND((rMaxAusst*65535)/100))) AND WordIn4 = 16#C0DE Then
Schritt := Schritt +1;
END_IF;
4:
....
 
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Vielen Dank für die schnelle Antwort, konnte leider nicht früher Antworten Sorry.
So langsam habe ich verstanden wie es funktionieren soll. Obwohl ich noch nie mit SCL gearbeitet habe.
Ich schreibe die benötigte Werte Förderleistung + Maximalbegrenzung und Frequenz in HMI und speichere die in ein Globales DB.
zB
Format 1 = Förderleistung 95% ; Maximalbegrenzung 100% ; Frequenz 295Hz
Format 2 = Förderleistung 90% ; Maximalbegrenzung 100% ; Frequenz 280Hz
usw
Wie Funktioniert die Kommunikation mit dem Reovib über Profinet ?

Wäre das Letzte Parameter so richtig?

CASE Schritt OF:

1:
//Schreibfreigabe einschalten
WordOut1 := 16#0000;
WordOut2 := 16#C0DE;
WordOut3 := 16#B5E7;
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#C0DE AND WordIn3 = 16#B5E7 AND WordIn4 = 16#C0DE THEN
Schritt := Schritt + 1;
END_IF;
2:
//Parameter xxHz schreiben 5 - 300Hz
WordOut1 := 16#0000;
WordOut2 := 16#9005;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(rSollFrequenz * 100.0));
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#9005 AND WordIn3 = DINT_TO_WORD(REAL_TO_DINT(rSollFrequenz * 100.0)) AND WordIn4 = 16#C0DE THEN
Schritt := Schritt + 1;
END_IF;
3:
//Parameter Maximale Aussteuerbegrenzung schreiben 5 - 100%
WordOut1 := 16#0000;
WordOut2 := 16#9009;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(ROUND((rMaxAusst * 65535) / 100)));
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#9009 AND WordIn3 = DINT_TO_WORD(REAL_TO_DINT(ROUND((rMaxAusst * 65535) / 100))) AND WordIn4 = 16#C0DE THEN
Schritt := Schritt + 1;
END_IF;
4:
//Parameter Schwingamplitude schreiben 0 - 100%
WordOut1 := 16#0000;
WordOut2 := 16#9100C;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(ROUND((rMaxSAmpl * 65535) / 100)));
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#9009 AND WordIn3 = DINT_TO_WORD(REAL_TO_DINT(ROUND((rrMaxSAmpl * 65535) / 100))) AND WordIn4 = 16#C0DE THEN
Schritt := Schritt + 1;
END_IF;
 

Anhänge

  • S1_Data_Neu.jpg
    S1_Data_Neu.jpg
    244,2 KB · Aufrufe: 11

Oberchefe

Well-known member
Beiträge
2.801
Punkte Reaktionen
530
Zuviel Werbung?
-> Hier kostenlos registrieren
Fast richtig:


//Parameter Schwingamplitude schreiben 0 - 100%
WordOut1 := 16#0000;
WordOut2 := 16#900C;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(ROUND((rMaxSAmpl * 65535) / 100)));
WordOut4 := 16#8000 OR ControlBits;

IF WordIn2 = 16#900C AND WordIn3 = DINT_TO_WORD(REAL_TO_DINT(ROUND((rrMaxSAmpl * 65535) / 100))) AND WordIn4 = 16#C0DE THEN
Schritt := Schritt + 1;
END_IF;
 
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
GSD habe ich bereits Installiert siehe Foto. Ist die HW Kennung die Adresse was Sie meinen?
Erfolgt bei ProfiNet nicht die Kommunikation über Byte ?
 

Anhänge

  • Netzübersicht.JPG
    Netzübersicht.JPG
    166,1 KB · Aufrufe: 16
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Wird dabei (HW-Kennung) nur eine Systemkonstante für das projektierte Telegramm angelegt ?
Im Bild zu sehen HW-Kennung 278 wird dann mit Hilfe der Anweisungen „DPRD_DAT“ + „DPWR_DAT“ die Telegramme gesendet und empfangen?
 

Oberchefe

Well-known member
Beiträge
2.801
Punkte Reaktionen
530
Also wie bereits geschrieben zwei Möglichkeiten

grün markiert die direkte Art, passend dazu Variablen anlegen

Die rot markierte HW-ID könnte man verwenden, um per DPRD_DAT DPWR_DAT die Daten zu lesen und zu schreiben.



Reo1.png Reo2.png
 
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Super Vielen Herzlichen Dank !! Habe ehrlich gesagt nicht damit gerechnet mit so eine schnelle Hilfe von Profis.

Also es ist so dass für die Kommunikation die Parameter als Eingangs Byte
WordOut1 := 16#0000; als Variable mit der Variable ReoInWord1 ( %EW268) verbinden soll
WordOut2 := 16#900C; als Variable mit der Variable ReoInWord2 ( %EW270) verbinden soll
usw.

und die Abfrage ob der Wert tatsächlich empfangen wurde als Ausgangs Byte:
WordIn2 = 16#900C als Variable mit der Variable ReoOutWord2 ( %AW270) verbinden soll
WordIn3 = DINT_TO_WORD(REAL_TO_DINT(ROUND((rrMaxSAmpl * 65535) / 100))) als Variable mit der Variable ReoOutWord2 ( %AW272) verbinden soll
usw.

Stimmt das so oder liege ich total falsch als Blutiger Anfänger ?
 

Oberchefe

Well-known member
Beiträge
2.801
Punkte Reaktionen
530
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es ist so dass für die Kommunikation die Parameter als Eingangs Byte
WordOut1 := 16#0000; als Variable mit der Variable ReoInWord1 ( %EW268) verbinden soll
WordOut2 := 16#900C; als Variable mit der Variable ReoInWord2 ( %EW270) verbinden soll
usw.
und die Abfrage ob der Wert tatsächlich empfangen wurde als Ausgangs Byte:
WordIn2 = 16#900C als Variable mit der Variable ReoOutWord2 ( %AW270) verbinden soll
WordIn3 = DINT_TO_WORD(REAL_TO_DINT(ROUND((rrMaxSAmpl * 65535) / 100))) als Variable mit der Variable ReoOutWord2 ( %AW272) verbinden soll
usw.

Nicht ganz, WordOut1 muss auf ReoOutWord1 usw.
 
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Guten Abend ,
habe mich mal wieder mit dem Problem beschäftigt , leider ohne erfolg. Finde die richtige Lösung irgendwie nicht...:unsure:
Was soll ich bei der ControlBits definieren ? Bekomme bei der Übersetzung lauter Fehler... würde mich freuen wenn mir jemand da weiter helfen könnte.
Vielen Dank im voraus!!
 

Anhänge

  • Reovib.JPG
    Reovib.JPG
    182,7 KB · Aufrufe: 19
  • Sortierer_Band 87_UP1_V14_1.zip
    1,9 MB · Aufrufe: 1
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

wie kann ich WordOut3 schreiben wenn ich den Wert rSollFrequenz mit komma übertragen möchte?
Vielen Dank für die Unterstützung.

2:
//Parameter xxHz schreiben 5 - 300Hz
WordOut1 := 16#0000;
WordOut2 := 16#9005;
WordOut3 := DINT_TO_WORD(REAL_TO_DINT(rSollFrequenz * 100.0));
WordOut4 := 16#8000 OR ControlBits;
 

Oberchefe

Well-known member
Beiträge
2.801
Punkte Reaktionen
530
Was soll ich bei der ControlBits definieren ?

Das ist eine WORD Variable. Die Solltest du ganz oben (also oberhalb der Case) mit 0 initialisieren. Wenn die Parameterierung abgeschlossen ist, wird darüber das Ding gestartet, indem die Variable den Wert w#16#4 bekommt, über w#16#0 wird das Ding dann gestoppt, kannst dazu ja die Variable "Schritt" auf Wert x vergleichen).
 
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Guten Abend,
ja das habe ich und Funktioniert auch. Vielen Dank!
Mein Problem ist DINT_TO_WORD(REAL_TO_DINT(rSollFrequenz * 100.0));
ich bekomme auf dem Steuergerät (Reovib) keinen Wert mit komma zb. 49,6 Hz
Variable rSollFrequenz ist in DB als DInt definiert und wird über Touch Panel eingegeben je nach Aufgabestellung
bekomme aber nicht den gleichen Wert in Reovib Display (zeigt immer 140,0)
Gebe ich den Wert ohne komma Funktioniert das ganze.
Laut Hersteller (siehe Tabelle) Schwingfrequenz.
Alle andere Werte werden Sauber übertragen.
 
OP
R

RolandA

Member
Beiträge
13
Punkte Reaktionen
0
Vielen Dank,
Habe ich schon gemacht aber dann kann ich nicht mehr den Wert in Display als komma Wert einstellen. siehe bilder
 

Anhänge

  • TD2.JPG
    TD2.JPG
    101,7 KB · Aufrufe: 5
  • TD1.JPG
    TD1.JPG
    103,6 KB · Aufrufe: 5
  • TD3.JPG
    TD3.JPG
    58,4 KB · Aufrufe: 4
Oben