Komunikacja sterownika Siemens S7-1200 z falownikiem Delta VFD015E21A przy użyciu protokołu Modbus RTU
Na potrzeby poniższego artykułu został wykorzystany sterownik PLC Siemens S7-1200 CPU 1212C, falownik Delta VFD015E21A, płytkę komunikacyjną Simatic S7-1200 CB1241 oraz oprogramowanie TIA Portal. Poniżej opis komunikacji krok po kroku.
Łączymy komputer ze sterownikiem PLC za pomocą przewodu Ethernetowego. Następnie łączymy sterownik z falownikiem Delta. W tym celu używamy skrętki, na końcu której z jednej strony zarabiamy końcówkę. Do komunikacji wystarczą 2 wewnętrzne przewody. Podłączamy je do 2 środkowych miejsc we wtyczce RJ45 (4 i 5). Pozostałych żył nie używamy. Z drugiej strony podłączamy do karty CB1241 6ES7241-1CH30-1XB0 na sterowniku do wejścia T/RA oraz T/RB. Następnie zwieramy ze sobą wejścia T/RA z TA oraz T/RB z TB. Można do tego użyć krótkich przewodów. Schemat połączenia:
Następnie uruchamiamy nasz falownik VFD-E i ustawiamy w nim odpowiednie parametry. W tym celu wciskamy przycisk „Mode” aż pokaże się napis „U0.00”. Naciskamy „Enter”. Następnie wybieramy grupę parametrów która nas interesuje. W tym przypadku będą to parametry z grupy 9 oraz 2. Pomiędzy grupami parametrów przechodzimy za pomocą strzałek na klawiaturze. Gdy pojawi się „02” naciskamy Enter. Wybieramy „0.0”, wciskamy Enter i wybieramy numer 3. Zatwierdzamy klawiszem Enter. Tak samo zmieniamy parametr 2.01 również na numer 3. Przechodzimy do parametrów z grupy 9. Ustawiamy kolejno parametry dla komunikacji która nas interesuje. Np. ustawienie parametru 9.00 na 1, 9.01 na 1, 9.04 na 4 będzie oznaczało komunikację z prędkością 9600bps, z identyfikatorem falownika 1, protokołem komunikacyjnym Modbus RTU 8E1. Pełna lista parametrów komunikacyjnych znajduje się poniżej:
Kolejnym krokiem jest uruchomienie programu TIA Portal. Tworzymy nowy projekt i nawiązujemy komunikację z naszym sterownikiem. W oknie konfiguracji sprzętu „Project tree” należy kliknąć dwukrotnie na zakładkę Add new device, pojawi się okno, należy wpisać nazwę nowego urządzenia np. „PLC_1”. Następnie wybieramy Simatic S7-1200 i nasz model procesora(jest nadrukowany na obudowie sterownika), w naszym przypadku jest to CPU 1212C . Dodajemy tak że naszą płytkę komunikacyjną, wybieramy „communication boards” ->”point to point” ->model płytki. Tak wygląda efekt końcowy:
Klikamy na naszą płytkę komunikacyjną 6ES7241-1CH30-1XB0 i wybieramy „Parameters”. Rozwijamy okno i wpisujemy parametry naszej sieci, wcześniej ustawiane na falowniku VFD015E21A, np.:
Zmieniamy także parametry sterownika SImatic S7-1200:
W kolejnym kroku należy napisać program który będzie służył do komunikacji sterownika PLC z falownikiem.
W oknie „project tree” wybieramy „program blocks” i wciskamy „add new block” . Następnie wybieramy Data block (DB), wprowadzić nazwę np. Data_block_1 i skreślamy opcję automatic. W ten sposób tworzymy bazę danych do której będziemy zapisywać dane z falownika VFD-E Delta. Można także wykorzystać ją do zmiany parametrów falownika. Przykład utworzonej bazy:
W moim przypadku stworzyłem tablicę danych zawierającą 4 zmienne typu Uint które będą służyły do odczytania wartości oraz kolejną zmienną która będzie służyła do zadawania częstotliwości falownikowi. Po utworzeniu bazy danych klikamy na nią prawym przyciskiem myszy i wchodzimy w „properties”. Następnie w zakładce Attributes odznaczamy opcję „optimized block acces”:
Tworzymy nowy program lub wchodzimy w blok „Main”. Wybieramy język programowania który chcemy używać. W tym przypadku będzie to LAD. W pierwszej instrukcji programu musimy zainicjować komunikację przez port. W tym celu klikamy z prawej strony na zakładkę „Instructions”, wybieramy „Communication”-> „communication processor” → „Modbus”. Następnie przeciągamy instrukcję MB_COMM_LOAD do naszego programu, wybieramy opcję „Automatic”. Następnie musimy podpiąć wejścia do bloku. Do wejścia REQ(z ang. „request” czyli żądanie) podpinamy styk normalnie otwarty i wybieramy adres M1.0, dzięki temu inicjaja portu odbędzie się tylko raz, przy pierwszym uruchomieniu programu. Następnie klikamy na wejście port na małą ikonkę po prawej stronie i wybieramy z listy port którego używamy. Do wejścia „BAUD” wpisujemy prędkość transmisji jaką ustawiliśmy wcześniej na falowniku. Wejście „PARITY” odpowiada za kontrolę parzystości, można je ustawić na wartość 0, 1 lub 2. Zero oznacza brak sprawdzania parzystości, 1 wtedy jeśli liczba w porcji danych jest nieparzysta, wtedy bit parzystości przyjmuje wartość "1", w przypadku 2 jeżeli liczba w porcji danych jest parzysta, wtedy bit parzystości przyjmuje wartość ''1''. Do wejścia MB_DB podłączymy instancję bloku Master gdy zostanie ona stworzona. Poszczególne wyjścia bloku mówią nam czy inicjacja portu się udała czy też nie, oraz jaki był ewentualny kod błędu. Można podłączyć je do zmiennych pomocniczych lub zostawić je podłączone „same do siebie”. Skonfigurowany blok:
W kolejnym kroku z poprzednio wybranej grupy instrukcji przeciągamy tym razem blok „MB_MASTER”. Następnie konfigurujemy jego wejścia/wyjścia. Do wejścia „REQ” podpinamy styki od których będzie zależało czy blok będzie nadawał/odbierał dane. W wejściu „MB_ADRR” wpisujemy adres do komunikacji falownika, który wcześniej ustawialiśmy. Do wejścia „MODE” wpisujemy 0,1 lub 2. Zero oznacza odczyt danych, 1 zapis, a 2 diagnostykę. „DATA_ADRR” oznacza adres początkowy, od którego zaczniemy odczytywanie lub zapisywanie danych. „DATA_LEN” oznacza długość danych które chcemy odczytać. Do wejścia „DATA_PTR” podpinamy zmienne z naszej bazy danych do których chcemy zapisywać wartości lub je odczytywać. Wyjścia bloku mają takie same znaczenie jak w przypadku poprzedniego bloku. Skonfigurowany blok:
W celu zmiany parametrów falownika przez protokół Modbus, po raz kolejny używamy bloku „MB_MASTER”. Zmieniamy jedynie konfigurację wejść/wyjść. Ustawiamy „MODE” na „1” bo tym razem zapisujemy wartości do falownika. Zmieniamy także adres danych które chcemy modyfikować np. w ten sposób:
W ten sposób możemy zadawać częstotliwość za pomocą naszego programu, zmieniając wartość zmiennej „modbus zadana częstotliwość”. Ważne jest aby 2 bloki MB_MASTER nie były wykonywane w tym samym czasie ponieważ nie da się jednocześnie zapisywać i odczytywać wartości. Dlatego dodany został dodatkowy styk do którego przypisano zmienną „Tag_2”. Zmienna ta jest przypisana do styku NO dla bloku zapisującego wartość częstotliwości, zaś do styku NC dla bloku odczytującego wartości.
Aby sprawdzić czy nasz program działa poprawnie należy przesłać program do sterownika. W tym celu klikamy ikonkę widoczną na górnym pasku:
Wgrywamy do sterownika zarówno konfigurację sprzętową jak i program. Klikamy na ikonkę „go online” i wchodzimy w okno naszej bazy danych. Klikamy na małą ikonę „monitor all”:
Jak widać, zmienna dane[1] pokazuje aktualną wartość częstotliwości którą ustawiliśmy na naszej zmiennej „zadana czestotliwosc”.
Adresy które wpisujemy w bloku „MB_MASTER” na wejściu „DATA_ADDR” można wziąć z instrukcji falownika. Musimy jednak zastosować przeliczenie z kodu szesnastkowego na dziesiętny. Dodatkowo dodajemy do tej wartości 40000, ponieważ od 40000 zaczynają się rejestry wyjściowe w protokole Modbus:
Przykładowe rejestry falownika DELTA VFD015E21A:
Jeżeli chcemy np. sprawdzić częstotliwość wyjściową falownika to przeliczamy 2103 w kodzie szesnastkowym na kod dziesiętny i dodajemy 40000. Wynik wynosi 48451. Jeżeli chcemy posterować silnikiem i np. przestawić falownik w stan „STOP” wybieramy adres 48193 (dodajemy jeszcze 1 do adresu) i zmieniamy odpowiednie bity. Musimy w takiej sytuacji przeliczyć liczbę binarną na liczbę dziesiętną. Jeżeli np. chcemy uruchomić falownik w trybie „Jog + Run” wpisujemy liczbę 3 (2^1+2^0). Jeżeli chcemy uruchomić falownik w trybie „Run” i dodatkowo zmienić kierunek obrotów to wpisujemy liczbę 50(2^1+2^4+2^5).
Przykładowe przeliczenia adresów:
W taki sposób można w programie sterować pracą silnika:
Sterujemy poprzez zmianę wartości na wejściu DATA_PTR. Możemy również odczytywać wartości i po przeliczeniu ich z powrotem na postać binarną sprawdzić w jakim stanie jest aktualnie falownik. W tym celu można użyć np. następującego programu: