+ Antworten
Ergebnis 1 bis 4 von 4
  1. #1
    Registriert seit
    Aug 2012
    Ort
    Engerwitzdorf in Oberösterreich
    Beiträge
    64

    Standard Wechselstromzähler Saia-Burgess ALD1D5F10 mit Modbus-Schnittstelle (RTU)

    1. RS-485 Schnittstelle am PC konfigurieren/einrichten
    TIPP: Ich verwende einen „Delock Adapter USB 2.0 to 4 x serial RS-422/485“ und bin sehr zufrieden damit (betreibe noch andere RS-485 Geräte auf diesem Adapter)

    1.1. Wechselstromzähler einbauen und mit RS-485 Schnittstelle verbinden



    2. In IP-Symcon einen ‚Serial Port‘ anlegen
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	010-SerialPort Instanz hinzufügen.png 
Hits:	259 
Größe:	39.6 KB 
ID:	24874

    2.1. Vorhanden RS-485 COM Port auswählen und Konfigurieren
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	011-SerialPort-Settings.png 
Hits:	225 
Größe:	13.8 KB 
ID:	24875 Portkonfiguration 4800,8,1,Even

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	012-SerialPort.png 
Hits:	221 
Größe:	26.7 KB 
ID:	24876 ...sollte dann so aussehen

    3. In IP-Symcon einen ‚ModBus RTU TCP‘ Splitter anlegen
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	020-ModBus-Splitter anlegen.png 
Hits:	269 
Größe:	40.8 KB 
ID:	24877
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	021-ModBus-Splitter-Settings.png 
Hits:	244 
Größe:	13.3 KB 
ID:	24878 Hier ‚Modebus RTU‘ und die Geräte-ID einstellen. Für ‚Übergeordnete Instanz‘ den vorher angelegten ‚Serial Port‘ auswählen.

    TIPP: Die Geräte-ID ist die Modbus Adresse welche direkt am Wechselstromzähler eingestellt wird. Werden mehrere solche WSZ am selben Modebus betrieben, benötigen diese natürlich unterschiedlichen Adressen.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	022-ModBus-Splitter anlegen.png 
