Внесение изменений сразу в 2-а регистра

Стартовая страница Форумы Взаимодействие с устройствами Modbus Внесение изменений сразу в 2-а регистра

Просмотр 15 сообщений - с 1 по 15 (из 33 всего)
  • Автор
    Сообщения
  • #23620
    Alexandr
    Участник

    Всем добрый день,

    Ранее для интереса разбирал работу Rapid Scada, все понравилось.
    Долгое время не использовал Scada, не было подходящих задач.

    В данный момент появилась потребность мониторинга и управления одного генератора на панели DeepSea. С мониторингом понятно, с чтением регистров разобрался быстро.

    Хотелось бы получить возможность удаленного управления.
    Производитель DeepSea в целях защит от случайностей сделал правило что требуется внести изменения в двух регистрах одновременно. К примеру
    Регистр 4104 передать значение 35700
    Регистр 4105 передать значение 29835

    Не подскажите как это настроить, т.е при выполнении команды что бы эти значения уже были прописаны автоматом.

    #23622
    manjey73
    Участник

    Вы можете создать команду в шаблоне, что начальный регистр 4104 и при этом указать тип переменной int32, uint32 или float например и путем применения формул преобразовать в нужный массив сразу два значения.

    Одновременно можно записать при помощи функции 10h иначе никак

    • Этот ответ был изменен 1 месяц, 1 неделя назад от manjey73.
    #23624
    manjey73
    Участник

    Использовать uint, int или float, проще uint конечно. Все они 4 байта, соответственно 2 регистра

    #23626
    Mikhail
    Модератор

    Добрый день!
    Тут вопрос в том, какой функцией нужно записать эти регистры. Если функция 10h, то можно сразу 2 записать.

    #23627
    Mikhail
    Модератор

    В формулу канала управления попробуйте записать 0x8B74748B
    Но может и не работает, надо пробовать.

    #23639
    Alexandr
    Участник

    manjey73,

    «Одновременно можно записать при помощи функции 10h иначе никак» — тут понятно, в документации также указано использовать 10h (множественная команда)

    а можно чуть подробнее, как пользоваться формулами.

    Я просто не совсем понимаю как произойдет отправка именно нужных мне значений.

    • Этот ответ был изменен 1 месяц, 1 неделя назад от Alexandr.
    #23641
    manjey73
    Участник

    @alexandr на любой из двух каналов цепляется канал управления в котором необходимо создать формулу, которая отправит команду значения одного канала и введенного значения. А там что вам необходимо, сложить, умножить, разделить и так далее.\

    Но полагаю надо сложить с другим каналом, смещенным на 16 бит.

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

    #23642
    Alexandr
    Участник

    manjey73,

    складывать или делать какие нибудь действия не требуется.
    Производитель подтвердил что требуется записать два регистра

    к примеру:
    Регистр 4104 передать значение 35700
    Регистр 4105 передать значение 29835

    После записи регистров, Контроллер DeepSea сам выполнит суммирование, и если сумма двух регистров верная то выполнит команду.

    Т.е. мне требуется нажимая на команду к примеру ручное управление «MAN» выслать два регистра, желательно самому не вводить ни каких данных.

    #23643
    manjey73
    Участник

    значения там строго типизированные? Попробуйте как Михаил написал отправить байтовую строку в режиме HEX, создав команду 10h и выбрав в команде uint 4 байта
    Соответственно ваши числа в калькуляторе Windows в режиме программиста в hex переведите. Ну еще надо будет понять, требуется переставлять байты или пары байт при отправке.

    Можно вручную все проверить, главное в шаблоне команду определить…

    #23644
    manjey73
    Участник

    Вы в формуле можете сделать типа если Cmd == 1 то отправить то-то, если 0 то то-то и соответственно установить Использовать формулу и режим Включить/Выключить

    #23645
    Alexandr
    Участник

    Не могли бы пояснить не много,

    к примеру хочу отправить команду, вводим номер команды, ставим галочку «Бинарная», далее 16-ричные данные.

    Сюда хочу внести
    35700 29835 в 16-чном виде, это согласно калькулятору «8B74» и «748B».

    Между значениями требуется делать какую-нибудь табуляцию?

    и почему Михаил в начале добавил «0x» 8B74748B. Что обозначает 0х?

    #23646
    manjey73
    Участник

    0x — это 16-ричное значение. Это если тип команды будет обычный.

    Честно не знаю как это сработает в 5-й версии.
    Лучше выбрать тип команды строка 16-ричные данные и ввести без 0x

    Проверять через Коммуникатор, там есть отправка команд.

    Когда в Администраторе выбираете Линию связи — Устройство, появляется окно где есть кнопка Команды. Если вы в шаблоне создали команду с номером 1 соответственно.
    Вы выбираете Номер команды 1. выбираете Бинарная — 16-ричные данные

    Тут просто без 0х вводите 8B74748B — смотрите по логам что получилось.
    Если стандартная, то попробовать ввести с 0х8B74748B — не проверял, возможно это как раз отправка числа в 16-чном виде но не байты…

    #23647
    Alexandr
    Участник

    Спасибо всем кто откликнулся,

    Настроил, управление появилось.

    Возможно кому-нибудь понадобится, поэтому распишу что да как. Так как
    у меня пока нет оболочки, веду работу по вводу регистров и сверки показаний. работаю с панели КП и статистика линии.

    Настроил следующим образом.

    Команда множественная 16 (10Н).
    Адрес элемента 4104
    Количество элементов 1
    Тип элементов int(4 байта)
    Номер команды 1.

    Далее в КП

    Ввожу номер команды 1,
    Далее выбираю «Бинарная»,
    Далее 16-ричные данные.
    В строке ввожу 35700 29835 в формате HEX — 8B74748B, без любых пробелов и знаков табуляции.

    Ну и отправить команду :).

    Всем спасибо!

    #23649
    Alexandr
    Участник

    @manjey73

    Огромное спасибо, за помощь!

    #23652
    Mikhail
    Модератор

    Было бы интересно ещё настроить отправку через веб-интерфейс. Но тогда бинарную команду придётся заменить на стандартную, поставить для неё в таблице значение «Выполнить» и формулу с фиксированным значением. Число в формуле потребуется подобрать опытным путём.

Просмотр 15 сообщений - с 1 по 15 (из 33 всего)
  • Вы должны авторизироваться для ответа в этой теме.