Circurator CVM MINI power analyzer

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
1
Uppdaterad
2013-04-06
Skapad
2013-04-06
Kategori
Mätare, Modbus
Visningar
2730

Beskrivning

The CVM-MINI panel analyzer is a programmable measuring instrument; it offers a series of options for using it, which may be selected from configuration menus on the instrument itself. Before starting the analyzer carefully read sections: power supply, connection and setting and select the most suitable form of operation in order to obtain
the required data.

Bruksanvisning

No special instruction needed.

Juridisk information

Alla skript tillhandahålls i befintligt skick och all användning sker på eget ansvar. Felaktig använding kan leda till skadad eller förstörd utrustning.

Skript kod


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for CIRCUTOR CVM-MINI settings
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU

% Author:  Ove Jansson, ABELKO AB Luleå 
% History: 2011-04-05 initial version
%
DEVICETYPE CircutorRead1 NAMED "Circutor Reg1-20" TYPEID 21410 IS 
  
  PARAMETER
    Id       : "Adress";
   
  PUBLIC
    V1       : "L1_Voltage_phase"   ["V"]; % x10
    V2       : "L1_Current"   ["mA"];
    V3       : "L1_Active_power"     ["w"];
    V4       : "L1_Reactive_Power"   ["w"];
    V5       : "L1_Power_factor"        [""];  % x100
    V6       : "L2_Voltage_phase"   ["V"]; % x10
    V7       : "L2_Current"   ["mA"];
    V8       : "L2_Active_power"     ["w"];
    V9       : "L2_Reactive_Power"   ["w"];
    V10      : "L2_Power_factor"        [""];  % x100
    V11      : "L3_Voltage_phase"   ["V"]; % x10
    V12      : "L3_Current"   ["mA"];
    V13      : "L3_Active_power"     ["w"];
    V14      : "L3_Reactive_Power"   ["w"];
    V15      : "L3_Power_factor"        [""];  % x100
    V16      : "Active_power_III"     ["w"];
    V17      : "Inductive_power_III"    ["w"];
    V18      : "Capacitive_power_III"   ["w"];
    V19      : "Cos_psi_III"     [""]; % x100
    V20      : "Power_factor_III"     [""]; % x100

    PRIVATE
    Tmp1;

  BAUDRATE 9600;

  CHECKSUM MODBUS SWAPPED;
  
  TELEGRAM AnalogInput1 NAMED "Läs Reg 1-20" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(0);      % OBS!! Register adress = Modbusadress in spec
      DATA[4]  := RWORD(40);     % Number of registers

    ANSWER SIZE 85    % antal register *2 + 5
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
      DATA[2]   = BYTE(80);      % Byte count
      DATA[3] -> RWORD(Tmp1 := DATA*65536;);
      DATA[5] -> RWORD(V1 := (Tmp1 + DATA) / 10;);  % V1       : "L1_Voltage_phase"   ["V"]; % x10
      DATA[7] -> RWORD(Tmp1 := DATA*65536;);
      DATA[9] -> RWORD(V2 := (Tmp1 + DATA););  % V2       : "L1_Current"   ["mA"];
      DATA[11] -> RWORD(Tmp1 := DATA*65536;);
      DATA[13] -> RWORD(V3 := (Tmp1 + DATA););  % V3       : "L1_Active_power"     ["w"];
      DATA[15] -> RWORD(Tmp1 := DATA*65536;);
      DATA[17] -> RWORD(V4 := (Tmp1 + DATA););  % V4       : "L1_Reactive_Power"   ["w"];
      DATA[19] -> RWORD(Tmp1 := DATA*65536;);
      DATA[21] -> RWORD(V5 := (Tmp1 + (DATA)) / 100;);  % V5       : "L1_Power_factor"        [""];  % x100
      DATA[23] -> RWORD(Tmp1 := DATA*65536;);
      DATA[25] -> RWORD(V6 := (Tmp1 + (DATA)) / 10;);  % V6       : "L2_Voltage_phase"   ["V"]; % x10
      DATA[27] -> RWORD(Tmp1 := DATA*65536;);
      DATA[29] -> RWORD(V7 := (Tmp1 + (DATA)););  % V7       : "L2_Current"   ["mA"];
      DATA[31] -> RWORD(Tmp1 := DATA*65536;);
      DATA[33] -> RWORD(V8 := (Tmp1 + (DATA)););  % V8       : "L2_Active_power"     ["w"];
      DATA[35] -> RWORD(Tmp1 := DATA*65536;);
      DATA[37] -> RWORD(V9 := (Tmp1 + (DATA)););  % V9       : "L2_Reactive_Power"   ["w"];
      DATA[39] -> RWORD(Tmp1 := DATA*65536;);
      DATA[41] -> RWORD(V10 := (Tmp1 + (DATA)) / 100;);  % V10      : "L2_Power_factor"        [""];  % x100
      DATA[43] -> RWORD(Tmp1 := DATA*65536;);
      DATA[45] -> RWORD(V11 := Tmp1 + (DATA);); % V11      : "L3_Voltage_phase"   ["V"]; % x10
      DATA[47] -> RWORD(Tmp1 := DATA*65536;);
      DATA[49] -> RWORD(V12 := Tmp1 + (DATA);); % V12      : "L3_Current"   ["mA"];
      DATA[51] -> RWORD(Tmp1 := DATA*65536;);
      DATA[53] -> RWORD(V13 := Tmp1 + (DATA);); % V13      : "L3_Active_power"     ["w"];
      DATA[55] -> RWORD(Tmp1 := DATA*65536;);
      DATA[57] -> RWORD(V14 := Tmp1 + (DATA);); % V14      : "L3_Reactive_Power"   ["w"];
      DATA[59] -> RWORD(Tmp1 := DATA*65536;);
      DATA[61] -> RWORD(V15 := (Tmp1 + (DATA)) / 100;); % V15      : "L3_Power_factor"        [""];  % x100
      DATA[63] -> RWORD(Tmp1 := DATA*65536;);
      DATA[65] -> RWORD(V16 := Tmp1 + (DATA););       % V16      : "Active_power_III"     ["w"];
      DATA[67] -> RWORD(Tmp1 := DATA*65536;);
      DATA[69] -> RWORD(V17 := Tmp1 + (DATA);); % V17      : "Inductive_power_III"    ["w"];
      DATA[71] -> RWORD(Tmp1 := DATA*65536;);
      DATA[73] -> RWORD(V18 := Tmp1 + (DATA);); % V18      : "Capacitive_power_III"   ["w"];
      DATA[75] -> RWORD(Tmp1 := DATA*65536;);
      DATA[77] -> RWORD(V19 := (Tmp1 + (DATA)) / 100;); % V19      : "Cos_psi_III"     [""]; % x100
      DATA[79] -> RWORD(Tmp1 := DATA*65536;);
      DATA[81] -> RWORD(V20 := (Tmp1 + (DATA)) / 100;); % V20      : "Power_factor_III"     [""]; % x100
      
    TIMEOUT 2000

  END;
