Piszę aplikację pod Win (w C#) wykorzystującą protokół transmisji szeregowej Modbus.
Korzystam z artykułu Jerzego Szczesiula (przy okazji wielkie dzięki za ten tekst!) o programowaniu RS w WinAPI. I wszystko jest super, tylko że nie wiem, czy podejście, które zastosowałem jest optymalne.
Procedura odpowiedzialna za transmisję działa tak:
- Otwórz port w trybie zapisu.
- Prześlij ramkę z zapytaniem (adres urządzenia, itd.) na port.
- Zamknij port.
- Otwórz port w trybie odczytu (odbierania).
- Odbierz ramkę z portu (z odpowiednim Timeoutem).
- Zamknij port.
Całość chodzi w trybie synchronicznym. Ponieważ docelowo ma to być RS485, więc nie wiem czy ma sens tryb asynchroniczny. Dlaczego? Bo i tak po wysłaniu ramki trzeba czekać na odpowiedź od konkretnego urządzenia. Dopiero kiedy ono odpowie (lub będzie timeout), można wysłać coś do następnego.
Pytania mam takie:
1. Czy procedura jest wg Was sensowna? A jeśli nie, to jak to zrobić lepiej?
2. Czy jest sens stosować podejście asynchroniczne? Pamiętając jak działa RS485 z wieloma urządzeniami.
Pozdrawiam!
[ Dodano: 09-04-2006, 21:44 ]
Jak widać popularność Modbusa wśród elektroników ciągle rośnie
W zasadzie już rozwiązałem wszystkie problemy tylko nurtuje mnie pytanie: Czy za każdym razem trzeba dwa razy otwierać port dla pobrania jednej danej z urządzenia? Nie da się tego jakoś inaczej zrobić?
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięModbus - dwa pytania
Moderatorzy:Jacek Bogusz, Moderatorzy
-
- -
- Posty:269
- Rejestracja:1 kwie 2003, o 20:32
- Lokalizacja:Bielsko-Biała
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości