1/3
Laboratorium: Programowanie Sterowników Przemysłowych
Ćwiczenie: Programowanie sterowników PLC w języku C
Celem ćwiczenia jest prezentacja metod i narzędzi wykorzystywanych do implementacji
i testowania aplikacji sterowników PLC w języku wysokiego C, na przykładzie sterowników GE
Fanuc PacSystems RX7i.
Przygotowanie projektu realizowane jest z wykorzystaniem oprogramowania Cimplity Machine
Edition oraz pakietu GE Fanuc C Toolkit for PACSystem. Umożliwiają one kompilację programu
w języku C oraz dołączenie go do programu w języku drabinkowym jako tzw. bloku zewnętrznego
(ang. external block). Ponadto w skład pakietu C Toolkit wchodzi debugger, umożliwiający
uruchamianie i testowanie programu bez użycia sterownika, w środowisku komputera PC.
Informacje dodatkowe
W skład programu w języku C musi wchodzić funkcja GefMain(). Jest ona wywoływana przez
system operacyjny sterownika PLC po umieszczeniu bloku zewnętrznego w programie w języku
drabinkowym. Parametry funkcji GefMain() muszą być zgodne co do typu i liczby z listą
parametrów zdefiniowanych dla bloku zewnętrznego w programie Cimplicity Machine Edition.
Wartość zwraca przez funkcję GefMain GEF_EXECUTION_OK lub GEF_EXECUTION_ERROR
odpowiada przekazaniu (lub nie) sygnału na tzw. wyjście zezwolenia bloku (tj. występujące w
każdym bloku wyjście binarne, nie posiadające nazwy)
Praca z debuggerem wymaga dołączenia do programu dodatkowego pliku źródłowego,
zawierającego punkt wejścia do programu (funkcję main()). Funkcja main() po zainicjowaniu
środowiska czasu wykonania za pomocą funkcji bibliotecznej initCBlock() wywołuje funkcję
GefMain() bloku specyfikując odpowiednie parametry.
Paramery bloku GefMain() są wskaźnikami na odpowiednie typy danych. W przypadku, gdy
w programie drabinowym nie jest określona wartość parametru, w wywołaniu GefMain()
odpowiedni parametr przyjmie wartość NULL. Dlatego też należy zwrócić szczególną uwagę na
kontrolę wartości parametrów w programie w języku C, aby zapobiec błędom odwołań do pamięci.
Zadania do realizacji w trakcie ćwiczenia
Dla każdego zadania utworzyć odrębny podkatalog w D:\PACSystemsCToolkit\Projects oraz
osobny blok zewnętrzny w Cimplicity Machine Edition. Wszystkie bloki umieścić w jednym
projekcie w języku drabinkowych.
1. Napisać procedurę o trzech parametrach wejściowych typu T_WORD i trzech parametrach
wyjściowych typu T_BOOLEAN. Parametry wejściowe określają numery badanych wejść
sterownika (np. wartość 12 odpowiada %I12). Procedura ma ustawiać odpowiedni parametr
wyjściowy (pierwszy, drugi lub trzeci) na 1 w zależności od liczby wejść, na których
występują stany 1. Np. dla dwóch aktywnych wejść należy ustawić drugim parametr wyjściowy
na wartość 1.
W programie w języku drabinkowym ustawić adresy odczytywanych wejść na 10, 11, 12 oraz
połączyć wyjścia bloku z komórkami %T1, %T2, %T3. Zwrócić uwagę, aby rozwiązując
kolejne zadania nie spowodować kolizji adresów.
2/3
2. Napisać procedurę, która po pojawieniu się „1” na wejściu %I9 załącza wyjście %Q9 po 15
sekundach, a po wyłączeniu wejścia %I9 wyłącza wyjście %Q9 po 10 sekundach. Jeżeli „1” na
wejściu %I9 trwa krócej niż 15 sekund, wyjście %Q9 nie powinno się zapalić.
3. Zrealizować procedurę STER_ZAW sterującą pracą zaworu.
Sygnały wejściowe:
– R_ZAM – rozkaz operatora: zamknij zawór,
– R_OTW – rozkaz operatora: otwórz zawór,
– ZAM – sygnalizacja zawór zamknięty,
– OTW – sygnalizacja zawór otwarty,
Sygnały wyjściowe:
– S_ZAM – siłownik: zamykanie zaworu,
– S_OTW – siłownik: otwieranie zaworu,
– A_ZAM – awaria podczas zamykania zaworu,
– A_OTW – awaria podczas otwierania zaworu;
Algorytm:
– rozkaz R_ZAM powinien spowodować wystawienie sygnału dla siłownika S_ZAM aż do
uzyskania potwierdzenia otwarcia ZAM, analogicznie dla rozkazu R_OTW
– maksymalny dozwolony czas pracy siłownika to 10 sekund; w przypadku jego
przekroczenia procedura powinna zatrzymać pracę siłownika wystawić odpowiedni sygnał
alarmu: A_ZAM lub A_OTW
– skasowanie alarmu powinno nastąpić po prawidłowo wykonanym cyklu pracy (zamykania
lub otwierania) zaworu
– polecenie otwarcia zaworu otwartego lub zamknięcia zaworu zamkniętego należy
zignorować
4. Wykorzystując przygotowaną procedurę sterowania zaworem napisać program sterujący
dwoma zaworami, przyjmując następujące przyporządkowanie wejść/wyjść:
ZAWÓR 1
ZAWÓR 2
R_ZAM %I1 R_ZAM %I5
R_OTW %I2 R_OTW %I6
ZAM %I3 ZAM %I7
OTW %I4 OTW %I8
S_ZAM %Q1 S_ZAM %Q5
S_OTW %Q2 S_OTW %Q6
A_ZAM %Q3 A_ZAM %Q7
A_OTW %Q4 A_OTW %Q8
Tworzenie i kompilacja programu
– skrót
uruchamiający linię poleceń środowiska C Toolkit jest dostępny na pulpicie, zmienić
bieżący folder na odpowiedni dla zadania
– utworzyć program w języku C, zapisać plik źródłowy
– kompilacja
programu
w
języku C, program do uruchamiania przez sterownik PLC
CompileCPACRX7i <nazwa utworzonego pliku c bez rozszerzenia>
– utworzyć plik zawierający funkcję main()
/* IncludeFiles */
#include "ctkInitCBlock.h"
#include "PACRX7iPlc.h"
3/3
#include <stdio.h>
/* forward declaration */
int GefMain (T_WORD *param1); /* Input Param 1 */
int main(int argc, char *argv[])
{
T_WORD param = 1;
int result;
initCBlock(); // inicjalizacja środowiska
result = GefMain(¶m); // wywołanie zależne od parametrów procedury
if(result != GET_EXECUTION_OK.) printf(“Error”);
}
– utworzyć plik o nazwie sourcesDebug (bez rozszerzenia), zawierający listę plików
źródłowych projektu
CFILENAMES = plik1.c plik2.c
– kompilacja
programu
w
języku C, program do uruchamiania na komputerze PC
CompileCDebugPACRX7i
– uruchomienie programu za pomocą debuggera i testy
DebugPACRX7i pc\program.exe
– utworzenie
bloku
zewnętrznego programu wykorzystując wygenerowany plik
plc\program.gefElf (widok projektu, prawy klawisz myszy na Logic->Program Blocks; Add
C Block), zdefiniować parametry wejściowe bloku za pomocą opcji Parameters
5. utworzyć główny blok programu sterownika (_MAIN) wykorzystując zdefiniowany blok
zewnętrzny i przetestować pracę programu
Sprawozdanie
– skład osobowy sekcji wykonującej ćwiczenie,
– rozwiązania zadań: pliki źródłowe w języku C i skompilowane
– kopia projektu Cimplicity Machine Editon (funkcja Backup).
– wnioski.
Wszystkie składniki sprawozdania należy skompresować w formacie *.zip tworząc plik o nazwie
gXsYcZ.zip, gdzie X jest numerem grupy, Y sekcji a Z ćwiczenia
Sprawozdanie należy umieścić na serwerze ftp w terminie nie dłuższym niż 2 tygodnie od odbycia
zajęć. Adres serwera: 157.158.57.50, user: labplc, pass: plclab. Studenci zobowiązani są do
przechowywania kopii sprawozdania, na wypadek awarii serwera lub innych nieprzewidzianych
zdarzeń.
Instrukcje do ćwiczenia
http://www.iinf.polsl.gliwice.pl/iinf/infprzem/_teaching/teaching_activity.htm
1. GE Fanuc PACSystems C Toolkit
2. GE Fanuc PACSystems RX7i
3. Cimplicity ME