Modbus TCP

0

Cześć,

chciałbym sie dowiedzieć kilku rzeczy o protokole modbus tcp oraz jego implementacji w jezyku C#. Jako że Modbus-a poznałem do tąd jedynie od strony teoretycznej a z jezyk C# znam zaledwie podstawy, prosiłbym o wyrozumiałość dla moich pewnie banalnych pytań.
A więc zaczne od mojego problemu, chciałbym stworzyc program który będzie odczytywał jak i wysyłał pewne dane do sterownika.
A więc na PC powinienem zaimplementować server czy client? czy może to i to? No a co od strony sterownika?

0

na 99% sterownik jest serwerem więc na PC będzie klient

0

Nie mówie że już wiem na pewno ale tak na powiedzmy te 95% że to jednak na PC będę miał Mastera(a w zasadzie to server) a na sterowniku slava(klient).
To zależy pewnie od tego jaki cel chce się osiągnąć. U mnie to wygląda tak że chce odczytać dane z poziomu PC ze sterownika a także przesłać, a zadaniem Mastera jest wysyłanie zapytań i poleceń do sleva, tak mi sie wydaje.
Drugą rzeczą, w sumie dla której tu właśnie napisałem i z którą mam problem, to implementacja takowego protokołu w C#, wiem że są gotowe biblioteki i z niektórych nawet trochę próbowałem korzystać, ale jak zrobiłem taki myk, że po założeniu na PC klienta oraz na sterowniku klienta udawało mi sie przesyłać jakieś dane, to uznałem że wole sie polecić ludzi kompetentnych.
A i jeszcze jedna taka kwestia, w sumie dotycząca czysto Modbus-a, mam taki przypadek że komunikuje się za pomocą gotowego programu Modbus Scanner z moim sterownikiem i po ustawieniu na 1 pewnego wyjścia, po kilku sekundach wraca na stan początkowy czyli 0, nie do końca wiem czemu tak sie dzieje. Mam to uznac jako norma i mam dostosować do tego program czy jednak to nie tak powinno byc?

0
Świetny Samiec napisał(a):

U mnie to wygląda tak że chce odczytać dane z poziomu PC ze sterownika a także przesłać, a zadaniem Mastera jest wysyłanie zapytań i poleceń do sleva, tak mi sie wydaje.

masz rację - master to klient a slave to serwer - pomyliło mi się

Drugą rzeczą, w sumie dla której tu właśnie napisałem i z którą mam problem, to implementacja takowego protokołu w C#, wiem że są gotowe biblioteki i z niektórych nawet trochę próbowałem korzystać, ale jak zrobiłem taki myk, że po założeniu na PC klienta oraz na sterowniku klienta udawało mi sie przesyłać jakieś dane, to uznałem że wole sie polecić ludzi kompetentnych.

Z tego co pamiętam, a było to jakiś czas temu, jak pisałem to po prostu wysyłasz ramkę z odpowiednim adresem i funkcją - opisane np. tu
http://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf
jak chcesz to możesz poeksperymentować i pooglądać to http://www.codeproject.com/Tips/16260/Modbus-TCP-class

A i jeszcze jedna taka kwestia, w sumie dotycząca czysto Modbus-a, mam taki przypadek że komunikuje się za pomocą gotowego programu Modbus Scanner z moim sterownikiem i po ustawieniu na 1 pewnego wyjścia, po kilku sekundach wraca na stan początkowy czyli 0, nie do końca wiem czemu tak sie dzieje. Mam to uznac jako norma i mam dostosować do tego program czy jednak to nie tak powinno byc?

to już powinieneś przede wszystkim doczytać w sterowniku czy coś go nie resetuje

0

Ok, dzięki wielkie, w lekturę na pewno się zagłębie bo jeszcze nie raz ta wiedza mi się przyda.
A problemem okazał być sie ustawiony timeout przy slave, który pewnie po danym czasie przez który nie otrzymał zapytania od mastera resetował wejście.

1 użytkowników online, w tym zalogowanych: 0, gości: 1