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

Citect Modnet получение данных

Citect, VijeoCItect, PlantSCADA, GeoSCADA, ClearSCADA, Machine Expert SCADA

Модераторы: Глоб.модераторы, Специалисты SE

Ответить

Автор темы
alessio
здесь недавно
здесь недавно
Сообщения: 60
Зарегистрирован: 21 сен 2009, 18:09
Имя: Алексей
Страна: Эстония

Citect Modnet получение данных

Сообщение alessio »

Добрый день,

Пытаюсь получать данные в Citect с счетчика algodue UEM80 через ETI-1221 шлюз посредством MODNET драйвера, но на выходе получаю какие-то непонятные данные. Использовал различные версии драйвера, смещал номера регистров в ту и иную стороны - ничего не выходит. С помощью Modbus Poll программы все прекрасно опрашивается. Подскажите, в чем может быть проблема?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

SaNNy
освоился
освоился
Сообщения: 259
Зарегистрирован: 01 фев 2010, 10:37
Имя: Александр
Страна: Россия
город/регион: Брянск
Благодарил (а): 10 раз
Поблагодарили: 33 раза

Citect Modnet получение данных

Сообщение SaNNy »

Смотрите порядок байт / слов в драйвере MODNET

Автор темы
alessio
здесь недавно
здесь недавно
Сообщения: 60
Зарегистрирован: 21 сен 2009, 18:09
Имя: Алексей
Страна: Эстония

Citect Modnet получение данных

Сообщение alessio »

SaNNy писал(а): 03 июн 2024, 16:33 Смотрите порядок байт / слов в драйвере MODNET
Я так понимаю следует воспользоваться параметром LongDataType? Пробовал разные варианты - опять же не получается.
Меня смущает вообще значения регистров, которые я получаю. Некоторые из них равны 0, что неверно, другие - заоблочные значения и постоянно меняются.
Как правильно опеределить с какого значения начинаются регистры и биты? В таблицах везде указан адрес 1ого регистра 0, но когда я ставлю адрес регистра в Citect 400000, то получаю в Kernel ошибку Out of range. Пробовал играть с протоколами MODNET, MODNET1, MODNET2 и MODNET3 - ничего не выходит.

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Citect Modnet получение данных

Сообщение I_m »

Вы LONG-и читаете, да? Смотрите параметр драйвера LongDataType. Он может быть задан индивидуально для каждого устройства/группы устройств. А по умолчанию равен 3 (старшим вперёд). А вариант протокола, судя по скриншоту модбас полл, MODNET3 подойдёт.

Отправлено спустя 5 минут 5 секунд:
alessio писал(а): 03 июн 2024, 18:46 но когда я ставлю адрес регистра в Citect 400000, то получаю в Kernel ошибку Out of range.
Может всё же не в kernel, а компилятор ругается?

[General]
CheckAddressBoundary = 0

Не пробовали указывать в citect.ini ?

Отправлено спустя 1 минуту 49 секунд:
alessio писал(а): 03 июн 2024, 18:46 Я так понимаю следует воспользоваться параметром LongDataType?
А что конкретно непонятно?

Автор темы
alessio
здесь недавно
здесь недавно
Сообщения: 60
Зарегистрирован: 21 сен 2009, 18:09
Имя: Алексей
Страна: Эстония

Citect Modnet получение данных

Сообщение alessio »

I_m писал(а): 03 июн 2024, 19:01 Вы LONG-и читаете, да? Смотрите параметр драйвера LongDataType. Он может быть задан индивидуально для каждого устройства/группы устройств. А по умолчанию равен 3 (старшим вперёд). А вариант протокола, судя по скриншоту модбас полл, MODNET3 подойдёт.

Отправлено спустя 5 минут 5 секунд:
alessio писал(а): 03 июн 2024, 18:46 но когда я ставлю адрес регистра в Citect 400000, то получаю в Kernel ошибку Out of range.
Может всё же не в kernel, а компилятор ругается?

[General]
CheckAddressBoundary = 0

Не пробовали указывать в citect.ini ?

Отправлено спустя 1 минуту 49 секунд:
alessio писал(а): 03 июн 2024, 18:46 Я так понимаю следует воспользоваться параметром LongDataType?
А что конкретно непонятно?
Установил протокол MODNET3. Регистр 2xWORD в Citect создаю переменную типа LONG. Если указываю адрес переменной 400000, как в таблице производителя, то в kernel возникает ошибка "Out of range 400000". Делаю смещение на 1, устанавливаю 400001. Ошибки - нет. Параметр LongDataType = 3 (хотя пробовал все варианты). В итоге, в первом регистре получаю 0, что не может быть, т.к. это фазное напряжение L1. Во втором и третьем 10ти значное число.

ogorsv
специалист
специалист
Сообщения: 642
Зарегистрирован: 02 дек 2015, 06:57
Имя: Огородников Сергей
Страна: РФ
Благодарил (а): 136 раз
Поблагодарили: 111 раз

