Labview Projects

  • Welding Machine’s Tester

This big project for LORCH is in final stage of programming and testing, this tester and/or calibrator is universal tool for welding machines test’s. Software is wrote in Labview, with few dll’s made in C++. Basically software is controlling welding machine by CAN BUS, this way we have full control and we also can readout error and actual values from welding machine, also all “mechanical” and measuring relays are controlled by BK5150 trough CAN BUS, BK5150 has attached 16 DI and 16 DO plus analog inputs for temperature control. Measures are done by Agilent multimeter, safety tests is performed by GW-INSTEK 745a, did I mentioned measurement of wire feeder speed, its also included! So calibration is controlled by software, we are reading ID’s form welding machines and if data exist in database software will load all settings and all test points, if its new machine or machines series we need to create test data for it. So by this point we can customize test parameters for each machine even if machine don’t have CAN BUS. Machines without CAN during test or calibration has to be controlled by operator, so software will show message box with instruction for operator at each step, it’s very easy! So what nex we have machine parameters and all details so we can do some testing, test with CAN bus is fully automated, in other cases operator has to set voltage and current on welding machine and press “OK” in software. Beside test mode I also implemented manual mode for troubleshooting so technician can switch relays and send commands to machine, also all communication and relays, error are logged into txt file so I can check it later if something wrong happen. There is an option to determinate error codes and witch one can be reset or operator has to shut down machine. Test results are stored in customize PDF file and printed out on label. For security I implemented security key (usb), so only trained people can use this machine.
Communication: RS232, CAN
Hardware: Agilent Multimeter, GW-INSTEK Hi Voltage Tester, BK5150 CANBUS, NI-CAN, Printer
  • Transformer Tester

This is simple project, small transformer for automotive and few test’s. Software is designed in Labview, custom test sequencer, reports and test settings all customized and easy to edit by end user. So for this project I had to use GW-INSTEK 754a and Agilent RLC meter. All relays in fixture are controlled by NI I/O card. Software has implemented custom test procedures so you can skip some tests in procedure, all reports are stored in txt file. Communication is done trough RS232 and GPIB. Transformer is tested on 1.5kV 3.7kV, plus inductance measurement and coil connection test.

 
Communication: RS232, GPIB
Hardware: Agilent Multimeter, GW-INSTEK Hi Voltage Tester, NI DI/DO

  • Obsługa wejść/wyjść BK5150 przy użyciu CAN-USB i Labview 

 

Bk5150 podpięty jest pod kartę usb-can firmy National Instruments, całym procesem odbierania i wysyłania informacji zajmuje się program napisany w Labview. Prosta architektura Producer-Consumer obsługuje odbieranie i wysyłanie informacji.

W celu rozpoczęcia komunikacji z BK5150 musimy przeprowadzić synchronizację wysyłając ramkę z dowolnym ID i danymi (np 0x11 0x01 0x01 0x01 0x01  0x01 0x01 0x01 0x01), po tej ramcę powinniśmy zobaczyć komunikat 0x80 +nodeID  (np. 0x8B i jeden bajt danych 0x00).

W celu zmiany stanu wyjść:

ramka składa sie z X bajtów danych, X-ilość modułów wyjść. Jeżeli mamy np. konfigurację: 2x KL2408  ramka bedzie wyglądała tak:

0x200 (+nodeID) 2 bajty danych 0xZZ oxYY gdzie ZZ to pierwszy moduł a YY to drugi moduł, sterowanie kanałów następuje poprzez zapisanie i wysłanie ramki z liczbą U8 reprezentującą stan binarny na wyjściu modułu (najlepiej mieć zmienną w której to zapisujęmy żeby przy aktualizacji jednego kanału nie resetować innych).

Przykład załączania pierwszego kanału na module 1:

0x200 (+nodeID) 2 bajty danych 0x01 (00000001) 0x00

(00000001) = stan binarny wyjść czyli pierwszy bit jest na “jeden” = pierwszy kanał włączony, tą wartość binarna przeliczamy na HEX i zapisujemy w pierwszym bajcie ramki (dla drugiego modułu drugi bajt)

włączenie kanału 1+4+6

(00101001) w decimal to jes 41 a w HEX 29 i taki bajt wysyłamy ramką 0x29 czyli cała ramka 0x200 (+nodeID) 2 bajty danych 0x29 0x00

 

W celu odczytania wejść postępujemy analogicznie dekodując ramke o ID 80 (+nodeID) pierwszy bajt odpowiada pierwszemu modułowi, w przypadku wejść analogowych wartości sa dwu bajtowe dla kanału i odczytywany jest z ramki o id 180 (+nodeID)

 

 

 

 

 

 

  • Stacja Meteo

 

