Сравнение чисел
Re: Сравнение чисел
Странно вы пытаетесь отследить увеличение количества аварий через арифметическую величину числа.
Веса-то битов разные!
Например, одновременно пришел младший бит, и ушел старший - количество аварий осталось то-же, но число-то арифметически уменьшилось!
Веса-то битов разные!
Например, одновременно пришел младший бит, и ушел старший - количество аварий осталось то-же, но число-то арифметически уменьшилось!
Re: Сравнение чисел
Вероятность этого ничтожно мала, сравнения ведь происходят с интервалом в цикл контроллера, а не в пару секунд.
Отслеживать фронт каждого бита из полсотни....как то совсем нефеншуйно.
Отслеживать фронт каждого бита из полсотни....как то совсем нефеншуйно.
Последний раз редактировалось Олег 16 апр 2020, 10:16, всего редактировалось 1 раз.
Re: Сравнение чисел
Это зависит от периода опроса периферии. В некоторых случаях совсем не нулевая.
В данном случае наверно можно пренебречь, но и забывать не стоит.
В данном случае наверно можно пренебречь, но и забывать не стоит.
Re: Сравнение чисел
хорошо, а пому бы не сделать на ST или С++ цикл
ну короче я в синтаксис не вникал. но смысл - имеем цикл перебора состояний всех требуемых битов через индексный регистр, и в случае обнаружения взведенного бита активировать один нужный маркер, ну или вообще через еще один индексный можно проверять изменение любого из битов относительно предыдущего цикла.
Код: Выделить всё
for I=0 to 100 next
E0=i
if m100@E0<>0 then M500=1
Re: Сравнение чисел
А почему нет? Большая портянка? Да черт с ней, если надо, ПЛК эти сотни строк переварит - не поморщится.Отслеживать фронт каждого бита из полсотни....как то совсем нефеншуйно.
Re: Сравнение чисел
Плк может и не сильно поморщится, а вот ручки устанут от монотонной работы.
Re: Сравнение чисел
LD& D10 16#8000 просто "ловит" отрицательные числа.
Знаковый бит можно убрать, и сравнивать регистры, как положительные числа.
Как-то мне попадалась инструкция, которая считала количество 1 в регистре.
Если попадется снова - отпишусь