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 Modbus. Po jej przesłaniu cechy użytkownika w CLU powinny przyjąć odpowiednie wartości: