Strona główna ASTOR
Automatyka w praktyce

Język bloków funkcyjnych (CFC)
Kurs programowania w Codesys odc. 9

Kontakt w sprawie artykułu: Mateusz Steczkowski - 2022-06-10

Z tego artykułu dowiesz się:

  • jak działa język CFC,
  • jak przygotować projekt,
  • jak stworzyć pierwszy program w CFC.

Witamy w kolejnej części naszego kursu programowania w Codesys. Ostatnio dowiedziałeś/łaś się jak działa debugger oraz jak efektywnie debugować kod programu dla sterownika PLC. W tym odcinku poznasz kolejny język dostępny w środowisku Codesys – język CFC (od ang. Continuous Function Chart).

Jest to język graficzny: wstawiamy do do funkcji poszczególne elementy i łączymy je w sieć, tworząc zorganizowany schemat. Chcesz dowiedzieć się więcej? Zapraszamy na kolejny odcinek kursu!

Kurs programowania w Codesys

Część I – Podstawowe funkcjonalności środowiska Codesys

1. Pierwsze kroki w Codesys. Jak stworzyć program?
2. Pierwsze podłączenie i przygotowanie Codesys do pracy ze sterownikiem PLC.
3. Język drabinkowy (LD).
4. Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia.
5. Język schematów blokowych (FBD).
6. Tworzenie podstawowej wizualizacji HMI.
7. Język strukturalny (ST).
8. Diagnostyka w Codesys – jak sprawdzać działanie oprogramowania i sterownika?
9. Język bloków funkcyjnych (CFC).
10. Funkcja, blok funkcyjny, program – zmodyfikuj program w Codesys dla lepszej funkcjonalności.

Część II – Zaawansowane funkcje i możliwości środowiska Codesys

11. Komunikacja MQTT – jak skonfigurować w Codesys?
12. Komunikacja EtherCAT – konfiguracja i przykładowa aplikacja.
13. Softmotion – synchronizacja serwonapędów przy pomocy sterownika PLC.
14. Komunikacja Modbus RTU i TCP/IP w środowisku Codesys.
15. Tworzenie projektów w Codesys ze sterownikami bezpieczeństwa Safety: architektura systemu bezpieczeństwa.
16. Programowanie sterownika bezpieczeństwa w Codesys.
17. Integracja sterownika PLC z systemem SCADA w Codesys.
18. Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC – obsługa G-Code.

Dodatkowe materiały i lekcje dla kursantów:

1. Jak stworzyć wirtualny serwonapęd w Codesys? Instrukcja krok po kroku.
2. Przykładowa aplikacja Codesys w języku ST i LD: napełnianie i opróżnianie zbiorników wraz z alarmowaniem.

Czym jest język CFC i jak działa?

Język CFC, podobnie jak język drabinkowy oraz język strukturalny, jest zdefiniowany w międzynarodowej normie IEC 61131-3. W tym języku użytkownik tworzy kod za pomocą bloków funkcyjnych i innych elementów, które można dowolnie umieszczać w programie. Wstawione elementy łączy się w sieć w celu utworzenia schematu blokowego. Można także wstawiać sprzężenia zwrotne.

Kolejność wykonywania schematu bloków funkcyjnych jest oparta na przepływie danych. Ponadto jeden blok funkcyjny może przetwarzać wiele przepływów danych. Język CFC warto stosować, gdy wyjścia są ściśle funkcją bieżących wejść (innymi słowy, gdy nie występują zmienne stanu, takie jak sprzężenia boole’owskie, cewki ustawiające/resetujące lub flagi).

Jak stworzyć projekt w języku CFC?

Przejdźmy do środowiska Codesys. Tak samo, jak w przypadku języka drabinkowego i języka ST, poznasz możliwości działania oprogramowania. Zapewne wiesz już jak utworzyć nowy program. Jeżeli jednak przegapiłeś/aś wcześniejsze odcinki, zapoznaj się z podstawami przedstawionymi w odcinku 1.

Przy tworzeniu nowego projektu musisz zmienić język programowania na Continuous Function Chart (CFC).

Zmiana języka na CFC, źródło: ASTOR

Aby zacząć pracę nad programem, otwórz segment o nazwie PLC_PRG. Znajdziesz go w drzewku głównym, domyślnie znajdującym się po lewej stronie ekranu.

Otwarcie PLC_PRG z drzewka głównego programu Codesys, źródło: ASTOR

Poznasz teraz elementy języka CFC, które oferuje Codesys. Po otwarciu programu PLC_PRG, po prawej stronie zobaczysz okno Toolbox.  Jeżeli nie widzisz takiego okienka, kliknij w prawym górnym rogu w głównym menu opcję View, a następnie wybierz ToolBox.

Podobnie jak w innych językach graficznych w Codesys, znajdziesz w nim wszystkie elementy (obiekty) wykorzystywane podczas tworzenia programu.

Zawartość Toolbox Codesys, źródło: ASTOR

