-----
18.11.2017 форум перенесён на другой хостинг. О замеченых глюках просьба сообщать администраторам.
-----
На форуме обязательно:
  1. Заполнить свой профиль на Русском языке. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.
Рекламу на своём форуме мы не размещаем ни на каких условиях.

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

SCADA, серверы, АРМ верхнего уровня, диспетчерские

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

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

Сообщение kukovich » 21 авг 2014, 08:44

Здравствуйте. Использую 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
почётный участник форума
почётный участник форума
Сообщения: 586
Зарегистрирован: 29 сен 2008, 16:05
Имя: Алексей Угрюмов
Благодарил (а): 6 раз
Поблагодарили: 17 раз

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

Сообщение alex_ugrumov » 21 авг 2014, 16:18

напишите на support@insat.ru. Ответят в течении дня
Alex.


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

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

Сообщение kukovich » 21 авг 2014, 18:06

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


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

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

Сообщение kukovich » 21 авг 2014, 19:42

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

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

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


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

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

Сообщение kukovich » 21 авг 2014, 19:44

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


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

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

Сообщение kukovich » 22 авг 2014, 07:10

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

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


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

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

Сообщение kukovich » 22 авг 2014, 17:41

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


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

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

Сообщение kukovich » 02 сен 2014, 19:07

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