Citect Modnet получение данных

Сообщение ogorsv »

Добрый день,

1. Определитесь, по какому столбцу адреса смотреть. В документе есть два столбца, разница в измеренном - три порядка, адреса смещены на 16#1000

2. Вы в Citect указываете смещение 400 001, попробуйте 40 001.
Разные вендоры - разные правила

3. Убедитесь в правильном типе переменной (INT or FLOAT)
СВ

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Citect Modnet получение данных

Сообщение I_m »

alessio писал(а): 03 июн 2024, 21:15 то в kernel возникает ошибка "Out of range 400000"
В какой именно момент возникает ошибка? Если пишете, что в kernel, то в должно быть уже либо в рантайме, либо при запуске рантайма. Так? Если уж точно как в таблице производителя, то попробуйте 40000, хотя это не должно никак влиять, по идее.

Кстати, что таблице производителя означает RegSet для целочисленных регистров? А по адресам для float пробовали читать? Модбас поллом для начала.

И ещё - если я правильно понял, то адреса input-регистров те же самые должны быть.

Хотя, если модбас полл читает, то и сайтек должен читать, если там всё правильно настроено. Про ошибку в ядре я так и не понял. Скриншот можете сделать?

Какую версию Citect SCADA используете, кстати?
ogorsv писал(а): 03 июн 2024, 21:33 Вы в Citect указываете смещение 400 001, попробуйте 40 001.
Это не смещение. Лидирующая 4-ка указывает на тип регистра, т.е. регистра хранения. Пробелы в адресе - синтаксическая ошибка.

Отправлено спустя 24 минуты 19 секунд:
Кстати, я не понял один момент - у Вас на скриншоте для модбас полл запрос в кодах приведён как для modbus rtu, а не tcp. Впрочем, я с Modbus Poll шапочно знаком, т.ч. может это и нормально. И всё же вопрос - устройство точно modbus tcp, а не modbus rtu over tcp?

Автор темы
alessio
здесь недавно
здесь недавно
Сообщения: 60
Зарегистрирован: 21 сен 2009, 18:09
Имя: Алексей
Страна: Эстония

Citect Modnet получение данных

Сообщение alessio »

I_m писал(а): 03 июн 2024, 23:29
alessio писал(а): 03 июн 2024, 21:15 то в kernel возникает ошибка "Out of range 400000"
В какой именно момент возникает ошибка? Если пишете, что в kernel, то в должно быть уже либо в рантайме, либо при запуске рантайма. Так? Если уж точно как в таблице производителя, то попробуйте 40000, хотя это не должно никак влиять, по идее.

Кстати, что таблице производителя означает RegSet для целочисленных регистров? А по адресам для float пробовали читать? Модбас поллом для начала.

И ещё - если я правильно понял, то адреса input-регистров те же самые должны быть.

Хотя, если модбас полл читает, то и сайтек должен читать, если там всё правильно настроено. Про ошибку в ядре я так и не понял. Скриншот можете сделать?

Какую версию Citect SCADA используете, кстати?
ogorsv писал(а): 03 июн 2024, 21:33 Вы в Citect указываете смещение 400 001, попробуйте 40 001.
Это не смещение. Лидирующая 4-ка указывает на тип регистра, т.е. регистра хранения. Пробелы в адресе - синтаксическая ошибка.

Отправлено спустя 24 минуты 19 секунд:
Кстати, я не понял один момент - у Вас на скриншоте для модбас полл запрос в кодах приведён как для modbus rtu, а не tcp. Впрочем, я с Modbus Poll шапочно знаком, т.ч. может это и нормально. И всё же вопрос - устройство точно modbus tcp, а не modbus rtu over tcp?
Ошибка возникает после рестарта I/O сервера. Пробовал убирать лишний ноль 400000 > 40000, работает одинаково и так и так.
По адресам для float тоже пробовал, та же ситуация. В Modbus Poll все читается хорошо.
Сам плохо понимаю, что означает RegSet. RegSet 0 (по умолч.): четн./нечетн. word регистры. RegSet 1: четн. word регистры.
Input и holding регистры имеют одинаковые адреса.
Citect SCADA 2018 R2
Устройство Modbus RTU подключено через Modbus TCP Gateway. Стоит ли в таком случае его считать Modbus RTU over TCP и что это меняет? Нужно ли в этом случае создавать виртуальный COM порт и читать данные по протоколу Modbus RTU?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

ogorsv
специалист
специалист
Сообщения: 642
Зарегистрирован: 02 дек 2015, 06:57
Имя: Огородников Сергей
Страна: РФ
Благодарил (а): 136 раз
Поблагодарили: 111 раз

Citect Modnet получение данных

Сообщение ogorsv »

Попробуйте в качестве адреса не 400001, а просто 1
И как вы настроили IO_DEV, BOARD и PORT?
СВ

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Citect Modnet получение данных

Сообщение I_m »

