Работа с картой памяти М340

Внимание! Пример является учебным и не испытан в реальном производстве на реальном ПЛК.
Пример 1.
Задание. При команде (cmd_create=TRUE) произвести запись на карту памяти М340 значения 2-х переменных (Var1, Var2) за последние 10 сек с дискретностью 100 мс. Запись осуществить в формате CSV-файла (разделитель ";") с названием YYYY-MM-DD_HH_MI_SS.CSV. Формат каждой записи:
YYYY-MM-DD;HH:MI:SS;+ZZZZZ;+XXX.XX;+YYY.YY
где
YYYY - год, MM - месяц, DD - день, HH - часы, MI- минуты, SS- секунды, ZZZZZ-миллисекунды для значения переменной
XXX.XX - знаение Var1, YYY.YY - значение Var2  
Решение.
Один из вариантов решения может быть следующим. Организовывается кольцевой буфер в виде массива для хранения 100 записей формата STRING каждые 100 мс. Организация кольцевого буфера не требует операций по смещению значений к 1-й записи, однако при просмотре значений следует это учитывать. При срабатывании условия записи (в нашем случае при cmd_create=TRUE) осуществляется создание файла, записи массива (буфера) в файл и закрытие файла.  
Следует отметить, что буфер занимает значительную область памяти. Можно сократить расходы, ведя записи в двоичном формате. Однако для интерпретации и отображения двоичного формата нужно писать какой-то обработчик.     
1) Переменные
 
2) Для формирования импульса используем системный бит %S5 (100 мс меандр) в паре с %M0 (нужен для отлова фронтов). Для проверки работы программы будем имитировать переменные Var1 (рампа 0...6.25) и Var2(синусоида):
 
3) Организовываем кольцевой буфер. Indx указывает на номер записи. Используются FFB для получения реального времени, преобразования в STRING, конкатенации, вставки символа в строку.
 
4) Формирование имени файла и запись в него.
 Если используется имитатор ПЛК, то файл будет находиться в папке для временных файлов на компьютере с имитатором. У меня это  "C:\Users\san\AppData\Local\Temp".
  
5) Отображение в Excel записаного файла. У меня на компьютере в качестве разделительного знака используется ".", если нужна "," нужно поменять это в программе.
 
 
 
 
 
 
 
 
 
ċ
mem_wr1.XEF
(33k)
Александр Пупена,
11 июн. 2013 г., 1:37
ċ
mem_wr1.zef
(10k)
Александр Пупена,
9 июн. 2013 г., 4:30
Comments