This is topic Beckhoff. Связь по протоколу ADS in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/43/t/000055.html

Posted by intellis (Участник № / Member № 2383) on :
 
Здравствуйте, уважаемая техподдержка! Мы пытаемся наладить связь по ADS между контроллером BC9020 и Trace Mode. Проблема в следующем. В контроллере в области прямоадресуемой памяти объявлена переменная INT длиной 2 байта по адресу 10. Для того, чтобы прочитать эту переменную из Trace Mode, настраиваем драйвер T12 следующим образом
Параметр #1(B) - 0x1
Параметр #2(B) - 0x0
Параметр #3(W) - 0x4020
Параметр #4(W) - 0xa
Направление - Input
Тип данных - Integer
Дополнительно - BECKHOFF:ID=192.168.3.2.1.1;Port=800;
Аргумент экрана - INT. Проблема в том, что значение выводится на экран, но побайтно, то есть выводится только значение 10 байта, а переменная двухбайтная и занимает 11-й байт тоже. В принципе можно склеить значения 2-х байтов и получить желаемый результат, но удваивается количество каналов в проекте. Подскажите пожалуйста, в чем моя ошибка?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Аргумент экрана должен быть привязан к каналу HEX16, который связан с указанным "Источником".
2. Параметр #1(B) - 0x1 означает, что Вы принимаете переменную размером 1 байт.
Вы не пробовали поставить Параметр #1(B) - 0x2?
 
Posted by intellis (Участник № / Member № 2383) on :
 
Спасибо, после отработки пункта 2 все заработало! Настраивал связь по видеопримеру подключения Beckhoff и даже не догадывался, что Параметр #1(B) означает количество байт. Спасибо за качественную техподдержку!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправил описание драйвера.
 
Posted by intellis (Участник № / Member № 2383) on :
 
Спасибо, получил.
 
Posted by intellis (Участник № / Member № 2383) on :
 
Здравствуйте, уважаемая техподдержка! Чтобы не плодить темы, продолжу здесь. При увеличении источников, связанных с контроллером BC9020 по протоколу ADS (в узле планируется около 1500 источников) очень сильно упала скорость обмена с контроллером. Данные обновляются примерно 1 раз в 10 секунд, это касается и чтения и записи. При этом проверяли утилитой от производителя Twincat ADS Monitor, в ней обмен по-прежнему быстрый. Или драйвер Beckhoff в Trace Mode рассчитан на небольшое количество источников?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вам надо организовать связь групповыми запросами через каналы ChGroupReq, как указано в переданном Вам описании драйвера.
 
Posted by intellis (Участник № / Member № 2383) on :
 
Спасибо за ответ. Пока получилось вывести несколько аналоговых сигналов. В связи с этим несколько вопросов.
1. Возможно ли через Call.ChGroupReq не только собирать данные, но и задавать значения в контроллер (у меня пока не получилось).
2. Какое оптимальное количество параметров без потери скорости обмена можно передавать через Call.ChGroupReq.
3. Что делать с масштабированием аналоговых сигналов, которые я обычно выполнял в канале типа Float? Пока два варианта: каждый аргумент Call.ChGroupReq перенаправлять на каналы Float, второй - через программу в TM.
 
Posted by intellis (Участник № / Member № 2383) on :
 
Поправка ко второму вопросу. Имелось в виду, сколько параметров без потери скорости обмена можно передавать через ОДИН канал Call.ChGroupReq
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Групповая запись в драйвере не предусмотрена.
2. Методического ограничения на количество переменных, запрашиваемых групповым образом через 1 канал ChGroupReq, нет.
Надо только учитывать, что чем длиннее кадр, тем больше вероятность появления ошибки в ответе и, следовательно, больше вероятность переспросов. За счет этого может снизиться производительность. Других причин для снижения скорости обмена я не вижу.
3. Если полученные групповым запросом переменные Вам не надо архивировать, обрабатывать для посылки сообщений в ОТ и пр., то, видимо, линейное преобразование для отображения на экране или в документе можно произвести и в программе.
Если Вам для каких из этих переменных все-таки понадобятся каналы, то линейное преобразование можно произвести в их штатных внутренних процедурах обработки.
 
Posted by intellis (Участник № / Member № 2383) on :
 
Спасибо за ответ, будем пробовать.
 
Posted by intellis (Участник № / Member № 2383) on :
 
Подключил все входные сигналы (более 500) через Call.ChGroupReq, с аргументов Call.ChGroupReq на обычные каналы и все заработало на ура! При том, что в узле около 500 выходных сигналов, которые выводятся обычном образом, без Call.ChGroupReq, время обмена с контроллером не более секунды.
 
Posted by ivostrikov (Участник № / Member № 4308) on :
 
Пришлите, пожалуйста описание драйвера BECKHOFF на mrven@mail.ru
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Для связи с Twin-Cat используется

Пользовательский драйвер типа 12 подтипа 1.

t12s114.dll - драйвер должен быть размещен рядом с исполняемыми файлами Trace Mode.

tsadsdll.dll и прочие dll от Twin-Cat должны быть инсталлированы и зарегистрированы.

Допускается линковка "Источников" на Call.ChGReq.

НАСТРОЙКИ "Источников/Приемников".

