Sterowniki Programowalne (SP) Wykład 13 Język C dla sterowników programowalnych GeFanuc Na podstawie C Programmer's Toolkit for PACSystems WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI KATEDRA INŻYNIERII SYSTEMÓW STEROWANIA Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok III, semestr V Opracował: Bartosz Puchalski 04.11.2016
Cel/zakres wykładu Wstęp Dokumentacja Przybornik Praca z przybornikiem Wymagania co do nazw plików Nazwy zastrzeżone Pliki nagłówkowe (wymagane) Dodatkowe pliki nagłówkowe 2
Cel/zakres wykładu Praca z przybornikiem Funkcja Main Typy zmiennych Dostęp do pamięci Makra bitowe Kompilacja Dodawanie bloku C do projektu Praktyka 3
Wstęp PACSystems C Programmer's Toolkit (przybornik) zawiera składniki takie jak: biblioteki, narzędzia, dokumentacje, potrzebne do tworzenia bloków programu w języku C dla kontrolerów PACSystems. Bloki C są budowane w języku ANSI C przy pomocy edytorów tekstu oraz aplikacji zawartych w przyborniku na komputerze osobistym (PC). 4
Wstęp Bloki C są dołączane do projektu uruchamianego na kontrolerze PACSystems poprzez narzędzie do programowania sterowników GE Fanuc Proficy Machine Edition. W Proficy Machine Edition wywołanie bloków C w programie użytkownika następuje: przez język drabinkowy (instrukcja Call), przez moduł wejścia/wyjścia, lub przez przerwanie czasowe. W celu dodania bloku C do projektu w Proficy Machine Edition należy wykorzystać funkcję "Add C block". 5
Wstęp Blok C w kontrolerach PACSystems domyślnie jest ograniczony do rozmiaru 256 KB o ile taka ilość pamięci jest aktualnie dostępna. Przykłady wykorzystania bloków C są następujące: kształtowanie przebiegów czasowych, obliczanie wyprzedzenia/opóźnienia (lead/lag), generowanie komunikatów, wybieranie wejść, operacje arytmetyczne, algorytmy regulacji np. PID, sortowanie, przesuwanie oraz kopiowanie danych. 6
Wstęp - Dokumentacja Tytuł dokumentu: C Programmer's Toolkit for PACSystems TM User's Manual, GFK-2259E January 2012 Strona internetowa: https://ge-ip.force.com/communities/cc_home Dokumentacja zawiera niezbędne informacje dotyczące programowania aplikacji w języku C dla kontrolerów z rodziny PACSystems. Wymagana jest znajomość: języka C, działania kontrolerów PAC Systems. 7
Wstęp - Przybornik Okno główne przybornika Katalog przybornika Ikona przybornika (Pulpit) 8
Wstęp - Przybornik Minimalne wymagania systemowe: Komputer klasy PC z procesorem Pentium 166 MHz lub lepszy, RAM: minimum 128 MB, Miejsce na dysku: minimum 100MB, System operacyjny: Windows 2000, Windows ME, Windows 98, Windows NT 4.0 SP6a lub Windows XP 9
Praca z przybornikiem Kod źródłowy języka C, wykorzystany do budowy aplikacji/bloków C, dla kontrolera PACSystems może być napisany w dowolnym edytorze tekstu pod warunkiem że plik wyjściowy będzie kompatybilny z kompilatorem GNU C (nie jest rekomendowane używanie procesorów teksu). Zaleca się aby każdy blok C był budowany w oddzielnych katalogach. Można do tego celu wykorzystać katalog \Projects\ utworzony zaraz po instalacji przybornika. 10
Praca z przybornikiem Wymagania co do nazw plików Nazwy plików boków napisanych w języku C (np. mojblokc.gefelf) muszą spełniać następujące zalecenia: maksymalna długość nazwy 31 znaków, pierwszy znak nazwy musi być literą, nazwa pliku nie może zawierać spacji, nie można używać Real jako nazwy pliku, gdyż jest ona zarezerwowana przez przybornik. 11
Praca z przybornikiem Nazwy zastrzeżone Aby zapobiec konfliktom pomiędzy przybornikiem a zdefiniowanymi przez użytkownika nazwami w aplikacji C nie powinno się używać nazw zaczynających się: od GEF_, kropką. - na przykład.mydata. Nie przestrzeganie tych zasad może powodować błędy podczas kompilacji, błędne zapisywanie plików oraz nieprawidłowe operacje. 12
Praca z przybornikiem Pliki nagłówkowe (wymagane) W celu wykorzystania funkcji oraz makr zawartych w bibliotece danego kontrolera PACSystems należy dołączyć wyszczególnione poniżej pliki nagłówkowe do kodu: #include <PACRXPlc.h> /*Dla bloków C uruchamianych na dowolnym kontrolerze PACSystems */ #include <PACRX7iPlc.h> /* Dla bloków C uruchamianych i wykorzystujących zasoby kontrolerów z rodziny RX7i */ #include <PACRX3iPlc.h> /*Dla bloków C uruchamianych i wykorzystujących zasoby kontrolerów z rodziny RX3i */ Lista funkcji oraz makr danego kontrolera jest wyszczególniona w Załączniku A, dokumentu C Programmer's Toolkit... 13
Praca z przybornikiem dodatkowe pliki nagłówkowe W celu wykorzystania odpowiednich funkcji biblioteki uruchomieniowej języka C należy dołączyć wyszczególnione poniżej pliki nagłówkowe (jeden bądź kilka): #include <stdio.h> /* Wejście/wyjście */ #include <math.h> /* Matematyka */ #include <stdlib.h> /* Matematyka, konwersja danych, wyszukiwanie */ #include <string.h> /* Obsługa łańcuchów znaków */ #include <time.h> /* Obsługa czasu */ #include <ctype.h> /* Klasyfikacja znaków, konwersja */ Lista funkcji biblioteki uruchomieniowej języka C wspieranych przez kontrolery PACSystems zamieszczona jest w załączniku B, dokumentu C Programmer's Toolkit. 14
Praca z przybornikiem Funkcja main Po dołączeniu odpowiednich plików nagłówkowych, można przystąpić do pisania właściwego kodu dla bloku C, który będzie wykonywał określone przez programistę zadania, wykorzystując funkcje z wybranych bibliotek. Blok lub bloki C muszą posiadać jedną i tylko jedną funkcję o nazwie GefMain. Jest to odpowiednik funkcji main w języku C. Poprzez tę funkcję przekazywane są dane do i z bloku "C". 15
Praca z przybornikiem Typy zmiennych Zmienna w C Toolkit Opis T_BOOLEAN 8 bitów, gdzie 0 oznacza FAŁSZ a wartość niezerowa PRAWDĘ Odpowiednik w środowisku programistycznym BOOL T_BYTE 8 bitów, bez znaku BYTE T_WORD 16 bitów, bez znaku WORD T_DWORD 32 bity bez znaku DWORD T_INT8 8 bitów ze znakiem niedostępne T_INT16 8 bitów ze znakiem użycie typu INT w kodzie źródłowym C skutkuje typem 32 bitowym ze znakiem 16
Praca z przybornikiem Typy zmiennych Zmienna w C Toolkit Opis T_INT32 32 bity ze znakiem DINT T_UINT8 8 bitów bez znaku BYTE T_UINT16 16 bitów, bez znaku UINT T_UINT32 32 bity bez znaku DWORD Odpowiednik w środowisku programistycznym T_UINT64 64 bity bez znaku niedostępne T_REAL32 T_REAL64 32 bity, zmiennoprzecinkowa 64 bity, zmiennoprzecinkowa REAL LREAL 17
Praca z przybornikiem Dostęp do pamięci sterownika Typ referencji Opis %I Wejście dyskretne (tylko do odczytu) %Q Wyjście dyskretne (tylko do odczytu) %M Dyskretna pamięć wewnętrzna ( tylko do odczytu) %T Dyskretna pamięć tymczasowa (tylko do odczytu) %G Dyskretne pamięć globalna (tylko do odczytu) %S Dyskretne pamięć systemowa (tylko do odczytu) 18
Praca z przybornikiem Dostęp do pamięci sterownika Typ referencji Opis %AI %AQ Rejestry wejść analogowych Rejestry wyjść analogowych %R Rejestry systemowe %P Rejestry programu (używane do zapamiętywania danych z bloku Main) %L Lokalne rejestry (używane do zapamiętywania danych z bloków) 19
Praca z przybornikiem Dostęp do pamięci sterownika Modyfikator Opis B Referencja bajtowa bez znaku (8 bitów, 0 255) W Referencja Word (16 bitów, 0 65535) I D F Dbl Referencja całkowitoliczbowa (16 bitów ze znakiem, -32768 32767) Referencja podwójnej precyzji całkowitoliczbowa (32 bity ze znakiem) Referencja zmiennoprzecinkowa (32 bity standard IEEE) Referencja zmiennoprzecinkowa podwójnej precyzji (64 bit standard IEEE) 20
Praca z przybornikiem Przykład RI(1) = 3; Przypisuje wartość całkowitoliczbową 3 do rejestru %R00001 RW(2) = 0x55AA; Przypisuje wartość typu Word 55AAh do rejestru %R0002 21
Praca z przybornikiem Makra bitowe Modyfikator Opis BIT_TST_X Wykonuje test bitu BIT_SET_X Ustawia określony Bit na wartość 1 BIT_CLR_X Czyści określony bit, ustawia wartość 0 22
Praca z przybornikiem Przykład #include PACRXPlc.h int GeFMain() { if (BIT_TST_I(120)) { BIT_SET_Q(137); BIT_SET_M(29); BIT_SET_T(99); } else { BIT_CLR_Q(137); BIT_CLR_M(29); BIT_CLR_T(99); } return(gef_execution_ok); } 23
Praca z przybornikiem Makra bitowe Aby wykorzystać makra bitowe do zmiennych zorientowanych jako słowo w sterowniku PLC, należy podać dwa parametry określające: 1. Adres w pamięci sterownika, 2. Numer bitu z wybranego słowa (numery bitów od 1 do 16, gdzie 1 oznacza najmniej znaczący bit) Przykład: if (BIT_TST_R(135, 6) ) BIT_SET_P(13, 4); else BIT_CLR_AI(2,1); 24
Praca z przybornikiem Kompilacja Po wykonaniu bloku C należy skompilować jego kod źródłowy. Kompilacja bloku: Uruchomić C Toolkit ikoną PACSystems C Toolkit znajdującą się na pulpicie lub uruchomić plik ctkpacs.bat znajdujący się w folderze przybornika, W oknie konsoli DOS przejść do katalogu, w którym znajduje się plik źródłowy w języku C. 25
Praca z przybornikiem Kompilacja Wpisać odpowiednią komendę: aby skompilować kod źródłowy napisany w języku C, który będzie uruchamiany na dowolnym kontrolerze z rodziny PACSystems RX: compilecpacrx<file_name> aby skompilować kod źródłowy napisany w języku C, który będzie uruchamiany na kontrolerach z rodziny PACSystems RX3i: compilecpacrx3i<file_name> aby skompilować kod źródłowy napisany w języku C, który będzie uruchamiany na kontrolerach z rodziny PACSystems RX7i: compilecpacrx7i <file_name> Przykład Aby skompilować plik mojplikc.c dla kontrolerów z rodziny RX3i należy wpisać: compilecpacrx3i mojplikc 26
Praca z przybornikiem Kompilacja Jeśli wystąpią błędy kompilacji zostaną one wyświetlone na ekranie konsoli. Jeżeli kompilacja zakończy się powodzeniem zostanie utworzony plik o tej samej nazwie co plik źródłowy tylko że z rozszerzeniem.gefelf Plik ten zostanie umieszczony w podkatalogu PLC w tym samym katalogu co plik źródłowy. W taki sposób jest jednoznaczne, który plik należy wgrać na sterownik. Przykład Po skompilowaniu kodu źródłowego zawartego w pliku mojplik.c zostanie utworzony plik mojplikc.gefelf, który należy wgrać na sterownik 27
Praca z przybornikiem Dodawanie bloku C projektu Po skompilowaniu kodu w języku C należy przypisać plik *.gefelf do bloku C w aplikacji Proificy. Blok C zdefiniowany w projekcie Proficy musi posiadać taką samą liczbę parametrów jak funkcja GefMain. Nie jest sprawdzane czy liczba parametrów przypisana w projekcie zgadza się z ilością zdefiniowaną w funkcji GefMain. W przypadku gdy liczba parametrów się nie zgadza blok C może działać nieprawidłowo. 28
A teraz praktyka ( ʖ ) 29
A teraz praktyka ( ʖ ) 30
A teraz praktyka ( ʖ ) 31
A teraz praktyka ( ʖ ) 32
A teraz praktyka ( ʖ ) 33
A teraz praktyka ( ʖ ) 34
A teraz praktyka ( ʖ ) 35
A teraz praktyka ( ʖ ) 36
A teraz praktyka ( ʖ ) 37
A teraz praktyka ( ʖ ) 38
A teraz praktyka ( ʖ ) 39
A teraz praktyka ( ʖ ) 40
A teraz praktyka ( ʖ ) 41
A teraz praktyka ( ʖ ) 42
43