ADAM-6015 - ADAM-ASCII i język PHP

Pytania i odpowiedzi dotyczące sprzętu Advantech

Moderatorzy: Jacek Adamski, Marek Sikora

ADAM-6015 - ADAM-ASCII i język PHP

Postprzez flashmaniak » Śr, 25 kwi 2012, 12:36

witam,
realizuję komunikację PHP z modułem ADAM-6015 przy pomocy protokołu Modbus/TCP. Po przeczytaniu tego artykułu: http://moduly-pomiarowe.pl/206 udało mi się poprawnie odczytywać rejestry wg tabel w manualu ADAM-6000, ale zauważyłem, że większość zmian ustawień modułów ADAM-6000 protokół Modbus/TCP nie posiada i co brakuje znajduję się w protkole ADAM-ASCII. Udało mi się prawidłowo wysyłać i odbierać komendy ADAM-ASCII w oprogramowaniu Advantech'u (ADAM-5000TCP/6000 Utility oraz Adam/Apax .NET Utility), ale nie wiem jak to zrobić w PHP. Próbowałem zmieniać port z 502, na 1025 lub 5168, ale nic to nie pomogło. Sugerowałem się prostym poleceniem na odczyt nazwy modułu: $01M<cr>, ale też nie dostawałem prawidłowej odpowiedzi. Czy ktoś by mógł mi pomoc?
flashmaniak
 
Posty: 2
Dołączył(a): Śr, 25 kwi 2012, 12:21

Re: ADAM-6015 - ADAM-ASCII i język PHP

Postprzez Jacek Bonecki » Śr, 25 kwi 2012, 13:12

Witam

Nie kojarzę, żeby ta enkapsulacja protokołu ADAM-ASCII w Modbus/TCP (bo to że tak powiem "rdzeń" komunikacji z modułami serii ADAM-6000) była gdzieś dokładniej omówiona/udokumentowana. Myślę, że najlepszym i w sumie najprostszym rozwiązaniem będzie podsłuchanie tego co np. AdamApax.NET Utility do modułu wysyła (zdaje mi się, że cały czas bedzie to port 502). Czyli należałoby skorzystać z jakiegoś sniffera typu Ethereal. Jak sobie z tym Pan nie poradzi to proszę jeszcze dać znać - jak znajdę chwilę spróbuję się temu dokładniej przyjrzeć.

Aczkolwiek uważam, że do konfiguracji producent dostarcza działający program i to mi się wydaje wystarczające.
Po skonfigurowaniu, już w normalnym użyciu, pozostaje tylko odczytywanie rejestrów Modbus - do tego moduł ostatecznie służy.
A to już Pan przecież opanował :)
Pozdrawiam
Jacek Bonecki
Elmark Automatyka S.A.
Jacek Bonecki
 
Posty: 53
Dołączył(a): Cz, 8 maja 2008, 13:14
Lokalizacja: Elmark Automatyka - Warszawa Wesoła

Re: ADAM-6015 - ADAM-ASCII i język PHP

Postprzez flashmaniak » Pt, 27 kwi 2012, 11:34

witam,
udało mi się prawidłowo wysyłać i odbierać komendy ADAM-ASCII z modułem ADAM-6015 w języku PHP. Zrobiłem tak jak Pan radził. Zainstalowałem program typu sniffer, a konkretnie Wireshark 1.6.7. Program przechwytywał pakiety wysyłane z programu Adam/Apax .NET Utility do modułu ADAM. W tych pakietach szczegółowo rozpoznawał wszelkie informacje m.in. typ protokołu, w tym przypadku (MODBUS/TCP), kod funkcji MODBUS i inne elementy struktury ramki MODBUS.

Komendy ADAM-ASCII są normalnie wysyłane protokołem MODBUS/TCP po porcie 502. Różnica polega na tym, że przy tych komendach najpierw się wysyła ramkę zapisującą komendę ADAM-ASCII do grupy rejestrów cyfrowych (funkcja 16) i odbiera odpowiedź (to samo dostajemy bez danych), a potem ponownie wysyłamy ramkę odczytującą stan grupy wejść cyfrowych (funkcja 3) i odbieramy ostateczną odpowiedź (odpowiedź ADAM-ASCII).

Poniżej zamieszczam przykład użycia komendy $01M<cr>

02 00 00 00 00 0d 01 10 27 0f 00 03 06 24 30 31 4d 0d 00 -> zapytanie ($01M<cr>)
02 00 00 00 00 06 01 10 27 0f 00 03 -> odpowiedź

03 00 00 00 00 06 01 03 27 0f 00 7e -> zapytanie
03 00 00 00 00 ff 01 03 fc 21 30 31 36 30 31 35 0d 00 (00) ... -> odpowiedź (!016015<cr>)

Pozdrawiam
Rafał M.
Politechnika Rzeszowska
flashmaniak
 
Posty: 2
Dołączył(a): Śr, 25 kwi 2012, 12:21


Powrót do Advantech



Kto przegląda forum

Użytkownicy przeglądający to forum: Brak zalogowanych użytkowników i 11 gości