Все есть в инструкции
https://docs.owen.ru/book_img/767/27838.png
Вид для печати
Все есть в инструкции
https://docs.owen.ru/book_img/767/27838.png
Подскажите как реализовать счетчик ошибок. Например хочу знать сколько у меня ошибок, именно общее количество. Есть n булевых переменных, хочу на экран вывести количество сработанных ошибок на данный момент, то есть оно будет динамическое, 1,2,3...n ошибок. То есть, если есть ошибка "+" в счетчик, нет "-" в счетчик. Напрашивается счетчик CTN, но входа там только два на + и -, а как объединить несколько переменных не могу понять.
Спасибо.
А сколько аварий?
2, 4, 16, 32, 256?
От количества и решение будет разным.
Если два или четыре, то можно
Вложение 65478
А если больше, то может почитать статью https://habr.com/ru/post/276957/ и сделать элегантную функцию, которую можно будет выложить на форуме и возможно ее включат в библиотеку макросов.
Чего там разного? В развитие от Сергея308:
1. Упаковать в маску
2. Посчитать кол-во битов ней.
Ну 2 маски и сложить два числа.
256)) Вы еще про тыщу аварий скажите в ПР
1-ая функция вообще базовая в принципе т.к. стандартный способ передачи аварий при обменах, 2ая - 4 строчки на ST
Очень плохо. Реально заколебало.
Но применительно к задаче - накой ? Особенно в свете ПР и цикла минимум в 1мс ?
То что в статье потребуется только тогда, когда будете оптимизировать что-то на уровне тактов камня. Нету для ПР таких задач.
А 4 указанные выше мною строчки - это и есть самое первое из статьи:
Вложение 65487
что в местном варианте:
Код: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
Вот свой вариант сумматора бит в целочисленной переменной могу предложить, ранее у меня был классический:
Вложение 65489
Он за один цикл мог подсчитать, но если много бит надо считать(более 16) и допускается это сделать не за один цикл, в смысле, если много бит одновременно меняются, то каждый цикл программы макрос обрабатывает по одному биту, короче, тогда можно сделать проще:
Вложение 65490
Вот проект с макросами: Вложение 65491