Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/12/20201022_172404.jpg

#HOWTO: Sterowanie silnikiem krokowym z użyciem sterownika Kinco i panelu Array SH-300

autor: Kaludzio.

W poniższym artykule pokażę krok po kroku jak w środowisku Kinco Builder stworzyć program do obsługi silnika krokowego oraz jak stworzyć wizualizację na panel operatorski Array SH-300, z którego będzie się odbywało uruchamianie silnika krokowego. Wykorzystany sterownik PLC to Kinco K205-16DT posiadający wyjścia PTO oraz wspierający technologię Motion Control. Komunikacja między PLC a panelem HMI odbywała się będzie po protokole Modbus RTU. Użyto silnika krokowego Leadshine iST-2320.

Stworzenie projektu w Kinco Builder i konfiguracja Hardware

Wchodzimy w zakładkę File>New Project wybieramy folder docelowy zapisu naszego projektu i wpisujemy nazwę naszego projektu.  W celu zapisania wybieramy opcję Zapisz. Następnie konfigurujemy ustawienia sprzętowe. W drzewku projektu umieszczonym po lewej stronie ekranu wybieramy zakładkę CONFIGURATION > Resource > Hardware. Następnie klikamy PPM na przypisany automatycznie do projektu sterownik i klikamy Remove, aby usunąć go z projektu. Następnie z zakładki HW Catalog umieszczonej na dole ekranu z lewej strony, wybieramy wykorzystywany przez nas sterownik. W moim przypadku jest to sterownik K205-16DT.

Rys.1 Wybór sterownika w programie Kinco Builder


Teraz w zakładce Comm konfigurujemy ustawienia Portu 1, który będzie wykorzystywany do komunikacji z panelem Array SH-300. Nadajemy sterownikowi PLC adres w sieci Modbus – w polu Address wpisujemy cyfrę 2. Resztę parametrów jak m.in. przepustowość można pozostawić bez zmian. W zakładce Reten jest możliwość wybrania opcji Permanent backup VB3648-4095, jeśli chcielibyśmy, aby te adresy pamięci z obszaru pamięci V, były zapisywane i pamiętane po zaniku zasilania sterownika PLC.

Rys.2 Ustawienia komunikacji protokołu Modbus w Kinco Builder

Pisanie programu na sterownik PLC

Na panelu operatorskim zostaną umieszczone 2 przyciski: Start i Stop odpowiednio uruchamiające i zatrzymujące silnik krokowy. Będzie również pole do wpisania wartości kąta, o jaki ma się obrócić silnik. Działanie programu będzie następujące: po wpisaniu wartości kąta, o jaki ma się obrócić wał silnika i naciśnięciu Start, wał obróci się o zadany kąt. Użytkownik będzie mógł zatrzymać silnik podczas pracy przez naciśnięcie przycisku Stop. Zaczynamy od zdefiniowania zmiennych globalnych, które będą się odnosić do elementów na panelu HMI. Zmienne globalne definiuje się klikając w zakładkę Global Variable w drzewie projektu.

Rys.3 Definicja zmiennych globalnych w programie Kinco Builder

Teraz przystępujemy do pisania programu sterującego. Stworzymy dwa bloki funkcyjne- SBR_0 i SBR_1. SBR_0 jest już domyślnie stworzony przy założeniu projektu. Tworzymy blok funkcyjny SBR_1.  W tym celu w zakładce Workspace klikamy PPM na PROGRAM i klikamy New Subroutine. Program domyślnie nada temu blokowi funkcyjnemu nazwę SBR_1. SBR_0 będzie miał w sobie program odpowiedzialny za to, aby chwilowe wciśnięcie przycisku Start wysterowało bit w pamięci, który będzie uruchamiał silnik krokowy. W tym celu w bloku SBR_0 tworzymy następujący kod programu, pokazany na Rys.4. Jest to tylko moja propozycja, możliwości jest wiele.

Rys.4 Kod programu bloku funkcyjnego SBR_0

