/
George_Smith
/
RuSTy
Обзор
Документация
Войти
/
George_Smith
/
RuSTy
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
Peter
TMproc.ResourceProject.st
318 строк
26 KB
Peter Korobeynikov
FB-CALL TESTING
25 янв 2026, 17:25
25 янв 2026, 17:25
feb4daa
Код
Авторство
О чём код?
PROGRAM TMproc VAR sTextDescription: STRING; TmTSPrev: ARRAY[1..500] OF BOOL; (* Сигналы ТС для IEC на пердыдущем скане *) TmTINew: ARRAY[1..200] OF REAL; (* Сигналы ТИ для IEC без учета дельты *) fbPrepData : DataLog; END_VAR VAR_EXTERNAL END_VAR (*------------------------------------------------------------------------------*) (* ############# `######### *) (* ############# ### *) (* ### ### *) (* ### ### *) (* ### ### *) (* ### ### *) (* ### ######### *) (*------------------------------------------------------------------------------*) (* ТС Задвижек *) FOR I :=1 TO 12 DO TmTS[1 + (I-1)*20]:= (ZDStateArr[I] AND 7)=2; (* Задвижка. Открыта *) TmTS[2 + (I-1)*20]:= (ZDStateArr[I] AND 7)=5; (* Задвижка. Закрыта *) TmTS[3 + (I-1)*20]:= (ZDStateArr[I] AND 7)=1; (* Задвижка. Открывается *) TmTS[4 + (I-1)*20]:= (ZDStateArr[I] AND 7)=4; (* Задвижка. Закрывается *) TmTS[5 + (I-1)*20]:= (ZDStateArr[I] AND 7)=3; (* Задвижка. В промежутке *) TmTS[6 + (I-1)*20]:= NOT ZDStateArr[I].16; (* Задвижка. Наличие напряжения *) TmTS[7 + (I-1)*20]:= ZDStateArr[I].10; (* Задвижка. Сработала муфта *) TmTS[8 + (I-1)*20]:= ZDStateArr[I].9; (* Задвижка. Моментный выключатель открытия *) TmTS[9 + (I-1)*20]:= ZDStateArr[I].8; (* Задвижка. Моментный выключатель закрытия *) TmTS[10 + (I-1)*20]:= ZDStateArr[I].14; (* Задвижка. В дистанционном режиме *) TmTS[11 + (I-1)*20] := ZDStateArr[I].15; (* Задвижка. Включен режим имитации *) TmTS[12 + (I-1)*20] := ZDStateArr[I].18; (* Задвижка. Невыполнение команды открытия *) TmTS[13 + (I-1)*20] := ZDStateArr[I].19; (* Задвижка. Невыполнение команды закрытия *) TmTS[14 + (I-1)*20] := ZDStateArr[I].20; (* Задвижка. Невыполнение команды стоп *) TmTS[15 + (I-1)*20] := ZDStateArr[I].4; (* Задвижка. Самопроизвольное открытие *) TmTS[16 + (I-1)*20] := ZDStateArr[I].5; (* Задвижка. Самопроизвольное закрытие *) TmTS[17 + (I-1)*20] := ZDStateArr[I].17; (* Задвижка. Не совпадение дискретных и интерфейсных сигналов *) TmTS[18 + (I-1)*20] := NOT ZDStateArr[I].21; (* Задвижка. Отсутствие данных по интерфейсу *) TmTS[19 + (I-1)*20] := ZDStateArr[I].13; (* Задвижка. Неисправность *) TmTS[20 + (I-1)*20] := ZDStateArr[I].12; (* Задвижка. Авария *) END_FOR; TmTS[241] := OIPState[15].9; (* Уровень нефти в емкости ЕП № 024.2 узла приема СОД МН «XXXX» максимальный *) TmTS[242] := OIPState[15].10; (* Уровень нефти в емкости ЕП № 024.2 узла приема СОД МН «XXXX» максимальный аварийный *) TmTS[243] := OIPState[16].9; (* Уровень нефти в емкости ЕП узла пуска СОД максимальный *) TmTS[244] := OIPState[16].10; (* Уровень нефти в емкости ЕП узла пуска СОД максимальный аварийный *) TmTS[245] := 0; (* Резерв *) TmTS[246] := 0; (* Резерв *) TmTS[247] := 0; (* Резерв *) TmTS[248] := DIn[1]; (* Наличие напряжения ~220В на вводе 1 *) TmTS[249] := DIn[2]; (* Исправность оборудования питания ввода 1 *) TmTS[250] := DIn[3]; (* Наличие напряжения ~220В на вводе 2 *) TmTS[251] := DIn[4]; (* Исправность оборудования питания ввода 2 *) TmTS[252] := DIn[5]; (* Общая исправность системы питания *) TmTS[253] := DIn[6]; (* Дверь шкафа открыта *) TmTS[254] := DIn[7]; (* Неисправность изоляции внешних цепей питания *) TmTS[255] := DIn[150] AND ((NOT OIPState[10].2 AND NOT OIPState[10].15) OR OIPState[10].15); (* Насос емкости ЕП камеры приема, № 024.02. Включен *) TmTS[256] := DIn[152]; (* Насос емкости ЕП камеры пуска. Включен *) TmTS[257] := 0; (* Резерв *) TmTS[258] := 0; (* Резерв *) TmTS[259] := 0; (* Резерв *) TmTS[260] := 0; (* Резерв *) TmTS[261] := 0; (* Резерв *) TmTS[262] := 0; (* Резерв *) TmTS[263] := 0; (* Резерв *) TmTS[264] := 0; (* Резерв *) TmTS[265] := 0; (* Резерв *) TmTS[266] := 0; (* Резерв *) TmTS[267] := 0; (* Резерв *) TmTS[268] := 0; (* Резерв *) TmTS[269] := 0; (* Резерв *) TmTS[270] := 0; (* Резерв *) TmTS[271] := 0; (* Резерв *) TmTS[272] := 0; (* Резерв *) TmTS[273] := DIn[128]; (* Пожар в ПКУ *) TmTS[274] := DIn[129]; (* Неисправность пожарной сигнализации в ПКУ *) TmTS[275] := DIn[130]; (* Срабатывание охранной сигнализации в ПКУ *) TmTS[276] := DIn[105]; (* Срабатывание сигнализатора прохождения СОД (ОУ) камеры приема СОД МН «XXXX» *) TmTS[277] := DIn[106]; (* Срабатывание сигнализатора прохождения СОД (ОУ) камеры приема СОД МН «Лисичанск Тихорецк-3» (трансмиттер ОУ) *) TmTS[278] := DIn[107]; (* Неисправность сигнализатора прохождения СОД камеры приема СОД МН «XXXX» *) TmTS[279] := DIn[118]; (* Срабатывание сигнализатора прохождения СОД (ОУ) камеры пуска СОД *) TmTS[280] := DIn[119]; (* Срабатывание сигнализатора прохождения СОД (ОУ) камеры пуска СОД (трансмиттер ОУ) *) TmTS[281] := DIn[120]; (* Неисправность сигнализатора прохождения СОД камеры пуска СОД *) TmTS[282] := DIn[115]; (* Срабатывание сигнализатора прохождения СОД (ОУ) на выходе узла пуска СОД *) TmTS[283] := DIn[116]; (* Срабатывание сигнализатора прохождения СОД (ОУ) на выходе узла пуска СОД *) TmTS[284] := DIn[117]; (* Неисправность сигнализатора прохождения СОД на выходе узла пуска СОД *) TmTS[285] := DIn[112]; (* Срабатывание сигнализатора прохождения СОД (ОУ) после задвижки № 437-1 *) TmTS[286] := DIn[113]; (* Срабатывание сигнализатора прохождения СОД (ОУ) после задвижки № 437-1 (трансмиттер ОУ) *) TmTS[287] := DIn[114]; (* Неисправность сигнализатора прохождения СОД после задвижки № 437-1 *) TmTS[288] := KgkOut[1]; (* Срабатывание сигнализатора контроля герметичности камеры приема СОД МН «XXXX» *) TmTS[289] := DIn[109]; (* Неисправность сигнализатора контроля герметичности камеры приема СОД МН «XXXX» *) TmTS[290] := DIn[110]; (* Затопление площадки узла приема СОД *) TmTS[291] := KgkOut[2]; (* Срабатывание сигнализатора контроля герметичности камеры пуска СОД *) TmTS[292] := DIn[122]; (* Неисправность сигнализатора контроля герметичности камеры пуска СОД *) TmTS[293] := DIn[123]; (* Затопление площадки узла пуска СОД *) TmTS[294] := DIn[125]; (* Шкаф СОУ. Переход на питание от ИБП *) TmTS[295] := DIn[126]; (* Минимальная температура воздуха в блок- боксе ПКУ *) TmTS[296] := DIn[127]; (* Максимальная температура воздуха в блок- боксе ПКУ *) TmTS[297] := DIn[131]; (* ДЭС в работе *) TmTS[298] := DIn[132]; (* ДЭС неисправна *) TmTS[299] := DIn[133]; (* Пожар в ДЭС *) TmTS[300] := DIn[134]; (* Неисправность АСПТ ДЭС *) TmTS[301] := DIn[135]; (* Пуск ОТВ в ДЭС *) TmTS[302] := DIn[136]; (* Автоматика СПТ отключена *) TmTS[303] := DIn[137]; (* Линейный АПС включен *) TmTS[304] := DIn[138]; (* Линейный АПС аварийно отключен *) TmTS[305] := DIn[139]; (* Готовность линейного АПС к ТУ *) TmTS[306] := DIn[140]; (* Наличие напряжения на вводе ПКУ (ввод 1) *) TmTS[307] := DIn[141]; (* Наличие напряжения на вводе ПКУ (ввод 2) *) TmTS[308] := DIn[142]; (* Наличие напряжения на вводе ПКУ (ввод 3) *) TmTS[309] := DIn[143]; (* Наличие напряжения на 1СШ ЩСУ *) TmTS[310] := DIn[144]; (* Наличие напряжения на 2СШ ЩСУ *) TmTS[311] := DIn[145]; (* Отключение ИБП от сети электропитания *) TmTS[312] := DIn[146]; (* Питание расходомера включено *) TmTS[313] := OIPState[17].10; (* Затопление колодца КИП № 018.2 *) TmTS[314] := OIPState[17].14; (* Затопление колодца КИП № 018.2. КЗ *) TmTS[315] := OIPState[17].6; (* Затопление колодца КИП № 018.2. Обрыв *) TmTS[316] := OIPState[18].10; (* Затопление колодца КИП №1 *) TmTS[317] := OIPState[18].14; (* Затопление колодца КИП №1. КЗ *) TmTS[318] := OIPState[18].6; (* Затопление колодца КИП №1. Обрыв *) TmTS[319] := OIPState[19].10; (* Затопление колодца КИП №2 *) TmTS[320] := OIPState[19].14; (* Затопление колодца КИП №2. КЗ *) TmTS[321] := OIPState[19].6; (* Затопление колодца КИП №2. Обрыв *) TmTS[322] := OIPState[20].10; (* Затопление колодца КИП №3 *) TmTS[323] := OIPState[20].14; (* Затопление колодца КИП №3. КЗ *) TmTS[324] := OIPState[20].6; (* Затопление колодца КИП №3. Обрыв *) TmTS[325] := OIPState[21].10; (* Затопление колодца КИП №4 *) TmTS[326] := OIPState[21].14; (* Затопление колодца КИП №4. КЗ *) TmTS[327] := OIPState[21].6; (* Затопление колодца КИП №4. Обрыв *) TmTS[328] := OIPState[22].10; (* Затопление колодца КИП №5 *) TmTS[329] := OIPState[22].14; (* Затопление колодца КИП №5. КЗ *) TmTS[330] := OIPState[22].6; (* Затопление колодца КИП №5. Обрыв *) //TmTS[331] := PRO100_AI_161_V33_1.GetDeviceState() = 2; (* Модуль AI-1 исправен *) //TmTS[332] := PRO100_AI_161_V33_2.GetDeviceState() = 2; (* Модуль AI-2 исправен *) //TmTS[333] := PRO100_DI_321_V23_1.GetDeviceState() = 2; (* Модуль DI-1 исправен *) //TmTS[334] := PRO100_DI_321_V23_2.GetDeviceState() = 2; (* Модуль DI-2 исправен *) //TmTS[335] := PRO100_DI_321_V23_3.GetDeviceState() = 2; (* Модуль DI-3 исправен *) //TmTS[336] := PRO100_DI_321_V23_4.GetDeviceState() = 2; (* Модуль DI-4 исправен *) //TmTS[337] := PRO100_DI_321_V23_5.GetDeviceState() = 2; (* Модуль DI-5 исправен *) //TmTS[338] := PRO100_DO_321_V30_1.GetDeviceState() = 2; (* Модуль DO-1 исправен *) //TmTS[339] := PRO100_DO_321_V30_2.GetDeviceState() = 2; (* Модуль DO-2 исправен *) (* Запись изменений TmTS в файл*) FOR I:=1 TO 339 DO IF TmTS[I] <> TmTSPrev[I] THEN sTextDescription := concat('TS',UINT_TO_STRING(I)); sTextDescription := concat(sTextDescription, '_PLC'); fbPrepData(pbPLCData := ADR(TmTS[I]),iTypeEv := 500,sTextDesc := sTextDescription,uTimeOut := 60); TmTSPrev[I] := TmTS[I]; END_IF; END_FOR; (*--------------------------------------------------------------------------------------*) (* ############# ### ### *) (* ############# ### #### *) (* ### ### ##### *) (* ### ### ## ### *) (* ### ##### ### *) (* ### #### ### *) (* ### ### ### *) (*--------------------------------------------------------------------------------------*) (* Уставки задвижек *) FOR I := 1 TO 12 DO TmTINew[(I-1)*10 + 1] := ZDUst[I,1]; (* Т1. Время переходных процессов *) TmTINew[(I-1)*10 + 2] := ZDUst[I,2]; (* Т2. Время ожидания МП после команды *) TmTINew[(I-1)*10 + 3] := ZDUst[I,3]; (* Т3. Время схода с концевика *) TmTINew[(I-1)*10 + 4] := ZDUst[I,4]; (* Т4. Время "хода" вала *) TmTINew[(I-1)*10 + 5] := ZDUst[I,5]; (* Т5. Время на отключение МП в крайних положениях *) TmTINew[(I-1)*10 + 6] := ZDUst[I,6]; (* Т6. Время на возврат напряжения при стопе по месту *) TmTINew[(I-1)*10 + 7] := ZDUst[I,7]; (* Т7. Время хода вала в имитации *) TmTINew[(I-1)*10 + 8] := ZDUst[I,8]; (* Т8. Время удержания команды СТОП *) TmTINew[(I-1)*10 + 9] := ZDUst[I,13]; (* Т13. Время рассогласования поля и интерфейса *) TmTINew[(I-1)*10 + 10] := ZDUst[I,14]; (* Т14. Время подозрительных переходов (инициализация БУР) *) END_FOR; (* Остальные уставки *) TmTINew[121] := OtherUst[1]; (* Насос емкости ЕП камеры приема, № 024.02. Время на набор давления *) TmTINew[122] := OtherUst[2]; (* Насос емкости ЕП камеры приема, № 024.02. Время до сработки "Макс. темп. Н/НП" *) TmTINew[123] := OtherUst[3]; (* Насос емкости ЕП камеры приема, № 024.02. Время до сработки "Макс. темп. подшипника насоса" *) TmTINew[124] := OtherUst[4]; (* Насос резерв. Время на набор давления *) TmTINew[125] := OtherUst[5]; (* Насос резерв. Время до сработки "Макс. темп. Н/НП" *) TmTINew[126] := OtherUst[6]; (* Насос резерв. Время до сработки "Макс. темп. подшипника насоса" *) TmTINew[127] := OtherUst[7]; (* Линейный АПС. Время на подготовку к ТУ *) TmTINew[128] := 0.0; (* Резерв *) FOR I := 1 TO 128 DO TmTIdelta[I] := 0.1; TmTIqual[I] := TRUE; END_FOR; (* Аналоги *) FOR I :=1 TO 16 DO TmTINew[I+128] := OIPsection.OIPStorage[I].OutSignal.VisualValue; TmTIqual[I+128] := NOT OIPState[I].15; END_FOR TmTIdelta[129] := 0.1; (* Давление нефти на входе узла приема СОД МН «XXXX» *) TmTIdelta[130] := 0.1; (* Давление нефти в камере приема СОД МН «XXXX» *) TmTIdelta[131] := 0.1; (* Давление нефти до задвижки № 437-1 *) TmTIdelta[132] := 0.1; (* Давление нефти после задвижки № 437-1 *) TmTIdelta[133] := 0.1; (* Давление нефти после задвижки № 437-1П *) TmTIdelta[134] := 0.1; (* Давление нефти после задвижки № 437-2П *) TmTIdelta[135] := 0.1; (* Давление нефти после задвижки № 437-1Л *) TmTIdelta[136] := 0.1; (* Давление нефти в камере пуска СОД *) TmTIdelta[137] := 0.1; (* Температура в ШТМ *) TmTIdelta[138] := 0.1; (* Давление нефти на выходе насоса откачки утечек емкости ЕП узла приема С *) TmTIdelta[139] := 0.1; (* Температура в шкафу приборном УЗР *) TmTIdelta[140] := 1.0; (* Расход нефти МН «XXXX» *) TmTIdelta[141] := 0.1; (* Температура нефти на выходе насоса №024.2 *) TmTIdelta[142] := 0.1; (* Температура подшипника насоса № 024.2 *) TmTIdelta[143] := 1.0; (* Уровень нефти в емкости ЕП № 024.2 узла приема СОД МН «XXXX» *) TmTIdelta[144] := 1.0; (* Уровень нефти в емкости ЕП узла пуска СОД *) (* Запись изменений TmTI в файл*) FOR I:=1 TO 144 DO IF ABS(TmTINew[I] - TmTI[I]) > TmTIdelta[I] THEN sTextDescription := concat('TIr',UINT_TO_STRING(I)); sTextDescription := concat(sTextDescription, '_PLC'); TmTI[I] := TmTINew[I]; fbPrepData(prPLCData := ADR(TmTI[I]),iTypeEv := 504,sTextDesc := sTextDescription,uTimeOut := 60); END_IF; END_FOR; (*-----------------------------------------------------------------------------------*) (* ############# ### ### *) (* ############# ### ### *) (* ### ### ### *) (* ### ########## *) (* ### ### *) (* ### ### *) (* ### ######### *) (*-----------------------------------------------------------------------------------*) FOR I := 1 TO 12 DO ZDCtrl[I].5 := TmTU[1 + (I-1)*9]; (* Команда по ТУ на открытие задвижки, 0 – нет команды, 1 - есть команда *) ZDCtrl[I].4 := TmTU[2 + (I-1)*9]; (* Команда по ТУ на закрытие задвижки, 0 – нет команды, 1 - есть команда *) ZDCtrl[I].6 := TmTU[3 + (I-1)*9]; (* Команда по ТУ на остановку задвижки, 0 – нет команды, 1 - есть команда *) ZDCtrl[I].9 := TmTU[4 + (I-1)*9]; (* Команда от ЦСПА на открытие задвижки, 0 – нет команды, 1 - есть команда *) ZDCtrl[I].8 := TmTU[5 + (I-1)*9]; (* Команда от ЦСПА на закрытие задвижки, 0 – нет команды, 1 - есть команда *) ZDCtrl[I].10 :=TmTU[6 + (I-1)*9]; (* Команда от ЦСПА на остановку задвижки, 0 – нет команды, 1 - есть команда*) ZDCtrl[I].14 :=TmTU[7 + (I-1)*9]; (* Команда по ТУ на установку имитации *) ZDCtrl[I].15 :=TmTU[8 + (I-1)*9]; (* Команда по ТУ на снятие имитации *) ZDCtrl[I].7 := TmTU[9 + (I-1)*9]; (* Команда по ТУ на деблокировку задвижки *) END_FOR; DOut[9] := TmTU[109]; (* Линейный АПС. Включить *) DOut[10] := TmTU[110]; (* Линейный АПС. Отключить *) DOut[11] := TmTU[111]; (* Линейный АПС. Подготовить к ТУ *) DOut[1] := TmTU[112]; (* Контроль сигнализатора прохождения СОД камеры приема СОД МН «XXXX» *) DOut[2] := TmTU[113]; (* Контроль сигнализатора прохождения СОД после задвижки № 437-1 *) DOut[3] := TmTU[114]; (* Контроль сигнализатора прохождения СОД на выходе узла пуска СОД *) DOut[4] := TmTU[115]; (* Контроль сигнализатора прохождения СОД камеры пуска СОД *) DOut[5] := TmTU[116]; (* Перезапустить контроллер СОУ *) (*Запись изменений TmTU в файл*) FOR I:=1 TO 116 DO IF TmTU[I] THEN sTextDescription := concat('TU',UINT_TO_STRING(I)); sTextDescription := concat(sTextDescription, '_45'); fbPrepData(pbInData := ADR(TmTU[I]),iTypeEv := 45,sTextDesc := sTextDescription,uTimeOut := 60); END_IF; END_FOR; FOR I := 1 TO 200 DO TmTU[I] := FALSE; END_FOR; (*-------------------------------------------------------------------------------*) (* ############# ########## *) (* ############# ### ### *) (* ### ### ### *) (* ### ########## *) (* ### ### *) (* ### ### *) (* ### ### *) (*-------------------------------------------------------------------------------*) (* Ввод уставок задвижек *) FOR I := 1 TO 12 DO IF TmTR[(I-1)*10 + 1] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,1] := TmTR[(I-1)*10 + 1]; END_IF; (* Т1. Время переходных процессов *) IF TmTR[(I-1)*10 + 2] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,2] := TmTR[(I-1)*10 + 2]; END_IF; (* Т2. Время ожидания МП после команды *) IF TmTR[(I-1)*10 + 3] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,3] := TmTR[(I-1)*10 + 3]; END_IF; (* Т3. Время схода с концевика *) IF TmTR[(I-1)*10 + 4] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,4] := TmTR[(I-1)*10 + 4]; END_IF; (* Т4. Время "хода" вала *) IF TmTR[(I-1)*10 + 5] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,5] := TmTR[(I-1)*10 + 5]; END_IF; (* Т5. Время на отключение МП в крайних положениях *) IF TmTR[(I-1)*10 + 6] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,6] := TmTR[(I-1)*10 + 6]; END_IF; (* Т6. Время на возврат напряжения при стопе по месту *) IF TmTR[(I-1)*10 + 7] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,7] := TmTR[(I-1)*10 + 7]; END_IF; (* Т7. Время хода вала в имитации *) IF TmTR[(I-1)*10 + 8] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,8] := TmTR[(I-1)*10 + 8]; END_IF; (* Т8. Время удержания команды СТОП *) IF TmTR[(I-1)*10 + 9] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,13] := TmTR[(I-1)*10 + 9]; END_IF; (* Т13. Время рассогласования поля и интерфейса *) IF TmTR[(I-1)*10 + 10] <> -9999.0 AND NOT FirstCycle THEN ZDUst[I,14] := TmTR[(I-1)*10 + 10]; END_IF; (* Т14. Время подозрительных переходов (инициализация БУР) *) END_FOR; (* Ввод остальных уставок *) IF TmTR[121] <> -9999.0 AND NOT FirstCycle THEN OtherUst[1] := TmTR[121]; END_IF; (* Насос емкости ЕП камеры приема, № 024.02. Время на набор давления *) IF TmTR[122] <> -9999.0 AND NOT FirstCycle THEN OtherUst[2] := TmTR[122]; END_IF; (* Насос емкости ЕП камеры приема, № 024.02. Время до сработки "Макс. темп. Н/НП" *) IF TmTR[123] <> -9999.0 AND NOT FirstCycle THEN OtherUst[3] := TmTR[123]; END_IF; (* Насос емкости ЕП камеры приема, № 024.02. Время до сработки "Макс. темп. подшипника насоса" *) IF TmTR[124] <> -9999.0 AND NOT FirstCycle THEN OtherUst[4] := TmTR[124]; END_IF; (* Насос резерв. Время на набор давления *) IF TmTR[125] <> -9999.0 AND NOT FirstCycle THEN OtherUst[5] := TmTR[125]; END_IF; (* Насос резерв. Время до сработки "Макс. темп. Н/НП" *) IF TmTR[126] <> -9999.0 AND NOT FirstCycle THEN OtherUst[6] := TmTR[126]; END_IF; (* Насос резерв. Время до сработки "Макс. темп. подшипника насоса" *) IF TmTR[127] <> -9999.0 AND NOT FirstCycle THEN OtherUst[7] := TmTR[127]; END_IF; (* Линейный АПС. Время на подготовку к ТУ *) (*Запись изменений TmTR в файл*) FOR I:=1 TO 127 DO IF TmTR[I] <> -9999.0 AND NOT FirstCycle THEN sTextDescription := concat('TR',UINT_TO_STRING(I)); sTextDescription := concat(sTextDescription, '_50'); fbPrepData(pfInData := ADR(TmTR[I]),iTypeEv := 50,sTextDesc := sTextDescription,uTimeOut := 60); END_IF; END_FOR; FOR I := 1 TO 127 DO TmTR[I] := -9999.0; END_FOR; END_PROGRAM