W Toolboxie znajdują się elementy, które zostaną wykorzystane do utworzenia programu. Na górze listy narzędzi znajduje się element Pointer. Gdy ta pozycja jest zaznaczona, kursor ma kształt strzałki, dzięki której można zaznaczać elementy w oknie edytora w celu ich pozycjonowania i edycji. Pozostałe elementy zostały opisane poniżej:

  • Control Point – dodaje punkt kontrolny na linii łączącej elementy. Użycie umożliwia ręczne kształtowanie linii.
  • Input – odczytuje zmienną i przesyła wartość do podłączonego bloku.
  • Output – wynik operacji z podłączonego bloku przesyłamy do zmiennej.
  • Box – wewnątrz niego zostaną wykonane operacje z wykorzystaniem zmiennych wejściowych. Może to być funkcja, blok funkcyjny lub program.
  • Jump – po osiągnięciu stanu wysokiego następuje pominięcie kodu programu aż do miejsca, w którym jest odpowiadający mu Label.
  • Label – miejsce, do którego ma być wykonany skok od przypisanego elementu Jump.
  • Return – po osiągnięciu stanu wysokiego kończy się wykonywanie danego programu.
  • Composer – przepisanie zmiennych do elementów struktury.
  • Selector – przepisanie elementów struktury do zmiennych.
  • Connection Mark – tworzą połączenie równoznaczne z łączeniem linią. Source jest wejściem, a Sink wyjściem.
  • Input Pin – dodawanie wejścia do bloku, o ile ma on taką możliwość.
  • Output Pin – dodawanie wyjścia do bloku, o ile ma on taką możliwość.

Tworzenie programu w języku CFC

Tworzenie programów w języku CFC w Codesys ma prostą mechanikę, podobną do poznanej w LD lub FBD. Zasada działania to „przeciągnij i upuść”.

Na początku dodaj element Box, poprzez przeciągnięcie go z Toolboxa na puste pole robocze. Element ten będzie określony jako timer TON. W środku elementu zapisz typ TON, a także dowolną nazwę timera, wyświetlającą się nad boxem.

Umieszczanie elementu Box w języku CFC, źródło: ASTOR

Następnie dodaj wejścia do utworzonego timera. Zrobisz to poprzez przeciągnięcie elementu Input do przestrzeni roboczej, a następnie połączenie z timerem. Następnie zadeklaruj zmienną wejściową, klikając na element Input.

Umieszczanie i podłączenie elementu Input w języku CFC, źródło: ASTOR

Analogicznie dodaj kolejny input, określający czas opóźnienia timera.

Kolejnym boxem, który dodamy, będzie CTU – licznik liczący w górę. Przeciągnij box do przestrzeni roboczej, a następnie w jego środku napisz CTU i nadaj mu nazwę. Następnie dodaj zmienne wejściowe (takim samym sposobem, jak w przypadku timera), lecz na wejściu CU podłącz tą samą zmienną, która została podłączona do wyjścia Q timera.

Umieszczanie i podłączenie elementu Output w języku CFC, źródło: ASTOR

Dodaj element Output i połącz go z wyjściem PV. Do wyjścia Q podłączysz inny element, tj. Connection Mark – Source, czyli znacznik źródła danych, który posłuży nam do przekazania danych w kolejnym etapie programowania.

Całość schematu powinna wyglądać tak, jak na poniższej grafice.

Dodanie licznika do programu, źródło: ASTOR

Ostatnim krokiem jest dodanie elementu o nazwie Connection Mark – Sink oraz nadanie mu dokładnie tej samej nazwy, jak poprzednio dodany Connection Mark – Source. Pozwoli to na otrzymywanie danych z wyjścia, do którego został podpięty element Sink. Następnie do jego wyjścia podepnij element Output i nazwij „Wyjscie_licznik”. Element ten wejdzie w stan wysoki, gdy licznik osiągnie wartość zadaną. Końcowy schemat ma wyglądać tak jak na poniższej grafice.

Końcowy wygląd programu, źródło: ASTOR

Tak oto udało się stworzyć pierwszy program w języku CFC. Uruchom symulator i przetestuj jego działanie.

Program ten zlicza załączenia się wejścia do timera z zadanym opóźnieniem. Jeżeli liczba załączeń będzie równać się wartości zadanej licznika, stan wysoki zostanie załączony i przekazany poprzez elementy Connection Mark, do wyjścia, które poinformuje o stanie licznika.

W tym odcinku to już wszystko. Poznałeś/aś podstawy CFC, wiesz już jak tworzyć programy z jego wykorzystaniem – w związku z tym poeksperymentuj z pozostałymi bloczkami funkcyjnymi!

W kolejnym odcinku poznasz funkcje, bloki funkcyjne w Codesys, dowiesz się, czym są, jak i gdzie się je stosuje oraz czym się cechuje program, a także jak je modyfikować dla lepszej funkcjonalności.

Do zobaczenia!

Mateusz Steczkowski
mateusz.steczkowski@astor.com.pl

Czy ten artykuł był dla Ciebie przydatny?

Średnia ocena artykułu: 4.6 / 5. Ilość ocen: 7

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *