Obsługa wbudowanych wejść/wyjść (HSC, PWM, Pulse+Direction)
Kurs programowania sterowników Astraada A-2000, odc. 6

Kontakt w sprawie artykułu: Jakub Gałąska - 2026-11-11

Kurs programowania sterowników Astraada A-Series A-2000

I. Podstawowe funkcje
1. Sterowniki Astraada A-2000 – budowa i możliwości
2. Środowisko programistyczne Astraada A-2000 Studio
3. Standardowy projekt i wizualizacja
4. Połączenie komputera ze sterownikiem Astraada A-2000
5. Konfiguracja sterownika w Astraada A-2000 Studio Tool
6. Obsługa wbudowanych wejść/wyjść (HSC, PWM, Pulse+Direction)
7. Dodawanie i konfiguracja lokalnych modułów A-Series I/O
8. Dodawanie i konfiguracja kart rozszerzeń

II. Protokoły komunikacyjne
9. Komunikacja z wykorzystaniem protokołu EtherCAT Master
10. Komunikacja z wykorzystaniem protokołu Modbus TCP
11. Komunikacja z wykorzystaniem protokołu Modbus RTU
12. Komunikacja z wykorzystaniem protokołu EtherNet/IP
13. Udostępnianie danych ze sterownika do systemu SCADA (OPC UA)
III. Aplikacje Motion
14. Softmotion – synchronizacja serwonapędów za pomocą sterownika PLC
15. Obsługa enkodera inkrementalnego za pomocą wbudowanych szybkich wejść
16. Sterowanie napędem w trybie Pulse Direction za pomocą wbudowanych wejść/wyjść
17. Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC – obsługa G-Code

IV. Oddalone wyspy A-Series I/O
18. Konfiguracja interfejsu komunikacyjnego EtherCAT AS71ETC
19. Konfiguracja interfejsu komunikacyjnego Profinet AS71PNS
20. Konfiguracja interfejsu komunikacyjnego Modbus TCP/IP AS71TCP
21. Konfiguracja interfejsu komunikacyjnego EtherNet/IP AS71EIP
22. Konfiguracja wyspy Astraada A-Series IO i generowanie pliku .eds



Sterownik Astraada A-2000 posiada wbudowany moduł wejść i wyjść cyfrowych, obejmujący 8 wejść cyfrowych (DI) oraz 8 wyjść cyfrowych (DO) typu NPN.

Schemat podłączenia wejść i wyjść przedstawiono poniżej. Jego uproszczona wersja znajduje się również na bocznej ścianie sterownika.

Obsługa wbudowanych wejść i wyjść cyfrowych jako standardowych sygnałów tranzystorowych nie różni się znacząco od pracy z innymi modułami I/O, które możesz dodawać i konfigurować w środowisku CODESYS.

Aby przypisać zmienne wykorzystywane w programie do fizycznych wejść i wyjść sterownika, przejdź do urządzenia wbudowanych wejść i wyjść, czyli AS_HSIO, a następnie otwórz zakładkę I/O Mapping.

W odpowiednich wierszach przypisz zmienne symboliczne używane w programie do wybranych kanałów wejściowych i wyjściowych. Dzięki temu zmienne te będą powiązane z fizycznymi sygnałami sterownika i będzie można wykorzystywać je w logice aplikacji.

Co istotne, wbudowane wejścia i wyjścia oferują znacznie więcej możliwości niż standardowa obsługa sygnałów cyfrowych. Dzięki obsłudze funkcji szybkich wejść i wyjść możesz wykorzystać je również w bardziej wymagających aplikacjach, bez konieczności stosowania dodatkowych modułów rozszerzeń.

Funkcje możliwe do skonfigurowania w we wbudowanych wejściach sterownika A-2000:

  • HSC (High Speed Counter),
  • Interrupt Input,
  • PWM (Pulse Width Modulation),
  • PTO (Pulse Train Output).

Uwaga! Logika programu obsługująca szybkie liczniki oraz wyjścia impulsowe powinna być wykonywana w ramach zadania EtherCAT_Task. Wynika to z faktu, że obsługa wbudowanych IO jest domyślnie taktowana właśnie przez ten task (zadanie).

Zalecenie to dotyczy bloków funkcyjnych, które bezpośrednio obsługują sprzętowe wejścia i wyjścia (I/O), np. odczytują wartość szybkiego licznika lub sterują generatorem PWM. Nie dotyczy natomiast logiki programu, która jedynie przygotowuje lub zadaje parametry pracy tych bloków. Taką logikę możesz wykonywać w innym zadaniu, zgodnie z wymaganiami aplikacji.

