Professional Documents
Culture Documents
PROGRAMOWALNY
TYPU SMC
INSTRUKCJA PROGRAMOWANIA
-1
Maj 2009
___________________________________________________________________________
0
SPIS TREŚCI
• Wstęp ....................................................................................................................3
• Instalacja pakietu CPDev ....................................................................................6
• Uruchomienie. Menu. Narzędzia .......................................................................13
Uruchomienie ..............................................................................................................................13
Menu programu ...........................................................................................................................14
Opcje środowiska ........................................................................................................................16
Globalne ustawienia ....................................................................................................................18
Pasek narzędzi ............................................................................................................................20
• Nowy projekt – START_STOP ..........................................................................21
Układ START_STOP ...................................................................................................................21
Tryb tworzenia projektu ...............................................................................................................22
Nowy plik .....................................................................................................................................22
Nazwa projektu ............................................................................................................................22
Zmienne globalne ........................................................................................................................24
Program .......................................................................................................................................27
Zadanie ........................................................................................................................................30
Zapis projektu w pliku XML .........................................................................................................31
Kompilacja ...................................................................................................................................32
Zapis skompilowanego projektu i zamknięcie .............................................................................33
• Czasomierze biblioteczne .................................................................................35
Opóźnione załączanie/wyłączanie ..............................................................................................35
Otwarcie istniejącego projektu ....................................................................................................35
Standardowa biblioteka IEC_61131 ............................................................................................36
Rozbudowa projektu START_STOP ...........................................................................................38
Indywidualna deklaracja zmiennej globalnej ...............................................................................40
Raport projektu ............................................................................................................................41
• Symulacja projektu ............................................................................................44
Uruchomienie programu symulatora CPSim ...............................................................................44
Główne okno symulatora .............................................................................................................45
Menu CPSim ...............................................................................................................................45
Pasek narzędzi ............................................................................................................................46
Uruchomienie i wstrzymanie symulacji projektu .........................................................................46
Lista zmiennych ...........................................................................................................................47
Okienka indywidualne .................................................................................................................48
Panele grupowe ...........................................................................................................................49
Opcje programu ...........................................................................................................................51
• Komunikacja w systemie rozproszonym .........................................................54
Charakterystyka ogólna ...............................................................................................................54
Modbus PC↔SMC ......................................................................................................................55
Modbus SMC↔moduły SM .........................................................................................................56
Połączenie PC↔SMC .................................................................................................................57
Uruchomienie konfiguratora CPCon ...........................................................................................57
Tabela zadań komunikacyjnych ..................................................................................................59
Menu CPCon ...............................................................................................................................60
Ustawienia transmisyjne ..............................................................................................................60
Komunikacja SMC↔urządzenia (moduły SM) ............................................................................61
Bezpośrednie wypełnianie tabeli (alternatywa dla kreatora) .......................................................67
Zapis konfiguracji w pliku ............................................................................................................67
Odczyt konfiguracji (dla kontroli, modyfikacji itp.) .......................................................................68
Synchronizacja czasu SMC .........................................................................................................69
Zapisanie programu do SMC ......................................................................................................69
Konfiguracja komunikacji Modbus pakietu SCADA ....................................................................70
1
Śledzenie on–line w CPSim ........................................................................................................71
• Zegar RTC ..........................................................................................................73
Opis problemu .............................................................................................................................73
Bloki komunikacyjne ....................................................................................................................74
Projekt RTC .................................................................................................................................75
Symulator CPSim ........................................................................................................................77
Konfigurator CPCon ....................................................................................................................78
Adresy po stronie PC ..................................................................................................................79
• Własna biblioteka projektanta ..........................................................................80
Biblioteka jako projekt .................................................................................................................80
Blok FB_AVERAGE ....................................................................................................................81
Blok FB_PULSE ..........................................................................................................................83
Eksport biblioteki .........................................................................................................................84
Testowanie ..................................................................................................................................88
Uzupełnianie biblioteki .................................................................................................................90
• Przegląd języka ST ............................................................................................91
Norma IEC 61131–3 ....................................................................................................................91
Typy danych i zmienne ................................................................................................................92
Programowanie w ST ..................................................................................................................96
• Funkcje .............................................................................................................100
Funkcje matematyczne i logiczne .............................................................................................100
Funkcje wyboru .........................................................................................................................101
Konwersje ..................................................................................................................................101
Czas bieŜący .............................................................................................................................102
Składniki czasu i daty ................................................................................................................102
Słowo statusowe .......................................................................................................................103
• Biblioteki bloków funkcjonalnych ..................................................................104
Biblioteka IEC_61131 ................................................................................................................104
Biblioteka Basic_blocks .............................................................................................................106
Bloki systemowe ........................................................................................................................109
• Uzupełnienia ....................................................................................................111
Poprawianie listy zmiennych .....................................................................................................111
Wypełnianie pustych obszarów .................................................................................................112
Zakładki .....................................................................................................................................112
Skróty klawiszowe .....................................................................................................................113
Błędy, ostrzeŜenia, podpowiedzi ...............................................................................................113
Dyrektywy kompilatora ..............................................................................................................115
Sesja symulacyjna .....................................................................................................................115
Pliki pakietu CPDev ...................................................................................................................117
LEDy stanu sterownika SMC .....................................................................................................117
Zmiana prędkości transmisji PC – SMC.....................................................................................118
Testy i niesprawności ................................................................................................................119
Nowe urządzenie obiektowe .....................................................................................................120
• Kody źródłowe bloków standardowych ........................................................121
2
WSTĘP
Sterownik programowalny SMC jest centralnym modułem decyzyjnym
w rozproszonych systemach kontrolno–pomiarowych z szybką komunikacją Modbus
(do 230.4 kbit/s). MoŜe obsługiwać zdalne moduły wejść/wyjść obiektowych,
przetworniki inteligentne, falowniki, mikrosterowniki, rejestratory, tablice świetlne,
panele HMI itd. NiezaleŜnie od tego komunikuje się z nadrzędnym komputerem PC
mającym zainstalowany pakiet wizualizacyjny. Dzięki integracji rozmaitych urządzeń
uzyskuje się wszechstronny, elastyczny system rozproszony o autentycznie szerokim
zakresie zastosowań.
Sterownik SMC jest programowany w języku ST (Structured Text) normy
IEC 61131-3, która jako PN–EN 61131–3 obowiązuje w Polsce od 2004 roku. Jest on
pierwszym polskim urządzeniem programowanym zgodnie z tą normą. Język ST,
jako najwszechstronniejszy spośród języków IEC, pozwala implementować
wszelkiego rodzaju algorytmy. Do programowania SMC słuŜy pakiet narzędziowy
CPDev (Control Program Developer) składający się z kompilatora CPDev (zarazem
nazwa pakietu), symulatora CPSim oraz konfiguratora systemu rozproszonego
CPCon. Pakiet uzupełniają trzy biblioteki – IEC_61131, Basic_blocks i
Complex_blocks. Projektant moŜe tworzyć własne biblioteki z funkcjami, blokami
funkcjonalnymi i programami.
SMC
R S232
RS485
RS485
SM C
R S485
3
Pierwszym krokiem prac nad projektem jest przygotowanie listy zmiennych
globalnych, które mają być dostępne we wszystkich programach. W drugim kroku
koduje się właściwy algorytm podzielony na jednostki organizacyjne oprogramowania
POU, tzn. programy, bloki funkcjonalne i funkcje. Edytor języka ST udostępnia skróty
klawiszowe, podpowiedzi, koloruje elementy kodu itd. Gotowy kod jest kompilowany.
JeŜeli napotkano błąd, odpowiedni komunikat wskazuje niepoprawną linię i rodzaj
błędu. Generowane są równieŜ ostrzeŜenia.
Utworzony projekt moŜna symulować za pomocą symulatora CPSim, aby we
wczesnym etapie wykryć i usunąć ewentualne usterki. Symulowane zmienne są
prezentowane na liście oraz w indywidualnych lub grupowych oknach. Okno grupowe
dotyczy zwykle wyodrębnionego urządzenia lub fragmentu sterowanej instalacji.
Zestaw okien i paneli moŜna zachować i później odtworzyć jako tzw. sesję
symulacyjną. Przygotowując plik z wartościami wejść w określonych chwilach moŜna
zautomatyzować przebieg symulacji. Wyniki są zapisywane w pliku tekstowym dla
sporządzenia wykresów za pomocą pakietów Excel, Matlab lub innych.
Końcowym krokiem jest skonfigurowanie systemu rozproszonego za pomocą
konfiguratora CPCon. Konfigurację komunikacji sterownika z urządzeniami
obiektowymi moŜna przeprowadzić dwojako. Dla modułów SM dostępne są gotowe
bloki komunikacyjne, które wystarczy wywołać. W innych przypadkach komunikację
konfiguruje się podając numer urządzenia, funkcję Modbusa i nazwy
transmitowanych zmiennych. Raport projektu zawiera listę zmiennych, na której
znajdują się ich adresy w sterowniku SMC potrzebne do skonfigurowania drivera
komunikacyjnego pakietu wizualizacyjnego po stronie komputera PC. Na
zakończenie skompilowany kod i dane konfiguracyjne przesyłane są do sterownika,
który niezwłocznie rozpoczyna pracę. Teraz za pomocą programu CPSim
uruchomionego w trybie on–line moŜna śledzić zmienne w programie wykonywanym
przez sterownik i ostatecznie zweryfikować poprawność projektu (tzw.
commissioning).
Oprócz układu START_STOP instrukcja zawiera projekt RTC (Real Time Control),
gdzie sterownik słuŜy do uruchamiania o określonej porze instalacji c.o., tzn. pieca i
pompy obiegowej. Wykorzystuje się zmienne typu DATE_AND_TIME oraz
TIME_OF_DAY. W obydwu przedstawionych przykładach rolę urządzeń obiektowych
pełnią rozproszone moduły wejścia/wyjścia serii SM. Konfigurator CPCon za pomocą
odpowiedniego pliku umoŜliwia uwzględnianie dodatkowych urządzeń.
Kompilator CPDev udostępnia większość standardowych funkcji normy IEC, tj.
matematyczne, logiczne, porównania, wyboru oraz konwersji typów danych. Inna
grupa funkcji obsługuje zegar systemowy, zegar RTC oraz określa składniki czasu i
daty. Biblioteka IEC_61131 zawiera standardowe bloki funkcjonalne normy, a
biblioteka Basic_blocks często stosowane bloki pomocnicze jak filtry, impulsatory,
dodatkowe przerzutniki itd. W bibliotece Complex_blocks (opisanej oddzielnie)
znajdują się regulator PID, kondycjoner sygnału pomiarowego, modulator szerokości
impulsów oraz blok automatycznego strojenia regulatora.
Projektant tworzy własną bibliotekę w ten sam sposób jak zwykły projekt
umieszczając w nim funkcje, bloki funkcjonalne i programy w zaleŜności od potrzeb.
Przedstawiono dwa przykłady tworzenia własnych bloków, pierwszy obliczający
średnie wejście i drugi generujący impuls po zadanym czasie.
4
Instrukcję uzupełnia przegląd języka ST obejmujący zasady nazewnictwa, typy
danych, stałe róŜnych typów, przykłady uŜycia instrukcji wyboru, pętli i przerwania
wykonywania programu. Operatory uszeregowano według priorytetów. Wewnątrz
programów moŜna uŜyć tablic jednowymiarowych. Jako przykłady podano kody
źródłowe standardowych bloków funkcjonalnych normy IEC 61131–3.
W Uzupełnieniach podano wskazówki edycyjne, wykaz skrótów klawiszowych, testy
wykonywane przez sterownik SMC itp.
5
INSTALACJA PAKIETU CPDev
System operacyjny
Windows Vista/XP/2000/98 SE
Płyta CD
Po włoŜeniu płyty CD z kompletnym oprogramowaniem pakietu CPDev powinna
automatycznie uruchomić się poniŜsza aplikacja startowa. Jeśli to nie nastąpi, naleŜy
uruchomić plik start_cpdev.hta zapisany na płycie.
Preinstalacja
Kliknięcie górnego przycisku Instaluj powoduje instalację zaznaczonych
komponentów Microsoftu.
6
Główny program instalacyjny
Uruchamia się go kliknięciem dolnego przycisku Instaluj. Uruchomienie sygnalizuje
Instalator pojawiający się w pasku aktywnych programów.
Linki podane w oknie startowym w sekcji Pliki specyficzne dla sterownika SMC
kierują do plików z firmwarem SMC oraz sterownikami do komunikacji PC↔SMC.
Uwaga. W przypadku pobrania samego pakietu ze strony internetowej
producenta (np. do aktualizacji) instalację przeprowadza program cpdev–lumel–
1.0.0.6.exe (prawdopodobnie z aktualniejszym numerem).
Język instalacji
Wybrany tutaj język dotyczy wyłącznie przebiegu instalacji. Wyboru języka samego
interfejsu CPDev dokonuje się w Globalnych ustawieniach (menu Narzędzia).
7
Okno powitalne
Lokalizacja CPDev
8
Skróty do programu
Dodatkowe zadania
9
Gotowość do instalacji
Postęp instalacji
Instalator sygnalizuje w pasku postęp w rozpakowywaniu i kopiowaniu plików.
10
Informacja dodatkowa
Zakończenie
11
Kontrola
Menu Start zawiera folder CPDev i skróty. W przypadku lokalizacji wg poprzednich
okien Menu wygląda następująco:
Deinstalacja
Deinstalacji aplikacji dokonuje się za pomocą skrótu w Menu Start.
12
URUCHOMIENIE. MENU. NARZĘDZIA
Uruchomienie
JeŜeli podczas instalacji zaznaczono opcję Uruchom program CPDev, to
bezpośrednio po instalacji program CPDev uruchamia się automatycznie.
Standardowych uruchomień dokonuje się poprzez Menu Start lub ikonę na pulpicie.
Pojawia się wtedy okno środowiska (główne), którego lewa część jest
przeznaczona na drzewo projektu, główna na kod programu, a dolna na
komunikaty kompilatora. Do momentu otwarcia projektu część ikon jest
nieaktywna (są szare).
13
Menu programu
Plik Edycja
Widok
Projekt
Opcja ta ma kluczowe znaczenie dla tworzenia projektu. Buduj dokonuje kompilacji
otwartego projektu lub jego elementu. Wyczyść usuwa pliki pośrednie powstałe
podczas kompilacji pozostawiając tylko dwa niezbędne (.xml, .xmc). Wystarczają one
dla archiwizacji projektu. Symulator i konfigurator systemu rozproszonego są
14
uruchamiane przez dwie następne opcje. Składnik operuje na elementach projektu
dodając je, usuwając, edytując itp. Opcja Właściwości wyświetla okno z
właściwościami obiektu zaznaczonego w drzewie projektu. Taką samą rolę pełni
standardowy skrót Alt+Enter.
15
Narzędzia konfigurują środowisko, ustawiają parametry komunikacyjne oraz
pozwalają uruchomić kompilator, symulator i konfigurator dla programów w plikach
zewnętrznych (odpowiednio .cst, .dcp i .dcp lub .xmc). Pliki takie naleŜy otworzyć w
pojawiających się oknach.
Opcja Okna formuje ekran interfejsu. Pomoc udostępnia niniejszą instrukcję,
materiały informacyjne z listą funkcji, opisami bloków w bibliotekach, informacjami
Dla zaawansowanych, a takŜe pozwala zorientować się, czy pakiet CPDev w
międzyczasie aktualizowano.
Opcje środowiska
Zaznaczenie Opcji środowiska powoduje otwarcie okna Konfiguracja z kilkoma
zakładkami.
Projekty
Podaje się tu ścieŜkę do pliku ze specyfikacją maszyny wirtualnej VM wykonującej
programy w sterowniku SMC (pakiet CPDev jest przeznaczony dla róŜnych platform
sprzętowych podobnie jak Java). W SMC funkcjonuje jednozadaniowa Maszyna
Wirtualna więc zaznaczenie opcji UŜyj… naleŜy koniecznie pozostawić. Poziomy
optymalizacji wyjaśniono w materiałach Dla zaawansowanych.
W zakładce Projekty moŜna takŜe wskazać, które biblioteki mają być automatycznie
importowane do nowych projektów. Za pomocą przycisku dodaje się bibliotekę z
pojawiającego się okna z zawartością katalogu Biblioteki. Przycisk usuwa
zaznaczoną bibliotekę z pola Domyślne biblioteki.
16
Edycyjne
Zakładka określa tryb pracy z edytorem języka ST. Domyślny tryb Pojedynczy
kolorowany oznacza, Ŝe podczas edycji programu słowa kluczowe są wyświetlane w
róŜnych kolorach. Zapewnia to równieŜ tryb Podwójny, ale Pojedynczy dodatkowo
dostarcza pomoc kontekstową aktywowaną skrótem Ctrl+spacja. Pomoc odnosi się
do aktualnie wpisywanego identyfikatora i zawiera nazwy zmiennych globalnych,
lokalnych, funkcji itp. Automatyczna synchronizacja nazw składników ujednolica
nazwy tych samych elementów w róŜnych częściach projektu przyspieszając edycję.
Kolory
Podano schemat kolorów edytora, atrybuty tekstu, kolory czcionki, tła itp., wraz z
przykładem kolorystyki kodu.
RóŜne
Określa się liczbę ostatnio otwieranych plików, które mają być zapamiętane i pojawią
się w opcji Plik > Ostatnio otwierane (zob. wcześniej). Nazwę aktywnego projektu
wyróŜnia pogrubienie. Pytaj, czy przed otwarciem raportu w przeglądarce
(domyślnej) najpierw ma pojawić się zapytanie. Zastąp zamienia plik specyfikacji
maszyny MW plikiem domyślnym (z zakładki Projekty). W drzewie projektu moŜe się
znaleźć typ zmiennej globalnej, jej adres fizyczny (dziesiętny), adres logiczny wg
normy IEC, komentarz i ewentualnie adres fizyczny MW (heksadecymalny).
17
Kompilator
Funkcje Wyrównywania adresów umieszczają zmienne globalne lub lokalne pod
adresami wynikającymi z deklaracji AT i rozmiarów typów (zob. Przegląd języka ST).
Sprzyja to unikaniu pomyłek przy lokalizacji zmiennych. MoŜna zezwolić na uŜywanie
komentarzy z C++ oraz komentarzy zagnieŜdŜonych. Adresy Modbus lub InTouch w
raporcie kompilacji są potrzebne do konfiguracji pakietu wizualizacyjnego w PC.
Globalne ustawienia
Dotyczą wszystkich programów wchodzących w skład pakietu CPDev, tzn.
kompilatora, symulatora i konfiguratora. Zaznaczenie Globalnych ustawień (w
Narzędziach) powoduje otwarcie okna Konfiguracja pakietu CPDev z trzema
zakładkami.
Komunikacja
Górne pole Ustawienia komunikacji określa ustawienia portu komputera PC dla
komunikacji ze sterownikiem SMC. Sterownik dołącza się przez port USB, więc
numer portu (tutaj COM5) naleŜy odczytać w MenedŜerze urządzeń (zob.
Komunikacja w systemie rozproszonym. Pozostałe ustawienia pochodzą z karty
katalogowej SMC.
18
W polu Ustawienia sterownika SMC ustala się numer SMC dla komunikacji z PC oraz
wybiera parametry komunikacji SMC z modułami wejścia/wyjścia (lub innymi
urządzeniami obiektowymi). Parametry te muszą być oczywiście takie same, jak
ustawione w modułach. Tryb 8N1 wybrany poniŜej oznacza 8 bitów danych,
nieparzystość N i 1 bit stopu.
Interfejs
Okno słuŜy do wyboru języka interfejsu pakietu CPDev (kompilator, symulator,
konfigurator).
Aktualizacja
JeŜeli komputer jest dołączony do sieci, zakładka pozwala ustawić konfigurację dla
sprawdzenia, czy na serwerze aktualizacji pojawiła się nowa wersja pakietu CPDev.
Konfiguracji serwera proxy dokonuje administrator sieci lokalnej uŜytkownika.
19
Uwaga. Hasła uŜytkownika aktualizacji i uŜytkownika proxy nie są szyfrowane!
Dlatego nie powinno się wpisywać ich na stałe do konfiguracji, a tylko
bezpośrednio przed sprawdzeniem. Zaraz potem naleŜy je skasować.
Pasek narzędzi
Drukuj drukuje raport projektu (otwartego) oraz kody źródłowe. Opcja Plik > Drukuj w
menu pełni tę samą rolę, a ponadto umoŜliwia wybór drukarki i ustawienie wydruku
(strony, kopie itp.). Podglądu wydruku na razie nie zaimplementowano.
20
NOWY PROJEKT – START_STOP
Układ START_STOP
Celem jest zaprojektowanie układu załączania i wyłączania urządzenia, czyli tzw.
układu START_STOP, występującego praktycznie w kaŜdym systemie sterowania.
Przykładowe schematy blokowy i przekaźnikowy w odniesieniu do sterowania
silnikiem pokazano niŜej.
Schemat blokowy
OR
START AND
SILNIK
STOP
ALARM
Schemat przekaźnikowy
SILNIK
21
Tryb tworzenia projektu
Czynnościami wykonywanymi podczas tworzenia nowego projektu są:
1. Utworzenie nowego pliku
2. Nadanie projektowi nazwy
3. Deklaracja zmiennych globalnych
4. Wpisanie programu
5. Deklaracja zadania
6. Zapis projektu w pliku XML
7. Kompilacja
8. Zapis skompilowanego programu i zamknięcie projektu
Wpisanie programu moŜe ewentualnie poprzedzać deklarację zmiennych globalnych.
Projektowany będzie układ START_STOP opisany powyŜej.
Nowy plik
• Plik > Nowy (Ctrl+N)
lub ikona
Nazwa projektu
Projektowi zostanie nadana nazwa START_STOP wpisywana w otwieranym oknie
Właściwości projektu.
• Drzewo projektu > Zaznaczyć projekt (BezNazwy)
Otwarcia dokonuje się czterema sposobami:
1) Menu kontekstowe > Właściwości
22
2) Projekt > Opcje
4) Alt + Enter
23
OK
Nowa nazwa pojawia się w drzewie projektu.
Zmienne globalne
Są to zmienne dostępne we wszystkich programach projektu, zazwyczaj związane ze
sprzętem. Deklaracji zmiennych globalnych moŜna dokonać trzema sposobami:
1) Zbiorcza deklaracja zmiennych na wspólnej liście
2) Indywidualna deklaracja kaŜdej zmiennej w osobnym oknie
3) Deklaracja VAR_GLOBAL przed programem
Zbiorcza deklaracja zmiennych na wspólnej liście daje najwięcej moŜliwości
grupowego zarządzania, łącznie z automatycznym obliczaniem pierwszego wolnego
adresu. Indywidualną deklarację przedstawiono w następnym rozdziale. Deklaracja
VAR_GLOBAL wymaga zmiany kilku opcji CPDev (zob. Dla zaawansowanych).
24
1) Zaznaczyć Zmienne globalne w drzewie projektu > Menu kontekstowe >
Edytuj listę zmiennych
Przycisk Dodaj dodaje do listy nowe zmienne. Usuń usuwa zmienne zaznaczone,
a Popraw zastępuje parametry zaznaczonych zmiennych nowymi wpisami.
• Grupa zmiennych, typ
Grupę tworzą zmienne tego samego typu, które będą miały sąsiednie adresy.
Nazwy zmiennych grupy, tutaj START, STOP i ALARM, naleŜy wpisać w polu
Nazwa. Typ wybiera się z rozwijanej listy lub wpisuje ręcznie (wystarczy wpisać
pierwsze litery, nacisnąć strzałkę ↓, a edytor sam dokona dopasowania).
25
• Stała, podtrzymywana
Atrybut stała (CONSTANT w IEC) deklaruje zmienną, która nie ulega zmianie
podczas wykonywania programu, a podtrzymywana (RETAIN) zmienną, której
ostatnia wartość jest zachowana podczas zaniku zasilania.
• Wartość początkowa
Pozostawienie niezaznaczonej opcji Wartość początkowa powoduje ustawienie
wartości domyślnej, zerowej dla typu BOOL. W przypadku zmiennej
podtrzymywanej wartość początkowa dotyczy tylko tzw. zimnego startu (pierwsze
uruchomienie programu). Przy ciepłym restarcie (wznowienie zasilania) obliczenia
są wznawiane od wartości podtrzymanej w pamięci. Natomiast zmienną, która nie
jest podtrzymywana, inicjuje się wartością początkową zarówno przy ciepłym, jak i
zimnym starcie.
• Komentarz
Tekst z deklaracji zmiennej pojawia się w podpowiedziach aktywowanych
naciśnięciem Ctrl+spacja (wprowadza go dyrektywa $COMMENT, zob.
Uzupełnienia).
• Dodaj
Naciśnięcie przycisku powoduje wypełnienie listy zadeklarowanymi zmiennymi.
• OK
Okno z listą znika, a w drzewie projektu w grupie zmiennych globalnych pojawiają
się START, STOP i ALARM.
Z kaŜdą zmienną związany jest folder, w którym znajdują się typ, adresy i
komentarz, pod warunkiem, Ŝe zostały wybrane w oknie Konfiguracja > RóŜne.
PowyŜej pokazano foldery zmiennych START i STOP, z adresami fizycznym i
logicznym. Są one takie jak w kolumnie Adres na Liście zmiennych globalnych.
Gdyby zmienna miała być ulokowana automatycznie, to w polach adresów
pojawiłby się napis auto.
26
• Zmienna SILNIK
Nie dołączono jej do poprzedniej grupy, bo powinna mieć adres 0008, a nie adres
kolejny (będzie przesyłana do innego modułu we/wy, zob. Komunikacja...). Po
zaznaczeniu opcji Adres, zamiast kolejnego adresu 0003 naleŜy wpisać 0008.
Poprawianie i usuwanie
Zaznaczenie zmiennej powoduje, Ŝe nazwa, typ oraz pozostałe parametry zostają
odtworzone. Poprawiania dokonuje się zmieniając wpisy i naciskając Popraw.
Usunięcia dokonuje Usuń. Zaznaczenie kilku zmiennych (za pomocą Shift lub Ctrl)
odtwarza tylko te parametry, które były jednakowe. Nowy wpis i zatwierdzenie
wprowadza zmianę do wszystkich zaznaczonych zmiennych.
Uwaga. Pakiet CPDev wyznacza wprawdzie pierwszy wolny adres, ale nie
sprawdza, czy cała grupa zmiennych zmieści się przed wcześniej
zadeklarowanymi zmiennymi (jeŜeli takie były). W razie kolizji odpowiednie
zmienne zostaną podświetlone na czerwono. Nakładające się adresy naleŜy
poprawić. Przykład poprawiania listy zmiennych podano w Uzupełnieniach.
Program
Nazwę programu (i ew. kod) wpisuje się w otwieranym oknie Właściwości programu.
Nazwa programu i podgląd
• Zaznaczyć projekt (START_STOP) > Menu kontekstowe >
Dodaj składnik > Program
27
• Wstępną nazwę PRG zastąpić właściwą nazwą. Tutaj będzie nią
PRG_START_STOP (przedrostek PRG nie jest konieczny; ma on jedynie
wskazywać, Ŝe chodzi o program, a nie o projekt). Automatyczna synchronizacja
nazw składników (w Opcjach środowiska) powoduje, Ŝe nazwa programu
wpisywana u góry pojawia się jednocześnie w linii 001 kodu.
OK
W drzewie projektu w grupie jednostek POU pojawia się nowy program
PRG_START_STOP.
28
Wpisywanie kodu
• Wpisywany kod programu PRG_START_STOP podano w poniŜszym oknie.
Zmienne START, STOP, ALARM i SILNIK są zmiennymi globalnymi, więc
wskazania, Ŝe będą uŜyte w programie dokonuje deklaracja VAR_EXTERNAL.
Program zawiera jedną instrukcję podstawienia, która odpowiada schematom
podanym poprzednio.
Podgląd a edycja
Tryb podglądu słuŜy do przeglądania programów i innych elementów projektu
chroniąc je przed przypadkową modyfikacją. Do podglądu moŜna przejść
następująco:
29
• Zaznaczyć program > Projekt > Składnik > Zablokuj (Ctrl+D)
Zadanie
W sterowniku SMC moŜna zadeklarować jedno zadanie. Jego nazwę oraz
wykonywane w ramach niego programy określa się za pomocą otwieranego okna
Właściwości zadania.
• Zaznaczyć projekt > Menu kontekstowe > Dodaj składnik > Zadanie
30
• W polu Dostępne programy zaznaczyć właściwy program (tutaj
PRG_START_STOP). Jednym z dwu górnych przycisków przeprowadzić go na
pole Wykonywane programy.
OK
Nazwę tego samego programu moŜna powtórzyć w polu Wykonywane programy.
Będzie on wtedy wykonywany częściej niŜ inne.
Drzewo projektu zawiera ZD_START_STOP w grupie Zadania.
W katalogu VM znajduje się plik z opisem XML maszyny wirtualnej dla sterownika
SMC (tzw. plik LCF – Library Configuration File).
31
• W polu Nazwa pliku naleŜy wpisać Start_Stop. Rozszerzenie .xml zostanie
dodane automatycznie tworząc plik Start_Stop.xml.
• Kliknąć Zapisz.
Kompilacja
Program jest kompilowany do postaci binarnej tzw. uniwersalnego kodu
wykonywalnego dla maszyny wirtualnej.
• Zaznaczyć dowolny element projektu > Projekt > Buduj (F6)
Błędy i ostrzeŜenia
W razie pojawienia się błędów w oknie wyników naleŜy dwukrotnie kliknąć linię z
opisem błędu (z krzyŜykiem). Wyświetlone zostanie wtedy okno kodu programu
(edycyjne) z kursorem w linii, w której najprawdopodobniej znajduje się błąd. Błędy
nie związane ze składnią języka ST, np. pominięcie deklaracji zadania,
sygnalizowane są na samym początku kodu (linia 0 lub -1).
32
OstrzeŜenie sygnalizuje „drogowy” znak ostrzegawczy. Gdyby np. zmiennej ALARM
przypisać adres 0001 (jak STOP), a nie 0002, to pojawi się następujące ostrzeŜenie
33
NaleŜy wybrać odpowiednią opcję. Jeśli Zamknij następuje po Zapisz, to
wystarcza Nie. Okno CPDev – zamykanie projektu pojawia się zawsze, nawet gdy
Ŝadnych zmian w projekcie nie wprowadzano (zob. Dla zaawansowanych, gdyby
naleŜało z niego zrezygnować).
34
CZASOMIERZE BIBLIOTECZNE
Opóźnione załączanie/wyłączanie
Układ START_STOP zostanie rozszerzony o załączanie i wyłączanie pompy w 5
sekund po załączeniu/wyłączeniu silnika. Ograniczenia mocy często nie zezwalają
na jednoczesne załączanie lub wyłączanie kilku urządzeń.
Norma IEC 61131–3 definiuje zestaw standardowych bloków funkcjonalnych, wśród
których znajdują się dwa czasomierze (timery):
TON – opóźnione załączenie
TOF – opóźnione wyłączenie.
Oznaczenia wejść/wyjść, ich typy i przebiegi czasowe wyglądają następująco:
TON TOF
BOOL IN Q BOOL BOOL IN Q BOOL
IN IN
PT
Q Q
PT
ET ET
OPOZN_ON OPOZN_OFF
TON TOF
SILNIK POMPA
IN Q IN Q
t#5s PT ET t#5s PT ET
35
• Odszukać katalog START_STOP w Moich_projektach, otworzyć i zaznaczyć plik
Start_Stop.xml.
36
• Zaznaczyć bibliotekę IEC_61131 > Menu kontekstowe > Właściwości
Uwaga. Czas podany w wierszu Wersja jest czasem, kiedy bibliotekę ostatnio
kompilowano.
• Przyciski
− wybór biblioteki (przejście do katalogu Biblioteki)
− zmiana rodzaju zaznaczenia wszystkich obiektów na przeciwny
− podgląd deklaracji zaznaczonego obiektu
− zmiana zaznaczenia bloków funkcjonalnych na przeciwny
− j.w., ale odpowiednio programy, funkcje i zmienne globalne.
Przycisk wyboru biblioteki jest aktywny tylko w przypadku eksportu lub importu
biblioteki poprzez Projekt > Eksport/Import > Biblioteka.
37
• Czasomierze TON, TOF
Za pomocą znaczników po lewej stronie i ew. przycisków po prawej „odznaczyć”
inne bloki biblioteki pozostawiając zaznaczone tylko TON i TOF.
Program
• Dwukrotnie kliknąć program PRG_START_STOP w drzewie projektu.
Program pojawia się w oknie głównym.
(JeŜeli tryb podglądu, to za pomocą Ctrl+E przejść do trybu edycji.)
• Uzupełnić kod jak w poniŜszym oknie.
Na uzupełnienia składają się:
– deklaracje egzemplarzy OPOZN_ON, OPOZN_OFF czasomierzy TON, TOF
– deklaracja zmiennej globalnej POMPA
– trzy instrukcje odpowiadające szeregowemu połączeniu czasomierzy i
ustawianiu zmiennej POMPA.
38
Dyrektywy (*$READ*), (*$WRITE*) stosuje się opcjonalnie dla zmiennych
deklarowanych za pomocą VAR_EXTERNAL. Dyrektywy gwarantują, Ŝe zmienne te
pozostaną w programie jako „tylko–do–odczytu” lub „tylko–do–zapisu”. Opis dyrektyw
znajduje się w rozdziale Uzupełnienia.
Struktura wejść/wyjść bloków funkcjonalnych jest prezentowana jako „dymek” oraz w
drzewie projektu (jak niŜej). Pojawia się ona takŜe w głównym oknie po zaznaczeniu
bloku i kliknięciu Enter.
39
Uwaga. Linie 019 i 020 w PRG_START_STOP moŜna zastąpić jedną linią
stosując wewnętrzne podstawienie Q=>POMPA.
Autouzupełnianie
Dokonana wcześniej kompilacja projektu stwarza moŜliwość autouzupełniania
(podpowiedzi kontekstowej), czyli dokończenia wpisywanej nazwy typu, funkcji,
zmiennej itd., jeŜeli nazwa ta juŜ istnieje. Naciśnięcie Ctrl + Spacja po wpisaniu
przynajmniej jednej litery generuje listę nazw, które tak samo się rozpoczynają i
wcześniej zostały poprawnie skompilowane. Z opcji Buduj kompilującej projekt warto
więc korzystać na bieŜąco.
40
• Pojawia się okno Właściwości zmiennej globalnej, którego górną część naleŜy
wypełnić podobnie jak poprzednio. Dolna część aktualizowana jest automatycznie
w trakcie wpisywania. Okno Właściwości zmiennej globalnej słuŜy równieŜ do
korygowania adresów zmiennych na wypadek ostrzeŜeń (zob. Nowy projekt –
START_STOP).
Kompilacja projektu
• Zaznaczyć projekt
• Kompilacja: Projekt > Buduj (F6)
Raport projektu
Raport zawiera informacje o projekcie, listę zmiennych z adresami, zajętość pamięci
itp. Adresacji dotyczy rozdział Komunikacja.
41
Kolumna Pełna Nazwa zawiera nazwę zmiennej z deklaracji poprzedzoną nazwą
projektu (podobnie dla zadań).
Sortowanie
Bezpośrednio po otwarciu raportu kolejność zmiennych na liście wynika z deklaracji.
MoŜna ją jednak zmienić sortując kolumnę przez kliknięcie nagłówka. Ukazuje się
wtedy znak sortowania rosnącego lub malejącego . ZaleŜnie od kolumny
sortowanie moŜe być tekstowe lub liczbowe. NiŜej pokazano listę zmiennych
posortowaną rosnąco według kolumny Nazwa.
42
Zapis projektu
• Zapis: Plik > Zapisz (Ctrl + S)
Wyjaśnienie. Nie pojawia się juŜ teraz okno Zapisywanie jako, bo połoŜenie
pliku na dysku zostało określone przy poprzednim zapisie (przed rozbudową o
czasomierze TON, TOF).
43
SYMULACJA PROJEKTU
Celem symulacji jest sprawdzenie funkcjonowania skompilowanego projektu, tzn.
zadania i wchodzących w jego skład programów, przed zapisaniem w sterowniku.
Pozwala to wykryć i skorygować ewentualne usterki.
Pierwszy sposób stosuje się bezpośrednio po kompilacji projektu opcją Buduj, która
tworzy plik z rozszerzeniem .dcp. Uruchamiany symulator CPSim automatycznie
wczytuje plik ze skompilowanym projektem. Dwa następne sposoby wymagają
ręcznego otwarcia pliku .dcp.
• Otwieranie pliku do symulacji
JeŜeli symulator został uruchomiony drugim lub trzecim sposobem, plik do
symulacji naleŜy wybrać opcją Plik > Otwórz plik DCP lub przyciskiem w
pasku narzędzi.
44
Uwaga. JeŜeli po raz kolejny symuluje się projekt, dla którego poprzednio
zapisano sesję symulacyjną (zob. Opcje programu dalej), to przed otwarciem
okna symulatora pojawi się pytanie Czy otworzyć takŜe plik sesji?
Menu CPSim
45
Plik Śledzenie (symulacja)
Pasek narzędzi
46
Pasek postępu na dole sygnalizuje tok symulacji.
• Wstrzymanie symulacji
Śledzenie > Wstrzymaj lub wznów albo ikona .
Wznowienie następuje przez ponowny wybór opcji lub kliknięcie ikony.
• Zakończenie symulacji
Śledzenie > Wyłącz lub ikona .
Lista zmiennych
Po otwarciu pliku .dcp w obszarze podglądu pojawia się standardowo lista
zmiennych globalnych. Lista umoŜliwia obserwację lub modyfikację wartości
zmiennych w trybie śledzenia i jest rodzajem panelu grupowego (zob. dalej).
• Wpisywanie wartości zmiennej
47
• Dodawanie zmiennych
Zaznaczyć zmienną w drzewie po lewej i przeciągnąć ją do obszaru listy trzymając
wciśnięty lewy klawisz myszy.
• Usuwanie zmiennych
Zaznaczyć wiersz > Menu kontekstowe > Usuń
Okienka indywidualne
W okienkach indywidualnych moŜna obserwować lub modyfikować wartości
pojedynczych zmiennych w trybie śledzenia.
• Dodawanie nowego okienka
– Zaznaczyć odpowiednią zmienną w drzewie zmiennych po lewej.
– Okno moŜna dodać trzema sposobami:
1) Przeciągnąć zmienną do obszaru podglądu trzymając wciśnięty lewy
klawisz myszy.
2) Wybrać z menu opcję Podgląd > Okno zmiennej.
3) Wybrać z menu kontekstowego (prawy klawisz) opcję Okno zmiennej.
48
Wpisywanie wartości w okienku indywidualnym wygląda podobnie jak na liście, z tym,
Ŝe edycję moŜna rozpocząć nie tylko dwukrotnym kliknięciem, ale równieŜ
naciśnięciem Enter.
• Usuwanie okienka
Kliknąć przycisk w usuwanym oknie.
• Wyświetlanie dodatkowych informacji o zmiennej
W oknie zmiennej kliknąć przycisk .
Pojawia się okno z dodatkowymi informacjami (typ, adres, nazwa).
Panele grupowe
Panele grupowe umoŜliwiają śledzenie zestawu zmiennych w jednym oknie.
Zmienne moŜna grupować w oknach dwojakiego rodzaju:
– listy zmiennych
– panele kontrolne.
49
Obsługa list zmiennych została wcześniej omówiona na przykładzie listy zmiennych
globalnych, dlatego poniŜej opisano tylko panele grupowe.
• Z menu wybrać opcję Podgląd > Panel grupowy lub kliknąć ikonę w pasku
narzędzi.
Pojawia się okno Właściwości panelu.
• Wpisać właściwą nazwę, jako typ panelu wybrać Elementy kontrolne i zatwierdzić
OK.
Pojawia się pusty panel z wpisaną nazwą, tutaj WEJŚCIA.
W ten sam sposób moŜna utworzyć panel WYJŚCIA (jw.), bądź panel
START_STOP z kompletem zmiennych projektu.
50
Panel w trybie śledzenia
W trakcie śledzenia kolor prostokątów reprezentujących zmienne typu BOOL zaleŜy
od wartości. Kliknięcie prostokąta zmienia wartość.
Opcje programu
Ustawienia i opcje symulatora moŜna modyfikować w oknie Opcje programu
otwieranym z menu poleceniem Narzędzia > Opcje programu. Okno składa się z
zakładek opisanych niŜej.
• Sesja
51
Domyślna sesja
Gdy opcja Automatycznie otwieraj zmienne globalne jest zaznaczona, przy
otwieraniu pliku .dcp w obszarze podglądu automatycznie pojawi się lista
zmiennych globalnych lub ich okna indywidualne. ZaleŜy to od wybrania opcji UŜyj
okienek indywidualnych lub UŜyj listy (domyślne). JeŜeli wybrano okienka
indywidualne, wówczas opcją Ograniczaj liczbę otwieranych okien do rozmiarów
okna okienka zostaną utworzone w takiej liczbie, która odpowiada widocznemu
obszarowi podglądu. Pozostałe zmienne nie będą uwzględnione.
Zawsze otwórz plik sesji SCP przy otwieraniu pliku DCP
Przy otwieraniu pliku .dcp w obszarze podglądu moŜe pojawić się pytanie Czy
otworzyć takŜe plik sesji? umoŜliwiając wznowienie sesji. Zaznaczenie opcji
powoduje automatyczne wczytanie sesji dla otwieranego pliku .dcp, z pominięciem
pytania.
Otwieraj okna zmiennych w trybie zaawansowanym
Przy tworzeniu indywidualnych okien zmiennych będą one od razu zawierały
dodatkowe informacje, które normalnie pojawiają się po naciśnięciu przycisku .
• Plik wejściowy
Zakładka słuŜy do określenia pliku wejściowego .inp dla Symulacji sterowanej
automatycznie. Nazwę pliku moŜna wpisać bezpośrednio lub wybrać przyciskiem
.
• Plik wyjściowy
Zakładka określa plik wyjściowy .out dla Rejestracji wyników. Nazwę pliku moŜna
wpisać bezpośrednio lub wybrać przyciskiem . Domyślną nazwą jest nazwa
pliku projektu. JeŜeli plik nie istnieje, zostanie utworzony, a jeśli istnieje, jego
poprzednia zawartość zostanie nadpisana chyba, Ŝe zaznaczono opcję Dopisuj do
istniejącego pliku.
52
• Źródło danych
W zakładce moŜliwe jest wybranie aktualnego trybu pracy programu CPSim, tj.
symulacji lub śledzenia on-line. Odpowiada to opcji menu Śledzenie > Źródło
danych. Dodatkowo przyciskiem Konfiguruj moŜna wyświetlić okno konfiguracyjne
parametrów transmisji dla trybu on-line.
53
KOMUNIKACJA W SYSTEMIE ROZPROSZONYM
Charakterystyka ogólna
W skład rozproszonego systemu kontrolno–pomiarowego wchodzą:
– komputer PC
– sterownik SMC
– urządzenia obiektowe.
Komputer PC funkcjonuje najpierw jako stacja inŜynierska z pakietem CPDev, a po
przesłaniu programu do SMC jako stacja operatorska z pakietem wizualizacyjnym
typu SCADA (LUMEL, InTouch, iFIX itd.). Komunikacja PC↔SMC oraz
SMC↔urządzenia obiektowe przebiega według protokołu Modbus RTU (dane 8–
bitowe). W komunikacji z PC sterownik SMC jest slavem, a w komunikacji z
urządzeniami obiektowymi – masterem.
Skonfigurowanie komunikacji i uruchomienie systemu wymaga następujących
czynności:
1) Połączenie komputera PC ze sterownikiem SMC
2) Konfiguracja podsystemu komunikacyjnego SMC↔urządzenia
3) Zapisanie skompilowanego programu uzupełnionego danymi konfiguracyjnymi
do sterownika SMC; sterownik automatycznie podejmuje wykonywanie
programu komunikując się z urządzeniami
4) Konfiguracja komunikacji pakietu SCADA i uruchomienie w PC.
Do konfiguracji podsystemu komunikacyjnego oraz konfiguracji pakietu SCADA słuŜy
sam komputer PC, więc moŜna je przeprowadzić bez połączenia z SMC.
Konfiguracja komunikacji pakietu SCADA wymaga podania adresów zmiennych w
SMC, które znajdują się w Raporcie projektu.
CPDev
SCADA
RS-485
PC SMC
wejścia wyjścia
obiektowe
Komputer PC jest połączony z SMC przez port USB traktowany jako wirtualny port
szeregowy. Moduły SM5 i SM4 łączy z SMC magistrala RS–485. System moŜe m. in.
słuŜyć do implementacji projektu START_STOP.
54
Dane transmisyjne
Modbus PC↔SMC
Funkcje Modbus
Funkcje komunikatów komputera PC, które obsługuje sterownik SMC są
następujące:
Adresy Modbus
RozróŜnienia, czy przesyłane rejestry zawierają dane jednobajtowe, dwubajtowe,
czterobajtowe (dwa rejestry), bądź datę i czas zegara RTC, dokonuje się na
podstawie adresów Modbus w komunikatach. Adresy te naleŜą do rozłącznych
zakresów określających rozmiary danych.
55
Adresy Modbus dla pakietów LUMEL i InTouch generowane są automatycznie w
Raporcie projektu. Pakiet InTouch do powyŜszych adresów wprowadza własny offset
wynoszący 40001.
Obszar zabroniony wynika z rozmiaru pamięci sterownika SMC, a zarezerwowany z
planowanych rozszerzeń komunikacji Modbus.
Modbus SMC↔moduły SM
Moduły SM lokują wejścia i wyjścia w kolejnych rejestrach dwubajtowych, z których
pierwsze mają adresy podane w tabeli (moduły lokują je takŜe w rejestrach
czterobajtowych; w nowych modułach sygnały binarne są ponadto lokowane zbiorczo
jako bity w rejestrach). Do grupowego odczytu lub zapisu rejestrów w modułach SM
słuŜą funkcje Modbus o kodach 3 i 16. Adresy rejestrów w modułach są zgodne z
konwencją zakresów rejestrów przyjętą dla sterownika SMC (zob. wyŜej).
Konwersje
Formatem zmiennych binarnych (boolowskich) w sterowniku SMC są bajty, a w
modułach SM rejestry. Stąd dla odczytu i zapisu zmiennych w modułach potrzebne
są konwersje 16→8 i 8→16 bitów. Konwersje formatów zmiennych dokonywane
przez sterownik SMC podano w tabeli.
Konwersja Znaczenie
bez konw. Bez konwersji, zmienna dwubajtowa przesyłana jako rejestr Modbus
56
8 –> 16 bit Jednobajtowa zmienna rozszerzana na dwubajtowy rejestr
16 –> 8 bit Rejestr obcinany do zmiennej jednobajtowej
Dwubajtowa zmienna przesyłana jako rejestr z zamienionymi
odwr. 12 –> 21
bajtami
Zamiana kolejności bajtów zmiennej czterobajtowej przesyłanej w
1234 –> 4321
dwóch rejestrach
32 bit 1234 Czterobajtowa zmienna przesyłana jako 32-bitowy rejestr Modbus
Czterobajtowa zmienna z zamienionymi bajtami przesyłana jako
32 bit 4321
32–bitowy rejestr
8 –> 1 bit Jednobajtowa zmienna BOOL konwertowana na bit
1 –> 8 bit Bit konwertowany na jednobajtową zmienną BOOL
Połączenie PC↔SMC
Instalacja sterownika USB
JeŜeli komputer PC nie ma zainstalowanego sterownika portu USB dla SMC, naleŜy
go zainstalować programem CDM_Setup.exe z płytki CD. Port USB będzie wtedy
obsługiwany jak port szeregowy.
Kabel PC↔SMC
Połączyć port USB komputera z portem USB sterownika SMC (na płycie czołowej).
57
lub ikona .
58
Tabela zadań komunikacyjnych
Podstawowe znaczenie ma Tabela zadań komunikacyjnych, która określa jakie
transakcje protokołu Modbus, tzn. wymiana komunikatów pytanie – odpowiedź
(odczyt) lub polecenie – potwierdzenie (zapis), będą miały miejsce. Transakcje są
tutaj nazywane zadaniami komunikacyjnymi. Znaczenie poszczególnych kolumn
tabeli zadań podaje tabela.
Kolumna Znaczenie
Czas kom. Adres lub nazwa zmiennej informującej o czasie trwania ostatniej
transmisji (TIME)
59
Przełączania między adresami lokalnymi a nazwami dokonuje
się klikając pionowy przycisk Adresy/Nazwy po lewej stronie
okna CPCon. Nazwy pojawiają się tylko w odniesieniu do
zmiennych globalnych.
Menu CPCon
Plik Transmisja
Część funkcji podanych w opcjach realizują przyciski pod tabelą. Import pliku
projektu jest potrzebny, gdy konfigurator CPCon uruchomiono drugim lub trzecim
sposobem (nie bezpośrednio po skompilowaniu projektu). Eksport ustawień i tabeli
do pliku html słuŜy tworzeniu dokumentacji, drukowaniu itp. (raport komunikacyjny).
Odczytywana metryczka zawiera podstawowe dane dokumentacyjne programu
wykonywanego przez sterownik (zob. Właściwości projektu). Sprawdzenie statusu
pozwala stwierdzić w jakim stanie sterownik aktualnie się znajduje. Synchronizacja
ustawia zegar sterownika według aktualnego czasu komputera PC. Podgląd
komunikacji zawsze widoczny zapobiega przykrywaniu okna podglądu przez inne
okna.
Ustawienia transmisyjne
• Transmisja > Ustawienia
Pojawia się okno Ustawienia z zakładkami Komunikacja, Interfejs oraz
Aktualizacja znanymi juŜ z Globalnych ustawień (zob. Konfiguracja pakietu
CPDev). Dwie części zakładki Komunikacja powtórzono jednak niŜej.
• Ustawienia komunikacji
Grupa słuŜy do ustawienia parametrów komunikacji szeregowej PC ↔ sterownik
SMC. Numer portu pochodzi z MenedŜera Urządzeń komputera PC.
60
• Ustawienia sterownika SMC
W grupie wybiera się numer sterownika SMC oraz parametry komunikacji SMC ↔
moduły wejścia/wyjścia (lub inne urządzenia). Parametry muszą być oczywiście
takie same, jak ustawione w modułach. Tryb 8N1 wybrany poniŜej oznacza 8
bitów danych, nieparzystość (N) i 1 bit stopu.
61
dodaje bądź usuwa wiersz, zob. dalej) lub za pomocą Kreatora zadań (przycisk)
składającego się z kilku okien. W odniesieniu do projektu START_STOP kreowanie
zadań przebiega następująco:
62
Spośród pięciu zmiennych globalnych projektu START_STOP trzy są wejściowe –
START, STOP, ALARM, a dwie wyjściowe – SILNIK, POMPA. Adresami
logicznymi tych zmiennych są odpowiednio 0, 1, 2 i 8, 9, a rozmiarem kaŜdej jest
bajt. Adresy zmiennych wejściowych są kolejnymi liczbami, odpowiedni jest więc
odczyt grupowy (blokowy).
Uwaga. Gdyby lista była pusta, to kliknięcie przycisku Wczytaj listę zmiennych
pozwala importować zmienne z pliku wybranego w otwierającym się oknie,
zarówno globalne jak i lokalne.
Priorytet. Timeout
Zadania komunikacyjne określone przez wiersze tabeli głównej wykonywane są w
przerwach, jakie po wykonaniu programu pozostają do końca kaŜdego cyklu. JeŜeli
przerwa jest znaczna, zadanie moŜe być wykonane kilkakrotnie. Zadanie o
priorytecie normalnym jest wykonywane dwukrotnie rzadziej niŜ zadanie o priorytecie
63
wysokim, a zadanie o priorytecie niskim trzykrotnie rzadziej. Timeout oznacza
maksymalny okres czasu, w ciągu którego urządzenie powinno przysłać odpowiedź
na pytanie lub polecenie sterownika.
Zmienne kontrolne
Ostatnie okno kreatora słuŜy do skonfigurowania kontroli transmisji, jeŜeli odpowiedni
fragment programu ją przewiduje. W oknie wskazuje się, do której ze zmiennych ma
być wpisywana informacja o poprawności lub niepoprawności komunikacji, którą
zmienną przeznaczono na wpisanie czasu komunikacji oraz za pomocą której moŜna
włączać lub wyłączać zadanie komunikacyjne. Kliknięcie przycisku po prawej stronie
jednej z rubryk otwiera listę zmiennych odpowiedniego typu (BOOL, TIME, BOOL), z
której naleŜy dokonać wyboru.
64
Tworzenie zadania komunikacyjnego
• Kliknąć
Na pytanie o dodanie kolejnego zadania naleŜy odpowiedzieć Tak, bo trzeba
jeszcze skonfigurować komunikację z modułem SM4.
• Priorytet. Timeout
65
• Zmienne kontrolne
• Kliknąć
Tym razem na pytanie Czy chcesz dodać kolejne zadanie? naleŜy odpowiedzieć
Nie. Tabela zadań komunikacyjnych ma ostatecznie postać:
66
Bezpośrednie wypełnianie tabeli (alternatywa dla kreatora)
Dodawanie i usuwanie wiersza
MoŜna to przeprowadzić za pomocą myszy lub klawiatury.
• Mysz
Ustawić kursor na wybranym wierszu, nacisnąć prawy przycisk i po pojawieniu się
okienka z opcjami Dodaj/Usuń wybrać właściwą i kliknąć lewy przycisk. Normalnie
Dodaj wstawia nowy wiersz pod wierszem wybranym. Aby wstawić przed
wybranym wierszem naleŜy wcześniej nacisnąć i przytrzymać Shift.
• Klawiatura
Klawiszami strzałek sprowadzić ramkę do wybranego wiersza i nacisnąć Shift +
F10 lub klawisz menu. Po pojawieniu się Dodaj/Usuń wybrać właściwą opcję i
zatwierdzić przez Enter. Podobnie jak poprzednio, Shift + Enter wstawia nowy
wiersz przed wierszem wybranym.
67
symulować funkcjonowanie urządzeń dołączonych do sterownika. Konfigurator
CPCon zapisuje pliki z rozszerzeniem .xmc.
• Kliknąć
Pojawia się okno Zapisz plik z konfiguracją podsystemu komunikacyjnego, w
którym naleŜy wpisać nazwę pliku Start_Stop.xmc (rozszerzenie .xmc dodawane
automatycznie). Zaleca się wszystkie pliki projektu zapisywać w jednym katalogu
(tutaj START_STOP).
• Kliknąć
W pojawiającym się oknie Otwórz plik z konfiguracją podsystemu
komunikacyjnego wybrać plik i kliknąć Otwórz.
68
W przypadku pliku Start_Stop.xmc tabela zadań komunikacyjnych będzie
wyglądała tak jak poprzednio.
• Kliknąć
Pojawia się okno metryczki projektu, która wraz z programem zostanie zapisana w
SMC. W przyszłości będzie więc moŜna zorientować się, jaką wersję programu
sterownik wykonuje.
OK.
69
W trakcie zapisywania w oknie Podgląd komunikacji wyświetlane są informacje
kontrolne.
• Kontrola statusu
Aktywacja opcji Transmisja > Sprawdź status SMC powoduje pojawienie się
okienka z informacją, czy SMC pracuje poprawnie, czy jest w stanie
programowania, bądź czy wystąpił błąd (zob. Uzupełnienia).
70
Dla pakietów wizualizacyjnych SCADA LUMEL zmienne binarne START, STOP itd.
są dostępne pod adresami z kolumny Modbus SMC. Pakiet InTouch do wszystkich
adresów wprowadza własny offset 40001, więc adresy w kolumnie Modbus
INTOUCH zostały odpowiednio powiększone. Kodami funkcji Modbus sterownika
SMC pracującego jako slave są 3, 6, 16 (zob. wcześniej). Dane są przesyłane w
rejestrach dwubajtowych.
Źródło danych
W celu ustawienia trybu on-line naleŜy wybrać Modbus-SMC jako Źródło danych w
opcji Śledzenie (domyślnym trybem jest Symulator).
Niedostępne stają się wówczas opcje Wstrzymaj i wznów oraz Restart programu
(Uruchamia...) w menu i pasku narzędzi, zaś opcje Włącz i Wyłącz dotyczą wyłącznie
uruchomienia lub zatrzymania śledzenia, a nie sterownika, który stale wykonuje
zapisany program.
Kontrola wersji
Przy włączaniu podglądu zmiennych w trybie on-line (opcja Włącz), CPSim sprawdza
najpierw, czy wersja programu wykonywanego przez SMC jest zgodna z wersją
zapisaną w projekcie. JeŜeli tak nie jest, pojawi się poniŜszy komunikat, a śledzenie
nie będzie moŜliwe. NaleŜy wtedy ponownie przesłać program do sterownika
programem CPCon.
71
Podgląd
Obszar podglądu podczas śledzenia on–line programu projektu START_STOP
wykonywanego przez sterownik SMC pokazano niŜej (tym razem z indywidualnymi
okienkami zmiennych).
72
ZEGAR RTC
Opis problemu
Temperaturę w mieszkaniu naleŜy utrzymywać na zadanej wartości W, wyŜszej w
ciągu dnia, np. 22°C, niŜszej w ciągu nocy – 18°C. Faktyczną temperaturę Y mierzy
moduł wejść analogowych SM2. JeŜeli W>Y, piec c.o. jest włączany sygnałem
sterującym U przez moduł wyjść binarnych SM4, a jeŜeli W≤Y, piec jest wyłączany.
W celu zapobieŜenia zbyt częstym włączeniom ponowne włączenie pieca moŜe
nastąpić jednak dopiero wtedy, gdy Y spadnie poniŜej W przynajmniej o 0.5°C.
Pompa obiegowa O tłocząca wodę przez grzejniki jest włączona stale w ciągu dnia,
zaś w nocy wtedy, gdy piec pracuje oraz niezaleŜnie od pieca między godzinami
23.00 a 1.00. Jako dzień rozumie się okres od godziny 6.00 do 20.00.
Przykładowe przebiegi
W
Y
Temperatura
Piec U
Pompa O
Czas 1:00 noc 6:00 dzień 20:00 n. 23:00
Układ sterowania
Przetwornik temperatury jest dołączony do wejścia IN1 modułu SM2, zaś styczniki
włączające piec i pompę do wyjść OUT1, OUT2 modułu SM4. Zakłada się ponadto,
Ŝe sterownik SMC komunikuje się z komputerem PC z zainstalowanym pakietem
wizualizacyjnym SCADA w celu:
– zdalnego ustawiania zadanej temperatury W,
– obserwacji sygnałów Y, U, O, czyli temperatury mierzonej oraz sterowania piecem
i pompą.
Temperatury po stronie SMC są oznaczone przez W, Y, a po stronie PC przez W_,
Y_ ze względu na róŜnicę formatów.
CPDev
SCADA
RS-485
PC SMC
W_, Y_, U, O
W, Y,
U, O
73
Bloki komunikacyjne
W pakiecie CPDev dostępne są specjalne bloki dla komunikacji z modułami SM,
o nazwach od COM_SM1 do COM_SM5. Struktura COM_SM2 i COM_SM4 wygląda
następująco (zob. Biblioteki bloków funkcjonalnych):
COM_SM2 COM_SM4
BOOL (true) EN C BOOL
BOOL (true) EN C BOOL
BYTE NO
BYTE NO IN1 REAL
TIME TOUT
TIME TOUT IN2 REAL
BOOL (false) OUT1
IN3 REAL BOOL (false) OUT2
IN4 REAL BOOL (false) OUT3
BOOL (false) OUT4
BOOL (false) OUT5
BOOL (false) OUT6
BOOL (false) OUT7
BOOL (false) OUT8
Wejścia
EN – aktywacja komunikacji (Enable); domyślnie TRUE
NO – numer urządzenia w komunikacie Modbus; wartość stała, np. BYTE#2
TOUT – timeout (ms); wartość stała, np. T#500ms
OUT1,..., OUT8 – wejścia binarne bloku COM_SM4.
Wyjścia
C – poprawność/niepoprawność komunikacji
IN1,..., IN4 – wyjścia analogowe bloku COM_SM2.
74
Projekt RTC
ZałoŜenia
Chodzi o zakres pomiarowy modułu SM2 oraz o format liczb wymienianych z
komputerem PC.
• Zakres SM2. Moduł SM2 mierzy temperaturę 0...100ºC na zakresie 0...10V, którą
przesyła do SMC jako liczbę REAL z przedziału 0.0...10.0 Na przykład
temperaturze 18ºC odpowiada 1.8.
• Komputer PC. Typami danych w komunikacji PC↔SMC są INT i BOOL, więc
temperatury W_, Y_ po stronie PC są liczbami typu INT. Wymaga się dokładności
0.1ºC. Dlatego zakresem zmiennych W_, Y_ odpowiadającym 0...100ºC jest
0...1000 (W=W_/100, Y_=Y·100). Zadaną temperaturę 20ºC po stronie PC
reprezentuje 200, a po stronie SMC 2.0.
Zmienne globalne
75
Program
Projekt RTC z rozwiniętym drzewem i programem PRG_RTC pokazano niŜej.
Komentarze widoczne przy zmiennych w drzewie wpisano wcześniej na Liście
zmiennych globalnych. Zadanie ZD_RTC jest wykonywane cyklicznie co 200 ms.
Deklaracje
• Dyrektywa (*$AUTO*) po deklaracji VAR_EXTERNAL włącza Listę zmiennych
globalnych do kompilowanego programu.
• Zmienne lokalne: W, Y – temperatura zadana, temperatura mierzona
DATA, CZAS – data i czas dobowy, czas dobowy.
• Bloki komunikacyjne: WEJŚCIE, WYJŚCIE – egzemplarze bloków COM_SM2,
COM_SM4.
76
18: ustawienie zmiennej DATA na wartość zwracaną przez funkcję GET_TST,
która odczytuje stan zegara RTC sterownika w momencie rozpoczęcia
zadania (Get Task Time). Wyodrębnienie CZASU dobowego przez funkcję
konwersji DT_TO_TOD (Date_and_Time To Time_of_Day).
20: wyznaczenie sterowania U piecem na podstawie porównania temperatury
mierzonej z zadaną uwzględniając spadek temperatury po wyłączeniu
przynajmniej o 0.5°C (co odpowiada 0.05).
22, 23: wyznaczenie sterowania O pompą obiegową – włączona w ciągu dnia,
nocą w godzinach 23.00...1.00 oraz wtedy, gdy piec pracuje.
25: komunikacja z modułem SM4 będącym urządzeniem nr 2, którego wyjścia
są ustawiane przez sygnały U i O.
26: konwersja REAL na INT po dopasowaniu zakresu celem wysłania do PC.
Symulator CPSim
Drzewo okna symulatora zawiera teraz oprócz zmiennych globalnych i zadania
równieŜ bloki komunikacyjne WEJSCIE, WYJSCIE. Wejścia i wyjścia tych bloków
moŜna symulować w indywidualnych okienkach przeciągając je z drzewa na prawą
stronę, bądź tworząc z nich panele grupowe. Warto zwrócić uwagę, Ŝe wyjście IN1
bloku WEJSCIE jest typu REAL, jak to widać w dolnym okienku.
77
Konfigurator CPCon
Po kompilacji projektu i uruchomieniu konfiguratora (Projekt > Uruchom konfigurator
lub ikona ) od razu pojawia się poniŜsze okno, bo komunikacja z modułami
COM_SM jest konfigurowana automatycznie.
Wyjaśnienia
Nr urządzenia: wynika z ustawień BYTE#3, BYTE#2.
Funkcja: odczyt/zapis rejestrów dwubajtowych.
Adres zdalny: adres pierwszego rejestru w module SM2, SM4 w komunikacie
Modbus.
Liczba: liczba przesyłanych rejestrów dwubajtowych. Blok COM_SM2
odczytuje 4 wejścia analogowe jako czterobajtowe liczby REAL,
na co potrzeba 8 rejestrów. COM_SM4 przesyła 8 wyjść
binarnych, kaŜde w osobnym rejestrze.
Adres lokalny: wyraŜony w bajtach adres wejścia IN1 bloku COM_SM2 i
wyjścia OUT1 bloku COM_SM4. Adresy te kompilator CPDev
przydziela automatycznie.
Konwersja: liczby REAL w modułach SM i w sterowniku SMC są formatu
IEEE-754, ale bajty ich ustawione są w odwrotnej kolejności
(Big Endian w SM, Little Endian w SMC). Konwersja formatów
dla SM2 polega na przestawieniu bajtów. Konwersja 8→16 bit
dla SM4 bierze się stąd, Ŝe w SMC zmienna BOOL zajmuje
jeden bajt, ale do SM4 trzeba ją przesłać jako dwubajtowy
rejestr.
Priorytet, timeout: normalny, standardowo 500 ms.
Poprawność: adres wyjścia C bloku COM_SM określony automatycznie
przez CPDev.
Czas komunikacji: nie podlega śledzeniu.
Włącz/wyłącz: adres wejścia EN bloku COM_SM określony przez CPDev.
78
• Transmisja > Ustawienia (przykład)
• Pozostałe czynności
– Zapisanie tabeli zadań do pliku .xmc
– Synchronizacja czasu SMC
– Przesłanie programu i konfiguracji do SMC
– Śledzenie on–line w CPSim (Źródło danych > Modbus–SMC).
MoŜna takŜe wyeksportować ustawienia i tabelę do pliku .htm.
Adresy po stronie PC
Fragment Raportu z kolumnami Modbus SMC i Modbus INTOUCH, w których
znajdują się adresy po stronie PC pokazano niŜej.
Adresy Modbus SMC stosowane w pakietach SCADA LUMEL mają dla zmiennych
typu INT offset wynoszący 4000. Dodatkowym offsetem w Modbus INTOUCH jest
40001 (zob. Komunikacja w systemie rozproszonym – Modbus PC↔SMC).
79
WŁASNA BIBLIOTEKA PROJEKTANTA
Biblioteka jako projekt
Zostanie utworzona biblioteka z dwoma blokami funkcjonalnymi:
• FB_AVERAGE określający średnią z trzech wejść
IN1 + IN 2 + IN 3
OUT =
3 .0
• FB_PULSE generujący impuls trwający 1 cykl po czasie T od momentu, gdy na
wejściu pojawiło się narastające zbocze.
R_TRIG RS TON Q
IN
CLK Q S Q1 IN Q
R1 PT ET
T
IN
1cykl
Bibliotekę tworzy się jako nowy projekt, który moŜe zawierać wszystkie
rodzaje jednostek POU, tzn. programy, bloki funkcjonalne i funkcje.
80
Nowy blok funkcjonalny
• Zaznaczyć grupę POU > Menu kontekstowe > Dodaj > Blok funkcjonalny.
Pojawia się okno Właściwości bloku funkcjonalnego z FB jako wstępną nazwą
bloku.
Blok FB_AVERAGE
• Nazwa
Rozszerzyć nazwę FB do FB_AVERAGE i zatwierdzić OK. Okno Właściwości
znika, a blok FB_AVERAGE pojawia się w drzewie projektu w grupie POU.
Uwaga. Przedrostek FB w nazwie nie jest niezbędny. Blok mógłby się nazywać
MY_AVERAGE, AVERAGE, SREDNIA lub jeszcze inaczej.
81
• Kod
Dwukrotne kliknięcie w FB_AVERAGE w drzewie otwiera edytor kodu dla wpisania
programu bloku. Szczególnie przy tworzeniu własnej biblioteki warto korzystać z
dyrektywy (*$COMMENT*), która dokumentuje kod źródłowy, a ponadto wpisany
po niej komentarz pojawia się w podpowiedziach. W oknie programu dyrektywy są
podkreślane.
• Kompilacja
Projekt > Buduj. Zaleca się na bieŜąco kompilować stopniowo rozbudowywany
projekt korygując dodawane składniki.
Pojawi się wtedy okno Właściwości funkcji, z którym po wpisaniu nazwy, np.
FUN_AVERAGE, postępuje się analogicznie jak w przypadku bloku.
82
Blok FB_PULSE
Wykorzystane zostaną bloki biblioteki IEC_61131 według schematu podanego na
początku.
• Kod – cz. I
Składa się na to nazwa bloku i deklaracje egzemplarzy bloków schematu.
• Wejścia/wyjścia bloków
Na ogół zachodzi potrzeba upewnienia się co do oznaczeń wejść/wyjść bloków
bibliotecznych uŜytych w deklaracjach. Oznaczenia moŜna odtworzyć dwoma
sposobami.
1) Wskazać kursorem blok w folderze biblioteki w drzewie projektu. Przez kilka
sekund widać wtedy deklarację bloku (jako dymek).
2) Zaznaczyć blok w folderze i nacisnąć Ctrl+I. Okno z deklaracją widać teraz aŜ
do momentu zamknięcia.
• Kod – cz. II
Podczas wpisywania kodu warto korzystać z opcji autouzupełniania nazw
(podpowiedzi). Listę moŜliwych autouzupełnień generuje naciśnięcie Ctrl + Spacja.
83
Warunkiem wyświetlania autouzupełnień jest kompilacja tworzonego projektu
zarówno na początku, jak i w trakcie wpisywania kodu (zob. Uzupełnienia).
Klawisz Enter wstawia słowo wybrane z listy autouzupełnień zamykając ją. Esc
zamyka listę bez wstawiania. Takie same rezultaty daje kliknięcie wybranego
słowa lub kliknięcie obok listy.
Eksport biblioteki
Projekt jest eksportowany jako biblioteka, którą po nadaniu nazwy, określeniu
połoŜenia i wyborze obiektów odpowiednio się kompiluje.
• Projekt > Eksport > Biblioteka
84
W oknie Eksportuj projekt jako bibliotekę wstępnie pojawia się nazwa projektu.
• Nazwa biblioteki
Wpisać nazwę biblioteki, tutaj My_blocks i ew. wypełnić pozostałe pola okna za
wyjątkiem PołoŜenia pliku. ŚcieŜka menu moŜe być wypełniona jak niŜej lub
pozostać pusta.
85
• PołoŜenie pliku bibliotecznego
– Kliknąć
– Wskazać katalog (zwykle Biblioteki) oraz wpisać nazwę pliku bibliotecznego z
rozszerzeniem .lcp, czyli tutaj My_blocks.lcp i zapisać.
Nazwa pliku moŜe, ale nie musi być nazwą biblioteki. Pole PołoŜenie pliku
wskazuje, gdzie biblioteka będzie się znajdować. ŚcieŜka menu, na razie
nieobsługiwana, ma w przyszłości słuŜyć edytorowi języka schematów blokowych
FBD.
86
• Wybór obiektów do eksportu
Za pomocą znaczników po lewej stronie naleŜy wybrać te obiekty, które
ostatecznie zostaną wyeksportowane (tutaj obydwa). Do szybkiego przełączenia
zaznaczony/niezaznaczony słuŜy przycisk Wszystkie. Interfejs przywołuje
deklarację wejść/wyjść. Cztery przyciski poniŜej wybierają bloki funkcjonalne,
programy, funkcje i zmienne globalne, jeŜeli takie występowały w projekcie.
Zmiennych globalnych do biblioteki zazwyczaj jednak się nie eksportuje.
• Kompilacja biblioteki
Naciśnięcie OK rozpoczyna kompilację do postaci półskompilowanej
(rozszerzenie .lcp, Projekt > Buduj kompiluje do postaci binarnej). OstrzeŜenia o
nieimportowanych zaleŜnościach są nieistotne i w następnych wersjach pakietu
CPDev nie będą się pojawiać.
Brak błędów świadczy o poprawności kodu. Teraz My_blocks znajduje się wraz z
innymi bibliotekami w katalogu Biblioteki.
• Plik > Zapisz. Zapis projektu w pliku z rozszerzeniem .xml, np. jako
Proj_My_Blocks.xml.
87
Plik > Zamknij
Testowanie
Przeprowadza się je za pomocą osobnego projektu, tutaj Test_My_blocks.
Testowanie bloku FB_AVERAGE sprowadzi się do podstawienia liczb i kontroli
wyniku, a testowanie bloku FB_PULSE do sprawdzenia liczby generowanych
impulsów za pomocą licznika CTU.
• Lista zmiennych globalnych
88
• Program testujący
• Symulator CPsim
Po kompilacji projektu Test_My_blocks, uruchomieniu symulatora, wyborze
wartości A, B, C oraz 5–krotnym naprzemiennym ustawianiu wejścia E na 0, 1,
lista zmiennych globalnych wygląda jak niŜej.
89
Uzupełnianie biblioteki
Polega na uzupełnieniu o nowe składniki projektu z kodem źródłowym biblioteki, czyli
tutaj projektu PROJ_MY_BLOCKS z plikiem Proj_My_blocks.xml. Następnie
powtarza się eksport biblioteki wybierając Projekt > Eksport > Biblioteka.
Dotychczasowa zawartość pliku bibliotecznego My_blocks.lcp zostaje zastąpiona
nową.
90
PRZEGLĄD JĘZYKA ST
Niniejszy przegląd jest przeznaczony dla uŜytkowników, którzy zetknęli się juŜ z
językiem ST. UŜytkownikom nie znającym ST moŜna polecić ksiąŜkę J. Kasprzyka
Programowanie sterowników przemysłowych (WNT, W-wa, 2006).
Elementy języków
Są nimi:
typy danych, np. BOOL, INT, REAL
– jednostki organizacyjne oprogramowania POU
– elementy konfiguracji
(POU – Program Organization Unit).
Elementy konfiguracji
Wspierają instalowanie i uruchamianie programów w systemach sterownikowych. Są
nimi:
– konfiguracja – zadania – ścieŜki dostępu
– zasoby – zmienne globalne
W pakiecie CPDev konfiguracja jest nazywana projektem. Elementami projektu
wykorzystującego jeden sterownik są zadania i zmienne globalne. Programy
przyporządkowuje się zadaniom.
91
– kod programu.
Słowami kluczowymi określającymi rodzaj POU są PROGRAM, FUNCTION_BLOCK
i FUNCTION. Deklaracji podlegają zmienne wejściowe, wyjściowe i lokalne. W
deklaracjach lokalnych VAR...END_VAR umieszcza się deklaracje egzemplarzy
bloków funkcjonalnych (instancje). Programy pisane w róŜnych językach normy IEC
róŜnią się faktycznie tylko formą kodu. Rodzaj jednostki i deklaracje wyglądają tak
samo.
Identyfikatory (nazwy)
Nazwy zmiennych, programów, bloków funkcjonalnych i funkcji zaczynają się od
litery lub podkreślnika. Zgodnie z normą IEC nie rozróŜnia się między małymi a
duŜymi literami, równieŜ w przypadku słów kluczowych. Jednakowo traktowane są
więc np.: 1) START, Start, start (zmienna), 2) THEN, Then, then, 3) END_VAR,
end_var.
W pakiecie CPDev następuje wewnętrzna konwersja małych liter nazw na litery duŜe
(chociaŜ w edytorze programów nadal prezentowane są małe, tak jak je napisano).
Jednakowe nazwy w róŜnych bibliotekach
Nazwy muszą być unikalne w ramach danego projektu lub biblioteki. W przypadku,
gdy nazwa w róŜnych bibliotekach się powtarza (bądź powtarza się w projekcie i
bibliotece), tzn. np. w standardowej bibliotece IEC_61131 znajduje się blok
opóźniający TON, zaś w innej bibliotece, np. My_blocks, pod nazwą TON istnieje
inny blok, wówczas deklarując egzemplarze tych bloków naleŜy nazwę TON
poprzedzić nazwą biblioteki i kropką, czyli:
IEC_61131.TON, My_blocks.TON
Po takim uzupełnieniu kompilator jest w stanie jednoznacznie dokonać wyboru.
Gdyby tak nie uczyniono, kompilator zasygnalizowałby błąd Multiple name found lub
Ambigous... Nazwa poprzedzona nazwą projektu lub biblioteki stanowi pełną nazwę
w pakiecie CPDev. Pełnych nazw moŜna zawsze uŜywać zamiast nazw
standardowych (krótkich).
92
11 UINT całkowita bez znaku 2B (0 ... 65535)
12 UDINT całkowita podwójna 4B (0 ... 232-1)
bez znaku
13 ULINT całkowita długa bez 8B (0 ... 264-1)
znaku
14 REAL rzeczywista 4B formatu IEEE-754
15 LREAL rzeczywista długa 8B formatu IEEE-754
16 TIME czas trwania 4B (-T#24d20h31m23s648ms...
T#0s...#24d20h31m23s647ms)
17 DATE data 4B (0001-01-01 ... 9999-12-31)
18 TIME_OF_DAY godzina dnia 4B (00:00:00.00... 23:59:59.99)
19 DATE_AND_TIME data i czas 8B (połączenie typów DATE i
TIME_OF_DAY)
20 STRING ciąg znaków zmienna długość
Typy uniwersalne
Są to grupy typów elementarnych zebranych według przeznaczenia.
ANY
ANY_BIT ANY_NUM ANY_DATE TIME,
Stałe (literały)
Przykładami stałych typów najczęściej uŜywanych są:
BOOL: TRUE, BOOL#1
INT: 13, INT#-1
REAL: 4.1415, REAL#18, 1.2E-6
TIME: T#1m3s250ms
TIME_OF_DAY: TOD#06:00:00
Typem stałej liczbowej bez kropki dziesiętnej jest INT, a z kropką REAL.
Inny typ stałej liczbowej niŜ INT, REAL wymusza się poprzedzając stałą jego nazwą i
znakiem #, np. DINT#-13, REAL#1.
Liczby niedziesiętne
Format zapisu liczb niedziesiętnych zawiera: 1) podstawę systemu liczbowego, np. 2,
8, 16 itp., 2) znak #, 3) ciąg alfanumeryczny reprezentujący wartość. Przykładowo
93
2#11111111, 8#377, 16#FF oznaczają 255 dziesiętnie. Byłoby tym takŜe
WORD#16#00FF (wiodące zera nie są niezbędne). Wspierane są równieŜ systemy
„nieinformatyczne”. Na przykład 5#24 reprezentuje 14.
Wartości początkowe
Domyślne początkowe wartości zmiennych są następujące:
Wartość początkową inną niŜ domyślna podaje się po deklaracji typu, np.:
lampa: BOOL := TRUE;
Atrybuty
Pakiet CPDev udostępnia dwa atrybuty zmiennych:
podtrzymywana – RETAIN, stała – CONSTANT
Podtrzymywaną jest zmienna, której wartość zostaje zachowana podczas zaniku
zasilania. Stała ma zawsze ustaloną wartość. Wartość początkowa zmiennej
podtrzymywanej dotyczy tylko zimnego startu (pierwsze uruchomienie), a potem nie
ma juŜ znaczenia. Zmienne niepodtrzymywane inicjowane są wartościami
początkowymi przy kaŜdym włączeniu zasilania (zimny start i ciepły restart).
Deklaracje zmiennych
Norma IEC definiuje kilka rodzajów deklaracji zmiennych:
VAR VAR_IN_OUT
VAR_INPUT VAR_EXTERNAL
VAR_OUTPUT VAR_GLOBAL
Zmienne lokalne są deklarowane za pomocą VAR. VAR_INPUT, VAR_OUTPUT i
VAR_IN_OUT stosuje się w blokach funkcjonalnych i funkcjach. VAR_EXTERNAL
deklaruje uŜycie zmiennych zdefiniowanych w konfiguracji jako VAR_GLOBAL.
KaŜdy rodzaj deklaracji kończy END_VAR.
W pakiecie CPDev zmienne globalne deklaruje się zwykle za pomocą Listy
zmiennych globalnych, ale moŜna je takŜe zadeklarować przed rozpoczęciem
programu (powyŜej słowa PROGRAM, zob. Dla zaawansowanych). Deklaracje
VAR_EXTERNAL występują tylko w programach, a nie w blokach funkcjonalnych i
funkcjach. Atrybutu Podtrzymywana (RETAIN) moŜna uŜywać tylko w deklaracjach
VAR, VAR_OUTPUT i VAR_GLOBAL.
Norma IEC dopuszcza ponadto zmienne VAR_ACCESS wymieniane z innymi
systemami, ale nie stosuje się ich w CPDev.
94
Lokalizacja zmiennych globalnych
Lokalizację zmiennej globalnej w pamięci sterownika określa poprzedzony
modyfikatorem AT zapis, na który składa się znak %, przedrostek rozmiaru oraz
adres logiczny, np.:
pompa AT %B0009 : BOOL;
Przedrostki reprezentujące typy normy IEC podano w tabeli.
Adresy w pamięci
Dla zmiennej globalnej zadeklarowanej z modyfikatorem AT kompilator rezerwuje
liczbę bajtów odpowiednio do rozmiaru określonego przez jej typ i umieszcza ją w
pamięci poczynając od bajtu, którego adres wyznacza następująco:
adres bajtu w pamięci = adres logiczny * rozmiar,
gdzie adres logiczny jest wartością podaną po przedrostkach %B, X, W, D, L. Na
przykład deklaracja
licznik AT %W0007: INT;
oznacza, Ŝe zmienna licznik znajduje się w pamięci na 2·7=14-tym bajcie (i 15-
tym). Z powyŜszej zasady wynika, Ŝe zaleŜnie od rodzaju przedrostka adres
pierwszego bajtu, w którym znajduje się wartość zmiennej ma własność podaną w
poniŜszej tabeli.
95
L adres podzielny przez 8
Programowanie w ST
Programy, bloki i funkcje
Jednostki POU są definiowane i kończone za pomocą następujących słów
kluczowych:
96
Instrukcje języka ST
WyróŜnia się wśród nich instrukcję przypisania (podstawienia), instrukcje wyboru,
pętle, instrukcje przerywające wykonanie oraz instrukcje uŜycia funkcji i bloków
funkcjonalnych.
• P r z y p i s a n i e : zmienna := wyraŜenie;
Instrukcję kończy średnik ;.
• W y b ó r : IF, CASE
IF
IF A>B THEN
B := A; Po END_IF, END_VAR i podobnych nie
ELSIF A<B THEN muszą występować średniki.
A := B;
ELSE A := 0; B:= 0;
END_IF
JeŜeli zmienna sterująca pętli FOR ma nie być zwiększana o 1, ale np. o 2 lub –1,
to instrukcję uzupełnia się o BY 2 lub BY –1, tzn.:
FOR i:=1 TO 10 BY 2 DO ... END_FOR
FOR i:=10 TO 1 BY –1 DO ... END_FOR
Po BY nie moŜe występować zmienna, a tylko identyfikator definiujący stałą.
• P r z e r w a n i e w y k o n y w a n i a : EXIT, RETURN
EXIT słuŜy do przerwania pętli FOR, WHILE lub REPEAT. RETURN kończy
natychmiast wykonywanie bloku funkcjonalnego lub funkcji nie czekając na END.
97
EXIT RETURN
WHILE i>0 DO FUNCTION LINE: REAL
l := l+1; VAR_INPUT
IF l>MAX_l THEN a,x,b: REAL;
EXIT; END_VAR
END_IF LINE:=a*x+b;
i := i-1; RETURN;
END_WHILE END_FUNCTION
• Funkcja
Funkcje standardowe i systemowe (zob. dalej) są bezpośrednio dostępne,
natomiast funkcje utworzone przez uŜytkownika wymagają importu z biblioteki.
Instrukcja uŜycia funkcji LINE zdefiniowanej powyŜej ma postać:
Y := LINE(A1,X1,B1);
• Blok funkcjonalny
Deklarując OPOZNIENIE jako egzemplarz bloku TON (jw.), wywołuje się go w
programie lub innym bloku i korzysta z wyjść za pomocą następujących instrukcji:
OPOZNIENIE(IN:=wejscie, PT:=t#5s);
silnik := OPOZNIENIE.Q;
linijkaLED := OPOZNIENIE.ET;
W pakiecie CPDev moŜna równieŜ przekazywać wyjścia wprost w instrukcji
wywołania bloku korzystając ze znaku =>, tj.:
OPOZNIENIE(IN:=wejscie, PT:=t#5s, Q=>silnik,
ET=>linijkaLED);
Kolejność podawania wejść w wywoływaniu bloku funkcjonalnego nie jest waŜna.
Ponadto wszystkie wymagane wejścia muszą zostać uŜyte.
Operatory języka ST
Operatory wchodzą w skład wyraŜeń występujących w instrukcjach języka ST.
Operatory moŜna zastępować funkcjami, a róŜnica tkwi jedynie w sposobie zapisu
(operator występuje pomiędzy argumentami). Na przykład zapisy AND jako
operatora i funkcji wyglądają następująco:
x1 AND x2 AND(x1,x2)
W poniŜszej tabeli uszeregowano operatory według malejącego priorytetu. Typy
argumentów są podane w opisach funkcji standardowych (zob. dalej).
98
- Odejmowanie SUB
<, >, <=, >= Porównanie LT,...,GE
= Równość EQ
<> Nierówność NQ
AND, & Iloczyn boolowski AND
XOR Suma modulo 2 XOR
OR Suma boolowska OR
Operatory oddzielone w tabeli przerywanymi liniami w tabeli, tzn. (-,NOT), (+,-), (=,
<>), (*, /, MOD), mają te same priorytety, więc są wykonywane w kolejności
występowania w wyraŜeniu (od lewej do prawej).
Tablice jednowymiarowe
99
FUNKCJE
Norma IEC 61131–3 definiuje obszerny zestaw funkcji standardowych podzielonych
na grupy. Spośród grup działających na typach elementarnych pakiet CPDev
udostępnia niemal wszystkie (wyjąwszy operacje na ciągach znaków – typ STRING).
100
Wyjaśnienia
– Gwiazdka * po nazwie funkcji oznacza zmienną liczbę argumentów (maksymalnie
15).
– Funkcje przesuwania bitów mają dwa argumenty – ANY_BIT bez BOOL, INT.
– Bardziej złoŜone działania niŜ ADD, SUB na typie TIME moŜna wykonać po
konwersji na typ liczbowy.
– Dodatkowa funkcja numeryczna RANDOML (bezargumentowa) zwraca liczbę
REAL z przedziału 0.0...1.0 generowaną według prostokątnego rozkładu
prawdopodobieństwa.
Funkcje wyboru
Funkcje wyboru operują na wszystkich typach elementarnych – ANY.
Konwersje
JeŜeli w poniŜszej tabeli brak funkcji konwertującej typ wejścia na inny, naleŜy
zastosować konwersję dwustopniową z typem pośrednim.
101
DWORD DWORD_TO_DINT
LWORD LWORD_TO_LINT
Wyjaśnienia
– Nie wymieniona wyŜej, ale dostępna funkcja DEPR_INT_TO_DINT realizuje
konwersję INT na DINT z powielaniem najstarszego bitu w sposób programowy
(funkcja in-line zachowana w celach kompatybilności ze starszymi maszynami
wirtualnymi).
Czas bieŜący
W uzupełnieniu normy IEC pakiet CPDev udostępnia dodatkowo:
– czas systemowy jako daną typu TIME
– obsługę zegara RTC
– składniki czasu i daty oraz dni tygodnia.
Funkcje dotyczące dwu pierwszych uzupełnień podano w tabeli. Czas systemowy
zwracany przez CUR_TIME jest liczony od 0, a po przekroczeniu zakresu ustawiany
na wartość ujemną przekraczającą 24 dni; potem znowu inkrementowany aŜ do
przekroczenia 24 dni itd. Na podstawie róŜnicy dwóch odczytów funkcją CUR_TIME
odmierza się odstęp czasu.
Wyjaśnienia
– Funkcje READ_RTC, WRITE_RTC oraz GET_TST operują na danych
DATE_AND_TIME. WRITE_RTC zwraca flagę poprawności zapisu nowej wartości
do układu RTC.
– GET_TST zwraca czas rozpoczęcia cyklu zadania, z którego zwykle korzysta się
częściej niŜ z czasu chwilowego zwracanego przez READ_RTC.
– TASK_CYCLE zwraca czas cyklu zadania ustawiony w projekcie.
102
DATE_AND_TIME
CC SS NN HH DD MM YY YY
Nr 0 1 2 3 4 5 6 7
bajtu
TIME_OF_DAY DATE
Słowo statusowe
Funkcja GET_STATUS_WORD1 zwraca słowo statusowe, którego bity, jeśli
ustawione, sygnalizują stany podane w tabeli.
103
BIBLIOTEKI BLOKÓW FUNKCJONALNYCH
Przedstawiono trzy biblioteki pakietu CPDev zawierające bloki funkcjonalne.
Biblioteki Basic_blocks i Complex_blocks są stopniowo uzupełniane (zwłaszcza
Complex_blocks)
Biblioteka IEC_61131
Oznaczenia sygnałów na schematach i w opisach odpowiadają normie IEC, tj.:
Q – wyjście typu BOOL,
R – wejście zerowania logicznego (reset),
S – wejście ustawiające (set),
CLK↑ – narastające zbocze wejścia CLK; CLK↓ – zbocze opadające.
Wartości początkowe wszystkich wejść są zerowe.
Bloki dwustanowe
Detektory zbocza
Liczniki
104
CTU CTU – licznik dodający (up counter)
BOOL CU Q BOOL CV = CV+1 dla CU↑, CV<PV i R=FALSE
BOOL R CV INT CV = 0 dla R=TRUE
INT PV Q = TRUE dla CV=PV
Czasomierze
ET
Uwaga. Obsługa zegara RTC jest realizowana w pakiecie CPDev przez funkcje
READ_RTC, WRITE_RTC i GET_TST (zob. Funkcje – czas bieŜący).
105
Biblioteka Basic_blocks
Konwencja oznaczeń:
R – wejście zerowania arytmetycznego, logicznego lub ustawienia innej
wartości (reset),
S – wejście wyboru, przełączenia (select, switch), a w przerzutnikach
wejście ustawiające (set),
IN↑ – narastające zbocze wejścia IN; zapis t0: IN↑ oznacza, Ŝe zbocze
wystąpiło w chwili t0,
Q – wyjście typu BOOL,
OUT – wyjście typu REAL,TIME i in.
Wartości początkowe wszystkich wejść są zerowe.
Bloki matematyczne
Przełączniki, wybieraki
106
COMP COMP – komparator analogowy z histerezą (comparator)
REAL IN1 Q BOOL Q = FALSE dla (IN1-IN2) < -H/2
REAL IN2 Q = TRUE dla (IN1-IN2) > H/2
REAL H
Przerzutniki, impulsatory
107
TOTI TOTI – całkowanie-impuls (totalizer)
t
REAL IN Q BOOL
Q = ↑↓ (impuls) dla ∫t IN 1(τ ) dτ = ∆
BOOL R 0
Filtry
Inne
Uwaga. Bloki ASWI, BSWI i LIMT moŜna zastąpić funkcjami SEL i LIMIT.
Funkcja SEL automatycznie rozróŜnia typ przełączanych wejść.
108
Bloki systemowe
Są to bloki nie wymagające importu biblioteki, czyli „zawsze dostępne”, których
egzemplarze od razu moŜna deklarować. Na razie grupę bloków systemowych
tworzą bloki COM_SM dla komunikacji z rozproszonymi modułami wejścia/wyjścia
SM1 do SM5 oraz bloki alarmów sygnalizujące restart.
• Bloki komunikacyjne
Struktura tych bloków jest następująca (por. Zegar RTC):
Wejścia
EN – aktywacja komunikacji
NO – numer urządzenia w komunikacie Modbus, wartość stała
TOUT – timeout (ms), wartość stała
OUT1, OUT2,... – wejścia analogowe lub binarne
Wyjścia
C – poprawność/niepoprawność komunikacji
IN1, IN2,... – wyjścia analogowe lub binarne
Bloki komunikacyjne
COM_SM2
COM_SM1 BOOL (true) EN C BOOL
BOOL (true) EN C BOOL
BYTE NO IN1 REAL
BYTE NO IN1 REAL TIME TOUT IN2 REAL
TIME TOUT IN2 REAL
IN3 REAL
IN4 REAL
COM_SM3
BOOL (true) EN C BOOL
IN8 BOOL
109
• Alarmy
R – wejście zerujące (reset)
Q – wyjście alarmujące
Wystąpienie sytuacji alarmowej jest sygnalizowane pojawieniem się TRUE na
wyjściu Q. Alarm gasi się ustawiając TRUE na wejściu R.
Bloki alarmów
APON
BOOL R Q BOOL Wznowienie zasilania („ciepły” restart)
ASTR
BOOL R Q BOOL Zerowanie pamięci („zimny” start)
Alarm aSTR pojawia się, gdy podczas startu sterownika SMC wykryto błąd sumy
kontrolnej w pamięci danych. Wówczas zmienne globalne zostają ustawione na
wartości początkowe, podobnie jak przy pierwszym uruchomieniu programu.
Przykład
Deklaracje
VAR
STAN:APON; RESET:BOOL; ALARM:BOOL;
END_VAR;
UŜycie
RESET:=FALSE; STAN(R:=RESET); ALARM:=STAN.Q;
110
UZUPEŁNIENIA
Poprawianie listy zmiennych
ZałóŜmy, Ŝe początkowo lista zmiennych ma postać
• Błędny adres
Dodawana jest nowa grupa dwu zmiennych SILNIK i POMPA, pierwsza o
niewłaściwym adresie 0002. Kliknięcie Dodaj uzupełnia wprawdzie listę o dwie
zmienne, ale wiersz SILNIK zostaje podświetlony na czerwono sygnalizując kolizję
adresów.
Podobnie jak poprzednio, SILNIK i POMPA powinny mieć adresy 0008 i 0009.
• Zaznaczenie grupowe
Zaznaczyć korygowane wiersze, drugi z przyciskiem Shift lub Ctrl (jak Windows).
Nazwy zmiennych, typ i adres pojawiają się w górnych polach (jeśli ich nie było).
Gdyby zaznaczone zmienne nie były jednakowego typu, pole Typ pozostałoby
puste.
Uwaga. Czerwone podświetlenie sygnalizujące błąd widać tylko, gdy zmiennej
wcześniej nie zaznaczono. Zaznaczeń nie naleŜy więc pozostawiać
przystępując do analizy błędów.
• Poprawianie
Zaznaczenie opcji Adres powoduje automatyczne wyświetlenie pierwszego
wolnego adresu dla kolidującej zmiennej, czyli tutaj 0004.
111
Po naciśnięciu Popraw lista zmiennych przyjmuje postać
PoniewaŜ zmienna typu REAL zajmuje 4 bajty, więc jej bajtowym adresem w pamięci
jest 0001*4=0004. Naciśnięcie Dodaj generuje następującą listę
Jak widać, pusty obszar został wypełniony w zakresie, w jakim to było moŜliwe.
Zakładki
Są one małymi kwadratowymi znacznikami wyróŜniającymi fragmenty kodu
większych programów w celu ułatwienia nawigacji i poprawy czytelności. Zakładki są
widoczne po lewej stronie kolumny numerów linii programu. MoŜe ich być co
najwyŜej 10, a istnieją tylko czasowo, do momentu zamknięcia projektu. Gdyby
zakładki były potrzebne ponownie, po otwarciu projektu naleŜy je utworzyć od nowa.
Zakładkę tworzy się i przechodzi do linii przez nią zaznaczonej za pomocą skrótów
klawiszowych:
• Shift + Ctrl + 0,...,9 – utworzenie zakładki 0, ..., 9 w miejscu wskazanym przez
kursor
• Ctrl + 0,...,9 – przejście do linii z zakładką 0, ..., 9
Fragment kodu zaopatrzonego w zakładki moŜe wyglądać następująco:
112
Skróty klawiszowe
Błąd Informacja
OstrzeŜenie Zapytanie
113
powstania niepoprawnego kodu. Podpowiedź moŜe np. zwracać uwagę na
ukrywanie zmiennej globalnej przez zmienną lokalną, której nadano taką samą
nazwę.
Format komunikatów generowanych przez kompilator jest następujący
[ikona] Nazwa_pliku.cst@linia_kodu Treść komunikatu
Za pomocą menu kontekstowego listę komunikatów moŜna kompletnie wyczyścić,
albo usunąć z niej tylko wybrane elementy.
Informacje, zapytania i komunikaty o niesklasyfikowanym tekście przewidziano na
przyszłość, gdy pakiet CPDev pozwoli na rozszerzenie programów o moduły
napisane w językach akceptowanych przez platformę .NET (np. C#).
Linia kodu
Plik .cst podany w komunikacie zawiera kod programu w języku ST utworzony
automatycznie po wybraniu Projekt > Buduj z elementów znajdujących się aktualnie
w drzewie projektu. Dwukrotne kliknięcie komunikatu otwiera okno pliku .cst z
podświetloną linią, która spowodowała zgłoszenie komunikatu. Podobnie jak w
przypadku innych kompilatorów naleŜy jednak liczyć się z tym, Ŝe błąd moŜe
wystąpić w innym miejscu niŜ wskazuje linia. JeŜeli kompilator nie jest w stanie
zlokalizować miejsca błędu lub ostrzeŜenia, podawana jest linia z numerem 0 lub -1.
Wystąpi to np. gdy kompilację wykonano przed zadeklarowaniem zadania.
Wyświetlanie autouzupełniania
Warunkiem wyświetlania autouzupełniania jest kompilacja projektu. Zaleca się
uczynić to zaraz na początku po zadeklarowaniu obiektów POU, aby włączyć do
autouzupełniania nazwy typów danych, funkcji standardowych itp. Następną
kompilację moŜna przeprowadzić po zadeklarowaniu zmiennych (i ew. wyczyścić
wtedy listę komunikatów, jeśli przeszkadza). Wyłączenie opcji pomijania błędnych
obiektów powoduje ograniczenie liczby pozycji wyświetlanych w autouzupełnianiu do
takiej, która wynika z kodu przeanalizowanego do momentu napotkania pierwszego
błędnego obiektu POU.
114
Dyrektywy kompilatora
Są to opcjonalne polecenia dla kompilatora upraszczające przygotowanie programu,
określające sposób dostępu do zmiennych, zachowujące komentarze itd. Format
dyrektywy jest taki jak format komentarza z tym, Ŝe trzecim znakiem musi być $, jak
np. w dyrektywie (*$READ*). Cztery dyrektywy, które mogą być przydatne
uŜytkownikowi podano w tabeli.
Dyrektywa Znaczenie
Zapis VAR_EXTERN (*$AUTO*) END_VAR
(*$AUTO*) automatycznie wstawia do programu deklaracje uŜycia wszystkich
zmiennych znajdujących się na Liście zmiennych globalnych.
Zmienna, w deklaracji której występuje dyrektywa (*$WRITE*), np.
(*$READ*) START: BOOL (*$READ*), jest w danym programie
przeznaczona tylko do odczytu. Zapisu zmiennej mogą
dokonywać inne programy wchodzące w skład projektu.
Zmienna, w deklaracji której występuje dyrektywa (*$READ*), np.
(*$WRITE*) POMPA: BOOL (*$WRITE*), jest w danym programie
przeznaczona tylko do zapisu. Nie moŜna w nim odczytać
wartości, które tej zmiennej nadały inne programy.
Komentarz napisany po dyrektywie w deklaracji zmiennej lub w
(*$COMMENT*) treści jednostki POU pozostaje w plikach projektu i jest m.in.
wykorzystywany w podpowiedziach. Standardowe komentarze
kompilator pomija, więc w podpowiedziach nie pojawiają się.
Przykładem komentarza moŜe być (*$COMMENT sygnał
alarmowy*).
Fragment programu napisany w języku Maszyny Wirtualnej (po
(*VMASM*) słowie VMASM a przed nawiasem zamykającym *)).
Sesja symulacyjna
Komplet danych sesji, tzn. listy zmiennych, okna indywidualne oraz panele kontrolne
moŜna zapisać w pliku celem późniejszego powtórzenia.
• Plik > Zapisz sesję lub ikona .
Pojawia się okno Zapisywanie jako z domyślną nazwą pliku projektu i
rozszerzeniem .scp.
115
• Wznowienie sesji
Plik > Otwórz sesję lub ikona .
Wznowienie sesji moŜe równieŜ nastąpić od razu przy otwieraniu pliku .dcp. JeŜeli
wraz z nim w tym samym katalogu znajduje się utworzony wcześniej plik sesji,
wówczas pojawi się pytanie Czy otworzyć takŜe plik sesji? umoŜliwiając wznowienie
sesji. MoŜna równieŜ automatycznie otworzyć sesję za pomocą ustawień w Opcjach
programu CPSim.
Rejestracja wyników
Wyniki symulacji moŜna zapisywać w pliku z rozszerzeniem .out zaznaczając opcję
menu Śledzenie > Rejestruj dane. Nazwę pliku wyjściowego naleŜy określić w
Opcjach programu, w przeciwnym razie rejestracja nie będzie moŜliwa. W trakcie
symulacji w pasku stanu pojawia się symbol oznaczający rejestrację danych.
Plik wyjściowy jest plikiem tekstowym zawierającym wartości zmiennych zapisywane
w kolejnych cyklach. Standardowo zapisywane są wartości tych zmiennych, które
mają indywidualne okienka podglądu (rejestruje się więc tylko to, co jest faktycznie
potrzebne). Kliknięcie prawym klawiszem w okienku zmiennej wyłącza ją z rejestracji.
PoniŜej przedstawiono fragment pliku wynikowego dla projektu START-STOP, gdy w
2 sekundzie ustawiono START, w 11 sekundzie STOP.
116
PoniŜszy przykład przedstawia zawartość pliku wejściowego, w którym zadawane są
wartości dla zmiennych START, STOP i ALARM, a symulacja ma zakończyć się po
40 sekundach.
Rozszerzenie Zawartość
.xml Podstawowy plik projektu
.cst Kod programu w języku ST (plik tekstowy)
.hcp Nagłówek projektu utworzony podczas kompilacji
.dcp Pośredni plik utworzony podczas kompilacji, z
którego korzystają symulator i konfigurator
.xcp Kod binarny skompilowanego programu dla
maszyny wirtualnej VM
.lcp Prekompilowana biblioteka pakietu CPDev
.scp Sesja symulacyjna
.inp Dane wejściowe dla sesji generowanej
automatycznie (plik tekstowy)
.out Wyjściowy plik sesji (tekstowy), np. dla MS Excel
.xmc Ustawienia komunikacyjne dla sterownika SMC
.html Raport projektu
.htm Raport komunikacyjny (ustawienia, tabela)
Pliki .cst do .xcp są generowane automatycznie na podstawie .xml. Zaleca się, aby
tworząc projekt załoŜyć dla niego osobny katalog, w którym znajdą się wszystkie
powyŜsze pliki.
117
jest zadanie o numerze parzystym. Czas wykonywanie jednego zadania, czyli
transakcji pytanie ↔ odpowiedź, nie przekracza kilkudziesięciu milisekund.
Faktycznie więc LEDy migotają bardzo szybko. Gdyby zadanie było tylko jedno, to
migotałby tylko jeden LED.
Przerwanie komunikacji z urządzeniem powoduje, Ŝe związane z nim zadanie zapala
LED na czas timeout, który jest przynajmniej kilkakrotnie dłuŜszy od czasu trwania
transakcji. Wyraźne dłuŜsze świecenie jednego z LEDów świadczy więc o przerwaniu
komunikacji.
118
Domyślna prędkość 9600 b/s
W pracującym sterowniku wymusza się ją naciskając przycisk na górnej ściance.
JeŜeli sterownik jest wyłączony, to prędkość 9600 b/s zostanie ustawiona włączając
zasilanie przy wciśniętym górnym przycisku.
Testy i niesprawności
Lokalizacja programu
Program uŜytkownika, na który składa się skompilowany kod oraz konfiguracja
komunikacji systemu rozproszonego jest podczas programowania sterownika
zapisywany najpierw w pamięci Flash (wraz z sumą kontrolną). Program ten
sterownik przepisuje do pamięci RAM, a potem od razu wykonuje. Podobnie, po
zaniku i wznowieniu zasilania program jest przepisywany z pamięci Flash do RAM i
wykonywany.
Rodzaje testów
Sterownik SMC przeprowadza testy w następujących sytuacjach:
– po włączeniu zasilania
– podczas przepisywania programu z pamięci Flash do RAM
– cyklicznie w przerwaniu zegarowym.
Sygnalizacja niesprawności
Wykrycie uszkodzenia przez test powoduje przerwanie wykonywania programu oraz
sygnalizację niesprawności sterownika poprzez pojedynczy błysk LEDa czerwonego
oraz serię błysków LEDa zielonego w liczbie zaleŜnej od powodu niesprawności.
119
Powód niesprawności Liczba błysków
Procesor 2
Zegar RTC 6
SM3
Wejście 1 = 4003
Wejście 2 = 4004
120
KODY ŹRÓDŁOWE BLOKÓW STANDARDOWYCH
NiŜej podano realizacje bloków standardowych normy IEC 61131–3 w pakiecie
CPDev, po jednej dla kaŜdej z czterech grup. MoŜe to być pomocą dla
początkującego uŜytkownika.
• Przerzutnik SR
FUNCTION_BLOCK SR (* SR - przerzutnik SR *)
VAR_INPUT
S1: BOOL; (* wejście ustawiające *)
R: BOOL; (* wejście zerujące (reset) *)
END_VAR
VAR_OUTPUT
Q1: BOOL; (* wyjście *)
END_VAR
Q1 :=S1 OR (NOT R AND Q1);
END_FUNCTION_BLOCK
• Licznik dodający
FUNCTION_BLOCK CTU (* CTU - licznik dodający *)
VAR_INPUT
CU : BOOL; (* zliczaj w górę zbocza narast. *)
R : BOOL; (* zerowanie licznika *)
PV : INT; (* wartość zadana - górny limit *)
END_VAR
VAR_OUTPUT
Q : BOOL; (* wyjście załączane *)
CV : INT; (* wartość bieŜąca *)
END_VAR
VAR
CUp : BOOL := FALSE; (* poprzednia wartość wejścia CU *)
END_VAR
IF R THEN (* jeśli R = TRUE *)
CV := 0;
ELSE
IF (CU AND NOT CUp) THEN (* jeśli zbocze narastające na
wejściu CU *)
IF (CV < PV) THEN
CV := CV + 1;
END_IF
END_IF
END_IF
121
Q := CV >= PV; (* Q := TRUE, jeśli CV >= PV *)
CUp := CU; (* zapamiętaj poprzedni stan
wejścia CU *)
END_FUNCTION_BLOCK
122