Дорвался я на прошлых выходных до контроллера, поправил код с учетом прохождения счетчика через ноль. В итоге он выглядит так:
И вроде бы не на что списать больше скачки значений расхода - а по факту, такое хоть и реже стало происходить, но все же проявляется с определенной периодичностью.Код:IF cnt_timeout.Q THEN r1_current := cnt_03_ch_16_19_read[1]; r2_current := cnt_03_ch_16_19_read[3]; IF r1_current < r1_old THEN r1 := r1_kef*WORD_TO_REAL(65535-r1_old+r1_current+1); ELSE r1 := r1_kef*WORD_TO_REAL(r1_current-r1_old); END_IF IF r2_current < r2_old THEN r2 := r2_kef*WORD_TO_REAL(65535-r2_old+r2_current+1); ELSE r2 := r2_kef*WORD_TO_REAL(r2_current-r2_old); END_IF r1_old := r1_current; r2_old := r2_current; recharge_cnt_timer := TRUE; END_IF
Поток сырья не изменяется, значения расходомеров, к примеру, в течении нескольких секунд вполне адекватно меняются, скажем, 50.3 г/с, 50.8 г/с, 50.5 г/с ... а потом разовый скачок до 70 г/с.
Чем может быть вызвано такое поведение программы? (значения меняются не только на визуализации, такой скачок в отладчике проскакивает точно так же).
Единственное, что могу предположить, "подвисание" цикла исполнения программы на СПК110.
Может быть стоит, например, производить опрос чаще, 5 раз в секунду, усреднять и выводить на визуализацию раз в секунду?




Ответить с цитированием