16.06.2015 Views

ForthLogic inst prog H P.1.2 120113.pdf - F&F

ForthLogic inst prog H P.1.2 120113.pdf - F&F

ForthLogic inst prog H P.1.2 120113.pdf - F&F

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Sterowniki <strong>prog</strong>ramowalne MAX Logic<br />

Kontrolę stanu procesu komunikacyjnego umożliwia polecenie MODBUSSTATUS?, które przyjmuje postać:<br />

MODBUSSTATUS?<br />

gdzie parametrem jest numer wywołania cyklicznego (o wartości od 1 do 4), a odpowiedź określona jest<br />

parametrem , który może przyjmować następujące wartości:<br />

Kod Kody błędów zgłaszane przez urządzenie Master<br />

0 Brak błędów. Polecenie zostało wykonane poprawnie<br />

16 Urządzenie Slave nie odpowiedziało w zadanym czasie (Time Out)<br />

17 Błędna suma kontrolna w odpowiedzi z urządzenia Slave<br />

Pozostałe kody błędów zgłaszane są przez urządzenie Slave i ich znaczenie jest zgodne ze specyfiką protokołu Modbus:<br />

Kod<br />

Oznaczenie błędu według<br />

Modbus<br />

Opis błędu zgłaszanego przez urządzenie Slave<br />

1 ILLEGAL FUNCTION<br />

Kod polecenia przekazany przez urządzenie Master nie jest<br />

obsługiwany przez urządzenie Slave.<br />

2 ILLEGAL DATA ADDRESS<br />

Adres danych przekazany w zapytaniu z urządzenia Master nie jest<br />

dostępny w urządzeniu Slave.<br />

3 ILLEGAL DATA VALUE Nieprawidłowa wartość danych przekazanych z urządzenia Master.<br />

4 SLAVE DEVICE FAILURE<br />

Sygnalizacja wystąpienia niesprecyzowanego błędu w urządzeniu<br />

Slave podczas obsługi polecenia przekazanego z urządzenia Master.<br />

5 ACKNOWLEDGE<br />

Urządzenie Slave przyjęło polecenie z urządzenia Master, ale jego<br />

wykonanie wymaga dużo czasu.<br />

6 SLAVE DEVICE BUSY<br />

Urządzenie Slave jest zajęte obsługą wcześniejszego polecenia. W<br />

takim wypadku urządzenie Master musi ponowić zapytanie w<br />

późniejszym terminie, gdy urządzenie Slave będzie wolne.<br />

Zgłoszenie błędu o kodzie 16 oznacza, że urządzenie Slave nie odpowiedziało w zadanym czasie określonym parametrem<br />

TIMEOUT. Domyślnie czas ten przyjmuje wartość jednej sekundy, ale może on zostać zmieniony poprzez polecenie<br />

MODBUSTIMEOUT!. Składnia polecenia MODBUSTIMEOUT! ma następującą postać:<br />

MODBUSTIMEOUT!<br />

gdzie parametr określa nowy czas oczekiwania na odpowiedź z urządzenia Slave i może przyjmować wartości z<br />

przedziału od 1,0sek do 600,0sek, ze skokiem 0,1sek.<br />

Konwersja danych<br />

Podczas przekazywania danych w postaci bitów nie ma problemów z interpretacją danych, z uwagi na to, że przyjmują<br />

one wyłącznie dobrze określone wartości 1 (Prawda) oraz 0 (Fałsz). Inaczej rzecz się ma w przypadku przesyłania danych w<br />

postaci 16‐bitowych zmiennych rejestrowych. Problem wynika z tego, że standardowo w protokole Modbus<br />

przekazywane są zmienne całkowite bez znaku (czyli przyjmujące wartości 0..65535). W praktyce często wykorzystywane<br />

są również zmienne całkowite ze znakiem (przyjmujące wartości ‐32767…32767) oraz złożenie kilku zmiennych<br />

rejestrowych na liczbę zmiennoprzecinkową.<br />

Słowa umożliwiające konwersję pomiędzy różnymi formatami liczbowymi:<br />

‐ US>S ‐ służy do konwersji liczby całkowitej bez znaku, na liczbę całkowitą ze znakiem.<br />

‐ S>US ‐ służy do konwersji liczby całkowitej ze znakiem na liczbę całkowitą bez znaku.<br />

Przykład: Jeżeli w rejestrze 16‐bitowym zapisane są same jedynki (0xFFFF w postaci 16‐owej), to w zależności od<br />

interpretacji może ona oznaczać 65535 – jeśli liczba jest traktowana jako liczba bez znaku, lub ‐1 – gdy jest ona<br />

traktowana jako liczba ze znakiem.<br />

Poniżej przedstawiony jest schemat przekształcenia:<br />

> 65535 US>S<br />

> ‐1 (OK.)<br />

‐ 32 ‐

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!