W definicji zmiennych bloku funkcyjnego jako zmienne wejściowe stworzyłem zmienne ix_start i ix_stop. Zmienną wyjściową jest zmienna qx_runsk. Prefiks „i” oznacza, że jest to zmienna wejściowa, prefiks „q”, że jest to zmienna wyjściowa z kolei prefiks „x”, oznacza, że jest to zmienna typu bool. Gdy zostanie wciśnięty przycisk Start, zmienna qx_runsk przyjmuje wartość 1. Gdy zostanie wciśnięty przycisk Stop zmienna qx_runsk przyjmuje wartość 0. Wszelkie instrukcje potrzebne przy pisaniu programu są w zakładce Instructions między zakładkami Workspace a HW Catalog.

Blok SBR_1 będzie miał w sobie program odpowiedzialny za wyliczenie liczby impulsów potrzebnych, aby wał silnika obrócił się o zadany kąt. Aby wyliczyć liczbę impulsów, trzeba skorzystać z następującego wzoru: liczba_imp=kąt*rozdzielczość_silnika/360 . W przypadku silnika Leadshine rozdzielczość wybiera się za pomocą umieszczonych na nim dip switchów wg dokumentacji producenta. Ja wybrałem rozdzielczość 3200. W bloku SBR_1 stworzyłem kod programu pokazany na rys.5.

Rys.5 Kod programu bloku funkcyjnego SBR_1

Teraz należy wywołać te bloki funkcyjne w programie głównym MAIN. W tym celu trzeba dodać je do biblioteki. Aby dodać blok funkcyjny do biblioteki, należy w zakładce Workspace kliknąć na dany blok funkcyjny PPM i wybrać Add to user library. Pojawi się nowe okno, klikamy Create a New function, nadajemy nazwę i klikamy Ok. Teraz stworzone bloki funkcyjne są dostępne w zakładce Instructions>SBR. Aby wywołać blok funkcyjny w programie głównym, klikamy zakładkę Workspace i w drzewie projektu wypieramy LPM MAIN.  Zaznaczamy network 0 i z zakładki Instructions>SBR klikamy 2xLPM na blok SBR_0. Blok zostanie wywołany w danym networku. Tak samo postępując wywołujemy blok SBR_1 w networku 1. Przypisujemy następująco adresy i zmienne na wejścia i wyjścia bloków funkcyjnych.

Rys.6 Wywołanie bloków funkcyjnych w programie głównym MAIN

Teraz w network 2 należy wywołać funkcje PREL, która jest instrukcją Motion Control i jest odpowiedzialna za ruch relatywny. Jej dokładny opis można przeczytać, wpisując jej nazwę w Help Kinco Builder. Opis tej funkcji pokazano na rys.7 i rys.8.

Rys.7 Opis wejść i wyjść funkcji PREL

Rys.8 Opis wejść i wyjść oraz sposobu działania funkcji PREL

Funkcję PREL należy wywołać w network 2 z zakładki Instructions>Position Control>PREL i zdefiniować jej wejścia i wyjścia. Należy pamiętać o zachowaniu odpowiednich typów danych. W zakładce Workspace>Initial Data przypisuję do danych obszarów pamięci V następujące wartości jak na rys.9.

Rys.9 Przypisanie wartości do danych obszarów pamięci V w zakładce Initial Data

Konfiguracja wejść i wyjść bloku PREL:

  • Wejście Axis-0, ponieważ wyjście Q0.0 będzie generować impulsy (sygnał PTO).
  • Wejście EXEC-M0.2, wejście wyzwala ruch obrotowy silnika krokowego
  • Wejście MINF-VW16- początkowa częstotliwość impulsowania będzie wynosić 150Hz
  • Wejście MAXF-VD8- końcowa częstotliwość impulsowania będzie wynosić 360Hz
  • Wejście TIME-VW18- czas w ms przejścia od częstotliwości minimalnej do maksymalnej
  • Wejście DIST-VD12- obliczona liczba impulsów
  • Wyjście DONE-M0.3- przyjmuje wartość 1 po osiągnięciu zadanej pozycji

Rys.10 Konfiguracja wejść i wyjść bloku PREL

Z zakładki Instructions>Position Control w networku 3, należy wywołać blok PSTOP. Będzie on odpowiedzialny za zatrzymanie silnika krokowego, po naciśnięciu przycisku Stop na HMI.

Rys.11 Wywołanie bloku odpowiedzialnego za zatrzymanie silnika krokowego

