Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Драйверы / Device Drivers » Beckhoff. Связь по протоколу ADS

   
Автор / Author Тема / Topic: Beckhoff. Связь по протоколу ADS
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, уважаемая техподдержка! Мы пытаемся наладить связь по 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-х байтов и получить желаемый результат, но удваивается количество каналов в проекте. Подскажите пожалуйста, в чем моя ошибка?

Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. Аргумент экрана должен быть привязан к каналу HEX16, который связан с указанным "Источником".
2. Параметр #1(B) - 0x1 означает, что Вы принимаете переменную размером 1 байт.
Вы не пробовали поставить Параметр #1(B) - 0x2?

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо, после отработки пункта 2 все заработало! Настраивал связь по видеопримеру подключения Beckhoff и даже не догадывался, что Параметр #1(B) означает количество байт. Спасибо за качественную техподдержку!
Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Отправил описание драйвера.
Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо, получил.
Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, уважаемая техподдержка! Чтобы не плодить темы, продолжу здесь. При увеличении источников, связанных с контроллером BC9020 по протоколу ADS (в узле планируется около 1500 источников) очень сильно упала скорость обмена с контроллером. Данные обновляются примерно 1 раз в 10 секунд, это касается и чтения и записи. При этом проверяли утилитой от производителя Twincat ADS Monitor, в ней обмен по-прежнему быстрый. Или драйвер Beckhoff в Trace Mode рассчитан на небольшое количество источников?
Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вам надо организовать связь групповыми запросами через каналы ChGroupReq, как указано в переданном Вам описании драйвера.
Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за ответ. Пока получилось вывести несколько аналоговых сигналов. В связи с этим несколько вопросов.
1. Возможно ли через Call.ChGroupReq не только собирать данные, но и задавать значения в контроллер (у меня пока не получилось).
2. Какое оптимальное количество параметров без потери скорости обмена можно передавать через Call.ChGroupReq.
3. Что делать с масштабированием аналоговых сигналов, которые я обычно выполнял в канале типа Float? Пока два варианта: каждый аргумент Call.ChGroupReq перенаправлять на каналы Float, второй - через программу в TM.

Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Поправка ко второму вопросу. Имелось в виду, сколько параметров без потери скорости обмена можно передавать через ОДИН канал Call.ChGroupReq
Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. Групповая запись в драйвере не предусмотрена.
2. Методического ограничения на количество переменных, запрашиваемых групповым образом через 1 канал ChGroupReq, нет.
Надо только учитывать, что чем длиннее кадр, тем больше вероятность появления ошибки в ответе и, следовательно, больше вероятность переспросов. За счет этого может снизиться производительность. Других причин для снижения скорости обмена я не вижу.
3. Если полученные групповым запросом переменные Вам не надо архивировать, обрабатывать для посылки сообщений в ОТ и пр., то, видимо, линейное преобразование для отображения на экране или в документе можно произвести и в программе.
Если Вам для каких из этих переменных все-таки понадобятся каналы, то линейное преобразование можно произвести в их штатных внутренних процедурах обработки.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за ответ, будем пробовать.
Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
intellis
Active Forum Member / Активный участник форума
Участник № / Member № 2383


Icon 1 отправлено / posted      Профиль для / Profile for intellis           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Подключил все входные сигналы (более 500) через Call.ChGroupReq, с аргументов Call.ChGroupReq на обычные каналы и все заработало на ура! При том, что в узле около 500 выходных сигналов, которые выводятся обычном образом, без Call.ChGroupReq, время обмена с контроллером не более секунды.
Сообщения / Posts 95 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ivostrikov
Junior Member / Новичок
Участник № / Member № 4308


Icon 1 отправлено / posted      Профиль для / Profile for ivostrikov           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Пришлите, пожалуйста описание драйвера BECKHOFF на mrven@mail.ru
Сообщения / Posts 4 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Для связи с 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.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ivostrikov
Junior Member / Новичок
Участник № / Member № 4308


Icon 1 отправлено / posted      Профиль для / Profile for ivostrikov           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Как мне, например, считать групповым запросом через CALL.ChGroupReq 20 переменных типа INT(2 байта), начиная с адреса MB3000(indexGroup = 0x4020, indexOffset = 0xbb8)?
Сообщения / Posts 4 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ivostrikov
Junior Member / Новичок
Участник № / Member № 4308


Icon 1 отправлено / posted      Профиль для / Profile for ivostrikov           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо, уже разобрался
Сообщения / Posts 4 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Polag
Junior Member / Новичок
Участник № / Member № 4573


Icon 1 отправлено / posted      Профиль для / Profile for Polag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Пришлите, пожалуйста описание драйвера BECKHOFF на polygalov83@mail.ru
Сообщения / Posts 12 | Из / From: Russian federation  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Polag
Junior Member / Новичок
Участник № / Member № 4573


Icon 1 отправлено / posted      Профиль для / Profile for Polag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, уважаемая техподдержка! Мы пытаемся наладить связь по 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.
Как решить проблему?

Сообщения / Posts 12 | Из / From: Russian federation  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Не понятно каким образом производится запись в контроллер. Описанные Вами настройки используются только для чтения данных из контроллера.
Проверьте раздельно чтение и запись. Для этого создайте два источника. Первый источник с направлением input, второй - out и привяжите их к каналам типа Float. Каналы Float свяжите с аргументами.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
2Polag: Вам надо задать правильный порядок следования байт при чтении регистров в формате Float, видимо у устройства не Intel-формат для Float. Как это сделать - есть в справке по настройке источников/приемников ModBus.
IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
to Romcheg: причем здесь ModBus?
Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Как вы смотрите значения в PLC?
Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Прошу прощения, попутал насчет ModBus. [Улыбка / Smile] Но то, о чем я сказал - скорее всего и есть причина: перепутан формат последовательности байт при чтении Float.
IP / IP: IP адрес / IP address | Report this post to a Moderator
Polag
Junior Member / Новичок
Участник № / Member № 4573


Icon 1 отправлено / posted      Профиль для / Profile for Polag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, в первом посте все в порядке, там я описал настройки для чтения, подобные я использовал и для записи, лишь меняется направление на OUTPUT.
И вообще с целочисленными данными у меня проблем нет – читаю и пишу.
При чтении из ПЛК переменный со значением 1.1 в скаде я увижу -1.07609е+008. Эксперимент проводил несколько раз, переделывая все ПО занового – результат один.
Вопрос: работает ли драйвер с переменными типа REAL, и проверяли ли вы это, если да, то готов протестировать ваш проект.
К ПЛК я подключаюсь по Ethernet через TwinCat, в отладочном режиме вижу все значения переменных, настройка отображения переменных DECIMAL.

Сообщения / Posts 12 | Из / From: Russian federation  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте. С переменными REAL драйвер работает. Причина заключается в неправильном формате последовательности байт.
Проверьте, возможно, в настройках TwinCat для разных типов данных задаются различные порядки последовательности байт. Также, возможно, что порядок следования байт меняется в контроллере.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2