PDA

Просмотр полной версии : Не удаётся связаться со сторонним оборудованием



Boris_K
25.09.2014, 15:38
Сразу оговорюсь, случай не типичный.

Есть измеритель скорости напыления (если интересно, вот он: http://sycon.com/product_info.php?n=STM-2), у него интерфейс USB, предназначен для подключения к компьютеру, питается от него же (через USB-разъём), но работает с виртуальным COM-портом (то есть на компе стоит драйвер виртуального COM-порта). Штатная программа, которая идёт с прибором, нормально связывается с ним и мониторит все параметры процесса.

Мне нужно связаться с ним из ПЛК (ПЛК100), по RS-485. В инструкции к прибору описан протокол обмена и настройки порта (т. е. виртуального порта), думаю, так как всё равно работа с ним программно реализуется именно как с COM-портом, а про USB можно ничего и не вспоминать, то можно попробовать связаться, через преобразователь интерфейса USB-RS-485 (юзал овеновский АС4). Конечно, так как девайс и преобразователь питаются от порта компа, то соединив их USB-кабелем, оставим их без питания. Поэтому я из двух обрезков кабелей сколхозил провод с нужными разъёмами и выводами для внешнего источника питания 5 В, проверил, с компом связь нормально работает.

Полной уверенности конечно не было, но решил попробовать, из ПЛК100 программно опрашиваю девайс по его протоколу (ранее уже работал программно со сторонними протоколами, так что тут проблем не было), но от этого не добился никакого ответа. В техподдерже написали, что он просто не предназначен для обмена по RS-485.

По идее тут должно быть по барабану на аппаратный уровень, так как прибор уже на своём программном уровне работает с COM-командами, а не с USB-интерфейсом. Интересно было бы узнать, что тут принципиально не срослось. :confused:

ASo
25.09.2014, 16:25
В том, что по проводам DATA+-интерфейса USB бегают не теже сигналы и пакеты, что по интерфейсу RS-485.
Поэтому - начните с узнавания, какая микросхема преобразователя COM-USB установлена в приборе.

Дмитрий Артюховский
25.09.2014, 16:50
не получится принципиально, преобразователь DEVICE а не HOST, а USB ранговая сеть, там свой мастер (HOST) должен быть

Boris_K
25.09.2014, 18:40
Дмитрий Артюховский, спасибо за инфу. ЧСХ, в Педивикии про USB приличная статья, а про эту фундаментальную особенность - ни слова, по крайней мере, в русской.

Поискал преобразователи, работающие как Host, что-то не густо.

ASo
25.09.2014, 18:56
Повторяю подробнее, если не поняли из текста.
Если гарантия и прочее не важна, то вскройте прибор, найдите микросхему конвертора USB-RS. Посмотрите даташит на нее. Выпаяйте микросхему и соберите обвязку за ней, реально это будет чтото типа MAX485.

Boris_K
25.09.2014, 19:09
ASo, хотите сказать что у микросхемы, работающей как device, есть возможность перевести её в режим host? И вряд ли будет простым перепаивание вручную с новой обвязкой, должны же быть и готовые модели. Но что-то не нашёл host-преобразователей.

ASo
25.09.2014, 19:26
Сомневаюсь, что найдете такие преобразователи. Ибо никому не нужно.

Перевести микросхему в режим host нельзя. Я имею ввиду следующее.
Очевидно, был или есть прибор с подключением по RS-232 или подобному. В связи с исчезновением данных интерфейсов в него вместо драйверов RS-232 воткнули преобразователь USB-COM(TTL уровни).
Чтобы взять пример, берем ОВЕНовский АС4, он собран на http://www.silabs.com/products/interface/usbtouart/Pages/usb-to-uart-bridge.aspx CP2102.
Выпаиваем, ставим MAX485 - и подключаем.

Boris_K
25.09.2014, 20:21
А откуда инфа что MAX485 будет работать как host? Посмотрел я её даташит, там вообще не сказано ни про какие режимы.

Вольд
26.09.2014, 10:04
В соединении двух устройств по USB одно из устройств должно быть «хостом». В данном случае ни одно из устройств таковым не является, по этой причине из этой затеи ничего не получится.

Вольд
26.09.2014, 11:05
Набери в поисковике Как сделать USB-Host и найдешь кучу ответов. Может поможет.

Дмитрий Артюховский
26.09.2014, 11:54
А откуда инфа что MAX485 будет работать как host? Посмотрел я её даташит, там вообще не сказано ни про какие режимы.

Она не будет работать как host никак, вам предлагают другое: внутри прибора, возможно, есть микросхема, которая выполняет роль моста между собственно прибором и шиной USB. Вам предлагается по цоколевке найти сигналы RXD и TXD от прибора и вывести их на свой собственный адаптер RS-485. Вероятность есть но небольшая, ибо интерфейс USB может быть уже интегрирован внутрь контроллера прибора. Вторая проблема в том что для интерфейса RS-485 нужны дополнительно сигналы управления дуплексом, отсутствующие в простых RS-232.. ну или 2 порта 485 использовать.

В общем грустная идея. Возьмите лучше нетбук и напишите програмку работы на нем, а не на ПЛК-100.

Boris_K
26.09.2014, 11:57
Набери в поисковике Как сделать USB-Host и найдешь кучу ответов. Может поможет.
Нет, это направление ведёт в совсем другие сферы, в смартфоны и компы. И вообще, Вольд, хватит себе посты набивать.


В общем грустная идея. Возьмите лучше нетбук и напишите програмку работы на нем, а не на ПЛК-100.
Так бы и сделал, но всей установкой и процессами должен управлять ПЛК, по возможности без задействования компов.

Дмитрий Артюховский
26.09.2014, 13:05
дык, есть модель STM-1 - вроде тоже самое, только на RS-232/485 сделан.. заказать наверно быстрее чем хост колхозить ))) а вообще есть гейты USB - ENTERNET