Wejścia cyfrowe – HSC, czyli szybkie liczniki

Wbudowane wejścia cyfrowe mogą pracować w trybie HSC (High-Speed Counter), umożliwiającym sprzętowe zliczanie impulsów o wysokiej częstotliwości. Możliwa jest konfiguracja szybkich liczników jednokanałowych, a także obsługa enkoderów inkrementalnych w trybie kwadraturowym, wykorzystujących dwa sygnały: A i B. Przy wykorzystaniu 8 wejść cyfrowych możliwa jest obsługa maksymalnie 8 liczników jednokanałowych lub 4 enkoderów inkrementalnych.

Dzięki temu możesz wykorzystać sterownik m.in. do zliczania impulsów, pomiaru prędkości czy odczytu położenia na podstawie sygnałów z enkodera. Co ważne, funkcje szybkiego zliczania są dostępne bez konieczności dokupowania dodatkowych modułów, bibliotek czy licencji.

Konfiguracja wejść cyfrowych do pracy w trybie HSC

Aby aktywować wyjścia cyfrowe do pracy w trybie HSC, przejdź do urządzenia AS_HSIO w drzewku projektu. Następnie za pomocą pól wyboru (checkboxów) zaznacz taką liczbę liczników, jaka jest potrzebna w Twojej aplikacji.

Po ich zaznaczeniu pod obiektem AS_HSIO zostaną automatycznie dodane odpowiednie obiekty HiSpeedCounter wraz z obiektem Encoder Axis.

W oknie konfiguracji AS_HSIO możesz również sprawdzić, jak zmieniła się rozpiska funkcji poszczególnych wejść. Przykładowo po aktywowaniu licznika Counter0 wejścia X0 i X1 automatycznie zmienią swoje przeznaczenie z General Input na odpowiednio Counter0 APhase i Counter0 BPhase. Oznacza to, że wejścia te zostały przypisane do obsługi sygnałów fazowych licznika.

Uwaga! Liczniki są domyślnie dodawane w trybie dwukanałowym. Jeśli chcesz wykorzystać maksymalną liczbę ośmiu liczników, konieczna będzie zmiana trybu pracy poszczególnych liczników w dodanych obiektach HiSpeedCounter. Pokażemy to w dalszej części szkolenia.

Konfiguracja poszczególnych liczników

Aby zachować przejrzystość kursu, na tym etapie skupimy się na konfiguracji licznika jednokanałowego oraz odczytaniu jego wartości w logice programu. Pozostałe funkcje, takie jak Probe czy Compare, omówimy w innym materiale.

Kliknij dwukrotnie obiekt Counter 0 w drzewku projektu, a następnie przejdź do zakładki Counter Setting. W parametrze Counter Mode wybierz tryb Single Phase.

Możesz również zmienić wejście cyfrowe przypisane do obsługi licznika. W tym celu wybierz odpowiednie wejście w parametrze Signal Source.

Po wprowadzeniu tych ustawień licznik będzie pracował w trybie jednokanałowym, a wskazane wejście cyfrowe będzie źródłem zliczanych impulsów.

Obsługa szybkich liczników w programie

Specjalne funkcje wbudowanych wejść i wyjść cyfrowych (HSIO) możesz obsługiwać w logice programu za pomocą autorskiej biblioteki cmpHSIO_SM, do której odwołujemy się w programie przez przestrzeń nazw (namespace) AS_HSIO. Biblioteka ta jest domyślnie dodawana przy tworzeniu projektu standardowego.

Aby odczytać wartość szybkiego licznika, dodaj do programu blok funkcyjny ENC_Counter z tej biblioteki. Następnie określ nazwę osi enkodera, z którą ma współpracować blok. Nazwę tę znajdziesz w drzewku projektu po skonfigurowaniu licznika w urządzeniu AS_HSIO, domyślnie ma ona postać Encoder_X, przy czym X to numer oznaczający kolejności skonfigurowanego licznika.

Uzupełnij pozostałe wejścia i wyjścia bloku odpowiednio do potrzeb aplikacji. Przykładowo:

  • Enable – umożliwia aktywację obsługi licznika,
  • Position – udostępnia aktualnie zliczoną wartość pozycji,
  • Error – informuje o wystąpieniu błędu.

Dzięki temu możesz odczytywać wartość zliczoną przez szybki licznik bezpośrednio w logice programu i wykorzystywać ją do dalszych obliczeń lub sterowania.

Wejścia cyfrowe – obsługa przerwań

