Zapoznaj się z projektem pokazującym sposób, w jaki sterownik PLC UNITRONICS oraz baza danych SQL wymieniają informacje.
Wykorzystywane zasoby
Model sterownika PLC użyty podczas realizacji projektu to US5-B10-TA30. Wybrano go dlatego, że obsługuje on połączenia z bazami danych SQL. Jego programowanie następuje w darmowym środowisku UniLogic.
Wykorzystywane oprogramowanie dostarczające bazy danych MS SQL Express 2014. Pracuje ono na komputerze lokalnym, do którego podłączono sterownik za pomocą przewodu Ethernet.
W końcowym etapie projektu użyto również oprogramowania będącego aplikacją kliencką VNC, w celu uzyskania zdalnego dostępu do ekranu sterownika PLC.
Założenia projektowe
Wynikiem opisywanych tutaj działań będzie aplikacja symulująca pomiar pewnej wielkości. Wszystkie potrzebne informacje będą wyświetlanie na panelu HMI sterownika, który zawiera również przycisk wyzwalający zapis do bazy danych SQL. Zapisaniu ulegają chwilowe wartości zmiennych widoczne w danym czasie na ekranie.
Wspomniane wyżej zmienne to:
- data i czas pomiaru,
- nazwa czujnika,
- wartość mierzona.
Wartość mierzona jest symulowana za pomocą wewnętrznych funkcji matematycznych sterownika, natomiast czas i data pomiaru są odczytywane z systemowego RTC.
Przyjmuje się, że użytkownik posiada już wcześniej stworzoną bazę danych z odpowiednią tabelą. Zakłada się również, że zdefiniowano na serwerze SQL użytkownika, którego login i hasło uprawniają zewnętrznych klientów do modyfikacji wyżej wymienionej tabeli.
Program na sterownik PLC do zapisu danych w bazie SQL
Konfiguracja połączenia z bazą SQL
Pierwszym krokiem jest oczywiście utworzenie nowego projektu w środowisku UniLogic oraz wybranie posiadanego modelu sterownika PLC.
Po wykonaniu tych czynności należy w sekcji "Solution Explorer" okna programu UniLogic wyszukać element "SQL Connector". Następnie należy wybrać go PPM oraz użyć opcji "Add Database".
W centralnej części okna pojawią się odpowiednie opcje konfiguracyjne połączenia z bazą SQL (jak na zdjęciu poniżej).
Użytkownik wprowadza kolejno:
- typ oprogramowania SQL ("SQL Type"); dostępne są: MySQL, PostgreSQL, jak również wykorzystywany tu SQL Server;
- adres IP lub nazwę hosta/serwera - należy pamiętać, że w wypadku podania nazwy serwera, trzeba również dodać adres serwera DNS w konfiguracji połączenia PC - sterownik; w przypadku adresu IP nie potrzeba żadnych innych działań;
- typ identyfikacji serwera - albo po jego nazwie (jak w projekcie), albo za pomocą numeru portu;
- nazwę serwera SQL (tu: SQLEXPRESS2014) lub numer portu, w zależności od powyższej opcji;
- nazwę bazy danych grupującej wszystkie wykorzystywane tabele (tu jest to "Unitronics_Process_Data");
- hasło i login użytkownika serwera SQL z właściwymi uprawnieniami odnośnie powyższej bazy danych.
Dodanie zapytania SQL
Zapytanie SQL tworzy się poprzez wybranie PPM z panelu "Solution Explorer" nowo dodanego połączenia z bazą oraz użycie opcji "Add Query". Następnie centralna część okna programu UniLogic zaktualizuje się jak na zdjęciu poniżej.
W sekcji oznaczonej numerem 1 na zdjęciu użytkownik wprowadza własną nazwę dla zapytania oraz (ewentualnie) zaznacza, że dane zapytanie jest procedurą SQL.
W tym przypadku wprowadzane zapytanie jest typu "INSERT" - zapisuje dane do tabeli. Aby je zdefiniować, należy w sekcji ozn. nr 2 zapisać jego treść. Dla tego projektu jest to:
INSERT INTO [SensorData] ([DateAndTime], [SensorName], [Value])
VALUES (CONCAT(@DateTimeDate, ' ', @DateTimeTime), @SensorName, @ValueParam);
Powoduje ono zapis do kolumn "DateAndTime", "SensorName" oraz "Value" należących do tabeli "SensorData" odpowiednich informacji. Informacje te są zmiennymi reprezentowanymi tutaj przez parametry (elementy poprzedzone znakiem "@"). Dlatego, że w programie UniLogic dość łatwo jest zapisać datę i czas do osobnych zmiennych, użyto funkcji "CONCAT" w celu wprowadzenia tych dwóch informacji do jednej kolumny bazy danych.
Poprawność wprowadzanych parametrów mnożna zweryfikować na podstawie sekcji oznaczonej numerem 3. Uzupełnia się ona automatycznie ukazując tym samym listę parametrów użytych w zapytaniu.
Projekt programu sterownika
Wywołanie zapytania SQL
Sterownik PLC i baza danych SQL mogą wymieniać informacje dzięki specjalnym elementom programu, z których budowany jest schemat drabinkowy. W naszym przypadku część programu wywołująca zapytanie SQL wygląda jak na zdjęciu poniżej.
Elementy oznaczone numerami 1 i 3 to odpowiednio "Direct Contact" oraz "Reset Coil". Pierwszy z nich wyzwala zapytanie SQL kiedy wartość bitu "Write to SQL" jest wysoka (wciśnięto przycisk). Drugi natomiast zeruje wartość tego bitu po wykonaniu działań.
Bloczek funkcyjny z numerem 2 odpowiada za samo wykonanie zapytania. Jego nazwa to "SQL Query" i wybiera się go z zakładki "SQL" sekcji "Toolbox" (zaznaczonej na zdjęciu powyżej). Pierwszym parametrem wejściowym dla tego elementu jest zawsze nazwa zapytania, które ma zostać wykonane. Następnie użytkownik podaje zmienne reprezentujące parametry w takiej kolejności, w jakiej pojawiają się one w zapytaniu.
W tym przypadku zmiennymi wejściowymi dla tego bloku funkcyjnego są "Date", "Time", "Name" oraz "Value". Pierwsze trzy z nich są typu "STRING-ASCII", ostatnia natomiast to wartość liczbowa rzeczywista - "REAL".
Dla zapytań typu "INSERT" nie są zazwyczaj zwracane żadne wartości więc pola dla zmiennych wyjściowych względem tego bloku pozostają nieuzupełnione.
Dodatkowo UniLogic wspiera migrację całych zestawów danych z tabel definiowanych w programie sterownika do tych znajdujących się w bazach SQL i na odwrót (pozostałe elementy w zakładce "SQL", w sekcji "Toolbox"). Nie są one jednak używane w omawianym projekcie.
Konwersja daty i czasu do formatu tekstowego
Data i czas symulowanych "pomiarów" są pozyskiwane z systemowego RTC. Aby uprościć ich zapis oraz odczyt z baz danych SQL można je w prosty sposób zamienić na typ tekstowy. W tym celu posłużono się gotowymi funkcjami udostępnianymi przez producenta na jego stronie. Aby je pobrać należy odszukać w podanej lokalizacji element "UniLogic Examples". Używana funkcja nosi nazwę "RTC to ASCII V2" i znajduje się w folderze "UDFBs".
Zaimportowanie tej funkcji oraz jej wywołanie w programie głównym przebiega w sposób pokazany na poniższym krótkim filmie.
Parametry wejściowe dla dwóch wywołań omawianej funkcji przekładają się na format daty i czasu oraz są opisane w pliku z jej definicją. W tym przypadku parametr "8" dla konwersji daty ustawia jej format na: "DD/MM/YYYY", natomiast dla czasu parametr "3" oznacza format: "hh:mm:ss AM/PM". ow
Symulacja mierzonego sygnału
Sygnał, którego wartości poddawane są zapisowi do bazy danych SQL symuluje się za pomocą wbudowanych formuł matematycznych. Aby dodać własną, należy w sekcji "Solution Explorer" okna programu UniLogic odnaleźć element "Formulas", wybrać go PPM i użyć opcji "Add Formula".
Użytkownik ma tam do dyspozycji wiele funkcji matematycznych, jak również może definiować własne parametry dla formuł. W tym przypadku posłużono się funkcją "sinus" oraz zdefiniowano parametr wejściowy będący jej argumentem.
Wartość parametru wejściowego przekazuje się wprost z licznika milisekundowego wbudowanego w program UniLogic. Ponadto, przed wprowadzeniem jej do formuły, zamienia się jej format z całkowitego na rzeczywisty. Powyższe działania przedstawia zamieszczony niżej film.
Zapis do baz danych SQL na żądanie - konfiguracja panelu HMI
Na potrzeby projektu skonfigurowano prostu panel HMI umożliwiający zapis "na żądanie" do baz danych SQL po naciśnięciu przycisku. Przedstawiono go poniżej. Aby łatwo zidentyfikować rodzaje elementów znajdujących się w obszarze panelu, przypisano im numery, które następnie umieszczono również w sekcji "Toolbox" przy ich odpowiednikach.
Element oznaczony numerem 1 na powyższym zdjęciu to przycisk wyzwalający działanie zapytania SQL. Komponenty z numerami 2, 3, 4, i 5 wyświetlają natomiast chwilowe informacje na temat symulowanego pomiaru. Są to odpowiednio: data (pobierana z RTC), czas (pobierany z RTC), nazwa czujnika (zmienna "Name") oraz wartość mierzona (zmienna "Value").
Prezentacja rezultatów
Zdalne połączenie ze sterownikiem PLC
Dla większej wygody prezentowania wyników podjętych tutaj działań, panel HMI sterownika PLC obsługuje się zdalnie. Jest to możliwe dzięki serwerowi VNC działającemu na sterowniku (sterownik US5-B10-TA30 od UNITRONICS może być zarówno klientem jak i serwerem VNC). Do połączenia ze sterownikiem znajdującym się w tej samej sieci, co komputer wystarczy dowolna aplikacja będąca klientem VNC.
Od strony sterownika, należy aktywować serwer VNC w projekcie UniLogic, przed wgraniem go na sterownik. Aby tego dokonać, wybiera się element "Password Management" w sekcji "Solution Explorer" i ustawia tryb pracy serwera na aktywny (istnieje opcjonalna możliwość konfiguracji hasła dla połączenia).
Testowanie działania programu
Po kompilacji programu i wgraniu go na sterownik, możliwe jest zapisywanie danych do bazy SQL za pomocą przycisku. Można używać go zarówno bezpośrednio na panelu HMI, jak i w oknie aplikacji klienckiej VNC. Sposób w jaki sterownik PLC i baza danych SQL wymieniają informacje pokazuje poniższy krótki film.
Do pobrania
Jeśli zainteresował Cię temat współpracy sterowników PLC od UNITRONICS z bazami danych SQL i chciałbyś przyspieszyć swoją naukę programowania tego typu rozwiązań, udostępniliśmy dla Ciebie przydatne materiały. Wypełniając poniższy krótki formularz otrzymasz pliki projektu UniLogic omawianego w tym wpisie, plik z funkcją "RTC to ASCII" od producenta oraz plik .pdf ze wskazówkami, jak skonfigurować zdalny dostęp do serwera MS SQL.
[contact-form-7 id="1068" title="Projekt Unitronics - SQL"]
Pamiętaj, że prawdopodobnie ustawienia odnoszące się do adresów IP panelu sterownika (zakładka PLC Communications -> Physical -> Panel Ethernet) oraz parametrów połączenia z bazą danych będą się różnić w Twoim przypadku.
W razie jakichkolwiek pytań skontaktuj się z nami pod adresem e-mail: sterowniki@elmark.com.pl
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!