InTouch zmienne pośrednie


Systemy SCADA i przemysłowe b. danych - Ćwiczenie IT11
LABORATORIUM SYSTEMÓW CZASU RZECZYWISTEGO
KATEDRA AUTOMATYKI NAPDU I URZDZEC PRZEMYSAOWYCH AKADEMIA GÓRNICZO-HUTNICZA
WWW.KANIUP.AGH.EDU.PL WWW.AGH.EDU.PL
Temat: Zmienne pośrednie, bitowe oraz kontrolki GUI
Narzędzia: Wonderware InTouch 9.0
Cel: zapoznanie się z metodami ograniczenia ilości tagów potrzebnych do
obsługi wizualizacji
Program ćwiczenia:
1. Nale\y utworzyć nowy projekt wizualizacji (otwierając InTouch Application Managera), a
następnie zaimportować okna  Główne i  Panel (wzory znajdują się w katalogu
C:\WiBD\Przykłady\Indirect).
2. Następnie, w celu zaimportowania tagów, nale\y zamknąć InTouch WindowMaker-a, uruchomić
ponownie InTouch Application Managera i ikoną DBLoad załadować plik DB.CSV (z katalogu
C:\WiBD\Przykłady\Indirect lub swojej kopii). Znajdują się tam następujące tagi:
a. Awaria (Memory Integer)  na bitach 1., 2. i 3. znajduje się sygnał awarii
1., 2. i 3. pompy
b. Praca (Memory Integer)  na bitach 1., 2. i 3. znajduje się sygnał pracy odpowiednich
pomp
c. Wydajnosc_01, Wydajnosc_02 i Wydajnosc_03 (Memory Real)  przechowują
aktualną wydajność 1., 2. lub 3. pompy (w zakresie 0  1000).
d. Wydajnosc (Indirect Analog)  tag pośredni który będzie  wskazywał na tagi
Wydajnosc_01, Wydajnosc_02 i Wydajnosc_03
Po zaimportowaniu tagów nale\y uruchomić WindowMaker a i zgodnie z opisem poni\ej
skonfigurować połączenia animacyjne i skrypty
Okno  Główne
1. Kliknięcie na pompy ma wywoływać okno Panel, uprzednio odpowiednio konfigurując zmienną
pośrednią Wydajnosc. W celu takiego skonfigurowania pomp, nale\y z jej menu kontekstowego
wybrać  Properties... , po czym przy pomocy przycisku  Animation otworzyć okno konfiguracji
połączeń animacyjnych pompy i zdefiniować skrypt dla  Action . Dla pierwszej pompy skrypt
ten wygląda następująco:
Wydajnosc.Name = "Wydajnosc_01";
Wydajnosc.Name = "Wydajnosc_01";
Wydajnosc.Name = "Wydajnosc_01";
Wydajnosc.Name = "Wydajnosc_01";
Show "Panel";
Show "Panel";
Show "Panel";
Show "Panel";
2. Podobnie nale\y postąpić dla 2. i 3. pompy, przy czym zamiast "Wydajnosc_01" nale\y podać
"Wydajnosc_02" lub "Wydajnosc_03" (w zale\ności od numeru konfigurowanej pompy).
IT11: Zmienne pośrednie, bitowe oraz kontrolki GUI systemu Windows 1/4
Systemy SCADA i przemysłowe b. danych - Ćwiczenie IT11
LABORATORIUM SYSTEMÓW CZASU RZECZYWISTEGO
KATEDRA AUTOMATYKI NAPDU I URZDZEC PRZEMYSAOWYCH AKADEMIA GÓRNICZO-HUTNICZA
WWW.KANIUP.AGH.EDU.PL WWW.AGH.EDU.PL
Zasada działania jest następująca: przypisanie do właściwości .Name tagu pośredniego
Wydajnosc (a więc do wyra\enia Wydajnosc.Name) tekstu "Wydajnosc_01" powoduje
skonfigurowanie go w taki sposób, \e do wartości tagu "Wydajnosc_01" mo\na odwoływać
się nie tylko przez nazwę "Wydajnosc_01" ale równie\ poprzez "Wydajnosc"  tag pośredni.
Przypisanie to mo\na równie\ zapisać alternatywnie jako:
Wydajnosc.Name = Wydajnosc_01.Name
Wydajnosc.Name = Wydajnosc_01.Name
Wydajnosc.Name = Wydajnosc_01.Name
Wydajnosc.Name = Wydajnosc_01.Name
Nad ka\dą z 3-ch pomp znajdują się dwa kwadraty, sygnalizujące stan pracy (lewy) oraz
stan awarii (prawy kwadrat) danej pompy. Stany te mogą być przesyłane ze sterownika
osobnymi zmiennymi ( zu\ywając tagi) lub jako odpowiednie bity zmiennej całkowitej
(Integer). W przykładzie u\yte zostaną dwie zmienne pamięciowe Memory Integer  jedna
dla stanów pracy (tag o nazwie Praca)  z wykorzystaniem 3-ch bitów, a druga dla stanów
awarii (tag o nazwie Awaria)  równie\ wykorzystane będą 3 bity.
3. Aby skonfigurować połączenie animacyjne dla w/w kwadratów, nale\y przypisać do animacji
koloru wypełnienia (Fill Color->Discrete) wyra\enie Praca.01 (kwadrat stanu pracy) i Awaria.01
(kwadrat stanu awarii). Wyra\enia te to 1. bit zmiennych Praca i Awaria. Do kwadratów
dotyczących 2. i 3. pompy nale\y zdefiniować połączenia animacyjne jak dla 1. pompy, tylko
odnoszące się do bitu 2. i 3.
4. W celu o\ywienia sygnału awarii, przyjmijmy \e sygnał awarii będzie się pojawiał gdy zadana
wydajność pompy będzie większa od 800 i sygnał pracy tej pompy będzie równy 1. W tym celu
nale\y utworzyć jednolinijkowe skrypty wyzwalane odpowiednim warunkiem (Condition
Scripts). I tak, dla 1. pompy będzie to:
wyra\enie: Praca.01==1 AND Wydajnosc_01>800
wyra\enie: Praca.01==1 AND Wydajnosc_01>800
wyra\enie: Praca.01==1 AND Wydajnosc_01>800
wyra\enie: Praca.01==1 AND Wydajnosc_01>800
skrypt On True: Awaria.01 = 1;
skrypt On True: Awaria.01 = 1;
skrypt On True: Awaria.01 = 1;
skrypt On True: Awaria.01 = 1;
skrypt On False: Awaria.01 = 0;
skrypt On False: Awaria.01 = 0;
skrypt On False: Awaria.01 = 0;
skrypt On False: Awaria.01 = 0;
5. Podobnie nale\y utworzyć skrypty warunkowe dla 2. i 3. pompy.
Okno  Panel
1. Następnie nale\y skonfigurować okno  Panel : do suwaka nale\y przypisać tag pośredni
(Wydajnosc), podobnie do połączenia animacyjnego Value Display->Analog. Obok tytułu okna
(Panel pompy) znajduje się kontrolka (TextBox) o nazwie TextBox_1. Będzie ona zawierała
numer pompy której będzie dotyczyło okno  Panel .
2. Przyciski  Zał i  Wył będą miały przypisany skrypt, załączający i wyłączacy odpowiednią
pompę, poprzez sterowanie odpowiednim bitem odpowiedniej zmiennej Praca. Oto skrypt
przycisku  Zał :
IF StringInString( Wydajnosc.Name, "_01", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 )>0 THEN
IT11: Zmienne pośrednie, bitowe oraz kontrolki GUI systemu Windows 2/4
Systemy SCADA i przemysłowe b. danych - Ćwiczenie IT11
LABORATORIUM SYSTEMÓW CZASU RZECZYWISTEGO
KATEDRA AUTOMATYKI NAPDU I URZDZEC PRZEMYSAOWYCH AKADEMIA GÓRNICZO-HUTNICZA
WWW.KANIUP.AGH.EDU.PL WWW.AGH.EDU.PL
Praca.01 = 1;
Praca.01 = 1;
Praca.01 = 1;
Praca.01 = 1;
ELSE
ELSE
ELSE
ELSE
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
Praca.02 = 1;
Praca.02 = 1;
Praca.02 = 1;
Praca.02 = 1;
ELSE
ELSE
ELSE
ELSE
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
Praca.03 = 1;
Praca.03 = 1;
Praca.03 = 1;
Praca.03 = 1;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
3. Dla przycisku  Wył skrypt wygląda podobnie (zamiast przypisań Praca.bit = 1 są przypisania
Praca.bit = 0):
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
Praca.01 = 0;
Praca.01 = 0;
Praca.01 = 0;
Praca.01 = 0;
ELSE
ELSE
ELSE
ELSE
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
Praca.02 = 0;
Praca.02 = 0;
Praca.02 = 0;
Praca.02 = 0;
ELSE
ELSE
ELSE
ELSE
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
Praca.03 = 0;
Praca.03 = 0;
Praca.03 = 0;
Praca.03 = 0;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
4. Aby o\ywić kontrolkę TextBox_1, nale\y utworzyć skrypty okna Panel (Window Scripts)  On
Show oraz While Showing (czas 500 ms powinien być wystarczający)  o następującej treści:
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
IF StringInString( Wydajnosc.Name, "_01", 1, 0 ) >0 THEN
SetPropertyM( "TextBox_1.Value", "01" );
SetPropertyM( "TextBox_1.Value", "01" );
SetPropertyM( "TextBox_1.Value", "01" );
SetPropertyM( "TextBox_1.Value", "01" );
ELSE
ELSE
ELSE
ELSE
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_02", 1, 0 )>0 THEN
SetPropertyM( "TextBox_1.Value", "02" );
SetPropertyM( "TextBox_1.Value", "02" );
SetPropertyM( "TextBox_1.Value", "02" );
SetPropertyM( "TextBox_1.Value", "02" );
ELSE
ELSE
ELSE
ELSE
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
IF StringInString( Wydajnosc.Name, "_03", 1, 0 )>0 THEN
SetPropertyM( "TextBox_1.Value", "03" );
SetPropertyM( "TextBox_1.Value", "03" );
SetPropertyM( "TextBox_1.Value", "03" );
SetPropertyM( "TextBox_1.Value", "03" );
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
W powy\szym ćwiczeniu pokazany został sposób na zdefiniowanie okna ( Panel )
konfigurowanego przy pomocy zmiennej pośredniej do zadawania wydajności pompy, z
której wywołane było okno  Panel . Przy pomocy skryptów mo\na równie\ odczytywać i
zapisywać odpowiednie zmienne lub odpowiednie bity zmiennej całkowitoliczbowej
(sprawdzając nazwę tagu konfigurującego zmienną pośrednią  pole .Name).
IT11: Zmienne pośrednie, bitowe oraz kontrolki GUI systemu Windows 3/4
Systemy SCADA i przemysłowe b. danych - Ćwiczenie IT11
LABORATORIUM SYSTEMÓW CZASU RZECZYWISTEGO
KATEDRA AUTOMATYKI NAPDU I URZDZEC PRZEMYSAOWYCH AKADEMIA GÓRNICZO-HUTNICZA
WWW.KANIUP.AGH.EDU.PL WWW.AGH.EDU.PL
Wykorzystując odwołania do bitów zmiennych Integer, mo\na zmniejszyć ilość tagów
wymaganych do pracy grafiki wizualizacji oraz zmniejszyć ilość danych przesyłanych
pomiędzy systemem SCADA a sterownikiem, zapewniając tym samym większą integralność
przesyłanych danych (stany danego urządzenia mogą być przesyłane w jednej zmiennej).
Jednak po stronie systemu SCADA takie rozwiązanie powoduje brak mo\liwości niezale\nego
rejestrowania ka\dego ze stanów (np. rejestracja historyczna, alarmowanie, itp.). Mo\na
zastosować technikę mieszaną  przesyłając ze sterownika zmienną Integer, a w systemie
SCADA  rozpakowując ją do zmiennych Discrete (np. w skrypcie Data Change), jednak w
ten sposób tracimy dodatkowo 1 tag na zapewnienie komunikacji PLC  SCADA.
Co powinieneś zapamiętać po wykonaniu tego ćwiczenia:
"
IT11: Zmienne pośrednie, bitowe oraz kontrolki GUI systemu Windows 4/4


Wyszukiwarka

Podobne podstrony:
Konfiguracja OPC InTouch zmienne?r
InTouch tworzenie zmiennych i połączeń animacyjnych
Jaką wartość będzie miała zmienna
6 2 Zmienna losowa
09 funkcje zmiennej rzeczywistej 3 4 pochodna funkcji
zmiennesr
C w6 zmienne dynamiczne wskazniki funkcji
calki nieoznaczone funkcji jednej zmiennej
Ewolucja i zmienność genomu drożdży winiarskichS cerevisiae
zmienne
Sozański Statystyczne miary zmienności a kwantyfikacja nierówności społecznej
3 dobór zmiennych do liniowego modelu ekonometrycznego
Podatki Posrednie 11 5info
Przekształcenia ciągłe zmiennej losowej
zmienne

więcej podobnych podstron