END;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for CIRCUTOR CVM-MINI settings
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU

% Author:  Ove Jansson, ABELKO AB Luleå 
% History: 2011-04-05 initial version
%          
DEVICETYPE CircutorRead2 NAMED "Circutor Reg21-40" TYPEID 21411 IS 
  
  PARAMETER
    Id       : "Adress";
   
  PUBLIC
    V1       : "Frequency"   ["Hz"]; % x10 28
    V2       : "Voltage_line_L1-L2" ["V"]; % x10 2a
    V3       : "Voltage_line_L2-L3" ["V"]; % x10 2c
    V4       : "Voltage_line_L3-L1" ["V"]; % x10 2e
    V5       : "Percent_THD_V_L1"       ["%"];  % x10 30
    V6       : "Percent_THD_V_L2"       ["%"];  % x10 32
    V7       : "Percent_THD_V_L3"       ["%"];  % x10 34
    V8       : "Percent_THD_A_L1"       ["%"];  % x10 36
    V9       : "Percent_THD_A_L2"       ["%"];  % x10 38
    V10      : "Percent_THD_A_L3"       ["%"];  % x10 3a
    V11      : "Active_energy"   ["wh"]; % 3c
    V12      : "Induct_reactive_energy" ["wh"]; % 3e
    V13      : "Capac_reactive_energy"  ["wh"]; % 40
    V14      : "Apparent_Power_III"   ["w"];  % 42
    V15      : "Maximum_demand"        [""]; % w/VA/mA 44 
    V16      : "3p_current_Avg"     ["mA"]; % 46
    V17      : "Neutral_current"    ["mA"]; % 48
    V18      : "L1_Apparent_power" ["mA"]; % 4a
    V19      : "L2_Apparent_power"     ["mA"]; % 4c
    V20      : "L3_Apparent_power"     ["mA"]; % 4e

    PRIVATE
    Tmp2;

  BAUDRATE 9600;

  CHECKSUM MODBUS SWAPPED;
  
  TELEGRAM AnalogInput2 NAMED "Läs Reg 21-40" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(40);      % OBS!! Register adress = Modbusadress in spec
      DATA[4]  := RWORD(40);     % Number of registers

    ANSWER SIZE 85    % antal register (2 per värde) *2 + 5
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
      DATA[2]   = BYTE(80);      % Byte count   
      DATA[3] -> RWORD(Tmp2 := DATA*65536;);
      DATA[5] -> RWORD(V1 := (Tmp2 + (DATA)) / 10;);  % V1       : "Frequency"   ["Hz"];  x10
      DATA[7] -> RWORD(Tmp2 := DATA*65536;);
      DATA[9] -> RWORD(V2 := (Tmp2 + (DATA)) / 10;); % V2       : "Voltage_line_L1-L2" ["V"];  x10
      DATA[11] -> RWORD(Tmp2 := DATA*65536;);
      DATA[13] -> RWORD(V3 := (Tmp2 + (DATA)) / 10;); % V3       : "Voltage_line_L2-L3" ["V"];  x10
      DATA[15] -> RWORD(Tmp2 := DATA*65536;);
      DATA[17] -> RWORD(V4 := (Tmp2 + (DATA)) / 10;); % V4       : "Voltage_line_L3-L1" ["V"];  x10
      DATA[19] -> RWORD(Tmp2 := DATA*65536;);
      DATA[21] -> RWORD(V5 := (Tmp2 + (DATA)) / 10;); % V5       : "Percent_THD_V_L1"       ["%"];   x10
      DATA[23] -> RWORD(Tmp2 := DATA*65536;);
      DATA[25] -> RWORD(V6 := (Tmp2 + (DATA)) / 10;); % V6       : "Percent_THD_V_L2"       ["%"];   x10
      DATA[27] -> RWORD(Tmp2 := DATA*65536;);
      DATA[29] -> RWORD(V7 := (Tmp2 + (DATA)) / 10;); % V7       : "Percent_THD_V_L3"       ["%"];   x10
      DATA[31] -> RWORD(Tmp2 := DATA*65536;);
      DATA[33] -> RWORD(V8 := (Tmp2 + (DATA)) / 10;); % V8       : "Percent_THD_A_L1"       ["%"];   x10
      DATA[35] -> RWORD(Tmp2 := DATA*65536;);
      DATA[37] -> RWORD(V9 := (Tmp2 + (DATA)) / 10;); % V9       : "Percent_THD_A_L2"       ["%"];   x10
      DATA[39] -> RWORD(Tmp2 := DATA*65536;);
      DATA[41] -> RWORD(V10 := (Tmp2 + (DATA)) / 10;); % V10      : "Percent_THD_A_L3"       ["%"];   x10
      DATA[43] -> RWORD(Tmp2 := DATA*65536;);
      DATA[45] -> RWORD(V11 := Tmp2 + (DATA);); % V11      : "Active_energy"   ["wh"];
      DATA[47] -> RWORD(Tmp2 := DATA*65536;);
      DATA[49] -> RWORD(V12 := Tmp2 + (DATA);); % V12      : "Induct_reactive_energy" ["wh"];
      DATA[51] -> RWORD(Tmp2 := DATA*65536;);
      DATA[53] -> RWORD(V13 := Tmp2 + (DATA);); % V13      : "Capac_reactive_energy"  ["wh"];
      DATA[55] -> RWORD(Tmp2 := DATA*65536;);
      DATA[57] -> RWORD(V14 := Tmp2 + (DATA);); % V14      : "Apparent_Power_III"   ["w"];
      DATA[59] -> RWORD(Tmp2 := DATA*65536;);
      DATA[61] -> RWORD(V15 := Tmp2 + (DATA);); % V15      : "Maximum_demand"        [""];  w/VA/mA
      DATA[63] -> RWORD(Tmp2 := DATA*65536;);
      DATA[65] -> RWORD(V16 := Tmp2 + (DATA););      % V16      : "3p_current_Avg"     ["mA"];
      DATA[67] -> RWORD(Tmp2 := DATA*65536;);
      DATA[69] -> RWORD(V17 := Tmp2 + (DATA);); % V17      : "Neutral_current"    ["mA"];
      DATA[71] -> RWORD(Tmp2 := DATA*65536;);
      DATA[73] -> RWORD(V18 := Tmp2 + (DATA);); % V18      : "L1_Apparent_power" ["°w"]; % 4a
      DATA[75] -> RWORD(Tmp2 := DATA*65536;);
      DATA[77] -> RWORD(V19 := Tmp2 + (DATA);); % V19      : "L2_Apparent_power"     ["mA"]; % 4c
      DATA[79] -> RWORD(Tmp2 := DATA*65536;);
      DATA[81] -> RWORD(V20 := Tmp2 + (DATA);); % V20      : "L3_Apparent_power"     ["mA"]; % 4e
      
    TIMEOUT 2000

  END;