Kolejną możliwością jest konfiguracja wejść jako wejść przerwaniowych. W takim przypadku wystąpienie skonfigurowanego zbocza sygnału na przypisanym wejściu wywoła wykonanie zadania. Pozwala to tworzyć programy zdarzeniowe, w których określone fragmenty logiki są wykonywane w reakcji na konkretne zdarzenia zewnętrzne.

Konfiguracja wejść cyfrowych do pracy w trybie przerwań

Aby skonfigurować wejście cyfrowe jako wejście przerwaniowe, przejdź do urządzenia AS_HSIO. Za pomocą pól wyboru (checkboxów) zaznacz wejścia, które mają obsługiwać przerwania. Dla każdego z nich określ również, na jakie zbocze sygnału ma reagować: narastające, opadające czy oba.

Konfiguracja poszczególnych zadań (Tasków)

Następnie przejdź do konfiguracji zadań (Task Configuration) i dodaj nowe zadanie. W jego właściwościach ustaw warunek wykonywania (Type) na External, a następnie przypisz zadanie do wybranego wbudowanego wejścia cyfrowego (X0–X7).

Od tej pory wystąpienie skonfigurowanego zbocza na przypisanym wejściu będzie wywoływać wykonanie zadania (Task). Dzięki temu możesz tworzyć programy zdarzeniowe, w których określona logika jest uruchamiana bezpośrednio w reakcji na sygnał zewnętrzny. Wystarczy, że po dodaniu programu (np. o nazwie „ObslugaPrzerwania”) i napisaniu logiki, przypiszesz go do utworzonego zadania w konfiguracji.

Od tego momentu kod tego programu będzie wykonywany w odpowiedzi na zdarzenie wykryte na skonfigurowanym wejściu.

Wyjścia cyfrowe – sygnały PWM

Wbudowane wyjścia cyfrowe sterownika Astraada A-2000 oferują możliwość generowania sygnałów PWM (Pulse Width Modulation), czyli sygnałów prostokątnych o regulowanej szerokości impulsu.

Funkcja ta znajduje zastosowanie m.in. w układach regulacji temperatury, na przykład podczas sterowania mocą grzałek, lub do precyzyjnego sterowania zaworami hydraulicznymi i pneumatycznymi. Zmieniając wypełnienie sygnału PWM, możesz regulować ilość energii dostarczanej do elementu wykonawczego.

Sterownik umożliwia skonfigurowanie maksymalnie 4 wyjść PWM.

Konfiguracja wyjść cyfrowych do pracy w trybie PWM

Aby aktywować wyjścia cyfrowe do pracy w trybie PWM, przejdź do urządzenia AS_HSIO w drzewku projektu. Następnie, za pomocą pól wyboru (checkboxów), zaznacz taką liczbę wyjść PWM, jaka jest potrzebna w Twojej aplikacji.

W oknie konfiguracji AS_HSIO możesz również sprawdzić przypisanie funkcji PWM do fizycznych wyjść sterownika:

Wyjście PWMFizyczne wyjście
PWM4Y4
PWM5Y5
PWM6Y6
PWM7Y7

Oznacza to, że do generowania sygnałów PWM możesz wykorzystać wyjścia Y4–Y7.

Obsługa wyjścia PWM w programie

Specjalne funkcje wbudowanych wejść i wyjść cyfrowych (HSIO) możesz obsługiwać w logice programu za pomocą autorskiej biblioteki cmpHSIO_SM, do której odwołujemy się w programie przez przestrzeń nazw (namespace) AS_HSIO. Biblioteka ta jest domyślnie dodawana przy tworzeniu projektu standardowego.

Aby generować sygnał PWM, dodaj do programu blok funkcyjny HSIO_PWM z tej biblioteki. Następnie określ numer wyjścia skonfigurowanego wcześniej do pracy w trybie PWM (4, 5, 6 lub 7).

Uzupełnij również pozostałe parametry bloku, takie jak Enable, PulsePeriod i PulseWidth, oraz wykorzystaj dostępne wyjścia diagnostyczne.

Dokładny opis wejść i wyjść bloku funkcyjnego jest następujący:

PinTypZnaczenie
EnableINSygnał zezwolenia na pracę generatora. Stan wysoki uruchamia generowanie sygnału prostokątnego na wyjściu, a stan niski zatrzymuje jego generowanie.
OutPutPortINNumer wyjścia wybranego w konfiguracji HSIO (od 4 do 7).
PulsePeriodINCzas trwania jednego pełnego cyklu sygnału PWM, wyrażony w mikrosekundach (µs).
PulseWidthINCzas trwania stanu wysokiego impulsu, wyrażony w mikrosekundach (µs).
InVelocityOUTSygnał potwierdzający, że generator PWM ustabilizował pracę i emituje sygnał z zadanymi parametrami.
BusyOUTSygnał zajętości. Stan wysoki oznacza, że generator pracuje i emituje impulsy.
ErrorOUTSygnał błędu. Stan wysoki oznacza wystąpienie błędu.
ErrorIDOUTNumer kodu błędu. Wartość 0 oznacza brak błędu.

