Страница 1 из 2

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 11:42
slavrus
Здравствуйте, подскажите как реализовать вкл/выкл при одном нажатии кнопки, а так же вкл/выкл при изменении переменной мондбас. Пример: включаю светодиод по модбасу, а при нажатии кнопки он должен выключиться, опять включаю по модбасу, с кнопки опять выключить, и наоборот. Вообщем кнопка должна всегда задавать противоположное значение переменной модбас.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 11:53
Phazz
Т-триггер

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 11:57
support
Где то так


Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 12:52
slavrus
Спасибо, работает, но это не совсем то, что нужно. Здесь кнопкой можно выключить или включить, если до этого в модбасе происходили изменения.  Пример: передаю по модбасу единичку -лампа загорелась, после нажимаю кнопку - лампа выключилась, затем нажимаю еще раз на кнопку и ничего не происходит. Нужно чтоб свет по нажатию кнопки в любой момент менялся.
В коде ардуино без программы реализуется это быстро, а в программе что-то не совсем получается.
Можно ли реализовать такую схему.
1. При подаче по модбасу 1/0 свет вкл /выкл.
2. При нажатии кнопки идет проверка переменной модбаса и ее значение меняется на противоположное с записью в модбас в этой же переменной. Соответвенно меняется и состояние светодиода.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 14:15
Phazz
А если так?

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 19:51
slavrus
Работает, но нужно чтоб не только лампа свое состояние меняла  от нажатия кнопки, но и переменная модбаса перезаписывалась на текущее состояние.

Добавлено (06.02.2017, 19:51)
---------------------------------------------
И всё же, вопрос остается открытым. Есть еще варианты? Почему такая тривиальные задача  так сложно реализуется блоками?

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:20
Phazz
А видео работы с модбасом смотрели?

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:24
slavrus
Смотрел видео, но там нет обратной связи от кнопки в модбас

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:28
support
К сожалению протокол Modbus поддерживает двухстороннюю связь только с помощью HoldingRegisters.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:29
support
Что у Вас на другой стороне?

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:33
slavrus
А не вопрос, могу писать и в HoldingRegisters, данные отправляю с компьютера чз программку и так же через неё  читаю ответы.
В программе ардуино написал это без проблем, а в Flprog пошли затруднения.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:40
Boroda
В таком случае делают по другому: в мастере запись и чтение для лампы/кнопки разносят по регистрам. 


Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:43
slavrus
В идеале сделать, чтоб состояние лампы всегда фиксировалось в модбас регистре на той же ардуинке, к которой лампа и подключена, то бишь слейве. По запросу от мастера, чтоб можно было узнать значение переменной, а так же при необходимости его поменять, но в мастере хранить не желательно, так как это комп.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:43
Boroda
Но помоему мастер отсылает COIL, если ему на это указали (нажали кнопку на экране). Но если он опрашивает COIL, то даже если пришел измененный, то отсылка не происходит. По алгоритму работы Modbus в FLProg Сергей подскажет.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:48
support
Ну тогда где то так

Команда на   лампа включена - в регистре 1 (в принципе любое число больше 0), лампа выключена - 0.


Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 20:52
slavrus
Boroda писал(а):В таком случае делают по другому: в мастере запись и чтение для лампы/кнопки разносят по регистрам.
Не подходит, так как мастер - это компьютер.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 21:05
Boroda
support писал(а):Modbus поддерживает двухстороннюю связь только с помощью HoldingRegisters
А как же ответ на 5ю функцию? Запись одной ячейки, и ответ такой же.
А как же первая функция?

Добавлено (06.02.2017, 21:00)
---------------------------------------------
slavrus писал(а):Не подходит, так как мастер - это компьютер.
А как же скады, панели оператора? Там везде есть галочка разнести регистры чтения и записи. Жмакаем кнопку - отправляется один COIL, а чтение бита картинки этой кнопочки может происходить с другого COILа.

Добавлено (06.02.2017, 21:05)
---------------------------------------------
support писал(а):Команда на лампа включена - в регистре 1 (в принципе любое число больше 0), лампа выключена - 0.
Если комп отвалится, то света не видать!

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 21:08
slavrus
support писал(а):Ну тогда где то такКоманда на лампа включена - в регистре 1 (в принципе любое число больше 0), лампа выключена - 0.
Спасибо, заработало, но сложна конечно схемка, для столь простой задачи.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 21:11
support
Boroda писал(а):А как же ответ на 5ю функцию? Запись одной ячейки, и ответ такой же.А как же первая функция?
 функция 5 - запись в Coil
функция 1 - чтение дискретного входа
Функции чтения Coil или записи в дискретный вход не существует
Boroda писал(а):Там везде есть галочка разнести регистры чтения и записи. Жмакаем кнопку - отправляется один COIL, а чтение бита картинки этой кнопочки может происходить с другого COILа.
по правилам промышленного программирования (куда входят СКАД-ы)  нажимаем кнопку на скаде -> отправляем в Coil на слейве true -> включается контактор (или реле) его допик подаётся на цифровой вход ->  читаем его в мастера и отображаем изменение состояния кнопки. Таким образом проверяется реальное срабатывание исполнительного реле.

Вкл/выкл светодиода в зависимости от текущего состояния

Добавлено: 06 фев 2017, 21:12
slavrus
Boroda писал(а):А как же скады, панели оператора? Там везде есть галочка разнести регистры чтения и записи. Жмакаем кнопку - отправляется один COIL, а чтение бита картинки этой кнопочки может происходить с другого COILа.
Согласен, но у меня чуток другая реализация.
Boroda писал(а):Цитата support ()Команда на лампа включена - в регистре 1 (в принципе любое число больше 0), лампа выключена - 0.

Если комп отвалится, то света не видать!
Неправда, всё работает.