Strona główna ASTOR
Dla użytkowników produktów ASTOR

Sterowniki PLC Astraada One: czy opłaca się inwestować w jednostki centralne z procesorem dwurdzeniowym?

Kontakt w sprawie artykułu: Mateusz Pytel - 2023-11-06

Z tego artykułu dowiesz się:

  • jak przygotować program wykorzystujący możliwości procesora dwurdzeniowego w sterowniku PLC Astraada One,
  • jakie wyniki uzyskano podczas testów porównawczych procesorów jedno- i dwurdzeniowych.

Procesor jest sercem i mózgiem każdego sterownika PLC. Dla nas, użytkowników, najbardziej istotnym jego parametrem jest szybkość przetwarzania informacji. W skomplikowanych układach sterowania pożądane jest, aby procesor działał jak najszybciej. Procesory jednordzeniowe wykonują wszystkie swoje operacje na jednym rdzeniu. Niestety pomimo taktowania rzędu milionów razy na sekundę czasami nie jest to wystarczające. Rozwiązaniem są procesory wyposażone w więcej rdzeni obliczeniowych.

Poniżej przedstawiamy testy porównawcze sterownika Astrada One Compact ECC2200 i ECC2201 DUO. Ten drugi wyposażony jest w procesor Dual Core, który dzięki dwóm niezależnym rdzeniom może wykonywać dwie różne operacje w tym samym czasie, poprawiając tym samym wydajność. Sprawdzimy, jak to wygląda w praktyce.

W poniższej tabeli zebrane są najważniejsze parametry obu tych sterowników:

ModelECC2200ECC2201 DUO
CPUFreescale i.MX6 CPU 800MHzDual core: 800MHz ARM CPU Cortex-A9
Pamięć Flash256 MB/ 100MB na aplikacje1 GB
Pamięć RAM256MB/ 128 MB na aplikacje1 GB
Pamięć z podtrzymaniem100 kB100 kB
Interfejs Ethernet1x 10/100 lub 3x 10/1001x 10/100
Interfejs EtherCAT1x RJ451x RJ45
Interfejs USB1x USB 2.01x USB 2.0
Interfejs CAN Bus/open1x CAN/RJ451x CAN/RJ45
Interfejs COM1x RS232/RS485, 1x RS4851x RS232/RS485, 1x RS485
Slot kart micro SDDo 32 GBDo 32 GB
Wejścia cyfrowe1616
Szybkie licznikiMożliwość programowalnej aktywacji 2x HSC 500kHzMożliwość programowalnej aktywacji 2x HSC 500kHz
Wyjścia cyfrowe4×4 (0,5A)4×4 (0,5A)
Wejścia analogowe6x (+/-10V, +/-20mA PT100/PT1000) 6x (+/-10V, +/-20mA)
Wyjścia analogowe6x napięciowe (0-10V)

Przebieg testów

Przeprowadzono dwa testy, do których wykorzystano dwa różne kody: jeden cyklicznie ustawiał zmienne, a w drugim zaimplementowano dwa regulatory PID. Każdy z tych kodów zdublowano do nowego programu (POU), który przydzielono do innego tasku (zadania). Następnie sterowniki wykonywały te programy – najpierw przydzielone w Task Configuration do jednego, a następnie do dwóch różnych rdzeni. W każdym teście monitorowane były czasy cyklów, które są ściśle powiązane z wydajnością programu.

Scan time to czas cyklu potrzebnego na odczytanie danych wejściowych, przetworzenie i wykonanie obliczeń, obsługę interfejsów komunikacyjnych oraz ustawienie wyjść i autodiagnostykę. Im szybciej sterownik wykona te czynności, tym szybciej program może analizować i przetwarzać dane. Czas cyklu zależy między innymi od systemu operacyjnego oraz parametrów procesora

Jak podzielić taski na dwa rdzenie?

Pierwszym krokiem jest dodanie dwóch dodatkowych programów POU. Klikamy prawym przyciskiem myszy na zakładkę Application i wybieramy Add Object -> POU

Następnie dodajemy dwa nowe taski, klikając prawym przyciskiem myszy na pozycję Task Configuration i wybierając Add Object -> Task

Następnie przeciągamy POU do poszczególnych tasków, aby końcowy rezultat był następujący:

PLC-PRG jest to program główny. Zostawiamy go pustego, ponieważ w nim oraz w Main Task wykonywane będą operacje systemowe, które zaciemnią nam wyniki testów. Chcemy oddzielić wykonywane programy od operacji wykonywanych w tle. W dwóch kolejnych POU umieszczamy docelowe programy testowe. W praktyce nie musimy robić takich podziałów i możemy zrealizować go tylko w dwóch POU i Task Group.