Chciałbym przedstawić swoją stację meteo, która zmontowałem w wolnym czasie. Wszystko zaczęło się od kupienia karty I/O do komputera, stworzyłem rożne aplikacje dla tej karty ale po jakimś czasie karta zaczęła się kurzyć w szufladzie. Przeglądając różne strony trafiłem przez przypadek na sensor ciśnienia który pasował idealnie do tej karty, jego zakres od 0-100% odpowiadał napięciu wyjściowemu 0-5v dokładnie tyle ile potrzebowałem! Po zakupie sensora i przetestowaniu go, do głowy wpadł pomysł stworzenia własnej małej stacji meteo z możliwością rejestracji pomiarów do pliku. Po tygodniach spędzonych na przegrzebywaniu google w poszukiwaniu odpowiednich sensorów i układów przystosowujących sygnał z sensora do karty, a także montowaniu tego w całość i pisaniu programu w końcu kilka dni temu projekt ruszył i działa. Na razie wszystko jest jeszcze w gąszczu kabli ale w następny weekend ładnie to zabuduje i zamontuje sensory w jakiejś puszcze na zewnątrz.

Od strony technicznej:
Pomiar jest realizowany przez kartę K8055 http://www.velleman.eu/products/view/?country=be&lang=en&id=351346 (2 wejścia analogowe 0-5v i 4 wejścia cyfrowe // 8 wyjść cyfrowych i dwa analogowe 0-5v), czytane wartości z wejść analogowych są zamieniane zgodnie z danymi z noty katalogowej sensorów na Temperaturę/Wilgotność/Ciśnienie.
Sensor Temperatury to układ K8067 (dokładniej jego kopia) http://www.esr.co.uk/velleman/k8067.htm zakres temperatury to -20 do +70 *C (mam zamiar zrobić drugi taki układ ale z przesunięta skalą -30 do +60*C)
Sensor Wilgotności to HIH4000 bez żadnego dodatkowego układu sensor jest liniowy od 0-100% (0-5V)
Sensor Ciśnienia to MPX4115A, dodatkowo potrzebne było skorzystanie z wąskiego zakresu tego sensora jego wyjście też jest liniowe ale od 15-115kPa (0-5v), potrzebny był układ wycinający zakres 3.7v-4.2v i mnożący napięcie x10 (0-5v) dla zakresu jak dobrze pamiętam 900hPa do 1050hPa.

Program:
Jest napisany w Labview (codziennie używam tego języka w pracy), pomiar odbywa się co 120 sekund i jest zapisywany do pliku, plik dla każdego dnia jest inny czyli mamy archiwizacje danych. Przy każdym odczycie jest wysyłany obraz z wykresami i informacjami na serwer www.

Strona www:
Automatycznie odświeża się co 130 sekund, posiada aktualne pomiary, skan z blids.de, mapkę z sat24 i radary google z pogodynka.pl

W planach:
Dodanie wiatromierza
Pomiar nasłonecznienia
?detektor burzy?
Interaktywne wykresy i możliwość wyboru dnia z archiwum

Dokładność stacji to:
Temperatura 0.5*C
Wilgotność 0.4%
Ciśnienie 0.6 hPa

Strona projektu z pomiarami:
http://meteo.rox.pl
Zdjęcia zamieszczę jak już wszystko będzie miało obudowę 🙂
PS. Dzisiaj była przerwa w działaniu między 11 a 15 (przenosiłem w inne miejsce mniej nasłonecznione za dnia)

 

 

  • Map drive app

Pierwszym projektem był program do mapowania dysków sieciowych. W firmie mam kilka stanowisk inspekcji wizualnej automatycznej robionej przez maszyny VISCOM, po procesie inspekcji panele z plytkami pcb wędrują na maszyne calibrujaca i wgrywającą oprogramowanie, program sterujący korzysta z dysku sieciowego z którego pobiera plik z danymi inspekcji wizualnej. Wczesniej zanim program powstał informatyk musiał zmieniać ustawienia programu zmieniając np. litere dysku sieciowego lub mapując na nowo dysk sieciowy do innego viscomu. Dla uproszczenia tego procesu napisałem program który automatycznie mapuje dysk sieciowy dla określonego viscom’u dzięki temu programowi operator ma możliwość zmiany(podpięcia się) viscomu bez konieczności proszenia informatyka.

  • Ram Disk


