Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › Настройка ОВЕН МУ110-8Р
- В этой теме 15 ответов, 3 участника, последнее обновление 7 лет, 6 месяцев назад сделано Mikhail.
-
АвторСообщения
-
19.08.2016 в 13:29 #2868djbond07Участник
Добрый день! Использую модуль ОВЕН МУ110-8Р для управления. При настройке конфигуратора проблем не возникло, но есть один момент.
Чтобы активировать любой выход (допустим №1) нужно послать бинарную команду либо строкой «01» либо 16-ричными данными «0001». Стандартная команда не проходит, так как ячейки имеют тип данных «bool». Так вот. Получается, чтобы в ручном режиме из веб приложения активировать выход, пользователю нужно будет вводить «01», что не очень удобно. Как можно сделать так, чтобы в веб приложении можно было как со стандартной командой поступать: Включить-Отключить?
19.08.2016 в 13:55 #2869manjey73УчастникС какой радости у МУ110-8Р булевые переменные ?
Включение конкретного выхода производится записью 1000 в регистр выхода.
Булевые применяются при записи в Битовую маску выходов.в любом случае необходимо использовать формулу либо для сбора битовой маски либо для умножения вашего вкл/выкл на 1000 и отправки как есть стандартной командой.
з.ы. нет в наличии МУ110-8Р но документация говорит именно об этом.
19.08.2016 в 14:08 #2870djbond07УчастникВот ссылка на скриншот с документации
https://drive.google.com/file/d/0Bzn5jzldeU-dUTZybFI1QUJjczA/view?usp=sharing
Документация с оф. сайта. Вы, вероятно, скачивали документацию с «ОВЕН Спб», там лежит не тот файл.
1000 в регистр выхода устанавливает ШИМ на 100% — это понятно, но эту 1000 нужно записывать бинарной командой в 16-ричном формате (строка не проходит). Соответственно мудрить с формулами чтобы на выходе было «03Е8», что соответствует 1000.
Более того, я тестировал отправку команд в ячейки (не регистры) через коммуникатор. Проходят только бинарные команды в строке «01» либо в формате 16-ричных данных «0001». Поэтому и встал вопрос.19.08.2016 в 14:33 #2871manjey73УчастникЕсли я правильно помню, из SCADA все передается в формате double в режиме стандартной команды.
А кто мешает сделать формулу, чтобы он передал в регистр 03Е8 при варианте ВКЛ/ВЫКЛ ?
кто-то мешает умножить вашу единицу на 0х1000 что ли ?Там же С#, че хотите, то и творите…
- Этот ответ был изменен 7 лет, 8 месяцев назад от manjey73.
19.08.2016 в 16:20 #2873MikhailМодератор03Е8 можно отправить как бинарной командой, так и стандартной. При использовании стандартной команды нужно отправлять такое число double, чтобы оно кодировалось указанными байтами, т.е. 1000 не сработает
19.08.2016 в 16:24 #2874MikhailМодераторЯ использовал формулу:
public double OWEN_Cmd(double cmdVal) { return cmdVal > 0 ? BitConverter.ToDouble(new byte[] { 0xFF, 0, 0, 0, 0, 0, 0, 0 }, 0) : 0; }
19.08.2016 в 17:13 #2877djbond07УчастникКак-то уже обсуждался подобный вопрос, и вся загвоздка была в том, что я писал формулу, включающую в себя переменную cmdData, но почему-то значение команды проскакивало мимо формулы и шло прямо на выполнение. Но раз Вы говорите, что использовали формулу, то думаю, что должно сработать.
19.08.2016 в 19:15 #2878MikhailМодератор«Проскакивает» при использовании Модуля авт. упр.
В моём случае он не использовался.23.08.2016 в 11:56 #2894djbond07УчастникДобрый день! При компиляции выскакивает ошибка:
Строка 551, колонка 113: error CS1501: Ни одна из перегрузок метода «OWEN_Cmd» не принимает «0» аргументовИ также начинает ругаться на все строчки «return double.NaN;» в моих формулах.
23.08.2016 в 12:27 #2895djbond07УчастникРазобрался. Я неправильно вызывал метод (то есть записывал формулу в КУ). Я писал «OWEN_Cmd()», а нужно «OWEN_Cmd(CmdVal)». Сейчас всё работает, спасибо большое.
23.08.2016 в 15:41 #2896djbond07УчастникМихаил, Вы сказали, что обходились без модуля автоматического управления. Вы управляли выходами только в ручном режиме? или же в автоматическом тоже работало? В таком случае как мне также обустроить систему? Просто подключение модуля рождает большие неудобства в настройке и усложняет систему. Раз у меня теперь КУ понимает стандартные команды, и выдаёт корректный сигнал, то осталось организовать связь между формулами входных каналов и значениями команд управления. Как это можно сделать?
23.08.2016 в 19:58 #2897MikhailМодераторФормулы для каналов управления работают только в ручном режиме. Автоматические команды проще отправлять в бинарном виде. Будут работать оба варианта одновременно.
Т.е. если нужно автоматическое управление, то используйте модуль. Если не нужно, то не используйте ))24.08.2016 в 09:10 #2901djbond07УчастникПонял, значит без модуля не обойтись) Хорошо, спасибо!)
30.09.2016 в 12:34 #3222djbond07УчастникДобрый день! Хотел бы продолжить тему. Всё хорошо работает, если нужно выставить ШИМ на 100%. Но если выставить на 50%? Как правильно будет выглядеть формула в этом случае? Пробовал разные варианты записи в массив байт, ничего не подошло.
30.09.2016 в 14:25 #3223djbond07УчастникНебольшое дополнение. В коммуникаторе в настройках шаблона выходы в ячейках Holding registers. Если с коммуникатора отправлять 03E8, то выход активируется, если отправлять 01F4, то получаем ШИМ 50% скважности. Вопрос только в том, как это сделать через формулу?
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.