1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Как считать блок регистров (слов)?

РЗА, MasterPact, ComPact, Micrologic, Sepam, Micom, Acti9, Vigilohm

Модератор: Специалисты SE

Закрыто

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Как считать блок регистров (слов)?

Сообщение kukovich »

Здравствуйте. Использую OPC сервер Modbus RTU производства фирмы ИнСат. Опрашиваю БРЗиА Sepam 40. Необходимо считать таблицу состояний. Из мануала к блоку:

Структура первой таблицы событий:
- слово обмена 0040
- событие номер 1 0041...0048
- событие номер 2 0049...0050
- событие номер 3 0051...0058
- событие номер 4 0059...0060

Структура второй таблицы событий:
- слово обмена 0070
- событие номер 1 0071...0078
- событие номер 2 0079...0080
- событие номер 3 0081...0088
- событие номер 4 0089...0090

Ведущий должен обязательно считать блок из 33 слов, начиная с адреса 0040/0070 ИЛИ 1 слово с адреса 0040/0070.

Как я понимаю, мне необходимо использовать тип данных - string и указать "Количество байт для строкового типа".
Получается адрес я ввожу первого регистра 0040 и считаю кол-во байт = кол-во слов * 16 ???
И как понимать такое сообщение: "1 слово с адреса 0040/0070" ???
:ges_slap: :amazement: :affliction:

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 8 раз
Поблагодарили: 23 раза

Re: Как считать блок регистров (слов)?

Сообщение alex_ugrumov »

напишите на [email protected]. Ответят в течении дня
Alex.

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Re: Как считать блок регистров (слов)?

Сообщение kukovich »

Спасибо. Попробую. Ответ выложу здесь.

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Re: Как считать блок регистров (слов)?

Сообщение kukovich »

Добрый день!
Можно так. Тип строки можно указать hex. И не 40, а 41. Судя по описанию регистр 40 для записи, и предназначен для управления журналом событий.
Вы хотите считать сразу все 4 события одним тегом? Возможно в вашем случае удобнее сделать 4 отдельных тега для каждого события - так будет легче разбирать на верхнем уровне.

Но судя по описанию необходимо еще вести управление журналом событий - квитировать считывание, и сбрасывать "Количество событий". Это можно реализовать при помощи встроенных в ОРС сервер скриптов.

С уважением,
Компания ИнСАТ
www.insat.ru
www.masterscada.ru
(495) 989-22-49

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Re: Как считать блок регистров (слов)?

Сообщение kukovich »

Поддержка не подкачала. Как всегда отозвались в минимальные сроки.
Осталось непонятным одно, почему решили, что необходимо квитировать считывание, и сбрасывать "Количество событий" ?

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Re: Как считать блок регистров (слов)?

Сообщение kukovich »

Квитирование таблицы событий
Для оповещения Sepam 1000+ o правильном приеме считанного им блока
ведущий должен записать в поле «Номер обмена» номер последнего
произведенного им обмена и должен установить на 0 поле «Количество
событий» слова обмена. После такого квитирования 4 события из таблицы
событий инициализируются на 0, а старые квитированные события в Sepam
1000+ стираются.
Пока слово обмена, записанное ведущим, не равняется «Х,0» (где Х = номер
предыдущего обмена, который ведущий хочет квитировать) слово обмена в
таблице остается на «Х, количество предыдущих событий».
Sepam 1000+ осуществляет приращение номера обмена только в случае
появления новых событий (Х+1, количество новых событий).
Если таблица событий пуста, Sepam 1000+ не осуществляет никаких
операций по считыванию ведущим таблицы событий или слова обмена.
Информация кодируется в двоичном разряде.

Кто-нибудь может подсказать как реализовать выше перечисленную задачу в редакторе скриптов?

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Re: Как считать блок регистров (слов)?

Сообщение kukovich »

Редактор скриптов использует язык lua. Кто сталкивался с данной средой помогите. посоветуйте хотя бы с чего начать.

Автор темы
kukovich
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 29 июл 2014, 09:01
Имя: Шапошников Владимир Владимирович

Re: Как считать блок регистров (слов)?

Сообщение kukovich »

Спасибо. Будем разбираться. С Си не знаком, вообще далек от программирования, по роду работы, "пишу" только в FBD, LD если так можно выразиться.
Закрыто

Вернуться в «Электротехника»