Warto zwrócić uwagę na zależność między dwoma podstawowymi parametrami sygnału PWM. PulsePeriod określa czas trwania całego cyklu, natomiast PulseWidth określa czas, przez jaki sygnał pozostaje w stanie wysokim. Na tej podstawie wyznaczane jest wypełnienie sygnału PWM.

Wyjścia cyfrowe – Sygnały PTO

Sterownik Astraada A-2000 umożliwia również wykorzystanie wbudowanych wyjść cyfrowych do generowania sygnałów sterujących napędami w trybie PTO (Pulse/Direction).

Konfiguracja wyjść cyfrowych do pracy w trybie PTO

Aby aktywować wyjścia cyfrowe do pracy w trybie PTO, przejdź do urządzenia AS_HSIO w drzewku projektu. Następnie, za pomocą pól wyboru (checkboxów), zaznacz taką liczbę osi impulsowych (Pulse Axis), jaka jest potrzebna w Twojej aplikacji.

Po ich zaznaczeniu pod obiektem AS_HSIO zostaną automatycznie dodane odpowiednie obiekty Pulse_Axis_Config wraz z obiektem Pulse_Axis.

W oknie konfiguracji AS_HSIO możesz również sprawdzić, jak zmieniło się przypisanie funkcji do poszczególnych wyjść. Przykładowo, po aktywowaniu osi Pulse axis0 wyjścia Y0 i Y1 automatycznie zmienią swoje przeznaczenie z General Output na odpowiednio Pulse axis0 Pulse oraz Pulse axis0 Direction.

Oznacza to, że wyjścia te zostały przypisane do generowania sygnałów sterujących w trybie PTO. Wyjście Pulse służy do generowania impulsów, natomiast wyjście Direction określa kierunek ruchu napędu.

Konfiguracja poszczególnych wyjść/osi

Aby skonfigurować wyjścia i dodatkowe sygnały obsługiwane przez oś, kliknij dwukrotnie obiekt PulseAxisConfig0 w drzewku projektu. Następnie przejdź do zakładki Pulse axis config.

W parametrze Output Mode wybierz tryb działania wyjść. Domyślnie ustawiony jest tryb Pulse + Direction, w którym sterowanie napędem odbywa się za pomocą sygnału impulsowego oraz sygnału określającego kierunek ruchu.

W tej samej zakładce możesz skonfigurować obsługę dodatkowych sygnałów, takich jak:

  • czujnik bazowania (Home),
  • krańcówka dodatniego kierunku ruchu (Positive),
  • krańcówka ujemnego kierunku ruchu (Negative),
  • wejścia pomiarowe Probe0 i Probe1.

Do obsługi tych funkcji możesz wykorzystać również wejścia pochodzące z innych modułów I/O, o ile zostały dodane do projektu. Przykładowo zewnętrzny moduł wejść cyfrowych może dostarczać sygnały z krańcówek lub czujnika bazowania.

Konfiguracja osi Pulse_Axis

Po skonfigurowaniu sygnałów przejdź do ustawień samej osi. W tym celu kliknij dwukrotnie obiekt Pulse_Axis_0 w drzewku projektu. W ustawieniach osi znajdziesz kilka zakładek, które pozwalają dostosować jej działanie do mechaniki i wymagań aplikacji.

Zakładka Home Setting

W zakładce Home Setting możesz wybrać jeden z 35 dostępnych trybów bazowania napędu.

Jeżeli podczas wcześniejszej konfiguracji przypisałeś wejście do obsługi czujnika bazowania, do uruchomienia procedury bazowania wystarczy wywołać blok funkcyjny MC_Home_P. Sam przebieg procedury będzie następnie obsługiwany automatycznie, zgodnie z wybranym trybem bazowania i konfiguracją osi.

Zakładka Scaling Setting

W zakładce Scaling Setting możesz skonfigurować parametry odwzorowania ruchu osi na rzeczywisty ruch mechanizmu. Określisz tutaj m.in. liczbę impulsów przypadających na jeden obrót silnika, a także przełożenie przekładni i pozostałe parametry związane z mechaniką układu.

