Pomoc w pisaniu programu z wykorzystaniem MODBUS

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
darekc
Posty: 77
Rejestracja: 29 mar 2007 00:00
Lokalizacja: Gliwice

Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: darekc »

Wartość 2 zapisz do rejestru o adresie 25 przy użyciu polecenia Preset Single Register (kod 6, może dla VI z biblioteki to polecenie ma inną nazwę np. Write Single Register?). Poza tym, jeśli chcesz w jednej ramce struktury wykonać dwa polecenia to VI-je połącz szeregowo, a nie tak, jak na diagramie blokowym zamieszczonym w poprzedniej wiadomości. Zlecasz tam też wykonanie polecenia Read Coils (w terminologii Modbusowej Read Coil Status, kod 1), a regulator go nie wykonuje, dlatego dostajesz błąd 6002.
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: Jamal79 »

Witaj.
Cos ci sie pomieszalo, nie dotykaj coilscow, bo z nimi niemasz nic do czynienia. Z tego co pamietam z dokumentacji twojego urzadzenia to masz do dyspozycji tylko rejestry.
Czyli zapisujesz tylko do Write Multiple Registers.
Niewiemy jak co masz podlaczone Fizycznie do twojego Kontrolera.
Odczytujac register 6 - powinienes otrzymac info o statusie wszystkich outpotow. ON/OFF (1/0)
Register 7 podaje wartosci voltowe na wyjsciu...
Ale zalozmy za masz grzalke podlaczona do 2.
Aktywujesz ja podajac wartosc 1 na register 29
Grzanie odbywa sie automatycznie poprzez wprowadzenie wartosci PID- Mozesz to zrobic z wyswietlacza badz z poziomu labview.
Wszystko jest napisane w tym linku

http://www.apar.pl/images/oldprodukt/um_ar6x0_eng.pdf ostatnia tabelka..

Pierwsza kolumna to numery registrow, druga to dopuszczalne wartosic, opis, mozliwe akcje R/WR...
darekc
Posty: 77
Rejestracja: 29 mar 2007 00:00
Lokalizacja: Gliwice

Re: Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: darekc »

Nie można użyć polecenia Write Multiple Registers (w terminologii Modbusowej Preset Multiple Registers, kod 16, http://web.eecs.umich.edu/~modbus/docum ... US_300.pdf, strony 46-47), gdyż jest ono przez regulator nie obsługiwane - w http://www.apar.pl/images/oldprodukt/inst_ar6x0.pdf na stronie 20 jest napisane ,,Dostępne funkcje : READ - 3 lub 4, WRITE - 6".
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: Jamal79 »

Czyli musi zapisywac je pojedynczo... nie studiowalem calego manuala. Tym powinien sie zajac zainteresowany.
studentfizyki
Posty: 9
Rejestracja: 04 mar 2015 14:30
Wersja środowiska: LabVIEW 2013

Re: Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: studentfizyki »

Witam wszystkich!
Udało mi się napisać działający program. Bardzo dziękuje za wszystkie wskazówki, które zostały mi udzielone. Jesteście wielcy :D Jak skończę poprawianie drobnostek (ustawianie parametrów PID) to podeślę parę screenów żeby się pochwalić. Jeszcze raz DZIĘKI
studentfizyki
Posty: 9
Rejestracja: 04 mar 2015 14:30
Wersja środowiska: LabVIEW 2013

Re: Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: studentfizyki »

Witam. Mam jeszcze jedno pytanie. Chciałem aby użytkownik z poziomu Labview ustawiał zadaną temperaturę i zrobiłem coś takiego jak na fotografii. W rejestrze 26 zapisuję wartość podana przez użytkownika. Nie dość, że na wyświetlaczu pojawiają się przypadkowe liczby to aby program działał trzeba co chwilę klikać continue na komunikacji (na fotografii). Próbowałem podbiąć całość pod różne porty USB bez skutku. Mielibyście dla mnie jakieś inne rady.

EDIT: Juz poprawiłem wyświetlanie danych na wyświetlaczu, jest o.k. ale ten komunikat wciąż i wciąż wraca (tak co 1 minutę).
Załączniki
błąd.png
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: Jamal79 »

Modbus jest prostym protokolem i ma swoje humorki. Problem z czasem jest czesto pojawiajacym sie bledem. Tzn jak ocos go zapytasz, to musisz czekac na odpowiedz. Jezeli w czasie pomiedzy pytaniem a odpowiedzia chcesz wykonac inne czynnosci/zapytania czesto wywala blad. Czas jest uzalezniony od wielu czynnikow, zarowno fizycznych jak i softwerowych. Dlugosc kabla, jego srednica, szybkosc transmisji, ilosc daneych do przeslania itd.

Pobaw sie opoznieniami, lub zrob kolejki...
Ostatnio zmieniony 13 mar 2015 09:06 przez Jamal79, łącznie zmieniany 1 raz.
studentfizyki
Posty: 9
Rejestracja: 04 mar 2015 14:30
Wersja środowiska: LabVIEW 2013

Re: Pomoc w pisaniu programu z wykorzystaniem MODBUS

Post autor: studentfizyki »

Dzięki za radę. Zrobiłem opóźnienie i faktycznie to pomogło.
ODPOWIEDZ