Hits:	225 
Größe:	17.6 KB 
ID:	24879 ...sollte dann so aussehen

    4. In IP-Symcon eine neue Kategorie anlegen
    siehe nächsten Beitrag ... (es können leider nur 10 Grafiken pro Beitrag hinzugefügt werden)
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	023-ModBus-Splitter-Settings.png 
Hits:	184 
Größe:	13.6 KB 
ID:	24880   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	031-ModBus Geraete hinzufuegen.png 
Hits:	195 
Größe:	31.3 KB 
ID:	24882   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	032-ModBus Geraete Settings - R01.png 
Hits:	214 
Größe:	17.1 KB 
ID:	24883  
    Geändert von PreinfalkG (18.02.14 um 20:26 Uhr)

  2. #2
    Registriert seit
    Aug 2012
    Ort
    Engerwitzdorf in Oberösterreich
    Beiträge
    64

    4. In IP-Symcon eine neue Kategorie anlegen
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	030-Kategorie anlegen.png 
Hits:	149 
Größe:	63.3 KB 
ID:	24884 (im Screenshot ‚ALD1D5FD00A3A00 #10 – ModBus‘)
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	031-ModBus Geraete hinzufuegen.png 
Hits:	160 
Größe:	31.3 KB 
ID:	24885 Unter der derzeit leeren Kategorie wird jetzt für jedes Modbus Register ein IP-Symcon ‚ModBus Gerät‘ angelegt
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	032-ModBus Geraete Settings - R01.png 
Hits:	192 
Größe:	17.1 KB 
ID:	24886 Einheit ist immer ‚Word (16Bit - Unsigned)
    Schreibadresse ist immer 0
    Leseadresse ist immer Registernummer minus 1 (also R01 hat Leseadresse 0)

    Bei ‚Übergeordnete Instanz‘ die vorher angelegte ‚ModBus RTU TCP‘ Splitter Instanz auswählen.

    Nach dieser Tabelle jetzt ‚ModBus Gerät‘ für ‚ModBus Gerät‘ anlegen und konfigurieren.
    Register (ModBus Gerät) Einheit Schreibadresse Leseadresse
    R01 - Firmware Version Word (16Bit - Unsigned) 0 0
    R02 - Modbus com. Anzahl unterstützte Register Word (16Bit - Unsigned) 0 1
    R03 - Modbus com. Anzahl unterstützte Flags Word (16Bit - Unsigned) 0 2
    R04 - Baudrate High Word (16Bit - Unsigned) 0 3
    R05 - Baudrate Low Word (16Bit - Unsigned) 0 4
    R15 - Hardware Version Word (16Bit - Unsigned) 0 14
    R16 - 32 Bit Seriennummer (high Byte) Word (16Bit - Unsigned) 0 15
    R17 - 32 Bit Seriennummer (low Byte) Word (16Bit - Unsigned) 0 16
    R22 - Status letzte Kommunikationsanfrage Word (16Bit - Unsigned) 0 21
    R23 - Modebus timeout Word (16Bit - Unsigned) 0 22
    R24 - Modebus Address Word (16Bit - Unsigned) 0 23
    R25 - Error Register Word (16Bit - Unsigned) 0 24
    R28 - WT1 total (high Byte) Word (16Bit - Unsigned) 0 27
    R29 - WT1 total (low Byte) Word (16Bit - Unsigned) 0 28
    R30 - WT1 partial (high Byte) Word (16Bit - Unsigned) 0 29
    R31 - WT1 partial (low Byte) Word (16Bit - Unsigned) 0 30
    R36 - URMS (Effective Voltage) Word (16Bit - Unsigned) 0 35
    R37 - IRMS (Effective Current) [x0.1] Word (16Bit - Unsigned) 0 36
    R38 - PRMS (Effective active Power) [x0.01] Word (16Bit - Unsigned) 0 37
    R39 - QRMS (Effective reactive Power) [x0.01] Word (16Bit - Unsigned) 0 38
    R40 - cos phi [x0.01] Word (16Bit - Unsigned) 0 39

    Danach sollte es so aussehen…
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	034-ModeBus Geraete für jedes Register.png 
Hits:	224 
Größe:	34.0 KB 
ID:	24887


    5. ModBus Register lesen
    Mit dem Skript Befehl „ModBus_RequestRead(integer $InstanzID)“ sollten jetzt die einzelnen Register lesbar sein.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	040-UpdateScript anlegen.png 
Hits:	182 
Größe:	35.6 KB 
ID:	24888 Um hier nicht für jede Instanz die InstanzID in ein Skript schreiben zu müssen legen wir unter unserer Kategorie ein neues Skipt an (im Screenshot ‚Update - ModeBus Register‘)

    und befüllen es mit diesem Code …
    PHP-Code:
    <?
    $scriptId 
    $_IPS['SELF'];                //ID dieses Skripts
    $parendId IPS_GetParent($scriptId);     //ID der Kategorie
     
    $childList IPS_GetChildrenIDs($parendId);
    foreach(
    $childList as $child) {
          
    $object IPS_GetObject($child);
          
    $objTyp $object['ObjectType'];
          switch(
    $objTyp) {
                      case 
    0// Kategorie
                                 
    break;
                      case 
    1// Instanz
                                  
    $return ModBus_RequestRead($child);
                      break;
                                 default:
                      break;
          }
    }
    ?>
    Info: Dieses Skript durchläuft alle ModBus Instanzen und ruft ‚ModBus_RequestRead(…)‘ auf

    Wenn alles klappt, sollten jetzt alle Register mit den ‚Raw-Daten‘ des Wechselstromzählers befüllt sein!
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	041-UpdateScript ausfuehren.png 
Hits:	227 
Größe:	58.2 KB 
ID:	24889

    6. Daten aufbereiten und Anzeigen
    siehe nächsten Beitrag ... (es können leider nur 10 Grafiken pro Beitrag hinzugefügt werden)

  3. #3
    Registriert seit
    Aug 2012
    Ort
    Engerwitzdorf in Oberösterreich
    Beiträge
    64

    6. Daten aufbereiten und Anzeigen

    Um jetzt die Raw-Daten entsprechen aufzubereiten legen wir ein neues ‚Dummy Module‘ mit den entsprechenden Variablen an -> siehe Screenshot …
    Tipp: Formatierung und Einheiten für Ausgabe werden per Variablen Profile zugewiesen

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	050_Instanz mit allen wichigen Werten und Auswerteskript.png 
Hits:	182 
Größe:	15.9 KB 
ID:	24893

    In ein Skript (im Screenshot Auswerteskript) stecken wir folgenden Code …
    Achtung: Variablen IDs anpassen!
    PHP-Code:
    <?

    //R36 - URMS (Effective Voltage)
    $successful ModBus_RequestRead(55706);
    if(
    $successful) {
     
    $urms GetValueInteger(44738) ;
     
    SetValueFloat(10263,$urms);
    }

    //R37 - IRMS (Effective Current) [x0.1]
    $successful ModBus_RequestRead(51185);
    if(
    $successful) {
     
    $irms GetValueInteger(37971) ;
     
    SetValueFloat(10781,$irms 0.1);
    }

    //R38 - PRMS (Effective active Power) [x0.01]
    $successful ModBus_RequestRead(22508);
    if(
    $successful) {
     
    $prms GetValueInteger(40729) ;
     
    SetValueFloat(26035,$prms 10);
    }

    //R39 - QRMS (Effective reactive Power) [x0.01]
    $successful ModBus_RequestRead(23150);
    if(
    $successful) {
     
    $qrms GetValueInteger(53430) ;
     
    SetValueFloat(19208,$qrms 0.01);
    }

    //R40 - cos phi [x0.01]
    $successful ModBus_RequestRead(56781);
    if(
    $successful) {
     
    $cosPhi GetValueInteger(55547) ;
     
    SetValueFloat(49798,$cosPhi 0.01);
    }

    //R28 - WT1 total (high Byte) & R29 - WT1 total (low Byte)
    $successful1 ModBus_RequestRead(49619);
    $successful2 ModBus_RequestRead(16724);
    if(
    $successful1 && $successful2) {
     
    $highByte GetValueInteger(37385) ;
     
    $lowByteGetValueInteger(11850) ;
     
    SetValueFloat(42165,($highByte*65536 $lowByte)*0.01);
    }

    //R30 - WT1 partial (high Byte) & R31 - WT1 partial (low Byte)
    $successful1 ModBus_RequestRead(20948);
    $successful2 ModBus_RequestRead(35027);
    if(
    $successful1 && $successful2) {
     
    $highByte GetValueInteger(21450) ;
     
    $lowByteGetValueInteger(59989) ;
     
    SetValueFloat(42051,($highByte*65536 $lowByte)*0.01);
    }

    SetValueInteger(48777,GetValueInteger(48777)+1);

    ?>
    Info: Dieses Script liest die benötigten ModBus Register, rechnet die entsprechenden Raw-Daten um und steckt sie in die dafür vorgesehenen Variablen.

    Zusatz: Wenn die Ausführung dieses Skripts erfolgreich ist, kann es mittels eines ‚Zyklischen Ereignis‘ zum Beispiel alle 60 Sekunden ausgeführt werden.


    6. 1. Datenbank-Logging und Graph Visualisierung

    Für die Variablen 'PRMS - Effektive Wirkleistung' und 'Total kWh' aktivieren wir Datenbanklogging und Graph Visualierung

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	060 Variablen Logging PRMS.png 
Hits:	160 
Größe:	54.0 KB 
ID:	24894 mit Aggregationstyp 'Standard'
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	060 Variablen Logging Total kWh.png 
Hits:	169 
Größe:	55.4 KB 
ID:	24895 mit Aggregationstyp 'Zähler'


    7. Im WebFront sieht das dann so aus
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	070_WebFront.png 
Hits:	203 
Größe:	15.6 KB 
ID:	24896

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	071_WebFront - Chart Effektive Wirkleisstung .png 
Hits:	189 
Größe:	63.3 KB 
ID:	24897

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	072_WebFront - Chart Total kWh.png 
Hits:	189 
Größe:	92.6 KB 
ID:	24898
    Geändert von PreinfalkG (18.02.14 um 20:19 Uhr)

  4. #4
    Registriert seit
    Dec 2013
    Beiträge
    1

    Standard Vielen Dank an PreinfalkG

    Hallo PreinfalkG

    Das ist eine sauber Dokumentation.Respekt.

    Viele Grüße
    Jo

Ähnliche Themen

  1. Modbus RTU
    Von heizung260 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 11
    Letzter Beitrag: 06.09.12, 20:55
  2. Modbus RTU mit RS232
    Von heizung260 im Forum SPS Automatisierungstechnik
    Antworten: 0
    Letzter Beitrag: 19.03.12, 19:37
  3. Wechselstromzähler mit IO Schnittstelle
    Von orbitalo im Forum 1-Wire, M-BUS
    Antworten: 1
    Letzter Beitrag: 29.01.12, 12:01
  4. Moeller SPS Mit Modbus RTU
    Von Professorakiera im Forum SPS Automatisierungstechnik
    Antworten: 4
    Letzter Beitrag: 10.04.11, 17:35
  5. Modbus RTU einrichten
    Von sab4pv im Forum SPS Automatisierungstechnik
    Antworten: 1
    Letzter Beitrag: 21.03.10, 18:36