Teraz przechodzę do bloku SBR_0 i dodaję kod programu, aby reset zmiennej wyjściowej bloku qx_run następował również po osiągnięciu pozycji zadanej (gdy wyjście DONE bloku PREL osiągnie logiczną wartość 1).

Rys.12 Zmieniony kod programu bloku funkcyjnego SBR_0

Projekt na panel operatorski Array SH-300

Otwieramy darmowy program Sh300. Wybieramy zakładkę File>New Project, w polu PLC wybieramy opcję Modbus RTU i wpisujemy parametry komunikacji takie same jak w programie Kinco Builder.

Rys.13 Ustawienie parametrów komunikacji w programie Sh300


Teraz na ekranie 1 umieszczamy następujące elementy z zakładki Object: dwa obiekty Touch button, trzy obiekty Static text i jeden Numeric. Po naciśnięciu na dany obiekt można zmieniać jego parametry. Ekran 1 wizualnie powinien wyglądać jak na rys.14.

Rys.14 Widok stworzonego ekranu 1 w programie Sh300

Klikając na umieszczone obiekty Touch button w polu Action należy wybrać Set Coil. W polach: PLC Address wpisujemy 2 (taki numer ustawiliśmy dla PORTU w Kinco Builder), Type– wybieramy 0x, wybieramy również Instant on. Dla przycisku Start w polu Address wpisujemy 320 (bit M0.0 odpowiada liczbie 320 w rejestrze Modbusa), a dla przycisku Stop w polu Address wpisujemy 321.

Rys.15 Konfiguracja obiektu typu Touch button

Rejestry Modbusa dla naszego sterownika PLC, można zobaczyć wpisując w Help Kinco Builder hasło: Modbus Register.

Rys.16 Lista rejestrów Modbus dla sterownika Kinco K205

Klikając na umieszczony obiekt typu Numeric w zakładce Data setting należy wpisać w polu PLC Address– cyfrę 2, Type– 4x, Address-100 (adres pamięci VD0 odpowiada liczbie 100 w rejestrze Modbusa), Registers-1. Należy zaznaczyć opcję Set.

Rys.17 Konfiguracja obiektu typu Numeric

Wgranie projektów do sterownika i panelu operatorskiego

Aby wgrać program do sterownika, najpierw należy go skompilować, aby zobaczyć, czy nie ma błędów. W tym celu klikamy zakładkę Project>Compile All. Jeśli nie ma żadnych błędów, łączymy sterownik PLC z komputerem za pośrednictwem przewodu  USB A – micro USB. Musi być to przewód do transferu danych, inaczej będą się wyświetlać komunikaty, że port nie może zostać wykryty. W zakładce Tools>Communications w polu Port należy wybrać numer portu komputera, do którego został podłączony przewód. Aby zobaczyć, do którego portu komputera został wpięty przewód, należy w systemie Windows otworzyć Menedżera urządzeń i wejść w zakładkę Port. Aby wgrać program do sterownika, w Kinco Builder wybieramy zakładkę PLC>Download. Aby wgrać wizualizację na panel operatorski, należy połączyć komputer z panelem za pomocą przewodu USB A-RS-232. W programie Sh300 w zakładce Connect>COM Setting należy wybrać numer portu komputera, do którego został podłączony przewód. Wgrywanie wizualizacji odbywa się poprzez zakładkę Connect>Download.

Podsumowanie

Projekt został wykonany, pod poniższym linkiem jest film, na którym jest pokazane testowanie napisanego programu i wizualizacji na makiecie zawierającej sterownik PLC Kinco K205-16DT, panel operatorski Array SH-300, silnik krokowy Leadshine iST-2320.

Jak widać na załączonym filmie, silnik krokowy obraca się o 360 stopni, po wpisaniu wartości kąta obrotu na panelu HMI i po naciśnięciu przycisku START.

Ocena artykułu zgłoszonego do Konkursu iAutomatyka 4.0 pisz artykuły, zdobywaj punkty, wymieniaj je na nagrody.

Kryterium 1 2 3 4 5 6 7 8 9 10
Punkty (0-2) 2 1 2 2 2 1 2 0 2 2
Suma zdobytych punktów: 16


Utworzono: / Kategoria: ,
  • Autor: Kaludzio
  • Młody inżynier automatyki interesujący się programowaniem sterowników PLC i robotów przemysłowych.
  • Profil Autora

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY