kristow13
Новичок
- Сообщения
- 76
- Репутация
- 0
Версия AutoIt: 3.3.6
Описание:
Есть прибор, он работает по протоколу modbus TCP.
Заводская прога умеет опрашивать этот прибор, но она не сохраняет полученные данные в базе SQL.
Поэтому я хочу написать прогу на autoit для запроса параметров и сохранения их в ms sql.
C работой чтения и записи ms sql я разобрался, все работает.
А вот с протоколом modbus TCP раньше не работал.
Из описания понятно что надо сформировать запросы на чтение из ячеек. Затем получить ответ, посчитать контрольную сумму, и расшифровать полученный ответ. Ну и записать в базу... :whistle:
Я прикрепил протокол обмена прибора http://yadi.sk/d/vXqAOh-GPGGv7. Оттуда я хочу читать текущие показания и архивы из прибора.
Помогите с написанием кода :-[
Спасибо за помощь!
Вот так я хочу выполнять коннект, соединение проходит, но вот не понятно улетает что-то:
Описание:
Есть прибор, он работает по протоколу modbus TCP.
Заводская прога умеет опрашивать этот прибор, но она не сохраняет полученные данные в базе SQL.
Поэтому я хочу написать прогу на autoit для запроса параметров и сохранения их в ms sql.
C работой чтения и записи ms sql я разобрался, все работает.
А вот с протоколом modbus TCP раньше не работал.
Из описания понятно что надо сформировать запросы на чтение из ячеек. Затем получить ответ, посчитать контрольную сумму, и расшифровать полученный ответ. Ну и записать в базу... :whistle:
Я прикрепил протокол обмена прибора http://yadi.sk/d/vXqAOh-GPGGv7. Оттуда я хочу читать текущие показания и архивы из прибора.
Помогите с написанием кода :-[
Спасибо за помощь!
Вот так я хочу выполнять коннект, соединение проходит, но вот не понятно улетает что-то:
Код:
TCPStartup();Инициировать использование службы TCP
$IP = '109.xx.xx.xx';Указываем адрес к которому будем подключаться (Указываю внешний адрес)
$port = 50202;Указываем порт к которому будем подключаться
$socket = TCPConnect($IP, $port);Указыываем ОС создать сокет, подключенный к указанному адресу
$dannie = InputBox('','','');Окно, которое принимает данные для отправки.
;$rez = TCPSend($socket, $dannie);Отправляем данные на сервер
$rez = TCPSend($socket, BinaryToString("00 04 00 00 00 06 00 04 00 70 00 02;"))
If @error <> 0 Then msgbox(0, "Ошибка", "Не удалось отправить данные на сервер")
Sleep(100)
Local $sReceived = TCPRecv($socket, 10) ;we're waiting for the string "toto" OR "tata" (example script TCPSend): 4 bytes length.
; Notes: If you don't know how much length will be the data,
; use e.g: 2048 for maxlen parameter and call the function until the it returns nothing/error.
; Display the string received.
MsgBox(0, "", "Received : " & $sReceived)
TCPCloseSocket($socket);Закрываем сокетc
TCPShutdown();Завершить использование службы TCP