Dzięki temu wartości zadawane i odczytywane w programie mogą odpowiadać rzeczywistym jednostkom ruchu, a nie tylko liczbie wygenerowanych impulsów.

Zakładka General

W zakładce General ustawisz ogólne parametry osi, takie jak ograniczenia dynamiki układu, rodzaj osi oraz charakterystykę rampy ruchu.

Możesz określić, czy oś ma pracować jako:

  • Finite – oś liniowa, realizująca ruch w określonym zakresie,
  • Modulo – oś obrotowa, w której po osiągnięciu końca zakresu wartości następuje jej zawinięcie zgodnie z ustawionym zakresem.

W tej zakładce możesz również skonfigurować rodzaj rampy wykorzystywanej podczas rozpędzania i zatrzymywania osi.

Obsługa napędu sterowanego w trybie Pulse + Direction w programie

Sterowanie osią, np. serwonapędu pracującego w trybie Pulse + Direction, możesz realizować za pomocą standardowej biblioteki CODESYS SoftMotion.

Niektóre funkcje, takie jak bazowanie, są jednak obsługiwane za pomocą bloków funkcyjnych z autorskiej biblioteki cmpHSIO_SM, dostępnej w przestrzeni nazw AS_HSIO. Biblioteka ta jest domyślnie dodawana podczas tworzenia standardowego projektu.

Szczegółowe zagadnienia związane ze sterowaniem osiami w trybie Pulse + Direction, w tym procedury bazowania i wykorzystanie biblioteki SoftMotion, omówimy szerzej w części III kursu. Sterowanie ruchem (Motion Control) jest obszernym zagadnieniem i przedstawienie wszystkich jego funkcji w tym miejscu znacznie zwiększyłoby objętość materiału.

Poniżej przedstawiono natomiast prosty przykład sterowania osią w trybie Pulse + Direction z wykorzystaniem standardowych bloków funkcyjnych biblioteki SoftMotion:

  • MC_Power – służy do załączenia osi i udostępnienia jej do sterowania,
  • MC_MoveVelocity – uruchamia ruch osi ze stałą zadaną prędkością,
  • MC_Stop – zatrzymuje ruch osi,
  • MC_Reset – służy do resetowania błędów osi.

Wyjścia cyfrowe – inne zastosowania

Wyjścia cyfrowe sterownika pracują w standardzie NPN, który nie jest tak powszechnie stosowany w Polsce jak wyjścia przekaźnikowe czy PNP. Może to stanowić pewne ograniczenie dla użytkowników, szczególnie przy integracji z istniejącymi instalacjami automatyki.

Na szczęście w ofercie ASTOR dostępny jest również moduł AS71DR16 – niedroga, gotowa płytka wyposażona w 16 przekaźników, z wyprowadzonymi stykami na złączach sprężynowych oraz mocowaniem na szynę DIN:

Przekaźniki można bezpośrednio sterować wyjściami cyfrowymi sterownika. Dzięki temu, niewielkim kosztem, można przekształcić wyjścia NPN w standardowe wyjścia przekaźnikowe, uzyskując większą uniwersalność i elastyczność przy podłączaniu różnych urządzeń wykonawczych.

Poniżej przedstawiamy schemat połączeniowy modułu AS71DR16:

Podsumowanie

W tym odcinku poznaliśmy możliwości wbudowanych wejść i wyjść cyfrowych sterownika Astraada A-2000. Oprócz standardowej obsługi sygnałów cyfrowych oferują one szereg dodatkowych funkcji, które pozwalają realizować bardziej zaawansowane zadania bez konieczności stosowania dodatkowych modułów.

Omówiliśmy wykorzystanie wejść cyfrowych jako szybkich liczników HSC, możliwość obsługi enkoderów inkrementalnych oraz konfigurację wejść przerwaniowych, które umożliwiają uruchamianie fragmentów programu w reakcji na zdarzenia zewnętrzne.

Poznaliśmy również możliwości wyjść cyfrowych, które mogą generować sygnały PWM oraz impulsy sterujące napędami w trybie PTO (Pulse/Direction). Przeszliśmy przez konfigurację tych funkcji w urządzeniu AS_HSIO oraz poznaliśmy sposoby ich obsługi w logice programu z wykorzystaniem biblioteki cmpHSIO_SM i bloków funkcyjnych CODESYS SoftMotion. Warto zapamiętać, że odpowiednie wykorzystanie funkcji HSIO pozwala znacząco rozszerzyć możliwości sterownika.

W następnym odcinku pokażemy, jak dodawać i konfigurować lokalne moduły rozszerzeń A-Series I/O.