Архив с циклической записью данных

В данном уроке ознакомимся с архивированием данных с циклической записью. Напишем 2 программы с разными зависимостями от циклов:

  • цикл самой программы (resource)

  • цикл от часов реального времени ПЛК (RTC).

Для первого варианта напишем программу на языке ST. Добавим локальную булеву переменную arc_saver. Также из окна регистров архива добавим Arch_save_arc. В паре с переменной arc_saver они будут являться «триггером» записи данных в архив. Программа будет записывать итерацию переменной с циклом в 1 минуту. Программа имеет следующий вид:

../_images/2.png

Программа archive_resource

Для того, чтобы запись происходила 1 раз в минуту, необходимо задать task с интервалом в 30 секунд в ресурсах, так как в программе идет переключение из «0» в «1» за 1 цикл и для обратного переключения необходим дополнительный цикл.

../_images/3.png

Ресурс программы

В окне регистров архива «Arch_0» добавим переменную value1_arch с типом данных «UINT».

../_images/4.png

Окно регистров архива

После загрузки программы в ПЛК инкрементируемые данные переменной value1 будут записываться в архив с периодичностью 1 раз в минуту.

Для второго варианта напишем программу на языке FBD. В данном случае будем привязываться к часам реального времени (RTC). Из «Library» добавим функциональный блок STRUCT_REAL_TIME. Переменную minute_trigger определим как кратную 1 минуте. От ее состояния определяется запись данных в архив. Добавим подмодуль «Arch_1». В программу копируем регистр Arch_1_save_arc. Также в программу добавим инкрементируюмую переменную value2 и записываюмую в архив value2_arch. Конечный вариант программы показан на рисунке ниже:

../_images/5.png

Программа archive_rtc

В ресурсах добавляем task равной 25 мс и добавляем в «Instances».

../_images/6.png

Ресурс программы

В окне регистров архива «Arch_1» добавим переменную value2_arch с типом данных «UDINT».

../_images/7.png

Окно регистров архива

После загрузки программы в ПЛК инкрементируемые данные переменной value2 будут записываться в архив с периодичностью 1 раз в минуту.