Параметр1: тип операции
255 - чтение кода ошибки возвращаемого API - 1 целое
16 - чтение статуса nAdsState,nDeviceState - 2 целых


если источник залинкован на канал (тип In/Out задает операцию чтения.записи)
0,
(с доступом по имени - не обязательно) - 1 4х байтовая переменная
формат плавающий или целый задается каналом(FLOAT,HEX)
1,2,3,4
(с доступом по адресу - не обязательно) - парам3=indexGroup,парам4=indexOffset
длина данных= (парам1)
размер элемента = 1,2,,4


если источник залинкован на Call.ChGReq
0, при конвертации превращается в 5,6,7,8 в зависимости от типа аргумента
5,6,7,8,9
с доступом по имени или по адресу к массиву
длина данных= (парам1-4)*(число аргументов в канале)
размер элемента = 1,2,,4(float),4(INT32)

Параметр2: - номер контроллера (от 0 до 255)
Параметр3: - indexGroup
Параметр4: - indexOffset

Поле ДОПОЛНИТЕЛЬНО:
Если ID и/или Port не заданы, то используеся локальный и 801

Name=имя_параметра - (обязательно, в случае задания ID и/или Port - не обязательно)

<BECKHOFF> - у всех каналов обязательно
<BECKHOFF:Name=имя_параметра> - у каналов с доступом по имени
<BECKHOFF:ID=NN.NN.NN.NN.mm.mm;Port=ppp;Name=имя_параметра;> - у каналов
с доступом по имени
Разделитель <;> - обязателен.

коды TRACE MODE

ERR_RT_CONNECT=17 - библиотека TsAdsDll.dll не загружена
ERR_RT_NOTFOUND=12 - ошибка преобразования имени в адрес
ERR_RT_READ=4 - ошибка чтения
ERR_RT_FORMAT=7 - доступ по имени, а имя не определено

В RTM каналы видны как 12.114.
 
Posted by ivostrikov (Участник № / Member № 4308) on :
 
Как мне, например, считать групповым запросом через CALL.ChGroupReq 20 переменных типа INT(2 байта), начиная с адреса MB3000(indexGroup = 0x4020, indexOffset = 0xbb8)?
 
Posted by ivostrikov (Участник № / Member № 4308) on :
 
Спасибо, уже разобрался
 
Posted by Polag (Участник № / Member № 4573) on :
 
Пришлите, пожалуйста описание драйвера BECKHOFF на polygalov83@mail.ru
 
Posted by Polag (Участник № / Member № 4573) on :
 
Здравствуйте, уважаемая техподдержка! Мы пытаемся наладить связь по ADS между контроллером BC9050 и Trace Mode. Проблема в следующем. В контроллере в области прямоадресуемой памяти объявлена переменная REAL длиной 4 байта по адресу 0 (IN AT %MW0:real). Для того, чтобы прочитать эту переменную из Trace Mode, настраиваем драйвер T12 следующим образом
Параметр #1(B) - 0x4
Параметр #2(B) - 0x0
Параметр #3(W) - 0x4020
Параметр #4(W) - 0x0
Направление - Input
Тип данных - FLOAT
Дополнительно - BECKHOFF:ID=192.168.1.201.1.1;Port=800;
Аргумент экрана – IN / REAL.

Информация приходит, но число с плавающей точкой контроллером и скадой воспринимаются по-разному. Из скады пишем 54,0, в ПЛК получаем что-то подобное 2,23-045… , когда читаем из ПЛК, опять в скаде получаем 54,0.
Как решить проблему?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Не понятно каким образом производится запись в контроллер. Описанные Вами настройки используются только для чтения данных из контроллера.
Проверьте раздельно чтение и запись. Для этого создайте два источника. Первый источник с направлением input, второй - out и привяжите их к каналам типа Float. Каналы Float свяжите с аргументами.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
2Polag: Вам надо задать правильный порядок следования байт при чтении регистров в формате Float, видимо у устройства не Intel-формат для Float. Как это сделать - есть в справке по настройке источников/приемников ModBus.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
to Romcheg: причем здесь ModBus?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Как вы смотрите значения в PLC?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Прошу прощения, попутал насчет ModBus. [Улыбка / Smile] Но то, о чем я сказал - скорее всего и есть причина: перепутан формат последовательности байт при чтении Float.
 
Posted by Polag (Участник № / Member № 4573) on :
 
Здравствуйте, в первом посте все в порядке, там я описал настройки для чтения, подобные я использовал и для записи, лишь меняется направление на OUTPUT.
И вообще с целочисленными данными у меня проблем нет – читаю и пишу.
При чтении из ПЛК переменный со значением 1.1 в скаде я увижу -1.07609е+008. Эксперимент проводил несколько раз, переделывая все ПО занового – результат один.
Вопрос: работает ли драйвер с переменными типа REAL, и проверяли ли вы это, если да, то готов протестировать ваш проект.
К ПЛК я подключаюсь по Ethernet через TwinCat, в отладочном режиме вижу все значения переменных, настройка отображения переменных DECIMAL.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Здравствуйте. С переменными REAL драйвер работает. Причина заключается в неправильном формате последовательности байт.
Проверьте, возможно, в настройках TwinCat для разных типов данных задаются различные порядки последовательности байт. Также, возможно, что порядок следования байт меняется в контроллере.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2