Подскажите как реализовать счетчик ошибок. Например хочу знать сколько у меня ошибок, именно общее количество. Есть n булевых переменных, хочу на экран вывести количество сработанных ошибок на данный момент, то есть оно будет динамическое, 1,2,3...n ошибок. То есть, если есть ошибка "+" в счетчик, нет "-" в счетчик. Напрашивается счетчик CTN, но входа там только два на + и -, а как объединить несколько переменных не могу понять.
Спасибо.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
А сколько аварий?
2, 4, 16, 32, 256?
От количества и решение будет разным.
Если два или четыре, то можно
2023-01-26_00-36-21.png
А если больше, то может почитать статью https://habr.com/ru/post/276957/ и сделать элегантную функцию, которую можно будет выложить на форуме и возможно ее включат в библиотеку макросов.
Последний раз редактировалось Николай Суриков; 26.01.2023 в 00:41.
Чего там разного? В развитие от Сергея308:
1. Упаковать в маску
2. Посчитать кол-во битов ней.
Ну 2 маски и сложить два числа.
256)) Вы еще про тыщу аварий скажите в ПР
1-ая функция вообще базовая в принципе т.к. стандартный способ передачи аварий при обменах, 2ая - 4 строчки на ST
Очень плохо. Реально заколебало.
Но применительно к задаче - накой ? Особенно в свете ПР и цикла минимум в 1мс ?
То что в статье потребуется только тогда, когда будете оптимизировать что-то на уровне тактов камня. Нету для ПР таких задач.
А 4 указанные выше мною строчки - это и есть самое первое из статьи:
4строки.png
что в местном варианте:
Код:function cntbit: udint; var_input mask : udint; end_var while mask <> 0 do cntbit := cntbit + bool_to_udint(mask.0); mask := shr(mask,1); end_while end_function
Вот свой вариант сумматора бит в целочисленной переменной могу предложить, ранее у меня был классический:
Сумматор бит.png
Он за один цикл мог подсчитать, но если много бит надо считать(более 16) и допускается это сделать не за один цикл, в смысле, если много бит одновременно меняются, то каждый цикл программы макрос обрабатывает по одному биту, короче, тогда можно сделать проще:
Сумматор бит_2.png
Вот проект с макросами: Сумматор бит.owle
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.