PDA

Просмотр полной версии : вывод ошибок на экран ПР200



Koren
29.04.2019, 09:02
Добрый времени суток.
Написал программу в которой есть блок отвечающий за ошибки.
Ошибки в виде кода Е1, Е2... Е16 и их надо отображать на экране ПР200 в случае возникновения.
Проблема заключается в том, что они могут возникать одновременно, те например Е3 Е7 Е14.
Количество одновременных ошибок от 1 до 16.
Не могу придумать как это реализовать.
Буду признателен за идеи.

игорь68
29.04.2019, 09:32
Сергей0308 делал макрос "кто первый встал того и тапки"))). Там 8входов и выходов. На каком входе первый сигнал тот и на выходе. Я пробовал. Он работает так как вам нужно.

melky
29.04.2019, 09:35
Было уже, не знаю где найти, но была даже сортировка аварий в списке и вывод всего списка на экран. Если аварий нет, список пуст.
Если аварии есть, то список аварий сортированный.

maximov2009
29.04.2019, 09:38
Добрый день. Если Вы хотите всё вывести на один экран, то на дисплее 2 строки по 16 символов.
В верхней строке сделайте подписи, в нижней, под ними будет выводится 0 или 1. 0-порма, 1-ошибка.
Чтобы подписи входили в один символ, сделайте нумерацию как в 16 ричном коде. от 0 до F.
С уважением.

melky
29.04.2019, 09:54
и табличку на дверь щита с расшифровкой :) хотя можно все сделать списком словами, распознаваемыми прямо на экране.

petera
29.04.2019, 10:18
Добрый времени суток.
Написал программу в которой есть блок отвечающий за ошибки.
Ошибки в виде кода Е1, Е2... Е16 и их надо отображать на экране ПР200 в случае возникновения.
Проблема заключается в том, что они могут возникать одновременно, те например Е3 Е7 Е14.
Количество одновременных ошибок от 1 до 16.
Не могу придумать как это реализовать.
Буду признателен за идеи.


Было уже, не знаю где найти, но была даже сортировка аварий в списке и вывод всего списка на экран. Если аварий нет, список пуст.
Если аварии есть, то список аварий сортированный.

Это у меня было, макрос назвался DC16bit
42493

Перебирает по очереди биты входного слова и
- если очередной бит сброшен, то выводит цифру "0" и сразу переходит к анализу следующего бита;
- если очередной бит установлен, то выводит на две сек. его номер +1. Через 2,2 сек переходит к анализу следующего бита.

Например,
42494

На экране нужен динамический текст с названиями аварий
42495

Первая строка списка - пустая

melky
29.04.2019, 11:39
petera , было несколько иначе, в списке экрана было 16 строк, и если аварий несколько то они сортировались от старшего к младшему и таким образом в списке было несколько строк с авариями и далее пустые строки.

То есть вывод был не по времени, как вы тогда замутили а просто общим списком.

Koren
29.04.2019, 12:51
Всем спасибо за ответы.

maximov2009, ваш вариант я уже применил в сервисном меню, но для пользователей это не подходит.
И табличка есть в инструкции и на двери тоже будет. :)

melky, макрос многоэкранный я нашёл, но мне он не очень понравился - хочется уложиться в 1-2 строки.
Вероятность того, что все ошибки выпадут разом равна нулю, 5-8 ошибок за раз весьма вероятно, а 5-8 ошибок вполне можно уместить в 1-2 строки.

petera, идея интересная. Если других идей не будет, то воспользуюсь вашей.

Ещё раз всем большое спасибо за идеи и советы.

Эдуард_Н
10.02.2022, 11:25
а где старый макрос DC16bit или как этот переделать на 16 входов?

alexm32
10.02.2022, 13:28
Это ищете? Автор не я. Переделал этот макрос найденный здесь на форуме под 34 входа.

petera
10.02.2022, 13:40
а где старый макрос DC16bit или как этот переделать на 16 входов?

Сам макрос DC16bit есть в примере из поста #3
В макросе ничего переделывать не надо, макрос анализирует 16 первых разрядов переменной на входе и на выходе макроса будут по очереди появляться номера всех разрядов, содержащих "1", в виде цифр от 1 до 16.
Если вас смущает то, что в примере на входе макроса используется восьмивходовый макрос PACК8, то замените его на аналогичный только на 16 входов

Эдуард_Н
10.02.2022, 15:08
Сам макрос DC16bit есть в примере из поста #3
В макросе ничего переделывать не надо, макрос анализирует 16 первых разрядов переменной на входе и на выходе макроса будут по очереди появляться номера всех разрядов, содержащих "1", в виде цифр от 1 до 16.
Если вас смущает то, что в примере на входе макроса используется восьмивходовый макрос PACК8, то замените его на аналогичный только на 16 входов

А что делает вход In в макросе PACК8 ?

petera
10.02.2022, 15:16
А что делает вход In в макросе PACК8 ?

Туда можно "прицепить" какую-либо переменную, в которой этот макрос будет менять состояние первых восьми разрядов

Сергей0308
10.02.2022, 22:38
Это ищете? Автор не я. Переделал этот макрос найденный здесь на форуме под 34 входа.

Посмотрел ваши макросы. Такое впечатление, что развитие отправилось вспять! Вы на форум для чего заходите, чтобы ничего не смотреть?

Вот решил предложить свой вариант:

59266

59267

Это так, что первое на ум пришло и легко расширяется до 32 входов, достаточно макрос на входе расширить(добавить второй) и настроить!

Сергей0308
12.02.2022, 23:21
Посмотрел ваши макросы. Такое впечатление, что развитие отправилось вспять! Вы на форум для чего заходите, чтобы ничего не смотреть?

Вот решил предложить свой вариант:

59266

59267

Это так, что первое на ум пришло и легко расширяется до 32 входов, достаточно макрос на входе расширить(добавить второй) и настроить!

Вот и другой вариант, мне казалось он сложнее получится, поэтому первый вариант сделал на том же принципе что и Пётр, входа как бы по очереди сканируются и если вход включённый, выводится его номер на экран, короче, второй вариант построен на совсем другом принципе, не включённые входа сразу пропускаются(не стоят в очереди) и на практике даже проще получилось первого варианта, в смысле элементов на холсте меньше!
На этом принципе я ранее макрос ограничения изменения целочисленной переменной делал, не более одного бита за цикл программы, кстати имеется в проекте!

59274

59275