// Функция запуска двигателей с приводами вручную.
// Функция реализует:
// - включение конкретного двигателя вперёд;
// - включение конкретного двигателя назад;
// - остановку конкретного двигателя.
FUNCTION ManualRunDrives2W : VOID
TITLE ='Функция запуска двигателей с приводами вручную.';
CONST
DRIVESNUM := 18; // Общее количество приводов.
END_CONST
VAR_INPUT
Jointly : ARRAY [1..19] OF BOOL; // Массив, определяющий совместную или раздельную работу приводов.
Run : ARRAY [1..18] OF BOOL; // Массив с флагами запущенного состояния приводов.
LWMDriveNum : INT; // Номер привода НЧМ - 6RA24.
CalenderDriveNum : INT; // Номер привода каландра - 6RA24.
CWM_90DriveNum : INT; // Номер привода МЧХ-90 - 6RA24.
HWMDriveNum : INT; // Номер привода ВЧМ - 6RA70.
DrivesAmount : INT; // Количество приводов.
ManualMode : BOOL; // Ручной режим работы линии.
LineTaskSpeed : INT; // Заданная скорость линии.
StopLine : BOOL; // Остановить линию.
DisableDrives : BOOL; // Отключить приводы.
CoilTranspIndex : INT; // Индекс транспортёра закатки.
LineMaxSpeed : INT; // Максимальная скорость линии.
//-> Управление транспортёрами вручную - включение вперёд:
RunLWMLoader : BOOL; // Запустить питатель НЧМ.
RunHWMLoader : BOOL; // Запустить питатель ВЧМ.
RunShrinkRoller : BOOL; // Запустить усадочный рольганг.
RunCheckRoller : BOOL; // Запустить рольганг контроля.
RunCalender : BOOL; // Запустить каландр.
RunMarkingTransp : BOOL; // Запустить маркировочный транспортёр.
RunGlueTransp : BOOL; // Запустить транспортёр сушки клея.
RunCooling1Transp : BOOL; // Запустить транспортёр охлаждения №1.
RunCooling2Transp : BOOL; // Запустить транспортёр охлаждения №2.
RunCooling3transp : BOOL; // Запустить транспортёр охлаждения №3.
RunLongitudelCut : BOOL; // Запустить транспортёр продольного реза.
RunCutTransp : BOOL; // Запустить транспортёр отрезания заготовок.
RunCoilTransp : BOOL; // Запустить транспортёр намотки на катушки.
RunLWM : BOOL; // Запустить НЧМ.
RunHWM : BOOL; // Запустить ВЧМ.
RunReceivingTransp : BOOL; // Запустить приёмный транспортёр.
RunCWM_90 : BOOL; // Запустить МЧХ-90.
RunCalenderLoader : BOOL; // Запустить питатель каландра.
//-> Управление транспортёрами вручную - остановка.
StopLWMLoader : BOOL; // Остановить питатель НЧМ.
StopHWMLoader : BOOL; // Остановить питатель ВЧМ.
StopShrinkRoller : BOOL; // Остановить усадочный рольганг.
StopCheckRoller : BOOL; // Остановить рольганг контроля.
StopCalender : BOOL; // Остановить каландр.
StopMarkingTransp : BOOL; // Остановить маркировочный транспортёр.
StopGlueTransp : BOOL; // Остановить транспортёр сушки клея.
StopCooling1Transp : BOOL; // Остановить транспортёр охлаждения №1.
StopCooling2Transp : BOOL; // Остановить транспортёр охлаждения №2.
StopCooling3transp : BOOL; // Остановить транспортёр охлаждения №3.
StopLongitudelCut : BOOL; // Остановить транспортёр продольного реза.
StopCutTransp : BOOL; // Остановить транспортёр отрезания заготовок.
StopCoilTransp : BOOL; // Остановить транспортёр намотки на катушки.
StopLWM : BOOL; // Остановить НЧМ.
StopHWM : BOOL; // Остановить ВЧМ.
StopReceivingTransp : BOOL; // Остановить приёмный транспортёр.
StopCWM_90 : BOOL; // Остановить МЧХ-90.
StopCalenderLoader : BOOL; // Остановить питатель каландра.
//-> Управление транспортёрами вручную - разрешение работы:
AllowRunLWMLoader : BOOL; // Разрешить запуск питателя НЧМ.
AllowRunHWMLoader : BOOL; // Разрешить запуск питателя ВЧМ.
AllowRunShrinkRoller : BOOL; // Разрешить запуск усадочного рольганга.
AllowRunCheckRoller : BOOL; // Разрешить запуск рольганга контроля.
AllowRunCalender : BOOL; // Разрешить запуск каландра.
AllowRunMarkingTransp : BOOL; // Разрешить запуск маркировочного транспортёра.
AllowRunGlueTransp : BOOL; // Разрешить запуск транспортёра сушки клея.
AllowRunCooling1Transp : BOOL; // Разрешить запуск транспортёра охлаждения №1.
AllowRunCooling2Transp : BOOL; // Разрешить запуск транспортёра охлаждения №2.
AllowRunCooling3transp : BOOL; // Разрешить запуск транспортёра охлаждения №3.
AllowRunLongitudelCut : BOOL; // Разрешить запуск транспортёра продольного реза.
AllowRunCutTransp : BOOL; // Разрешить запуск транспортёра отрезания заготовок.
AllowRunCoilTransp : BOOL; // Разрешить запуск транспортёра намотки на катушки.
AllowRunLWM : BOOL; // Разрешить запуск НЧМ.
AllowRunHWM : BOOL; // Разрешить запуск ВЧМ.
AllowRunReceivingTransp : BOOL; // Разрешить запуск приёмного транспортёра.
AllowRunCWM_90 : BOOL; // Разрешить запуск МЧХ-90.
AllowRunCalenderLoader : BOOL; // Разрешить запуск питателя каландра.
//-> Управление транспортёрами вручную - включение назад приводов постоянного тока:
RunBackLWM : BOOL; // Запустить назад НЧМ.
RunBackHWM : BOOL; // Запустить назад ВЧМ.
RunBackCWM_90 : BOOL; // Запустить назад МЧХ-90.
RunBackCalender : BOOL; // Запустить каландр назад.
END_VAR
VAR_OUTPUT
OutLoopData : ARRAY [1..DRIVESNUM] OF LOOPPARAMS; // Массив скоростей и параметров петель.
OutDriveTask : ARRAY [1..DRIVESNUM] OF W2DRIVETASK; // Массив заданий для приводов.
Start_Inclined_Transp : BOOL ; // Включить наклонный и весовой транспортеры (171,A4.7,OUT2)
Start_Sampling_RollTable : BOOL ; // Включить рольганг отбора заготовок (174,A4.7,OUT5)
END_VAR
VAR_IN_OUT
Memory : LINESTATE; // Буфер для хранения состояния приводов.
// ManualAggrFactor : ARRAY[1..18] OF REAL; // Массив с коэффициентами скоростей агрегатов для ручного режима работы.
END_VAR
VAR_TEMP
RunAggrCmd : ARRAY [1..DRIVESNUM] OF BOOL; // Массив команд на ручное включение приводов.
StopAggrCmd : ARRAY [1..DRIVESNUM] OF BOOL; // Массив команд на ручной останов приводов.
AllowRunAggrCmd : ARRAY [1..DRIVESNUM] OF BOOL; // Массив разрешений на ручное включение приводов.
RunBackAggrCmd : ARRAY [1..DRIVESNUM] OF BOOL; // Маcсив команд на реверсивное включение приводов.
LineSpeed : INT; // Текущее значение скорости линии.
DriveCounter : INT; // Счётчик приводов.
DrivesOffCounter : INT; // Счётчик отключенных приводов.
SeparateWorkSign : BOOL; // Признак хотя бы одного привода, работающего раздельно от линии.
END_VAR
BEGIN
//-------------------------------------------------------------------------------
//-> Остановка всех приводов:
IF StopLine = TRUE OR
DisableDrives = TRUE
THEN
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].RUN := FALSE; // Остановить привод.
Memory.WorkingAggr[DriveCounter] := FALSE; // Сбросить флаги включенных вперёд приводов.
Memory.RunBackAggr[DriveCounter] := FALSE; // Сбросить флаги включенных назад приводов.
Memory.ManualStarted := FALSE; // Сбросить флаг выполнения ручного режима.
END_WHILE;
END_IF;
//-------------------------------------------------------------------------------
//--> Определение наличия раздельно работающих приводов:
SeparateWorkSign := FALSE;
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
IF Jointly[DriveCounter] = FALSE
THEN
SeparateWorkSign := TRUE;
END_IF;
END_WHILE;
//--<
//-------------------------------------------------------------------------------
//-> Инициализация массива включений приводов вручную:
RunAggrCmd[1] := RunLWMLoader;
RunAggrCmd[2] := RunHWMLoader;
RunAggrCmd[3] := RunShrinkRoller;
RunAggrCmd[4] := RunCheckRoller;
RunAggrCmd[5] := RunCalender;
RunAggrCmd[6] := RunMarkingTransp;
RunAggrCmd[7] := RunGlueTransp;
RunAggrCmd[8] := RunCooling1Transp;
RunAggrCmd[9] := RunCooling2Transp;
RunAggrCmd[10] := RunCooling3transp;
RunAggrCmd[11] := RunLongitudelCut;
RunAggrCmd[12] := RunCutTransp;
RunAggrCmd[13] := RunCoilTransp;
RunAggrCmd[14] := RunLWM;
RunAggrCmd[15] := RunHWM;
RunAggrCmd[16] := RunReceivingTransp;
RunAggrCmd[17] := RunCWM_90;
RunAggrCmd[18] := RunCalenderLoader;
//-> Инициализация массива отключений приводов вручную:
StopAggrCmd[1] := StopLWMLoader;
StopAggrCmd[2] := StopHWMLoader;
StopAggrCmd[3] := StopShrinkRoller;
StopAggrCmd[4] := StopCheckRoller;
StopAggrCmd[5] := StopCalender;
StopAggrCmd[6] := StopMarkingTransp;
StopAggrCmd[7] := StopGlueTransp;
StopAggrCmd[8] := StopCooling1Transp;
StopAggrCmd[9] := StopCooling2Transp;
StopAggrCmd[10] := StopCooling3transp;
StopAggrCmd[11] := StopLongitudelCut;
StopAggrCmd[12] := StopCutTransp;
StopAggrCmd[13] := StopCoilTransp;
StopAggrCmd[14] := StopLWM;
StopAggrCmd[15] := StopHWM;
StopAggrCmd[16] := StopReceivingTransp;
StopAggrCmd[17] := StopCWM_90;
StopAggrCmd[18] := StopCalenderLoader;
//-> Инициализация массива разрешений на работу приводов:
AllowRunAggrCmd[1] := AllowRunLWMLoader;
AllowRunAggrCmd[2] := AllowRunHWMLoader;
AllowRunAggrCmd[3] := AllowRunShrinkRoller;
AllowRunAggrCmd[4] := AllowRunCheckRoller;
AllowRunAggrCmd[5] := AllowRunCalender;
AllowRunAggrCmd[6] := AllowRunMarkingTransp;
AllowRunAggrCmd[7] := AllowRunGlueTransp;
AllowRunAggrCmd[8] := AllowRunCooling1Transp;
AllowRunAggrCmd[9] := AllowRunCooling2Transp;
AllowRunAggrCmd[10] := AllowRunCooling3transp;
AllowRunAggrCmd[11] := AllowRunLongitudelCut;
AllowRunAggrCmd[12] := AllowRunCutTransp;
AllowRunAggrCmd[13] := AllowRunCoilTransp;
AllowRunAggrCmd[14] := AllowRunLWM;
AllowRunAggrCmd[15] := AllowRunHWM;
AllowRunAggrCmd[16] := AllowRunReceivingTransp;
AllowRunAggrCmd[17] := AllowRunCWM_90;
AllowRunAggrCmd[18] := AllowRunCalenderLoader;
//-> Инициализация массива реверсивных включений:
RunBackAggrCmd[1] := FALSE;
RunBackAggrCmd[2] := FALSE;
RunBackAggrCmd[3] := FALSE;
RunBackAggrCmd[4] := FALSE;
RunBackAggrCmd[5] := RunBackCalender;
RunBackAggrCmd[6] := FALSE;
RunBackAggrCmd[7] := FALSE;
RunBackAggrCmd[8] := FALSE;
RunBackAggrCmd[9] := FALSE;
RunBackAggrCmd[10] := FALSE;
RunBackAggrCmd[11] := FALSE;
RunBackAggrCmd[12] := FALSE;
RunBackAggrCmd[14] := FALSE;
RunBackAggrCmd[14] := RunBackLWM;
RunBackAggrCmd[15] := RunBackHWM;
RunBackAggrCmd[16] := FALSE;
RunBackAggrCmd[17] := RunBackCWM_90;
RunBackAggrCmd[18] := FALSE;
//-------------------------------------------------------------------------------
//##> Управление приводами в ручном режиме:
//-> Подготовка приводов к работе:
// IF ManualMode = TRUE //AND
//SeparateWorkSign = FALSE
// THEN
IF ManualMode = TRUE //OR
//SeparateWorkSign = TRUE
THEN
//--> Приведение приводов в готовность к работе:
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
// IF DriveCounter <> 5 // 5 - индекс каландра.
// THEN
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
// END_IF;
//-> Обнуление коэффициентов скорости только для НЧМ:
IF StopAggrCmd[DriveCounter] = TRUE
THEN
IF DriveCounter = LWMDriveNum
THEN
Memory.AggrTaskFactor[DriveCounter] := 0.0;
END_IF;
END_IF;
END_WHILE;
//==> Запоминание состояния ВКЛ-ОТКЛ:
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
//-> Остановка выбранного двигателя:
IF AllowRunAggrCmd[DriveCounter] = FALSE OR
StopAggrCmd[DriveCounter] = TRUE
THEN
Memory.WorkingAggr[DriveCounter] := FALSE;
Memory.RunBackAggr[DriveCounter] := FALSE;
ELSE
//-> Включение выбранного двигателя вперёд:
IF AllowRunAggrCmd[DriveCounter] = TRUE AND
RunAggrCmd[DriveCounter] = TRUE
THEN
Memory.WorkingAggr[DriveCounter] := TRUE;
Memory.RunBackAggr[DriveCounter] := FALSE;
END_IF;
//-> Включение выбранного двигателя назад:
IF AllowRunAggrCmd[DriveCounter] = TRUE AND
RunBackAggrCmd[DriveCounter] = TRUE
THEN
Memory.WorkingAggr[DriveCounter] := FALSE;
Memory.RunBackAggr[DriveCounter] := TRUE;
END_IF;
END_IF;
//==<
IF Memory.WorkingAggr[DriveCounter] = TRUE OR
Memory.RunBackAggr[DriveCounter] = TRUE
THEN
//-> Выставить флаг выполнения ручного режима:
Memory.ManualStarted := TRUE;
//-> Запустить привод:
IF Memory.RunBackAggr[DriveCounter] = TRUE
THEN
LineSpeed := - LineTaskSpeed;
ELSE
LineSpeed := LineTaskSpeed;
END_IF;
//--> Задание общих для всех типов приводов параметров:
OutLoopData[DriveCounter].V := REAL_TO_INT(Memory.SpeedFactor[DriveCounter] * INT_TO_REAL(LineSpeed));
//-> Задание скорости для транспортёра закатки:
IF DriveCounter = CoilTranspIndex
THEN
OutLoopData[DriveCounter].V := LineMaxSpeed;
END_IF;
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
//--> Задание параметров только для частотных преобразователей:
IF DriveCounter <> LWMDriveNum AND // 6RA24.
DriveCounter <> CalenderDriveNum AND // 6RA24.
DriveCounter <> CWM_90DriveNum AND // 6RA24.
DriveCounter <> HWMDriveNum // 6RA70.
THEN
OutDriveTask[DriveCounter].ClockWise := TRUE; // Вращение поля по часовой стрелке.
OutDriveTask[DriveCounter].CountelockWise := FALSE; // Вращение поля против часовой стрелки.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].RUN := TRUE; // Запустить привод.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
OutDriveTask[DriveCounter].FaultsReset := TRUE; // Сбросить текущие неисправности ЧП.
END_IF;
//--> Задание параметров только для приводов постоянного тока 6RA24:
IF DriveCounter = LWMDriveNum OR // 6RA24.
DriveCounter = CalenderDriveNum OR // 6RA24.
DriveCounter = CWM_90DriveNum // 6RA24.
THEN
OutDriveTask[DriveCounter].Inching1 := FALSE; // Активировать толчковый режим на частоте 1.
OutDriveTask[DriveCounter].Inching2 := FALSE; // Активировать толчковый режим на частоте 2.
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].ClockWise := FALSE; // Вращение поля по часовой стрелке.
OutDriveTask[DriveCounter].CountelockWise := FALSE; // Вращение поля против часовой стрелки.
OutDriveTask[DriveCounter].RaiseMOP := FALSE; // Увеличить значение MOP.
OutDriveTask[DriveCounter].LowerMOP := FALSE; // Уменьшить значение MOP.
OutDriveTask[DriveCounter].NoExternalFlt1 := TRUE; // Снять сигнал о внешней неисправности.
OutDriveTask[DriveCounter].Run := TRUE; // Запустить частотный преобразователь.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
OutDriveTask[DriveCounter].RFGEnable := TRUE; // Включить задатчик интенсивности.
OutDriveTask[DriveCounter].RFGStart := TRUE; // Запустить задатчик интенсивности.
OutDriveTask[DriveCounter].RFGSetpointOn := TRUE; // Задействовать вход предустановки генератора пилообразной функции.
OutDriveTask[DriveCounter].FaultsReset := TRUE; // Сбросить текущие неисправности ЧП.
END_IF;
//--> Задание параметров только для приводов постоянного тока 6RA70:
IF DriveCounter = HWMDriveNum // 6RA70.
THEN
OutDriveTask[DriveCounter].Inching1 := FALSE; // Активировать толчковый режим на частоте 1.
OutDriveTask[DriveCounter].Inching2 := FALSE; // Активировать толчковый режим на частоте 2.
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].ClockWise := TRUE; // Вращение поля по часовой стрелке.
OutDriveTask[DriveCounter].CountelockWise := TRUE; // Вращение поля против часовой стрелки.
OutDriveTask[DriveCounter].RaiseMOP := FALSE; // Увеличить значение MOP.
OutDriveTask[DriveCounter].LowerMOP := FALSE; // Уменьшить значение MOP.
OutDriveTask[DriveCounter].NoExternalFlt1 := TRUE; // Снять сигнал о внешней неисправности.
OutDriveTask[DriveCounter].Run := TRUE; // Запустить частотный преобразователь.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
OutDriveTask[DriveCounter].RFGEnable := TRUE; // Включить генератор пилообразной функции.
OutDriveTask[DriveCounter].RFGStart := TRUE; // Запустить генератор пилообразной функции.
OutDriveTask[DriveCounter].RFGSetpointOn := TRUE; // Задействовать вход предустановки генератора пилообразной функции.
OutDriveTask[DriveCounter].FaultsReset := TRUE; // Сбросить текущие неисправности ЧП.
END_IF;
ELSE
//-> Остановить привод:
OutDriveTask[DriveCounter].RUN := FALSE; // Остановить привод.
//------------------------------------------------------------------------------------------------------------
//-> Сброс индивидуальных коээфициентов приводов по индивидуальным стопам:
// IF StopAggrCmd[DriveCounter] = TRUE
// THEN
// Memory.AggrTaskFactor[DriveCounter] := 0.0;
// END_IF;
//------------------------------------------------------------------------------------------------------------
END_IF;
END_WHILE;
//-> Проверка на выключение всех приводов:
DrivesOffCounter := 0;
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
IF Memory.WorkingAggr[DriveCounter] = FALSE AND
Memory.RunBackAggr[DriveCounter] = FALSE
THEN
DrivesOffCounter := DrivesOffCounter + 1;
END_IF;
END_WHILE;
IF DrivesOffCounter = DrivesAmount
THEN
//-> Сбросить флаг выполнения ручного режима:
Memory.ManualStarted := FALSE;
END_IF;
END_IF;
//##< Завершение выполнения ручного режима.
//--> Управление приводами в раздельном от линии режиме работы:
IF ManualMode = FALSE AND
SeparateWorkSign = TRUE
THEN
//--> Приведение приводов в готовность к работе:
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
IF Jointly[DriveCounter] = FALSE
THEN
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
END_IF;
END_WHILE;
//==> Запоминание состояния ВКЛ-ОТКЛ:
DriveCounter := 0;
WHILE DriveCounter < DrivesAmount
DO
DriveCounter := DriveCounter + 1;
IF Jointly[DriveCounter] = FALSE
THEN
//-> Остановка выбранного двигателя:
IF AllowRunAggrCmd[DriveCounter] = FALSE OR
StopAggrCmd[DriveCounter] = TRUE
THEN
Memory.WorkingAggr[DriveCounter] := FALSE;
Memory.RunBackAggr[DriveCounter] := FALSE;
ELSE
//-> Включение выбранного двигателя вперёд:
IF AllowRunAggrCmd[DriveCounter] = TRUE AND
RunAggrCmd[DriveCounter] = TRUE
THEN
Memory.WorkingAggr[DriveCounter] := TRUE;
Memory.RunBackAggr[DriveCounter] := FALSE;
END_IF;
//-> Включение выбранного двигателя назад:
IF AllowRunAggrCmd[DriveCounter] = TRUE AND
RunBackAggrCmd[DriveCounter] = TRUE
THEN
Memory.WorkingAggr[DriveCounter] := FALSE;
Memory.RunBackAggr[DriveCounter] := TRUE;
END_IF;
END_IF;
//==<
IF Memory.WorkingAggr[DriveCounter] = TRUE OR
Memory.RunBackAggr[DriveCounter] = TRUE
THEN
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
//--> Задание параметров только для частотных преобразователей:
IF DriveCounter <> LWMDriveNum AND // 6RA24.
DriveCounter <> CalenderDriveNum AND // 6RA24.
DriveCounter <> CWM_90DriveNum AND // 6RA24.
DriveCounter <> HWMDriveNum // 6RA70.
THEN
OutDriveTask[DriveCounter].ClockWise := TRUE; // Вращение поля по часовой стрелке.
OutDriveTask[DriveCounter].CountelockWise := FALSE; // Вращение поля против часовой стрелки.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].RUN := TRUE; // Запустить привод.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
OutDriveTask[DriveCounter].FaultsReset := TRUE; // Сбросить текущие неисправности ЧП.
END_IF;
//--> Задание параметров только для приводов постоянного тока 6RA24:
IF DriveCounter = LWMDriveNum OR // 6RA24.
DriveCounter = CalenderDriveNum OR // 6RA24.
DriveCounter = CWM_90DriveNum // 6RA24.
THEN
OutDriveTask[DriveCounter].Inching1 := FALSE; // Активировать толчковый режим на частоте 1.
OutDriveTask[DriveCounter].Inching2 := FALSE; // Активировать толчковый режим на частоте 2.
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].ClockWise := FALSE; // Вращение поля по часовой стрелке.
OutDriveTask[DriveCounter].CountelockWise := FALSE; // Вращение поля против часовой стрелки.
OutDriveTask[DriveCounter].RaiseMOP := FALSE; // Увеличить значение MOP.
OutDriveTask[DriveCounter].LowerMOP := FALSE; // Уменьшить значение MOP.
OutDriveTask[DriveCounter].NoExternalFlt1 := FALSE; // Снять сигнал о внешней неисправности.
OutDriveTask[DriveCounter].Run := TRUE; // Запустить частотный преобразователь.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
OutDriveTask[DriveCounter].RFGEnable := TRUE; // Включить генератор пилообразной функции.
OutDriveTask[DriveCounter].RFGStart := TRUE; // Запустить генератор пилообразной функции.
OutDriveTask[DriveCounter].RFGSetpointOn := TRUE; // Задействовать вход предустановки генератора пилообразной функции.
OutDriveTask[DriveCounter].FaultsReset := TRUE; // Сбросить текущие неисправности ЧП.
END_IF;
//--> Задание параметров только для приводов постоянного тока 6RA70:
IF DriveCounter = HWMDriveNum // 6RA70.
THEN
OutDriveTask[DriveCounter].Inching1 := FALSE; // Активировать толчковый режим на частоте 1.
OutDriveTask[DriveCounter].Inching2 := FALSE; // Активировать толчковый режим на частоте 2.
OutDriveTask[DriveCounter].NetworkControl := TRUE; // Выбрать управление по сети.
OutDriveTask[DriveCounter].ClockWise := TRUE; // Вращение поля по часовой стрелке.
OutDriveTask[DriveCounter].CountelockWise := TRUE; // Вращение поля против часовой стрелки.
OutDriveTask[DriveCounter].RaiseMOP := FALSE; // Увеличить значение MOP.
OutDriveTask[DriveCounter].LowerMOP := FALSE; // Уменьшить значение MOP.
OutDriveTask[DriveCounter].NoExternalFlt1 := FALSE; // Снять сигнал о внешней неисправности.
OutDriveTask[DriveCounter].Run := TRUE; // Запустить частотный преобразователь.
OutDriveTask[DriveCounter].NoCoastStop := TRUE; // Нет торможения выбегом.
OutDriveTask[DriveCounter].NoQuickStop := TRUE; // Нет быстрого торможения.
OutDriveTask[DriveCounter].Enable := TRUE; // Включить привод.
OutDriveTask[DriveCounter].RFGEnable := TRUE; // Включить генератор пилообразной функции.
OutDriveTask[DriveCounter].RFGStart := TRUE; // Запустить генератор пилообразной функции.
OutDriveTask[DriveCounter].RFGSetpointOn := TRUE; // Задействовать вход предустановки генератора пилообразной функции.
OutDriveTask[DriveCounter].FaultsReset := TRUE; // Сбросить текущие неисправности ЧП.
END_IF;
ELSE
//-> Остановить привод:
OutDriveTask[DriveCounter].RUN := FALSE; // Остановить привод.
//------------------------------------------------------------------------------------------------------------
//-> Сброс индивидуальных коээфициентов приводов по индивидуальным стопам:
IF StopAggrCmd[DriveCounter] = TRUE AND
DriveCounter <> CalenderDriveNum
THEN
Memory.AggrTaskFactor[DriveCounter] := 0.0;
END_IF;
//------------------------------------------------------------------------------------------------------------
END_IF;
END_IF;
END_WHILE;
END_IF;
//END_IF;
END_FUNCTION
Скачать/Download - 000000d8.SCL |