Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Simulink PLC Coder Opracowali: mgr inż. Tomasz Karla Data: Listopad, 2016 r.
Dodatkowe informacje Materiały dodatkowe mają charakter ogólny i służą tylko do zapoznania się z poszczególnymi procedurami. Należy korzystać z nich wybiórczo w zależności od potrzeb. Parametry opisane w niniejszej instrukcji nadpisują wszelkie parametry z materiałów dodatkowych. Wstęp Simulink PLC Coder jest narzędziem pakietu oprogramowania MATLAB, który pozwala na targetowanie (generowanie kodu źródłowego kompatybilnego z konkretnym urządzeniem) bloków z modeli Simulink do sterowników PLC. Generowany kod źródłowy aplikacji może być w postaci kodu drabinkowego (tylko i wyłącznie operacje binarne na stycznikach i przekaźnikach) oraz w języku ST (Structural Text). Simulink PLC Coder wspiera szereg IDE (ang. Integrated Development Environment) dla sterowników PLC różnych producentów, jednak nie wszystkie są wspierane w jednakowym stopniu. Występują duże ograniczenia w ilości wykorzystywanych bloków z przyborników Simulink czy też możliwych opcji solverów. Procedura generowania kodu dla PLC w języku ST na wybranym przykładzie 1. Zdefiniować model Simulink. 2. Zidentyfikować elementy, dla których należy wygenerować kod źródłowy. 3. Umieścić wybrane elementy w subsystemie.
4. Skonfigurować subsystem aby był traktowany jako atomic block (z menu pod prawym przyciskiem myszy po kliknięciu na subsystem). 5. Wybrać target IDE (np. Tia Portal) w zakładce PLC Code Generation w ustawieniach modelu (z menu pod prawym przyciskiem myszy po kliknięciu na subsystem PLC Code -> Options). Należy pamiętać by także zadeklarować odpowiednią ścieżkę dostępu do IDE. W systemach 64 bitowych Windows, biblioteki często są instalowane w folderze Program Files (x86). Domyślna ścieżka nie musi więc być poprawna. W wypadku sterowników Siemens należy wybrać Tia Portal Double Precision, dla sterowników GeFanuc zaś Generic.
6. Wybrać solver i ustawić parametry modelu. Rekomendowane jest użycie solvera typu fixed-step wersji discrete. 7. Sprawdzić kompatybilność subsytemu z Simulink PLC Coderem (z menu pod prawym przyciskiem myszy po kliknięciu na subsystem). 8. Wygenerować kod ST (z menu pod prawym przyciskiem myszy po kliknięciu na subsystem).
Wygenerowany kod pojawi się w aktywnym folderze ustawionym w Workspace MATLABA w podfolderze zadeklarowanym przy wybieraniu IDE. Można go otworzyć za pomocą Notatnika Windows. 9. Sprawdzić otrzymany kod źródłowy. 10. Zaimportować kod do sterownika PLC. Procedura wdrażania kodu z Simulink PLC Coder na PLC Siemens 1. Zaimportować kod źródłowy z Simulink PLC Coder. Zakładka External source files.
2. Wygenerować bloki funkcyjne z kodu źródłowego (menu pod prawym przyciskiem myszy). Zostaną wygenerowane nowe bloki funkcyjne, które można wykorzystać w kodzie sterownika. 3. Dodać blok Cyclic interrupt w Program blocks w celu zapewnienia pracy z określonym okresem wcześniej zadeklarowanym w modelu Simulink. 4. Umieszczenie wybranych funkcji w drabince programu. 5. Zadeklarowanie wymaganych zmiennych i przypisanie im pamięci. 6. Zmienne macierzowe dodaje się w blokach typu Data block w zakładce Program blocks
Dla macierzy deklarujemy nazwę zmiennej, następnie jej typ wpisując wg wzoru: Array [0.. X-1] of TYPE Gdzie X-1 to liczba elementów macierzy minus 1, TYPE zaś typ danych np. LREAL Zmienne zostaną utworzone automatycznie. Dopuszczalne są tylko jednowymiarowe. Jeśli kod korzysta z tablicy dwuwymiarowej, należy zadeklarować tablicę o długości wszystkich pól macierzy dwuwymiarowej np. macierz 3x2 to będzie Array [0.. 5] of LREAL W wypadku korzystania z macierzy jako danych wejściowych/wyjściowych z bloków funkcyjnych, należy podać tylko nazwę bloku pamięci Data block oraz nazwę zmiennej bez uzupełniana indeksu (nawiasy [] należy skasować jeśli zostaną podpowiedziane w czasie wpisywania nazwy zmiennej) 7. Dodać blok Startup. Blok ten wykorzystany zostanie do wprowadzenia warunków początkowych. Dodać w bloku startup nowo utworzoną funkcję z zaimportowanego kodu ST, wybrać odpowiedni blok danych, w którym przechowywane są dane funkcji (w wypadku, gdy już wcześniej została ona dodana do kodu w sterowniku i posiada już zadeklarowany blok danych funkcji) lub dodać nowy blok danych funkcji. Następnie ustawić wejście funkcji ssmethodtype na 0. W wypadku korzystania z funkcji w głównym programie należy ustawić ja na wartość 1. 8. Sprawdzić przepływ danych przez wszystkie bloki i uruchomić program. Zmienne można podglądać za pomocą tablic Watch table lub w oknie kodu wykonywanego przez sterownik.