Komunikacja Modbus z chińskim modułem

Główne forum techniczne dla dyskusji dotyczących problemów przy wytwarzaniu aplikacji PROMOTIC oraz sposobach ich rozwiązania.

Komunikacja Modbus z chińskim modułem

Postby Slawko » Tue 31. Jan 2023 20:55:09

Witam.
Mam chińską płytkę z 4 wejściami i 4 wyjściami.
Z większością funkcji już się uporałem i działają mi w Promoticu

Nie wiem jak zrobić odczyt wejść z modułu.

Aby odczytać stan wejść należy wysłać komendę
FF 02 00 00 00 08 6C 12
FF - adres, 02- to pewnie funkcja , 6C 12 - to suma kontrolna

Układ odpowiada
FF 02 01 00 [suma kontrolna] - wszystkie wejścia wyłączone
FF 02 01 01 [suma kontrolna] - 1 wejście aktywne
FF 02 01 02 [suma kontrolna] - 2 wejście aktywne

Jest to chyba jakaś głęboko-chińska odmiana protokołu.
Wysyłając te dane normalnie w terminalu układ odpowiada tak jak w chińskiej instrukcji.

Problem jak wysłać to zapytanie i jak odczytać odpowiedź w Promoticu. Jeśli wybiorę funkcję 02 - to dalej można wybrać tylko nr bitu i nic więcej. DA się to zrobić czy nie ma szans na implementację tego dziwnego protokołu.
Slawko
 
Posts: 5
Joined: Tue 13. Dec 2022 19:30:44

Re: Komunikacja Modbus z chińskim modułem

Postby Robert Siwek » Fri 10. Feb 2023 14:30:03

Witam,

istnieją dwa sposoby, jak to rozwiązać:
1. do obiektu PmaComm wstawić obiekt PmaCommMsg i odpowiednio ustawić parametry w karcie Dane wysłanie
2. zbudować od podstaw komunikację przy pomocy protokołu PmChar (znając rqamkę zapytania i jej odpowiedź)

Robert.
Robert Siwek
 
Posts: 94
Joined: Thu 13. Dec 2012 9:29:09

Re: Komunikacja Modbus z chińskim modułem

Postby Slawko » Wed 22. Feb 2023 16:52:39

Dziękuję za odpowiedź ale nie pomogło mi to rozwiązać problemu.

Próbuję jak pan radził.
Wstawiłem PmaComm, PmaCommMsg.
W dane-wysłanie PmaCommMsg wpisałem FF 02 00 00 00 08 6C 12

wstawiłem przycisk dodając zdarzenie OnButtonDown , wpisałem z waszej www

var oCommMsg = pMe.Pm("../Comm/mr0");
if (oCommMsg.GetReady())
{
oCommMsg.Run();
}

Nie mam pojęcia czy ta nada wogóle się wysyła . Raczej watpię bo po uruchomieniu w zakładce info są błędy po przyciskaniu przycisku.

Ale nawet jakby to zadziałało to zupełnie nie wiem jak odczytać odpowiedź ze modułu.

Mogłbym poprosić o jakaś bardziej szczegółową poradę?

Jak wysłać prawidłowo daną
FF 02 00 00 00 08 6C 12
Jak odczytać odpowiedź modułu
Slawko
 
Posts: 5
Joined: Tue 13. Dec 2022 19:30:44

Re: Komunikacja Modbus z chińskim modułem

Postby Kazimierz Heczko » Thu 23. Feb 2023 15:41:57

Witam,

jeżeli ta płytka rzeczywiście ma zaimplementowanego Modbus-a, to spróbowałbym na początek jeszcze raz zastosować PmaCommMsg.
W tym PmaCommMsg w karcie "Parametry" ustawić w "Parametrach wiadomości" funkcję 02, ilość danych 4 i zatwierdzić to ustawienie.
Zatwierdzenie spowoduje wytworzenie odpowiednich zmiennych w kartach Dane-wysłanie (Slave - modbus adres danego urządzenia, Addr - adres pierwszej odczytywanej wartości) i Dane-odbiór (w tym wypadku 4 zmienne typu boolean).
Po uruchomieniu aplikacji możne za pomocą systemu INFO (Ctrl + I) przejść do tego obiektu i w karcie WriteVars ustawić odpowiedni adres urządzenia (chyba że zostanie to ustawione w trybie deweloperskim), adres pierwszej odczytywanej wartości można pozostawić domyślnie na 0.
Po tym należy przejść do karty Object i za pomocą prawego klawisza myszki należy wywołać menu i z tego menu można wywołać metodę Run (powoduje rozpoczęcie komunikacji).
Na tej karcie jest również widoczny stan takiej komunikacji, jeżeli zostanie zakończona pomyślnie, to w karcie ReadVars będą widoczne bieżące stany poszczególnych wejść.

Jeżeli próba takiego odczytu zakończy się błędem, to można zerknąć do INFO systemu na pozycję Comm/dana komunikacja, gdzie w karcie Monitor będzie widoczny przebieg komunikacji bajt po bajcie, z czego można spróbować wywnioskować, gdzie jest problem.

Mam nadzieję, że powyższy opis będzie Panu pomocny.

Pozdrawiam
Kazimierz Heczko
 
Posts: 68
Joined: Thu 13. Dec 2012 9:28:56

Re: Komunikacja Modbus z chińskim modułem

Postby Slawko » Thu 23. Feb 2023 23:46:07

Dziękuję bardzo.
Opis pierwsza liga.

Co prawda nie zadziałało to od razu bo nie wiem dlaczego wg Pana opisu wysyłał FF 02 00 00 00 04 +CRC (nie wiem skąd ta 04 się brała) zamiast FF 02 00 00 00 08 +CRC i w żadne sposób nie mogłem tego zmienić ale zbudowałem jakoś od podstaw własną ramkę i zaczęło to działać.
Opis podglądu przebiegu komunikacji mega mi pomógł. Wszystko widać jak na dłoni.

Wstawiam screena z konfiguracji może ktoś będzie w podobnej potrzebie

promotic.jpg
promotic.jpg (105.83 KiB) Viewed 6248 times


Dziękuję i pozdrawiam
Sławek
Slawko
 
Posts: 5
Joined: Tue 13. Dec 2022 19:30:44


Return to Nie wiem jak zrobić...

Who is online

Users browsing this forum: No registered users and 3 guests