Dodano: 12.01.2015 Zmodyfikowano: 18.06.2018 ,

 

Tak, buforowanie jest możliwe.

 

W tym celu należy:

– utworzyć w programie sterownika symbol DB

– zainicjować w programie sterownika bufor danych oparty o zdefiniowane DB

– dodać bloki funkcyjne zapisujące wartości wybranych rejestrów w buforze danych

– dodać w ControlMaestro driver komunikacyjny SBT

– dodać w ControlMaestro bramki które mają być odczytywane przez bufor, bramki takie muszą mieć ustawione skanowanie na "Nigdy"

– dodać w ControlMaestro bramki sterujące odczytem danych z bufora

 

Jak zrealizować buforowanie w programie sterownika i w ControlMaestro?

 

1. Dodanie w programie sterownika symbolu DB

 

buforowanie_danych_symbol_db

zalecane jest, aby adres DB był powyżej 4000, wtedy DB zostanie umieszczone w pamięci rozszerzonej, a maksymalna pojemność jednego bufora opartego o taki DB będzie wynosić 4092 wpisy.

 

2. Definicja symbolu DB

 

Należy kliknąć w przycisk znajdujący się po prawej stronie pola adresu, zaznaczyć "Definition" i podać wielkość buforu w rejestrach – maksymalny dla DB umieszczonego w pamięci rozszerzonej to 16383:

buforowanie_definicja_symbolu_db

 

3. Inicjalizacja buforu w programie sterownika

 

Inicjalizację przeprowadza się wykorzystując blok funkcyjny "Init Data Buffer" z biblioteki "Data Buffer":

buforowanie_inicjalizacja_bufora

W polu DB na bloku funkcyjnym należy wpisać nazwę symbolu DB który został utworzony w kroku 1.

 

4. Dodanie bloków zapisujących wartości w buforze

 

Zapisywać do buforów można wartości typu Int i Bin. Służą do tego bloki funkcyjne, odpowiednio "Write to Data Buffer Int" i "Write to Data Buffer Bin" z biblioteki "Data Buffer":

buforowanie_zapis_wartosci_do_bufora

W polu DB na bloku funkcyjnym należy wpisać nazwę symbolu DB który został utworzony w kroku 1 i zainicjalizowany w kroku 3. W polu Val na bloku funkcyjnym należy wpisać nazwę rejestru, którego wartość ma być zapisywana do buforu.

Podanie zbocza narastającego na wejście En powoduje wpisanie wartości do bufora i dopisanie do niej stempla czasowego.

 

5. W ControlMaestro należy zdefiniować driver komunikacyjny SBT do połączenia ze sterownikiem Saia PCD (zobacz też: faq Jak skonfigurować ControlMaestro, aby przesyłać dane ze sterownikami Saia PCD?).

 

6. W CM należy dodać bramki które mają być buforowane. Dodaje się je prawie identycznie jak zwykłe bramki odczytywane w standardowy sposób, z jedną bardzo istotną różnicą – skanowanie bramki powinno być ustawione na "Nigdy":

 

Definicja buforowanych bramek w CM

Definicja buforowanych bramek w CM

 

7. W CM należy dodać bramkę XCLOCK, zdefiniowaną następująco:

 

Definicja bramki XCLOCK w CM

Definicja bramki XCLOCK w CM

Bramka ta jest wspólna dla wszystkich buforów, to znaczy, że jeśli w sterowniku mamy więcej niż jeden bufor, to w ControlMaestro wszystkie one są obsługiwane przez jedną bramkę.

 

8. W CM należy dodać bramkę XR, zdefiniowaną następująco:

 

Definicja bramki XR w ControlMaestro

Definicja bramki XR w ControlMaestro

Bramka ta jest bramką specjalną służącą do odczytu czasu bufora ze sterownika. Adres bramki w powyższym przykładzie to:

000XR4002

Gdzie:

000 – odnośnik do sterownika Saia PCD (podobnie jak dla wszystkich bramek odczytywanych przez CM ze sterowników Saia PCD)

XR – oznaczenie typu wartości, w tym przypadku: Other special tags > Read time-stamp

4002 – adres bloku DB w sterowniku

Bramka ta obsługuje jeden bufor. To znaczy, że jeśli w sterowniku mamy więcej niż jeden bufor, to w ControlMaestro należy dodać po jednej bramce XR dla każdego z nich tak, aby adres bloku DB i adres bramki XR były zgodne.

 

9. W CM należy dodać bramkę XS, zdefiniowaną następująco:

 

Definicja bramki XS w ControlMaestro

Definicja bramki XS w ControlMaestro

Bramka ta jest bramką specjalną służącą do sprawdzania statusu czasu bufora ze sterownika. Adres bramki w powyższym przykładzie to:

000XS4002

Gdzie:

000 – odnośnik do sterownika Saia PCD (podobnie jak dla wszystkich bramek odczytywanych przez CM ze sterowników Saia PCD)

XS – oznaczenie typu wartości, w tym przypadku: Other special tags > Status of time-stamp

4002 – adres bloku DB w sterowniku

Bramka ta obsługuje jeden bufor. To znaczy, że jeśli w sterowniku mamy więcej niż jeden bufor, to w ControlMaestro należy dodać po jednej bramce XS dla każdego z nich tak, aby adres bloku DB i adres bramki XS były zgodne.

 

Ile danych można zmieścić w buforze?

Bufory DB adresowane powyżej adresu 4000 znajdują się w pamięci rozszerzonej sterownika. Jeden taki blok DB może pomieścić do 16383 rejestrów. Bufor pierwsze 9 rejestrów z tego bloku zajmuje na informacje nagłówkowe. Natomiast jeden wpis z wartością, stemplem czasowym i informacją o tym, jaka to zmienna zajmuje 4 rejestry w buforze. Przeliczając ilość dostępnych rejestrów w bloku DB na wpisy, w jednym buforze można zmieścić do 4092 wpisów.

W programie możemy zdefiniować więcej niż jeden bufor oparty o blok DB. Ich ilość i rozmiar ograniczona jest wielkością pamięci rozszerzonej sterownika. Przykładowo, dla sterownika PCD1.M2120 pamięć rozszerzona to maksymalnie 128kB i przekłada się to na 1 pełen blok DB i drugi niepełny. W sterowniku PCD1.M2160 pamięć rozszerzona to już 1MB.

 

Istotne informacje o których warto wiedzieć korzystając z buforowania

– to nie ControlMaestro odpowiada za częstotliwość próbkowania poszczególnych zmiennych. Zależy ona jedynie od tego jak często sterownik zapisuje dane do bufora.

– wartości są oznaczane stemplem czasowym na poziomie sterownika, a nie na poziomie ControlMaestro. Oznacza to, że konieczne jest włączenie na sterowniku synchronizacji czasu tak, aby dane wpływające do systemu SCADA miały tę samą podstawę czasu co inne dane znajdujące się w ControlMaestro.

– to, kiedy wartości są zapisywane w buforze zależy wyłącznie od programisty. Wartości mogą być rejestrowane okresowo (jak w powyższym przykładzie), lub w określonych przypadkach – wystarczy, że na wejście En bloku zapisu do bufora zostanie podane zbocze narastające.

– w jednym buforze można rejestrować więcej niż jedną zmienną. Dla każdej zmiennej niezbędny jest oddzielny blok zapisu do bloku DB.

 

Czy informacje zawarte na tej stronie były dla Ciebie przydatne?