Strona główna ASTOR
Automatyka w praktyce

Jak konwertować typy zmiennych i przemieszczać zmienne w programie?
Kurs programowania sterowników Horner APG  w środowisku Cscape 10, odc. 8

Kontakt w sprawie artykułu: Mateusz Pytel - 2025-09-15

W tym odcinku nauczymy się konwertować typy zmiennych, a także jak przemieszczać dane w programie sterującym.

Kurs programowania sterowników Horner APG w środowisku Cscape 10

Wprowadzenie i podstawy

1. Jak skonfigurować, podłączyć oraz uruchomić sterownik PLC?
2. Jak tworzyć i edytować projekty w oprogramowaniu Cscape 10?

Programowanie w języku drabinkowym

3. Jak tworzyć oraz konfigurować bazę zmiennych w środowisku Cscape?
4. Jak korzystać ze styków, cewek i bloków operacji arytmetycznych w programie sterującym?
5. Jak odmierzać czas w programie sterującym i jak konfigurować timery?
6. Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
7. Jak zliczać impulsy i konfigurować liczniki?
8. Jak konwertować typy zmiennych i przemieszczać zmienne w programie?
9. Jak sterować wykonywaniem programu logicznego? Instrukcja skoku warunkowego?

Programowanie zintegrowanego panelu HMI

10. Jak budować ekrany operatorskie z obiektami do wizualizacji i zadawania wartości zmiennych?
11. Jak umożliwić nawigację między ekranami operatorskimi oraz jak korzystać z gotowych obiektów graficznych w środowisku Cscape?
12. Jak wizualizować zmienne analogowe oraz jak modyfikować ich wartości przy pomocy obiektów graficznych?
13. Jak korzystać z obiektu menu?
14. Konfiguracja i obsługa alarmów w sterownikach PLC.
15. Trend Graph.

Krok 1: Jak dodać i skonfigurować bloki konwersji typów danych w środowisku Cscape?

W tworzonej aplikacji zawartość zbiorników reprezentowana jest przez rejestry typu REAL. Do tworzenia wizualizacji stanów zbiorników na ekranach operatorskich niezbędne będą wartości typu INT.

Wykorzystamy teraz bloki konwersji danych, umieszczając je w każdym podprogramie służącym do napełniania i opróżniania odpowiedniego zbiornika.

Bloki służące do konwersji danych dostępne są w oknie Project Toolbox, w zakładce Conversion Operations.

W pierwszej kolejności w oknie Program Variables dodaj nowe zmienne typu INT:

Adres: %R00020, Nazwa: Zbiornik_1_INT

Adres: %R00021, Nazwa: Zbiornik_2_INT

Adres: %R00022, Nazwa: Zbiornik_3_INT

Następnie przejdź do podprogramu Zbiornik_1 i w trzecim szczeblu drabinki, po styku normalnie otwartym ALWAYS_ON, wstaw blok konwersji REAL na INT. Nie musisz obawiać się błędnego wyniku, ponieważ wartości rejestru nie przekraczają zakresu obsługiwanego przez INT.

Klikając dwukrotnie na dodany blok przejdziesz do jego konfiguracji. Jako Source wybierz zmienną Zbiornik_1 o adresie %R00001. W polu Destination wybierz stworzoną przed momentem zmienną Zbiornik_1_INT o adresie %R00020.

Uzupełnianie logiki kolejnych zbiorników będzie analogiczne.

Przechodząc do podprogramu Zbiornik_2 i Zbiornik_3 w trzecim szczeblu drabinki za stykiem ALWAYS_ON dodaj blok konwersji typu REAL na INT i skonfiguruj, jak poniżej.

Dla Zbiornik_2:

Dla Zbiornik_3:

Krok 2: Wgraj program do sterownika i przetestuj

Jesteśmy już w ósmym odcinku, zatem wiesz już na pewno, jak w kilku krokach przejść do testowania programu:

  • wgraj program do sterownika,
  • przełącz sterownik w tryb RUN,
  • włącz opcję Debug,
  • włącz opcję Data Watch.

Kolejno w oknie Data Watch dodaj zmienne:

Sterując zaworami napełniania i opróżniania poszczególnych zbiorników, możesz obserwować zmiany wartości informujących o ich zawartości. Możesz wtedy zauważyć działanie bloków konwersji typów.

Teraz dowiemy się, jak przemieszczać dane pomiędzy rejestrami.

Krok 3: Jak dodać i skonfigurować bloki do przemieszczania danych w programie?

Teraz dopiszesz kolejne linie kodu w twojej aplikacji. Rozbudujesz program o logikę pozwalającą zadać w pierwszym cyklu pracy kontrolera czasy mieszania i grzania oraz ustawianie maksymalnych poziomów w zbiornikach.

W tym celu przejdź do programu głównego main i poniżej istniejącego szczebla wstaw styk normalnie otwarty i podłącz do niego zmienną S1. Jest to zmienna, która ma stan wysoki i przepuszcza sygnał tylko w pierwszym cyklu kontrolera. To zagwarantuje, że przemieszczanie danych do zmiennych będzie realizowane jednorazowo po uruchomieniu sterownika.

Kolejnym krokiem jest wstawienie za stykiem S1 dwóch bloków Move Single, które znajdziesz w zakładce Move Operations.

Pierwszy blok będzie ustawiał czas mieszania. Przechodząc do konfiguracji jako Source zdefiniuj stałą wartość 50, natomiast w polu Destination wybierz zmienną Czas_Mieszanie. Typ danych ustaw na WORD. Blok ten spowoduje ustawienie czasu mieszania na 5 sekund.

Drugi blok posłuży do przypisania czasu grzania, w sposób analogiczny jak powyżej. Jako Source zdefiniuj stałą wartość 70, natomiast w polu Destination wybierz zmienną Czas_Grzanie. Typ danych również skonfiguruj jako WORD. Konsekwentnie, czas grzania będzie równy 7 sekund.

Do ustawienia maksymalnych pojemności zbiorników wykorzystasz blok Move Constant DataMOV CST. Przechodząc do jego konfiguracji określ typ danych na REAL, a w oknie do wprowadzenia wartości wpisz kolejno pod sobą: 50.5, 40.8, 75.2. Jako Destination Address wybierz zmienną Zbiornik_1.

Taka konfiguracja spowoduje, że do kolejnych zmiennych: %R1 (Zbiornik_1), %R3 (Zbiornik_2), %R5 (Zbiornik_3) zostaną przypisane odpowiednio wprowadzone wartości.

Krok 4: Wgraj program do sterownika i przetestuj jego działanie

Tak jak wcześniej, wgraj program do sterownika, wprowadź sterownik w tryb RUN, włącz opcję Debug oraz włącz podgląd zmiennych w oknie Data Watch.

W oknie Data Watch dodaj do podglądu następujące zmienne i zobacz, jakie wartości zostały im przypisane:

Powinny być one zgodne z wartościami wprowadzonymi w programie.

Następny odcinek: Jak sterować wykonywaniem programu logicznego? Instrukcja skoku warunkowego?

Autor artykułu:


Jacek Dynak

Praktykant ASTOR

Student IV roku kierunku „automatyka i robotyka” na Politechnice Krakowskiej

Newsletter Poradnika Automatyka

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

Please wait...

Dziękujemy za zapis do newslettera!

Czy ten artykuł był dla Ciebie przydatny?

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

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

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