Вот, читай.
Вид для печати
Может кто нибудь помнит готовый проект с ModBusTCP Master на плк при работе через TCP, посмотреть что хоть должно там быть. У меня по итогу к серверу ПЛК подключается и непонятно что передаёт, а может и не передает ничего
В http://kipshop.ru/Primeri/Samples_pl...dbus%20TCP.zip конфигурация ПЛК битая.
ага, а кому ПК отвечать будет если требуется ответ от слейва ? на деревню дедушке ?
И так рассказываю что получилось на данный момент.
На контроллере сфконфигурирован Modbus master и он даже общается с написанным мною сервером на ПК, но толком получается работать только с типов WORD, по строкам при передаче половина данных теряется или доходит не за один раз при слабом канале. Но строки пол беды, как работать с типом real я вообще не понимаю))
Дело в том что на сервер приходит набор (массив) байт, что чему соответсвует я не понмаю
прикладываю таблицу того что увидел при экспериментах
0.5=, 0,3,0,32,4,0, 0, 0, 63,
1.0=, 0,3,0,32,4,0, 0, 128,63,
1.5=, 0,3,0,32,4,0, 0, 192,63,
2.0=, 0,3,0,32,4,0, 0, 0, 64,
2.5=, 0,3,0,32,4,0, 0, 32, 64,
3.0=, 0,3,0,32,4,0, 0, 64, 64,
3.5=, 0,3,0,32,4,0, 0, 96, 64,
4.0=, 0,3,0,32,4,0, 0, 128,64,
4.5=, 0,3,0,32,4,0, 0, 144,64,
5.0=, 0,3,0,32,4,0, 0, 160,64,
5.5=, 0,3,0,32,4,0, 0, 176,64,
6.0=, 0,3,0,32,4,0, 0, 192,64,
6.5=, 0,3,0,32,4,0, 0, 208,64,
7.0=, 0,3,0,32,4,0, 0, 224,64,
7.5=, 0,3,0,32,4,0, 0, 240,64,
8.0=, 0,3,0,32,4,0, 0, 0, 65,
8.5=, 0,3,0,32,4,0, 0, 8, 65,
9.0=, 0,3,0,32,4,0, 0, 16, 65,
9.5=, 0,3,0,32,4,0, 0, 24, 65,
10.0=,0,3,0,32,4,0, 0, 32, 65,
16.0=,0,3,0,32,4,0, 0, 128,65,
16.1=,0,3,0,32,4,205,204,128,65,
16.2=,0,3,0,32,4,154,153,129,65,
16.3=,0,3,0,32,4,102,102,130,65,
16.3=,0,3,0,32,4,51, 51, 131,65,
16.5=,0,3,0,32,4,0, 0, 132,65,
16.6=,0,3,0,32,4,205,204,132,65,
16.7=,0,3,0,32,4,154,153,133,65,
16.8=,0,3,0,32,4,102,102,134,65,
16.9=,0,3,0,32,4,51, 51, 135,65,
32.0=,0,3,0,32,4,0, 0, 0, 66,
32.1=,0,3,0,32,4,102,102,0, 66,
32.2=,0,3,0,32,4,205,204,0, 66,
32.3=,0,3,0,32,4,51, 51, 1, 66,
32.4=,0,3,0,32,4,154,153,1, 66,
32.5=,0,3,0,32,4,0, 0, 2, 66,
32.6=,0,3,0,32,4,102,102,2, 66,
32.7=,0,3,0,32,4,205,204,2, 66,
32.8=,0,3,0,32,4,51, 51, 3, 66,
32.9=,0,3,0,32,4,154,153,3, 66,
33.0=,0,3,0,32,4,0, 0, 4, 66,
Умножай в программе ПЛК переменную типа REAL на 100 или 1000 (в зависимости от того сколько цифр после запятой хочешь иметь в итоге), преобразуй в DWORD и предавай в ПК. В приложении для ПК делай обратные преобразования.
Это я и сделал пока, но решение то на костыле))), и DWORD приходит странновато на сервер, например максимальное число для DWORD записываю в переменную на контроллере и на сервер приходи два числа 65535))). Не пробовал ли кто нибудь строки передавать длинной под 50 символов
Модбас-мастер — который в конфигураторе — делает отдельный запрос на каждый регистр. С этим можно жить на прямом соединении, но через сотовый канал это наверняка тяжко. Выход — запрашивать сразу весь диапазон одной строкой и строку парсить как байтовый массив.