Как загружать изменения в проект, чтобы не обнулились Retain-переменные, к примеру, счетчик моточасов? Если загружать только online-изменения, то при выключении питания изменения не сохраняются, в иных случаях обнуляются Retain.
Вид для печати
Как загружать изменения в проект, чтобы не обнулились Retain-переменные, к примеру, счетчик моточасов? Если загружать только online-изменения, то при выключении питания изменения не сохраняются, в иных случаях обнуляются Retain.
Если есть способ при заливке не трогать ретейн, то я тоже хотел бы знать. Если нет, то вместо ретейн используй запись в файл (лучше на флешке). При перезаливке проекта файлы не трогаются.
Здравствуйте , подскажите пожалуйста как написать программу для ПЛК73 , к которому подключён датчик ДТС125л в комплекте с НПТ по сигналу 4..20 . Программа должна выводить значение температуры на ЖКИ
Здравствуйте! Выявилась непонятная для меня проблема. Есть программа, в которой опрашиваются модули ввода/вывода:
Выделенным копирую полученные в ФБ WORD в булевые структуры:Код:CASE casestate OF
0:
IF enMU16R_1 THEN
MU16R_1(
enable:= TRUE, setMask:= bitMaskMU16R_1, devAdress:= addrMU16R_1, portNum:= portNum, timeout:= toutMU16R_1, max_try_count:= mtcMU16R_1, timerOff:= tOffMU16R_1,
Done=> ,
Data=> ,
ErrSet=> errCommModuls.MU16R_1_set,
ErrGet=> errCommModuls.MU16R_1_get,
CodeErrSet=> ,
CodeErrGet=> ,
CountErr=> countErrMU16R_1);
IF MU16R_1.Done THEN SysMemCpy(ADR(dataMU16R_1), ADR(MU16R_1.Data),2); MU16R_1( enable:= FALSE); casestate := 1; END_IF;
ELSE casestate := 1; MU16R_1( enable:= FALSE);
END_IF;
1:
IF enMV16DN_1 THEN
MV16DN_1(
enable:= TRUE, devAdress:= addrMV16DN_1, portNum:= portNum, timeout:= toutMV16DN_1, max_try_count:= mtcMV16DN_1, timerOff:= tOffMV16DN_1,
Done=> ,
Data=> ,
Err=> errCommModuls.MV16DN_1_get,
CodeErr=>,
CountErr=> countErrMV16DN_1);
IF MV16DN_1.Done THEN
IF NOT MV16DN_1.Err THEN
SysMemCpy(ADR(DataMV16DN_1), ADR(MV16DN_1.Data),2);
END_IF;
MV16DN_1(enable:= FALSE); casestate := 2;
END_IF;
ELSE casestate := 2;
END_IF;
МУ16Р:
МВ16ДН:
Данные структуры объявлены в глобальных переменных (возможно это не правильно):
Так вот, маска считанных выходов из модуля МУ16Р копируется нормально, а маска входов с МВ16ДН не копируется - два первых входа в ошибке висят, остальные по нулям. Не могу понять что не так, в структуру больше нигде ничего не пишется, только читается.Код:dataMV16DN_1 :dataMV16; (* структура данных с модуля дискретного ввода МВ110-16ДН *)
dataMU16R_1 :dataMU16R; (* структура данных модуля релейногых выходов МВ110-16Р (аналогична битовой маске) *)
Также есть структура:
в которую в другой программе пишутся данные:Код:TYPE sendHMI :
STRUCT
mu16rHMI :WORD :=0; (* состояние выходов модуля дискр. вывода МУ110-16Р для HMI *) (* 7 *)
md16dnHMI :WORD :=0; (* состояние входов модуля дискр. ввода МВ110-16ДН для HMI *) (* 8 *)
END_STRUCT
END_TYPE
где DataMU16R_1 и DataMV16DN_1 - те же структуры из глобальных переменных, и получаю HMIsend1.mu16rHMI и HMIsend1.md16dnHMI равными 0. Сломал голову, причину не выяснил. Что здесь не так?Код:SysMemCpy(ADR(HMIsend1.mu16rHMI),ADR(DataMU16R_1),2);
SysMemCpy(ADR(HMIsend1.md16dnHMI),ADR(DataMV16DN_1),2);
Здравствуйте. Вопрос такой есть удаленный объект на котором стоит плк и другой объект где стоит такой же плк. Может плк второго объекта управлять первым и наоборот. как реалезовать это?если есть пример буду очень благодарен.
evgens4 может, поднять каналы связи между объектами .