Rеtain данные не сохраняются при отключении питания
при отключении питания (даже при кратковременном до 1 мин.) все данные включая Retain обнуляются. но внутренние часы и дата сохраняют свои значения. так же свое состояние сохраняют Rs-тригера. подскажите, где копать?
все находится в архиве. есть еще одна любопытная деталь. обратите внимание на Outputs в программе. внезапно функция Pack перестала работать. но скопированная в Page_ip320 превосходно работает. так и не разгадал тайны загадочного плк.
Если можно - лог терминала в TXT - у меня Hyperterm Ваш файл не открывает...
В каком месте программы перестал работать и где начал работать блок Pack? Блок то 100% рабочий, и никак не зависит от ПЛК, а от программиста
А где Вы переменные как Retain объявляете?
time_min AT %QW8.1.0.0: WORD; - адрес в конфигурации ПЛК вообще другое имя имеет...
time_sec AT %QW8.1.9.0: WORD;
И как Вы тут планируете проверить Retain, если к обмену привязалисть???
Даже если он Retain загрузил, то до выполнения программы присвоил им значения из области памяти - а там нули априори при загрузке...
Создайте отдельные переменные, их сохраняйте, и в начале\конце\когда надо присваивайте эти значения переменным ModBus.
Последний раз редактировалось Николаев Андрей; 16.03.2010 в 10:52.
Спасибо за Вашу оперативность с ответами. Прилагаю лог ПЛК. RETAIN переменные описаны через автообъявления (Вы можете их увидеть в объявлениях переменных в программе). если я неправильно их объявляю, поясните, пожалуйста, где они должны располагаться. Что касается адресов в конфигураторе ПЛК и в программе (имею ввиду time_sec, time_min), то имена в конфигураторе ПЛК и в программе должны быть одинаковые? Писалось в мануле, что в конфигураторе можно создать имена (коментарий) к адресам по желанию. Если у Вас есть возможность, измените программу как считаете нужным (с пояснением ием на будущее) чтоб сохранялись RETAIN. Меня интересует сохранение значений счетчиков time_sec и time_min при длительном отключении питания. Заранее спасибо за помощь.
1. Лог нормальный.
2. Определитесь в принципе со списком переменных.
3. Имена переменным можно задавать прям в конфигураторе, но тогда нельзя задавать их еще раз для другой переменной.
Заведите нужное количество Retain переменных
var retain
a1 : "тип переменной";
b1 : "тип переменной";
end_var
А в программе пишете
if "условие" then
a1:= "переменная, объявленная в конфигурации ПЛК";
b1:= "переменная, объявленная в конфигурации ПЛК";
end_if