====== Plik konfiguracyjny urządzeń MODBUS RTU ====== Z wszystkimi urządzeniami wymienionymi w elemencie [[pl:ibvunit:ibvunit-config#|]] , nawiązywana jest komunikacja podczas startu programu **ibvunit**. Urządzenia identyfikowane są na podstawie trzech wartości liczbowych: * **HardwareId** (h) – liczbowy identyfikator sprzętowy urządzeniach * **FirmwareId** (f) – liczbowy identyfikator oprogramowania * **FirmwareVersion** (v) – liczbowy identyfikator wersji oprogramowania Na podstawie w/w wartości składana jest unikalna nazwa urządzenia w postaci np. **h3f1v6**. Każde urządzenie ma swój indywidualny plik konfiguracyjny. Program **ibvunit** przydziela danemu urządzeniu konfigurację, wybierając ją z odpowiedniego pliku xml. Zalecaną nazwą pliku konfiguracyjnego jest pełna nazwa urządzenia np. **h3f1v6.xml**. ===== Przykładowy plik konfiguracyjny ===== Poniżej przedstawiona jest składnia przykładowego pliku konfiguracyjnego urządzenia **h1021f1v0**. Przykład ten zawiera również komentarze, które pełnią funkcję skróconej dokumentacji, podpowiedzi lub przykładu alternatywnej konfiguracji, dzięki temu jest możliwa edycja pliku konfiguracyjnego w sposób intuicyjny. Głównym elementem pliku konfiguracyjnego jest **Device**, posiadający między innymi atrybuty: * **Version** – określa wersją pliku konfiguracyjnego urządzenia. Właściwą wersją pliku konfiguracyjnego urządzenia jest **1.2** (dla programu ibvunit w wersji 2.3.5). * **HardwareId** (h) – liczbowy identyfikator sprzętowy urządzeniach * **FirmwareId** (f) – liczbowy identyfikator oprogramowania * **FirmwareVersion** (v) – liczbowy identyfikator wersji oprogramowania Pozostałe elementy pliku konfiguracyjnego zostały opisane w osobnych rozdziałach dokumentacji. ===== ===== Element **HoldingRegisters** jest odpowiedzialna za zdefiniowanie rejestrów urządzenia typu **Holding Registers** z komunikacją MODBUS RTU, które będą dostępne dla programu **ibvunit**. Element może zawierać wiele elementów [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]] lub nie zawierać żadnego takiego elementu. Element zawiera atrybuty: * **SetMode** - (obowiązkowy) Wartość atrybutu określa czy do ustawienia wartości danego rejestru należy użyć funkcji MODBUS PresetSingleRegister czy WriteMultipleRegisters. Atrybut może przyjmować wartości: * **Multiple** - oznacza, że komunikacja z urządzeniem MODBUS dopuszcza stosowania hurtowych zapisów dla **Holding Registers**. Wartość **Multiple** należy ustawiać tylko dla urządzeń MODBUS poprawnie realizujących funkcje WriteMultipleRegisters (kod 16). * **Single** - oznacza, że komunikacja z urządzeniem MODBUS dopuszcza stosowania jedynie pojedynczych zapisów dla **Holding Registers**. Wartość **Single** należy ustawiać tylko dla urządzeń MODBUS poprawnie realizujących funkcje PresetSingleRegister (kod 6). Jeżeli urządzenie wspiera oba tryby, zalecane jest użycie **Multiple** ze względów wydajnościowych. Każde urządzenie obsługujące zmienne typu **HoldingRegister** musi prawidłowo realizować przynajmniej jedną z w/w funkcji w celu zmiany wartość danego rejestru. Odczyt zmiennych typu **HoldingRegister** realizowany jest przez funkcję MODBUS ReadHoldingRegisters (kod 3), która również musi być wspierana przez urządzenie. ==== ==== Element znajdujący się w elemencie [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]]. Element jest odpowiedzialna za zdefiniowanie pojedynczego rejestru urządzenia typu **Holding Registers** z komunikacją MODBUS RTU Element zawiera atrybuty: * **Addr** – adres rejestru w urządzeniu zgodnym z MODBUS RTU. * **Name** – nazwa własna rejestru. Pod tą nazwą rejestr będzie funkcjonował jako zmienna w programie **ibvunit** i w całym **IB-System**. Nazwa parametru jest dowolna, jednak założeniem jest jej intuicyjność. Dlatego zalecana jest standaryzacja nazw w/g dokumentacji [[pl:ibprotocol:start|ibprotokołu]]. * **Rd** – flaga (wartość 0 lub 1) oznaczająca czy dany rejestr jest możliwy do odczytu. * **Wr** – flaga (wartość 0 lub 1) oznaczająca czy dany rejestr jest możliwy do zapisu * **Min** – minimalna wartość jaką może przyjąć rejestr * **Max** – maksymalna wartość jaką może przyjąć rejestr * **Presentation** – sposób prezentacji zmiennej w programie **ibvunit** i całym **IB-System**. Dopuszczalne wartości atrybutu to: * **unsigned** – wartość liczbowa całkowita bez znaku. Zakres wartości 0..65535 * **signed** – wartość liczbowa całkowita ze znakiem. Zakres wartości -32768..32767 * **hex** – wartość liczbowa w postaci szesnastkowej 0x0000. Zakres wartości 0x0000..0xffff * **SwappBytes** - (opcjonalny) jeżeli jest zdefiniowany i jego wartość wynosi "1", wówczas **ibvunit** zamienia dwa bajty wartości danego rejestru, w momencie transmisji go do i z urządzenia. Domyślnie bajty nie są zamieniane i przekazywane zgodnie z protokołem MODBUS RTU (SwappBytes="0"). ===== ===== Element **InputRegisters** jest odpowiedzialna za zdefiniowanie rejestrów urządzenia typu **Input Registers** z komunikacją MODBUS RTU, które będą dostępne dla programu **ibvunit**. Element może zawierać wiele elementów [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]] lub nie zawierać żadnego takiego elementu. Każde urządzenie obsługujące zmienne typu **InputRegister** musi prawidłowo realizować funkcję MODBUS ReadInputRegisters (kod 4) w celu odczytania wartość danego rejestru wejściowego. Rejestry typu **InputRegister** są tylko do odczytu. ==== ==== Element znajdujący się w elemencie [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]]. Element jest odpowiedzialna za zdefiniowanie pojedynczego rejestru urządzenia typu **Input Registers** z komunikacją MODBUS RTU Element zawiera atrybuty: * **Addr** – adres rejestru w urządzeniu zgodnym z MODBUS RTU. * **Name** – nazwa własna rejestru. Pod tą nazwą rejestr będzie funkcjonował jako zmienna w programie **ibvunit** i w całym **IB-System**. Nazwa parametru jest dowolna, jednak założeniem jest jej intuicyjność. Dlatego zalecana jest standaryzacja nazw w/g dokumentacji [[pl:ibprotocol:start|ibprotokołu]]. * **Presentation** – sposób prezentacji zmiennej w programie **ibvunit** i całym **IB-System**. Dopuszczalne wartości atrybutu to: * **unsigned** – wartość liczbowa całkowita bez znaku. Zakres wartości 0..65535 * **signed** – wartość liczbowa całkowita ze znakiem. Zakres wartości -32768..32767 * **hex** – wartość liczbowa w postaci szesnastkowej 0x0000. Zakres wartości 0x0000..0xffff * **SwappBytes** - (opcjonalny) jeżeli jest zdefiniowany i jego wartość wynosi "1", wówczas **ibvunit** zamienia dwa bajty wartości danego rejestru, w momencie transmisji go do i z urządzenia. Domyślnie bajty nie są zamieniane i przekazywane zgodnie z protokołem MODBUS RTU (SwappBytes="0"). ===== ===== Element **Coils** jest odpowiedzialna za zdefiniowanie wyjść dwustanowych urządzenia typu **Coils** z komunikacją MODBUS RTU, które będą dostępne dla programu **ibvunit**. Element może zawierać wiele elementów [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]] lub nie zawierać żadnego takiego elementu. Element zawiera atrybuty: * **SetMode** - (obowiązkowy) Wartość atrybutu określa czy do ustawienia wartości danego **Coil** należy użyć funkcji MODBUS ForceSingleCoil czy WriteMultipleCoils. Atrybut może przyjmować wartości: * **Multiple** - oznacza, że komunikacja z urządzeniem MODBUS dopuszcza stosowanie hurtowych zapisów dla **Coils**. Wartość **Multiple** należy ustawiać tylko dla urządzeń MODBUS poprawnie realizujących funkcje WriteMultipleCoils (kod 15). * **Single** - oznacza, że komunikacja z urządzeniem MODBUS dopuszcza stosowanie jedynie pojedynczych zapisów dla **Coils**. Wartość **Single** należy ustawiać tylko dla urządzeń MODBUS poprawnie realizujących funkcje ForceSingleCoil (kod 5). Jeżeli urządzenie wspiera oba tryby, zalecane jest użycie **Multiple** ze względów wydajnościowych. Każde urządzenie obsługujące zmienne typu **Coils** musi prawidłowo realizować przynajmniej jedną z w/w funkcji w celu zmiany danych wyjścia dwustanowego. Odczyt wyjść dwustanowych realizowany jest przez funkcję MODBUS ReadCoilStatus (kod 1), która również musi być wspierana przez urządzenie. ==== ==== Element znajdujący się w elemencie [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]]. Element jest odpowiedzialna za zdefiniowanie pojedynczego wyjścia dwustanowego typu **Coils** z komunikacją MODBUS RTU Element zawiera atrybuty: * **Addr** – adres rejestru w urządzeniu zgodnym z MODBUS RTU. * **Name** – nazwa własna rejestru. Pod tą nazwą rejestr będzie funkcjonował jako zmienna w programie **ibvunit** i w całym **IB-System**. Nazwa parametru jest dowolna, jednak założeniem jest jej intuicyjność. Dlatego zalecana jest standaryzacja nazw w/g dokumentacji [[pl:ibprotocol:start|ibprotokołu]]. * **Rd** – flaga (wartość 0 lub 1) oznaczająca czy dany rejestr jest możliwy do odczytu. * **Wr** – flaga (wartość 0 lub 1) oznaczająca czy dany rejestr jest możliwy do zapisu * **Min** – minimalna wartość jaką może przyjąć rejestr * **Max** – maksymalna wartość jaką może przyjąć rejestr ===== ===== Element **DiscreteInputs** jest odpowiedzialna za zdefiniowanie wejść dwustanowych urządzenia typu **Discrete Inputs** z komunikacją MODBUS RTU, które będą dostępne dla programu **ibvunit**. Element może zawierać wiele elementów [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]] lub nie zawierać żadnego takiego elementu. Każde urządzenie obsługujące zmienne typu **DiscreteInputs** musi prawidłowo realizować funkcję MODBUS ReadInputStatus (kod 2) w celu odczytania wartość danego wejścia dwustanowego. Rejestry typu **DiscreteInputs** są tylko do odczytu. ==== ==== Element znajdujący się w elemencie [[pl:ibvunit:ibvunit-dev-modbus-rtu-config#|]]. Element jest odpowiedzialna za zdefiniowanie pojedynczego wejścia dwustanowego typu **Discrete Inputs** z komunikacją MODBUS RTU Element zawiera atrybuty: * **Addr** – adres rejestru w urządzeniu zgodnym z MODBUS RTU. * **Name** – nazwa własna rejestru. Pod tą nazwą rejestr będzie funkcjonował jako zmienna w programie **ibvunit** i w całym **IB-System**. Nazwa parametru jest dowolna, jednak założeniem jest jej intuicyjność. Dlatego zalecana jest standaryzacja nazw w/g dokumentacji [[pl:ibprotocol:start|ibprotokołu]].