Boris_K
26.09.2014, 13:34
Да, есть STM-1, STM-2XM и через полгода должен выйти STM-3, они все мне подходят, STM-3 даже Модбас поддерживает. Только вот жаль что STM-1 уже снят с производства, а остальные два по габаритам, массе (и цене) в разы превосходят этот. А других производителей аналогичных устройств как-то совсем не много.

Boris_K
07.10.2014, 20:42
а вообще есть гейты USB - ENTERNET
То есть USB-Ethernet? И как мне это поможет, разве в ПЛК100 можно открывать Ethernet-порт и опрашивать по нему?

Вольд
08.10.2014, 10:17
То есть USB-Ethernet? И как мне это поможет, разве в ПЛК100 можно открывать Ethernet-порт и опрашивать по нему?
С Ethernet ничего не получится. Ethernet в конфигураторе ПЛК100 может быть только Slave.

Дмитрий Артюховский
08.10.2014, 10:53
чей-то ? библиотека SysLibSocket и хоть дата-центр поднимай...

Вольд
08.10.2014, 11:07
чей-то ? библиотека SysLibSocket и хоть дата-центр поднимай...
А преобразователи Ethernet to USB в природе существуют ? Преобразователей USB to Ethernet полно.

petera
08.10.2014, 12:17
С Ethernet ничего не получится. Ethernet в конфигураторе ПЛК100 может быть только Slave.Мастер есть, только он представлен не явно. Не смотря на то, что порта TCP нет в настройках мастера, нужно просто задать NetMode -TCP для Universal Modbus device.
14661
Смотреть пример на диске
14662
Или здесь http://kipshop.ru/Primeri/Samples_plc1xx/Communication/02_Modbus%20TCP.zip в разделе Примеры программ http://www.owen.ru/forum/showthread.php?t=13588)

Дмитрий Артюховский
08.10.2014, 12:31
"А преобразователи Ethernet to USB в природе существуют ? "

http://insat.ru/prices/info.php?pid=6970 - например такой, просто они не продаются в галантерейных киосках )))

Boris_K
15.12.2014, 14:28
Всё, проблема решена, причём самым брутальным способом :)

15729
15730

Всё отлично работает. Вкратце, перерезал одну дорожку на плате, нашёл на плате микросхему с TTL-сигналами, до преобразования в USB, подпаялся к ней через преобразователь TTL-RS485 (с автоопределением направления передачи), резисторы для согласования напряжения. Спасибо знающим людям на одном компьютерном форуме.

Boris_K
24.12.2014, 09:58
В таком решении единственное, что вначале было источником проблем (пока не догадался в чём дело) - перед отправкой нового запроса в прибор нужно дать небольшую задержку (после его последнего ответа) - если я опрашивал просто в следующем цикле ПЛК (через 10 мс), то устройство не отвечало (в течение всего таймаута после этого), но при > 20 мс работает идеально. Подозреваю, дело не в девайсе, а в преобразователе сигналов, видимо ему нужно это время, чтобы он перенастроился с передачи снова на приём.