Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
Добрый день, уважаемая техподдержка. Подскажите, пожалуйста, как быть в такой ситуации. Имеются конвейерные весы с непонятным протоколом обмена следующего вида(запрос-ответ): синхробайт/длина пакета без КС/адрес весов/адрес ведущего ус-ва/команда/адрес переменной/данные/КС. Этакая смесь ModBus'а с непонятно чем. Какими средствами ТМ я могу получать данные с такого устройства?
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Посмотрите раздел "Обмен по произвольному протоколу по RS". Только контрольную сумму считать и подставлять придется самостоятельно.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
А можно какой-нибудь пример работы с t11? Потому что после прочтения хелпа все стало еще больше непонятно. На сайте адастры я примеров не нашел, хотя вроде бы раньше они там были. мыло karabutoleg@mail.ru
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Любой обмен с модулями, например, I-7000 или по Modbus RTU использует спецификацию драйверов Type11.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
Добрый вечер, уважаемая техподдержка! Обмениваться по произвольному протоколу по RS я научился но возникли вопросы. Если мне надо опросить трое весов со своими адресами, то следовательно в запросе надо менять их адрес. Но в помощи написано, что аргументы канала call, не должны иметь привязки. Следовательно, получается запрос на опрос одних весов. Привязку я все-таки делал и менять адреса получалось, но плохо, что опрос идет непрерывно. Как мне сделать так, чтоб запрос происходил только когда мне надо? Изменение периода опроса канала call ничего не дает. Связь прекращается только когда канал выключаешь. Подскажите, пожалуйста.
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Аргументы канала CALL, реализующего запрос по произвольному протоколу RS, не должны сами непосредственно привязываться к чему-нибудь. Но можно осуществить привязку к ним, например, со стороны аргументов CALL, вызывающего программу.
2. Можно задать каналу, опрашивающему "Источник", период "Однократно" и включать его (сбрасывать атрибут СОСТОЯНИЕ в 0) по определяемому Вами событию.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
Подскажите, а возможно ли использовать com порт в ТМ как Slave? То есть, передавать данные от ТМ в другую систему по запросу?
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Можно. Но надо писать отдельный драйвер. Сложность драйвера будет зависеть от протокола обмена.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
Возник еще один вопрос. Работаю по RS по своему протоколу. Посылаю запрос с помощью аргументов типа STRING. Все посылается нормально. В ответ посылаю 1,2,3 (например) тоже в аргументы типа STRING и ничего не получаю. Хотя портмон показывает, что данные приняты и связь не пропадает. Меняю тип на USINT и все получаю нормально. Но это числа, а не символы. Не хочется писать преобразование из hex v acsii. И что это за странная фраза в хелпе:"В 1-байтовый приемный аргумент пишется 1 байт данных в 2-байтовом формате, при этом значение старшего байта МРВ не контролирует."? Посмотрел call.vector, но это если команда одна, то хорошо, а если разные?
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Вы используете механизм "Обмен по произвольному протоколу по RS"?
"В 1-байтовый приемный аргумент пишется 1 байт данных в 2-байтовом формате, при этом значение старшего байта МРВ не контролирует." означает, что при обяъвленном типе данных в приемном аргументе SINT или USINT принятый результат будет будет записан в аргуммент в виде 2-байтового числа, в котором принятый байт будет помещен в младший байт, а старший байт - не контролируется.
В каком формате Вы в ответе посылаете числа? В текстовом или числовом? Драйвер "Обмен по произвольному протоколу по RS" устарел, механизм работы со строковыми аргументами не был завершен.
При работе с ASCII-протоколами целесообразно использовать каналы VECTOR.
Если при использовании механизма канала Vector у Вас несколько команд, то Вам надо создавать несколько шаблонов или варьировать значения атрибутов удаленного адреса, чтобы модифицировать посылаемые команды.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
Посылаю 1 как 0x31, получается в числовом. Далее привязываю его к аргументу стринг экрана, но вижу не 1,а dec(0x31). Про несколько шаблонов ясно, а вот "варьировать значения атрибутов удаленного адреса, чтобы модифицировать посылаемые команды" не совсем. Вы имеете в виду поле Дополнительно в канале в Источниках приемниках? Разве к нему есть динамический доступ?
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
" SENDCMD=<команда> – набор байтов в формате HEX без префикса "0x" для посылки (для бинарных и ASCII протоколов). Кроме 0..F, набор может содержать следующие предопределенные выражения/символы: c<0..5> – подставляется соответствующий байт удаленного адреса ((93, C0)..(98, C5)); i<0..2> – подставляется соответствующее слово удаленного адреса ((90, I0)..(92, I2)); I<0..2> – то же, что i<0..2>, но в ((90, I0)..(92, I2)) меняется порядок следования байтов; "
Если заданы соответствующие ключи в тексте команды, изменение атрибутов 90, ..., 98 в реальном времени позволяет несколько модифицировать текст посылаемого запроса.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kollega
Forum Haunter / Завсегдатай форума
Участник № / Member № 4097
отправлено / posted
Уважаемая техподдержка! Начал разбираться с СALL.Vector, чтобы получить строку по RS. Ознакомился с Вашим примером на сайте. Все пошло нормально. Теперь мне надо получить строку такого вида"0R1,Dn=236D<cr><lf>". Думал по аналогии с СALL.ChGroupReq добавлять аргументы, но записывает только в первый. Как мне получить строковый ответ? HELP, очень важно. Строка может быть произвольной длины.
Сообщения / Posts 120 | Из / From: Украина
| IP / IP: IP адрес / IP address |