Podczas procesu testowania części do przechowywyania danych i surowego zapisu transmisji radiowej uzywamy szybkiego wirtualnego dysku ram, dzieki temu mozemy bardzo szybko odczytywać i zapisywać dane w porównaniu do normalnego dysku twardego, darmowy program od Microsoft obsługuje tylko 64MB danych, podczas gdy używamy w jednym skrypcie kilku plików z danymi zajmujacymi okolo 30-40MB nie jest to problemem, ale przy zmianie produktu stare pliki zostają i pojawia się problem z brakiem miejsca do zapisu danych, były wykonane próby naprawy tego problemu przez innych programistów w firmie bez skutku. Napisalem maly program w Labview który usuwa niepotrzebne pliki podczas pierwszego uruchomienia skryptu testującego czyli zaraz po zmnianie produktu. Dodatkowo zwalnia on pamieć ram z wszystkich nie używanych pod-programów. Mój program został zaimplementowany do wszystkich pracujących skryptów w fabryce.

  • Pomiar czasu wykonania zadan robota

 

Celem projektu bylo napisanie programu mierzacego czas wykonania poszczegolnych czynnosci robota, diagram powyzej jest z wersji testowej i obejmuje tylko jedna z kilku czesci programu, sterowanie robota wykonane bylo w labview, podpiecie sie pod glowny program i skorzystanie z notyfikacji w znaczym stopniu rozwiazalo problem z poprzednia koncepcja czyli bezposrednim czytaniem sensorow przy ktorym wystepowaly problemy z konfliktami I/O.

  • Potwierdzenie zapisu danych  w logu

 

Jest to bardzo prosty program do weryfikacji zapisu danych w pliku CSV, powstal w wyniku problemow z czescia innego programu odpowiedzialnego za wysylanie i zapisywanie danych w pliku i na serwerze, w przypadku problemow z plikiem CSV automatycznie zatrzymuje on produkcje.

  • Kopiowanie pliku na kilka PC jednoczesnie

Narzedzie to jest w stanie skopiowac okreslony plik na wybrane komputer do wybranego katalogu, powstal on na potrzeby aktualizacji ustwawien i skryptow.

 

  • Skrypt monitorujący pozycję komórek testujących względem robota

Projekt powstał na prośbę innego działu, celem było możliwie jak najłatwiejsze ustalanie pozycji komórki testującej względem robota. Projekt odczytuje pozycję dokującą a następnie sprawdza czy zgadza się ona z tym co jest w bazie danych, jeśli nie aktualizuje rekord i dodaje date zmiany pozycji, następny VI wysyła wiadomość do serwera w celu aktualizacji pozycji w innym systemie sterowania produkcją.

 

 

 

 

  •  Acronis – Backup danych

Podczas pobytu na delegacji w USA (Springfield TN) jednym z projektów było wprowdzenie systemu kopii zapasowych. Wydział IT w swoich biórach posiadał już swój system, zatem pozostała tylko hala produkcyji. Około 150 komputerów w wiekszości Windows Xp, kilka Win2k i pare sztuk 98 i 2003 server.  Zakupiony został NAS o pojemności 6TB, 5TB po konwersji na raid, oprogramowanie do kopi zapasowych to Acronis. Bez większych problemów został on zainstalowany na maszyny i ustwiony do co tygodniowej kopi bezpieczeństwa. Administrator sieci ma dostęp do każdej maszyny poprzez Acronis Agent i może wykonać zdalnie kopie w każdym momencie. Dodatkowo na niektórych maszynach zainstalowałem wersję Workstation (roboczą) ze względu na możliwość przeglądania zawartości kopi zapasowej jak zwyczajnego folderu co daje duże możliwości jeśli ktoś przez przypadek coś usunie, w takim przypadku mamy możliwość szybkiego przywrócenia pliku bez konieczności przywracania całej kopi. Aktulanie projekt działa od miesiąca bez problemów.

 

  • Przytnij

Przytnij jest programem do konwersji i zmiany rozmiaru zdjęć, napisałem go po powrocie z wakacji gdy chciałem wysłać znajomym kilka zdjęć ale okazały się za duże. Program został napisany w dwa dni.

Program potrafi:

  1. Zmniejszyć zdjęcie procentowo z zachowaniem proporcji
  2. Zmniejszyć zdjęcie do określonego rozmiaru x/y jeśli tylko jeden jest określony proporcje zostaną zachowane
  3. Zmienić format pliku graficznego jak i stopień kompresji dla plików JPEG
  4. Definiowane nazwy zdjęć np. Wakacje_001

Leave a Reply

Your email address will not be published. Required fields are marked *