Сообщение от
ГЛЮКОNIC
Народ, столкнулся с тем что нужно как-то автоматизировать процесс размонтирования и после этого снять сигнал размонтирования, но в СПК1xx если я думаю размонтирование и не вытаскивая USB после размонтирование завершено накопителя снимаю Размонтирование, а затем извлекаю флешку, то после установки USB флеш повторно её не видит, думал статут Доне останется пока флешка не извлечена и за счёт него сыграть, но е всё так просто - сделал небольшой код
ton3(IN:= TargetVars.stDrives.xUsbMounted = FALSE AND TargetVars.stDrives.xUsbUnmountDone = TRUE, PT:= T#2M, Q=> , ET=> );
IF TargetVars.stDrives.xUsbMounted = FALSE AND TargetVars.stDrives.xUsbUnmountDone = TRUE AND ton3.Q THEN
TargetVars.stDrives.xUsbUnmount := FALSE;
END_IF
может кто подскажет более лучшего решения, вообще у меня так сигнал на таймер монтирование неактивно то есть лож фолс, а размонтирование завершено истина Тру, тогда включить таймер задержки на включения 2 минуты и после отсчёта ниже, система проверяет что монтирование равно false, а размонтирование завершено True, и тогда в посылку размонтирования посылать фолс что-бы она была не активна.
Код:
//Работа с SD и USB устройствами хранения архива----------
//Команда - Включить устройство Drives при запуске контроллера
IF NOT TargetVars.stDrives.xEnable THEN TargetVars.stDrives.xEnable:=TRUE; END_IF
//Бит статуса программы - Устройство SD смонтировано
B_OUT[12]:= TargetVars.stDrives.xSdMounted;
//Бит статуса программы - Устройство SD размонтировано
B_OUT[13]:= TargetVars.stDrives.xSdUnmountDone;
//Бит статуса программы - Устройство USB смонтировано
B_OUT[14]:= TargetVars.stDrives.xUsbMounted;
//Бит статуса программы - Устройство USB размонтировано
B_OUT[15]:= TargetVars.stDrives.xUsbUnmountDone;
//Команда - Размонтировать SD
IF B_INP[6]= TRUE OR B_OUT[13] THEN TargetVars.stDrives.xSdUnmount:= TRUE; ELSE TargetVars.stDrives.xSdUnmount:= FALSE; END_IF
//Сброс бита "Размонтировать SD"
B_INP[6]:= FALSE;
//Команда - Размонтировать USB
IF B_INP[7]= TRUE OR B_OUT[15] THEN TargetVars.stDrives.xUsbUnmount:= TRUE; ELSE TargetVars.stDrives.xUsbUnmount:= FALSE; END_IF
//Сброс бита "Размонтировать USB"
B_INP[7]:= FALSE;
//Работа с SD и USB устройствами хранения архива----------
Основное:
Код:
//Бит статуса программы - Устройство SD размонтировано
B_OUT[13]:= TargetVars.stDrives.xSdUnmountDone;
//Бит статуса программы - Устройство USB размонтировано
B_OUT[15]:= TargetVars.stDrives.xUsbUnmountDone;
И:
Код:
//Команда - Размонтировать SD
IF B_INP[6]= TRUE OR B_OUT[13] THEN TargetVars.stDrives.xSdUnmount:= TRUE; ELSE TargetVars.stDrives.xSdUnmount:= FALSE; END_IF
//Сброс бита "Размонтировать SD"
B_INP[6]:= FALSE;
//Команда - Размонтировать USB
IF B_INP[7]= TRUE OR B_OUT[15] THEN TargetVars.stDrives.xUsbUnmount:= TRUE; ELSE TargetVars.stDrives.xUsbUnmount:= FALSE; END_IF
//Сброс бита "Размонтировать USB"
B_INP[7]:= FALSE;
Принцип тот же, что и у вас, но таймер там не нужен...