END;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for CIRCUTOR CVM-MINI settings
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU

% Author:  Ove Jansson, ABELKO AB Luleå 
% History: 2011-04-05 initial version
%
DEVICETYPE CircutorRead3 NAMED "Circutor Reg41-48" TYPEID 21412 IS 
  
  PARAMETER
    Id       : "Adress";
   
  PUBLIC
    V1       : "Temperature"  ["°C"]; % x10 50
    V2       : "Maximum_demand_A2" ["mA"]; % 52
    V3       : "Maximum_demand_A3" ["mA"]; % 54
    V4       : "Apparent_energy"  ["wh"]; % 56
    V5       : "Active_energy_gen" ["wh"]; % 58
    V6       : "Induct_energy_gen" ["wh"]; % 5a
    V7       : "Capacitiv_energy_gen" ["wh"]; % 5c
    V8       : "Apparent_energy_gen"    ["wh"]; % 5e

    PRIVATE
    Tmp3;

  BAUDRATE 9600;

  CHECKSUM MODBUS SWAPPED;
  
  TELEGRAM AnalogInput3 NAMED "Läs Reg 41-48" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(80);      % OBS!! Register adress = Modbusadress in spec
      DATA[4]  := RWORD(16);     % Number of registers

    ANSWER SIZE 21    % antal register *2 + 5
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
      DATA[2]   = BYTE(32);      % Byte count
      
      DATA[3] -> RWORD(Tmp3 := DATA*65536;);
      DATA[5] -> RWORD(Tmp3 := Tmp3 + DATA; IF Tmp3 > 2147483647 THEN V1 := (Tmp3-4294967296) / 10; ELSE V1 := Tmp3 / 10; ENDIF;); % V18      : "Temperature"   ["°C"];  x10    
      DATA[7] -> RWORD(Tmp3 := DATA*65536;);
      DATA[9] -> RWORD(V2 := Tmp3 + DATA;);  % V2       : "Maximum_demand_A2" ["mA"];  52
      DATA[11] -> RWORD(Tmp3 := DATA*65536;);
      DATA[13] -> RWORD(V3 := Tmp3 + DATA;);  % V3       : "Maximum_demand_A3" ["mA"];
      DATA[15] -> RWORD(Tmp3 := DATA*65536;);
      DATA[17] -> RWORD(V4 := Tmp3 + DATA;);  %  V4       : "Apparent_energy"  ["wh"];
      DATA[19] -> RWORD(Tmp3 := DATA*65536;);
      DATA[21] -> RWORD(V5 := Tmp3 + DATA;);  % V5       : "Active_energy_gen" ["wh"];
      DATA[23] -> RWORD(Tmp3 := DATA*65536;);
      DATA[25] -> RWORD(V6 := Tmp3 + DATA;);  % V6       : "Induct_energy_gen" ["wh"];
      DATA[27] -> RWORD(Tmp3 := DATA*65536;);
      DATA[29] -> RWORD(V7 := Tmp3 + DATA;);  % V7       : "Capacitiv_energy_gen" ["wh"];
      DATA[31] -> RWORD(Tmp3 := DATA*65536;);
      DATA[33] -> RWORD(V8 := Tmp3 + DATA;);  % V8       : "Apparent_energy_gen"    ["wh"];
     
    TIMEOUT 2000

  END;

END;

Användarnas noteringar

Du måste vara inloggad för att göra en notering. Bli medlem eller logga in. Vi använder en moderator som godkänner noteringarna innan de visas.