alessio писал(а): 04 июн 2024, 11:52 Устройство Modbus RTU подключено через Modbus TCP Gateway. Стоит ли в таком случае его считать Modbus RTU over TCP и что это меняет?
Если это шлюз RTU<->TCP, то ничего не нужно.
alessio писал(а): 04 июн 2024, 11:52 Нужно ли в этом случае создавать виртуальный COM порт и читать данные по протоколу Modbus RTU?
Виртуальный COM в любом случае не нужен, Citect и так умеет.

На скриншоте сообщение об ошибке из из лога, как я понял. Это ни о чём, строго говоря. Посмотрите версию modnet на всякий случай (версию файла MODNET.dll).
alessio писал(а): 04 июн 2024, 11:52 Citect SCADA 2018 R2
У меня сейчас та же самая.
ogorsv писал(а): 04 июн 2024, 13:22 Попробуйте в качестве адреса не 400001, а просто 1
Вы в modnet.chm хоть когда-нибудь заглядывали?

Отправлено спустя 1 минуту 35 секунд:
alessio писал(а): 04 июн 2024, 11:52 Сам плохо понимаю, что означает RegSet. RegSet 0 (по умолч.): четн./нечетн. word регистры. RegSet 1: четн. word регистры.
Это где-то задаётся на счётчике?

Автор темы
alessio
здесь недавно
здесь недавно
Сообщения: 60
Зарегистрирован: 21 сен 2009, 18:09
Имя: Алексей
Страна: Эстония

Citect Modnet получение данных

Сообщение alessio »

I_m писал(а): 04 июн 2024, 15:06
alessio писал(а): 04 июн 2024, 11:52 Устройство Modbus RTU подключено через Modbus TCP Gateway. Стоит ли в таком случае его считать Modbus RTU over TCP и что это меняет?
Если это шлюз RTU<->TCP, то ничего не нужно.
alessio писал(а): 04 июн 2024, 11:52 Нужно ли в этом случае создавать виртуальный COM порт и читать данные по протоколу Modbus RTU?
Виртуальный COM в любом случае не нужен, Citect и так умеет.

На скриншоте сообщение об ошибке из из лога, как я понял. Это ни о чём, строго говоря. Посмотрите версию modnet на всякий случай (версию файла MODNET.dll).
alessio писал(а): 04 июн 2024, 11:52 Citect SCADA 2018 R2
У меня сейчас та же самая.
ogorsv писал(а): 04 июн 2024, 13:22 Попробуйте в качестве адреса не 400001, а просто 1
Вы в modnet.chm хоть когда-нибудь заглядывали?

Отправлено спустя 1 минуту 35 секунд:
alessio писал(а): 04 июн 2024, 11:52 Сам плохо понимаю, что означает RegSet. RegSet 0 (по умолч.): четн./нечетн. word регистры. RegSet 1: четн. word регистры.
Это где-то задаётся на счётчике?
Я так понимаю, если драйвер обращается к несуществующему регистру выходящeму из диапазона, то он перестает опрашивать остальные и они отображаются #BAD.

RegSet задается на счетчике.

Подключил другой счетчик PAC3120 от Siemens, но пока аналогичная ситуация.

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Citect Modnet получение данных

Сообщение I_m »

alessio писал(а): 04 июн 2024, 16:37 Я так понимаю, если драйвер обращается к несуществующему регистру выходящeму из диапазона, то он перестает опрашивать остальные и они отображаются #BAD.
У сайтековских драйверов modnet и modbus есть такая особенность, что они для проверки состояния связи с устройством пытаются опросить некий дефолтный регистр и, если это у них не получается, то рисуют #BAD все смежные. Посмотрите параметры InitVar и InitVarType, только внимательно прочитайте. Они в паре работают.

Ещё попробуйте задать в адресе регистра префикс индивидуального чтения G, т.е G400000. Может это как-то поможет заставить сайтек исключить тэг из списка "плохих".

Ещё есть параметр Block (для драйверов всех типов без исключения, по-моему), слишком большое значение которого тоже может поспособствовать попаданию тэга в перечень #BAD. Только учтите, что этот параметр является общим для всех устройств типа. Т.е. в данном случае он будет влиять на обмен со всеми устройствами modbus tcp. В отличии от InitVar, InitVarType и прочих, определённых как device/group-specific parameters.

Автор темы
alessio
здесь недавно
здесь недавно
Сообщения: 60
Зарегистрирован: 21 сен 2009, 18:09
Имя: Алексей
Страна: Эстония

Citect Modnet получение данных

Сообщение alessio »

Все оказалось намного проще. При добавлении устройства, Wizard присваивает ему одинаковое название порта, наглядно таблица выглядит впорядке, но когда открыл выпадающее меню, то обнаружил два одинаковых порта. После того, как выбрал нужный, все пошло как по маслу. Моя ошибка.

Благодарю всех за помощь.

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Citect Modnet получение данных

Сообщение I_m »

Да уж, даже в голову не пришло - визардами просто в citect для добавления устройств не пользуюсь.
Ответить

Вернуться в «SCADA»