Uwaga! W przykładzie wykorzystano moduł Gate Modbus drugiej generacji z FW 1.1.0-2034C! 


Moduł Gate Modbus umożliwia odczyt wartości co najwyżej 32-bitowych, czyli dwóch rejestrów dwubajtowych (16-bitowych).
W przypadku niektórych urządzeń informacje zawarte są w czterech rejestrach dwubajtowych. Odczyt wartości 64-bitowych będzie możliwy poprzez podział na dwie wartości 32-bitowe i ich niezależny odczyt - pod warunkiem, że urządzenie zezwala na taki odczyt wartości 64-bitowych.



Przykładem urządzenia, które zwraca wartości w 4 rejestrach jest m. in. inwerter Fronius. W rejestrach zwracane są wartości energii dziennej, rocznej oraz całkowitej:


Uwaga! W celu odczytania wartości rejestrów od wybranego adresu należy odjąć offset wynoszący 1.


W związku z tym - chcąc odczytać np. wartość energii dziennej musimy:

* utworzyć dwa obiekty wirtualne na module Gate Modbus (o nazwie Gate_Modbus):

- pierwszy odczytujący dwa rejestry:


- drugi odczytujący kolejne dwa rejestry:


* dodać cechy użytkownika w CLU (o nazwie CLU):


gdzie cechy day_p1 oraz day_p2 przyjmują wartość początkową równą 00000000000000000000000000000000


* utworzyć skrypt w CLU, który przekonwertuje do postaci binarnej odczytane wartości dziesiętne rejestrów, połączy obie wartości i przekonwertuje je do postaci dziesiętnej:

if(day_reg==502) then
  CLU->day_p1="0"
  num=Gate_Modbus->x502_day_energy_p1->Value
  a=31
  
  for a=31, 0, -1 do
  b=2^a
    if(num>=b) then
      num=num-b
      CLU->day_p1=CLU->day_p1 .. "1"
    else
      CLU->day_p1=CLU->day_p1 .. "0"
    end
  end
  
  CLU->day_p1=string.sub(CLU->day_p1,2,33)
end

if(day_reg==504) then
  CLU->day_p2="0"
  num=Gate_Modbus->x504_day_energy_p2->Value
  a=31
  
  for a=31, 0, -1 do
  b=2^a
    if(num>=b) then
      num=num-b
      CLU->day_p2=CLU->day_p2 .. "1"
    else
      CLU->day_p2=CLU->day_p2 .. "0"
    end
  end
  
  CLU->day_p2=string.sub(CLU->day_p2,2,33)
end


CLU->day_sum_bin=CLU->day_p1 .. "" .. CLU->day_p2
CLU->day_energy_modbus=(tonumber(CLU->day_sum_bin,2))/1000


gdzie zmienna day_reg jest parametrem skryptu:


* przypisać wywołanie powyższego skryptu z odpowiednią wartością parametru:
- w pierwszym obiekcie wirtualnym:


- w drugim obiekcie wirtualnym:


Tak utworzoną konfigurację przesyłamy do modułu CLU oraz Gate ModbusPo jej przesłaniu cechy użytkownika w CLU powinny przyjąć odpowiednie wartości: