
Сообщение от
paul-th
petera Спасибо ещё раз, связь наладилась, процесс пошел. То что касается температуры и ТРМа всё хорошо работает, логика цикла выполняется правильно.
Но есть но.
В выдержками времени, по задержке и работа в цикле происходит не понятно что.
Задал увеличение уставки на 10 единиц, Мах Темп 40 гр. время выдержки 10 мин. внутри цикла 5 мин., первое изменение произошло не через 5 минут, а через 2 минуты и сразу на 20 градусов, текущая была 22 гр. и цикл встал на ожидание выдержки, она закончилась через 3 мин. вместо 10.
Сделал увеличение 2 единицы и время выдержки 5 мин. Увеличение температуры произошло так же через две минуты, но уже на 6 градусов и следующее увеличение произошло буквально через 20 сек. на 12 градусов, уставка достигла 40 гр. цикл встал на выдержку.
Что то со временем не так и с суммированием, что сделать чтобы было нормально?
Покажите проект с последними изменениями
ЗЫ.
Задал увеличение уставки на 10 единиц, Мах Темп 40 гр. время выдержки 10 мин. внутри цикла 5 мин., первое изменение произошло не через 5 минут, а через 2 минуты и сразу на 20 градусов, текущая была 22 гр. и цикл встал на ожидание выдержки,
Так и должно работать :
Код:
.............................................
do {
CurMinute = (PSW[34] / 16) * 10 + PSW[34] % 16;
if (CurMinute % 5 == 0)
{ CurTemp = CurTemp + 10;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
}
Delay(10);
} while ( CurTemp < MaxTemp );
..................................................
Пятиминутное изменение уставки привязано к часам панели и происходит каждые 0, 5, 10, 15 ... 55 мин. По этому если запустили макрос в 14:53 или 17:13, то первое изменение и произойдет через 2 минуты - в 14:55 или 17:15
И так как условие if (CurMinute % 5 == 0) будет истинно в течение последующих 60 секунд, то и тело if
{ CurTemp = CurTemp + 10;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
}
будет выполнятся непрерывно, и будет казаться, что "сразу на 20 градусов"
Тут надо использовать другой источник времени - регистр PSW38. Формат у него DWord.
В PSW38 находится время работы панели от момента включения. Дискретность 0,1 сек.