kondor3000 последовательно вводите, и выполняйте по шагам. на выходе CD 3, 3, 3, вместо 3,2,3
с другими числами особо не проверял, но думаю будет примерно та же картина всегда. Вот попробовал 16, 8, 16, 8 В общем будет лажать там-сям.
Вид для печати
kondor3000 последовательно вводите, и выполняйте по шагам. на выходе CD 3, 3, 3, вместо 3,2,3
с другими числами особо не проверял, но думаю будет примерно та же картина всегда. Вот попробовал 16, 8, 16, 8 В общем будет лажать там-сям.
еще раз - работает только при условии, что аварии не сбрасываются и не квитируются. Сделайте эмуляцию квитирования по любому биту и получите чушь на выходе.
з.ы. просто глаз резануло и начал тыкать по шагам при условии что аварии могут меняться. Не судите строго мой компьютер :)
Аварии должны идти как минимум через цикл программы, если в одном цикле более одной аварии - будет сбой, я уж не стал "прореживать" в смысле усложнять, как я понял, у товарища они идут не раньше чем через минуту, поэтому счёл что ему "потянет"!
А так если делать "на все случаи жизни" для правильной работы надо чтобы новые аварии поступали не ранее чем через цикл программы, впрочем, нетрудно будет и "проредить" поступающие аварии!
Это ограничения работы стека, для его работы и сдвига данных нужно изменение булевого сигнала, в смысле, если постоянно будет единица на входе сдвига - данные сдвигаться не будут!
Можно конечно использовать мой стек как матрицу памяти(он и так умеет работать), тогда в ячейки можно писать каждый цикл программы(не через цикл, как у стека), но тогда надо ещё счетчик ставить, чтобы адреса ячеек для записи менять! Короче, можно сделать как угодно, в смысле, но если товарищу это подойдёт, не вижу смысла усложнять!
И, я ранее, в одной из тем уже выкладывал макрос разруливания одновременного запуска компрессоров(насосов), он как раз подойдёт!
Вложение 81761
https://owen.ru/forum/showthread.php?t=26216&page=353
ну если будет общий сброс, наверное будет работать. Не проверял. Когда делал на ваших ПЗУ, то делал просто любое изменение с выводом кода аварии вместе со временем. Разбора кода на ПР не делал, биты уже выдергивались в scada.
Если делать на экран ПР, как-то даже не думал, как это сделать. Да и усложнять программу не видел смысла при наличии scada.
Так это вроде не сложно, в смысле, вставить(выдернуть) двух разрядное число в(из) 10-и разрядное(го), посмотрите как я в программе кодом аварии жонглировал!
Там вообще(в принципе) никакого сброса нет, так как он не нужен, данные пишутся в стек, при заполнении стека затираются самые старые, всё, здесь сбрасывать нечего!
Вообще, конечно могут несколько Битов придти одновременно.
Мигает потому, что каждый DC16bit выдает последовательно (с паузой между номерами) номера установленных бит в маске зафиксированных аварий.
Т.е журнал работает правильно даже если в данной временной отметке ОДНОВРЕМЕННО зафиксировано несколько аварий. Они ВСЕ последовательно будут выведены на экране в одной строке, если как и задумано, используется динамический текст
Вот немного подшаманил, теперь вроде должно работать без ограничений, чего скажите, в смысле, свой вариант не приготовили?
Вложение 81762
Один нюанс обнаружил, если срабатывает одновременно более одной аварии, то счётчик событий считает это как одно событие, чтобы все аварии считало обычный счётчик не подходит, наверно придётся ещё и счётчик на свой менять(у меня имеется подходящий на примете), пока будем считать, что так и задумано, так как у ТС вопрос о счётчике аварий не стоял, остальное вроде как фунциклирует!
Вот и счётчик поправил, чтобы считал по-человечьи:
Вложение 81765
Вложение 81764