Автор: Antiscer 25.01.2019 - 20:49
Здравствуйте.
Волею судеб пришлось начать разбираться с данным типом контроллеров. Возник вопрос, а какой подход можно применить для перебора выходов включая необходимые.
Задача простая - на входы Х0-Х7 приходит двоичное восьмибитное число и мне нужно включить выход с тем номером, на которое подается на вход.
Метод прописать все варианты мне известен.
Почитав документацию, я встретил индексные регистры, но был удивлен, что их нельзя применять в FX2N на выходах (в документации об этом ни слова).
Какие еще есть приемы работы с выходами по абсолютному числу?
Автор: VAL_64 25.01.2019 - 22:38
Цитата(Antiscer @ 25.01.2019 - 21:49)
Здравствуйте.
Волею судеб пришлось начать разбираться с данным типом контроллеров. Возник вопрос, а какой подход можно применить для перебора выходов включая необходимые.
Задача простая - на входы Х0-Х7 приходит двоичное восьмибитное число и мне нужно включить выход с тем номером, на которое подается на вход.
Метод прописать все варианты мне известен.
Почитав документацию, я встретил индексные регистры, но был удивлен, что их нельзя применять в FX2N на выходах (в документации об этом ни слова).
Какие еще есть приемы работы с выходами по абсолютному числу?
http://www.melsec.ru/forum/index.php?s=&showtopic=5263&view=findpost&p=10787
Биты объединяются в слова только группами по 4, то есть К2Х0 в данном случае необходимо.
Ненужные биты можно замаскировать.
Например: WAND K2X0 H1F K2M0, если хотите иметь результат в слове битов K2M0, либо WAND K2X0 H1F D0, если в регистре D0.
Константа-маска содержит нули в позициях битов, которые нужно игнорировать.
Входы, которые нужно игнорировать, маскируются лишь при копировании группы в слово-получатель.
Ничто не мешает использовать их для других целей.
Что касается выходов, там процедура немного сложнее.
Для передачи пяти младших битов из D0 на Y0..Y4, не затрагиваяY5..Y7, необходимо выполнить две операции:
WAND K2Y0 HE0 D1
WOR D0 D1 K2Y0
Первая инструкция запоминает во вспомогательном регистре D1 состояние битов Y5..Y7.
Константа-маска содержит единицы только в этих позициях.
Вторая инструкция дописывает биты, которыми нужно управлять, и отправляет все слово на выходы.
Автор: Sergei Troizky 26.01.2019 - 02:37
Цитата(Antiscer @ 25.01.2019 - 20:49)
Задача простая - на входы Х0-Х7 приходит двоичное восьмибитное число и мне нужно включить выход с тем номером, на которое подается на вход.
А что должно произойти с включенным таким образом выходом, когда число на входах изменится?
И делается ли все это в дополнение к какой-то другой логике управления выходами?
Если да, то каковы приоритеты?
Автор: inntele 26.01.2019 - 06:39
То, что требуется, делается одной инструкцией DECO.
Автор: Antiscer 26.01.2019 - 09:48
Цитата(inntele @ 26.01.2019 - 06:39)
То, что требуется, делается одной инструкцией DECO.
В точку!!!
Огромное спасибо - это то, что я искал последние два дня.
Автор: Antiscer 26.01.2019 - 09:56
Цитата(Sergei Troizky @ 26.01.2019 - 02:37)
Цитата(Antiscer @ 25.01.2019 - 20:49)
Задача простая - на входы Х0-Х7 приходит двоичное восьмибитное число и мне нужно включить выход с тем номером, на которое подается на вход.
А что должно произойти с включенным таким образом выходом, когда число на входах изменится?
И делается ли все это в дополнение к какой-то другой логике управления выходами?
Если да, то каковы приоритеты?
Да, вы правы, я упростил задачу до вопроса, который меня терзал.
Сама задача достаточно проста:
магазин торгующий люстрами, имеются пронумерованные люстры подключенные к автоматике. Покупатель при наборе номера на консоли включает на 3 минуты выбранную люстру.
Консоль, как вы понимаете, кодирует набранный номер в двоичный формат.
Автор: Antiscer 26.01.2019 - 10:06
Цитата(VAL_64 @ 25.01.2019 - 22:38)
http://www.melsec.ru/forum/index.php?s=&showtopic=5263&view=findpost&p=10787
Биты объединяются в слова только группами по 4, то есть К2Х0 в данном случае необходимо.
Ненужные биты можно замаскировать.
Например: WAND K2X0 H1F K2M0, если хотите иметь результат в слове битов K2M0, либо WAND K2X0 H1F D0, если в регистре D0.
Константа-маска содержит нули в позициях битов, которые нужно игнорировать.....
да, я пробежался по всем темам этой ветки форума, видел эту тему, но это не то что было в вопросу, хотя в программе я буду использовать эти инструкции и подходы.
дело в том, что существующая программа написана в лоб, т.е. в ней описаны все возможные варианты, таких контроллеров 18 и все отличаются программами - мне нужно унифицировать, так как они все выполняют одно и то же.