|
Вопросы о SMH-2G(i) Здесь всё, что касается работы контроллера SMH-2G(i). |
|
Опции темы | Поиск в этой теме |
07.08.2013, 12:07 | #1 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Модбас через TCP
Столкнулся с проблемой.
Не могу достучаться до SMH-2Gi через виртуальный COM порт подключенный к контроллеру по TCP. Lectus Modbus OPC по modbus TCP читает данные с контроллера без проблем, но требуется опрос контроллера устройством именно через COM порт подключенный по RAW TCP. При попытке в Лектусе выставить режим Modbus через TCP ответы контроллера также пропадают. В чем может быть проблема? |
07.08.2013, 13:04 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Расскажите мне, пожалуйста, что такое сырой TCP сокет? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
07.08.2013, 14:14 | #3 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Это исключено - с программой VSPE (Virtual Serial Ports Emulator) работаю давно. Да и устройство давно опробовано. И то и другое без проблем работают по TCP с MOXA DE-311.
Чтобы не перевирать.. Последний раз редактировалось Arsie, 07.08.2013 в 15:50 |
07.08.2013, 15:39 | #4 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Либо моё непонимание __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
07.08.2013, 16:34 | #5 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Да Raw TCP вроде и не обсуждали...
Фактически имеем ТСР клиента, который подключается к контроллеру по заданному порту и IP адресу. Данные по протоколу Modbus RTU с заданным адресом передаются клиенту через виртуальный COM порт. Запросы уходят- ответов нет. Должен ли контроллер работать в режиме Modbus через TCP? Или наличие контрольной суммы в исходном пакете сбивает его с толку? |
07.08.2013, 16:39 | #6 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Тогда давайте так: TCP-слиент отсылает ЧТО контроллеру? Заодно неплохо бы рассказать о номере "заданного" порта и открыт ли этот порт в сетевом экране компьютера. Ещё неплохо бы присовокупить описание, насколько поддерживает RAW socket ваша операционная система. Отмечу заранее, что TCP-клиент работает по протоколу TCP, поэтому он и называется TCP-клиентом, а не как-то иначе. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 07.08.2013 в 17:01 |
|
07.08.2013, 17:32 | #7 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Цитата:
Raw TCP используется устройством которое должно считать данные с контроллера и к моей операционке отношения не имеет. Кстати, это устройство тоже может опрашиваться через TCP соединение по Modbus протоколу. И поверьте это не раз делалось с помощью того-же TCP клиента и виртуального COM порта (VSPE) Конкретно - читаем 01 04 00 00 00 08 и с контрольной суммой F1 CC Сейчас проверил и MasterOPC Universal Modbus Server читает все аналогично Лектусу и не читает при включении режима Modbus поверх TCP |
||
07.08.2013, 17:38 | #8 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
На многих операционках RAW socket на уровне стека запрещены или очень ограничены, поэтому у меня есть определённые сомнения в том, что они применяются в вашей программе. Ваше прямое сравнение RAW socket с Modbus-TCP лишь подтверждает мои сомнения. Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||
07.08.2013, 17:56 | #9 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Цитата:
в поле данных адрес slave | код функции | данные | контрольная сумма |
||
07.08.2013, 18:04 | #10 | |||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Теперь перейдём к SMH-2Gi. По 502 порту драйвер Modbus логично ожидает вполне конкретного пакета, по формату соответствующему Modbus-TCP. Ведь это порт Modbus-TCP, а не чего-либо иного. Пакет данных "адрес slave | код функции | данные | контрольная сумма" соответствует пакету Modbus-TCP? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|||
08.08.2013, 00:21 | #11 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Понял что ничего страшного я не сказал.. И кстати из программ: Untitled.png Untitled1.png Цитата:
Для протокола Modbus TCP выглядит следующим образом: ид транзакции | ид протокола | длина пакета | адрес slave | код функции | данные где ид транзакции - два байта, обычно нули ид протокола - два байта, нули длина пакета - два байта - длина следующей за этим полем части пакета адрес slave - адрес подчинённого устройства, к которому адресован запрос. Обычно игнорируется, если соединение установлено с конкретным устройством. Может использоваться, если соединение установлено с бриджом, который выводит нас, например, в сеть RS485. Поле контрольной суммы в Modbus TCP отсутствует. |
||
08.08.2013, 00:56 | #12 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Итак
Соединимся с контроллером Untitled3.png (порт совсем не обязательно 502) Запросим 01 04 00 02 00 10 с контрольной суммой Untitled2.png - нет ответа Посылаем с преамбулой 00 00 00 00 00 06 01 04 00 02 00 10 Untitled4.png и вот он ответик долгожданный Ответ однозначный - контроллер Modbus поверх TCP пока не поддерживает. Последний раз редактировалось ATS, 08.08.2013 в 01:18 |
08.08.2013, 10:22 | #13 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Modbus-RTU он не может соответствовать, т.к. поле данных обрамлено служебными полями TCP.
А вот "Modbus поверх TCP" - вполне. Т.к. налицо инкапсуляция. Но тут нарушено главный принцип: устройства по оба конца провода должны играть по одним и тем же правилам. Контроллер ждёт Modbus-TCP и скармливать ему что-либо иное априори не имеет смысла. Цитата:
Вы ставили в пример бридж MOXA DE-311, для которого (как и для других бриджей) "Modbus поверх TCP" и придуман Понятное дело, что в этом случае он становится "Виртуальным СОМ-портом", т.к. драйвер всё приходящее в себя тупо запихивает в пакет TCP, приняв который MOXA DE-311 не менее тупо его выпихивает себе на разъём безо всякой обработки. Но контроллер-то не бридж. И ему не нужно ничего никуда выпихивать. Этот же вывод можно было сделать просто прочитав описание контроллера __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 08.08.2013 в 10:33 |
|
08.08.2013, 11:32 | #14 | |||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Возможно не досмотрел - сегодня неделя как 2Gi на столе появился.
Пока впечатления очень положительные Цитата:
Цитата:
Для программиста здесь задачка совсем простая - если в данных нет: ид транзакции | ид протокола | длина пакета | проверяем адрес slave и если это адрес контроллера обрабатываем запрос как обычно для COM и RS485. Ответ формируем как для COM и RS485 Цитата:
А я бы советовал добавить в SMLogix для COM1 и COM2 кроме Slave еще и Bridge (естественно на выбор и возможно даже с другим Tcp портом) по которому любые данные из ТCP портов выпихиваются во внешние интерфейсы и полученные данные отправляются обратно (тупо как MOXA DE-311) Пример: Автоматизируем теплопункт при помощи 2Gi без использования слейвов. Кроме автоматики имеем и приборы учета (это мне близко). При наличии режима бридж через 2Gi имеем доступ к приборам через Ethernet и через подключенные модемы GPRS да еще с возможностями Open VPN. Это однако будет продаваемо. |
|||
08.08.2013, 11:48 | #15 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
В результате, с режимом "бридж" мы получаем бонус в виде поддержки драйверами всех операционных систем + несколько раз в год эти драйверы нужно тестировать и поддерживать из-за того, что очередная заплатка Микрософта или Касперского (Нортона, Есета, Веба и т.д.) закрывая очередную дыру в операционке блокировала работу какой-либо нужной драйверам функции. Можно конечно кивнуть на OPC-сервер с его режимом "Modbus поверх TCP" или на ваше устройство, типа они без драйвера работают. Но тут встаёт необходимость конфигурации портов и их времянок. Т.е. всё равно реализация полноценного бриджа ради немногочисленных применений. Немногочисленных из-за отсутствия поддержки виртуального COM драйверами. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
08.08.2013, 12:25 | #16 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Никаких драйверов. Настраивается она один раз отдельно (IP, Port, параметры внешнего интерфейса) либо при желании через Telnet. Далее требуется только IP и порт для доступа к ней. Все это реализовано во многих системах диспетчеризации. И для доступа к приборам - только IP и порт. Уж поверьте... Цитата:
Совсем не соглашусь - возможны очень многочисленные. |
||
08.08.2013, 12:32 | #17 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Если нужен доступ ко внешнему устройству Modbus-RTU: выбрать нормальный Modbus-TCP и средствами FBD переправить поток на один или оба встроенных COM-порта, попутно получив наши штатные фенечки, которые не умеет ни один бридж - независимые скорости и форматы кадра для каждого отдельного устройства. В итоге получаем, что бридж нужен только там, где он действительно нужен - в виртуализации СОМ-портов. Ну и в помощи устройствам, где программисты зачем-то "забыли" встроить нативный Modbus-TCP, но почему-то не забыли об инкапсуляции. PS. Несколько MOXЛ (так на их коробках пишут - А без палки ) у меня на полке лежит. Разных __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
08.08.2013, 13:20 | #18 | |||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Но это только для Modbus насколько я понимаю Если бы все пользовались только им... Цитата:
Цитата:
У меня даже на столе лежат да и на объектах стоят. Вот и хотелось заменить их и устройства с аналоговыми и дискретными входами (с Modbus) в дальнейшем на SMH 2Gi. При этом добавив за счет дисплея и обработки данных дополнительные полезняшки для заказчика. И кстати деньги существенно экономятся. |
|||
08.08.2013, 13:24 | #19 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Давайте заостримся на этой задаче.
Какие именно теплосчётчики (модели, из очень распространённых), по каким протоколам они работают и с каким софтом и как они работают? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
08.08.2013, 13:33 | #20 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Из используемых у нас:
Интелприбор - МКТС ТБН Энерго - РМ-5, КМ-5 всех модификаций Логика - СПТ961.2 СПГ761 Теплоком - ВКТ7 Интерфейсы RS 232 и RS485 а вот протоколы - кто во что горазд... |
08.08.2013, 13:40 | #21 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Софт?
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
08.08.2013, 13:53 | #22 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
|
08.08.2013, 13:57 | #23 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Как софт осуществляет доступ к этим теплосчётчикам?
PS. С темой я потом разберусь __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
08.08.2013, 15:30 | #24 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Пока по CSD. Часть по сети через Моксы.
|
08.08.2013, 15:55 | #25 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
CSD и Моксы - это всего лишь каналы передачи данных. Причём в случае CSD я так понимаю, что с двойной или тройной инкапсуляцией.
Меня больше интересует, как софт физически хочет работать со счётчиками. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
09.08.2013, 13:39 | #26 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
|
09.08.2013, 14:14 | #27 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Софт для счётчика рассчитан на работу с COM-портом, протокол ХХХ. Следовательно нужен драйвер, инкапсулирующий ХХХ в TCP и тогда связка Софт + драйвер + 2Gi + Теплосчётчик оказывается рабочей. Вариант2: Софт уже умеет отправлять XXX, инкапсулированный в протокол TCP и поэтому драйвер не нужен. Для второго варианта нужна статистика - сколько такого софта существует и для каждого ли теплосчётчика. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
09.08.2013, 15:13 | #28 | |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Интересно бы найти определение этому XXX
Пример запроса текущего времени для ВКТ-7: FF FF 00 03 3F FB 00 00 39 FE Ну вроде совсем модбас - вот только два байта FF картинку портят, хотя и не входят в контрольную сумму Инкапсулировать в протокол TCP может бОльшая часть софта да и драйвер не проблема. Цитата:
особено в этой части: средствами FBD переправить поток на один или оба встроенных COM-порта P.S. виноват подтормаживаю - работу никто не отменял Последний раз редактировалось ATS, 09.08.2013 в 15:34 |
|
09.08.2013, 15:49 | #29 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Драйвер вы под все операционки напишете и сопровоздать его тоже вы будете? Цитата:
Всё то же самое, только на стороне слейва вместо аппаратных входов-выходов ставите программные, т.е. переменные. Грубо говоря, у вас получится два мастера и две сети. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||
09.08.2013, 16:32 | #30 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 794
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Модбас через TCP
Цитата:
Или желаем перекодировать в Modbus TCP? Цитата:
модбас счет переменных может идти на сотни. А зачастую просто неизвестно какие данные может запросить стандартный софт. |
||