Przydzielamy taski do grup. Klikamy dwukrotnie w Task Configuration i dodajemy nową grupę przyciskiem Add Group. Możemy zmienić jej nazwę klikając na niej dwukrotnie. Następnie przeciągamy taski do odpowiednich grup. W kolumnie Core wybieramy numer rdzenia, na którym ma być wykonywany dany task.

Na końcu łączymy się ze sterownikiem, wgrywamy program (pamiętajmy o napisaniu i zdublowaniu kodu w naszych POU), przechodzimy w tryb RUN. W Task Configuration przechodzimy do zakładki Monitor.

Program cyklicznie ustawiający zmienne

Wykonujemy prosty program cyklicznie zmieniający zmienną typu BOOL. W pełnym okresie cyklu przez jedną sekundę zmienna ma wartość 1, a przez jedną – wartość 0.

Program wykorzystujący regulatory PID

W tym programie dodajemy dwa moduły PID. Wykorzystujemy do tego blok BOX znajdujący się w zakładce General, w którym wpisujemy PID i wciskamy Enter. Pod każdym blokiem dodajemy blok sumy, który będzie dodawał nam wartość regulacji do wartości aktualnej.

Otrzymujemy „goły” blok PID, do którego musimy teraz stworzyć zmienne. Nie wszystkie będą używane, natomiast wymagane jest ich zdefiniowanie. Przypisujemy im wartości startowe, które ustawią się wraz z włączeniem programu. Należy pamiętać, aby przed każdym testem wyzerować zmienne, które zawierają dane z poprzednich cykli testowych.

Końcowy rezultat wygląda następująco:

Warto zaznaczyć, że dla tego programu zmieniono czas interwału tasków na 1000 ms, czyli 1 s. Dzięki temu regulatory PID trochę wolniej regulują sygnał.

Wyniki testów

Analizując wyniki będziemy patrzeć na Average Cycle Time mierzony w µs, który jest podawany przez sterownik podczas podglądu programu.

Program cyklicznie ustawiający zmienne

Poniżej przedstawiono porównanie danych pozyskanych po około 1000 cyklach programu. Jak widać, w sterowniku Dual Core zasoby przeznaczone na programy rozłożone są po równo, natomiast w sterowniku z jednym rdzeniem widać już lekkie dysproporcje, co jest spowodowane priorytetyzacją jednego z podprogramów. Przy bardziej skomplikowanych i dłuższych programach może to wpływać na wydajność całego systemu.

Wyniki dla sterownika jednordzeniowego EC2200. Źródło: ASTOR
Wyniki dla sterownika dwurdzeniowego EC2201. Źródło: ASTOR

Program wykorzystujący regulatory PID

Wyniki dla sterownika jednordzeniowego EC2200 bez rozdzielenia na rdzenie. Źródło: ASTOR
Wyniki dla sterownika dwurdzeniowego EC2201 bez rozdzielenia na rdzenie. Źródło: ASTOR
Wyniki dla sterownika dwurdzeniowego EC2201 z rozdzieleniem na rdzenie. Źródło: ASTOR
Wyniki dla sterownika dwurdzeniowego EC2201 z dwoma programami na osobnym rdzeniu. Źródło: ASTOR

Jak można zauważyć, tam gdzie programy są przydzielone do tego samego rdzenia, występują dysproporcje w czasie cyklu poszczególnych tasków, a w przypadku obydwu programów działających w odosobnieniu od Main Taska ta różnica jest największa, bo aż 16 mikrosekund. Oznacza to, że jeden program działa szybciej od drugiego, co przy większej skali projektu może negatywnie wpływać na efektywność. Kiedy programy były na dwóch osobnych rdzeniach, różnica ta była najmniejsza.

Wnioski

Na podstawie przeprowadzonych testów możemy odpowiedzieć sobie na pytanie zawarte w tytule artykułu i wywnioskować, że sterowniki z dwoma rdzeniami mają wyraźną przewagę. Dzięki możliwości przypisania różnych zadań do rożnych rdzeni możemy zwiększyć wydajność i szybkość operacji, co jest kluczowe w układach sterowania wymagających szybkości i wykonywania dużej ilości obliczeń. Możemy także rozdzielić zadania, aby zwiększyć ogólną szybkość sterownika lub podzielić na zadania mniej i bardziej priorytetowe. 

Newsletter Poradnika Automatyka

Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

Please wait...

Thank you for sign up!

Czy ten artykuł był dla Ciebie przydatny?

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

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

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