PDA

Просмотр полной версии : Сбор данных с архивом на спк107



Zhest
04.02.2016, 16:35
Добрый день знатокам и программистам!
Задался вопросом ведения архива на спк-107:
программа на получение данных написана, теперь не могу понять как эти данные сложить в архив по суткам.
может кто уже делал такую задачу? если есть простейший пример то буду очень признателен!!
За ранее благодарен!!

energvk
04.02.2016, 17:02
Не понятно, что конкретно вы хотите

Zhest
04.02.2016, 17:13
Не понятно, что конкретно вы хотите

вести архив данных получаемых с приборов.
например: есть емкости, с них происходит слив продукта, в спк приходят и обрабатываются данные с счетчика, литры записываю в переменную, теперь мне необходимо сделать архив посуточный сколько было слито за сутки.
допустим вид следующий: |дата|литров слито|
сутки отсчитываются с 08:00 по 08:00

energvk
04.02.2016, 17:48
В принципе не сложно, время чуть появится - помогу, если раньше никто не подскажет.

Zhest
04.02.2016, 18:27
В принципе не сложно, время чуть появится - помогу, если раньше никто не подскажет.

буду признателен!

energvk
05.02.2016, 01:16
Ну если коротко, то я это вижу примерно так:
Создаете структуру из массивов времени и расхода, например:

TYPE arhiv :
STRUCT
data :ARRAY[0..1000] OF STRING;
rashod :ARRAY[0..1000] OF DWORD;
END_STRUCT
END_TYPE


И затем её заполняете данными, например:


PROGRAM PLC_PRG
VAR
hh :INT;
dt2str :STRING;
rashod_tek :DWORD;
rashod_old :DWORD;
rashod_razn :DWORD;
dd :INT;
mh :INT;
yy :INT;
rtr_arch :R_TRIG;
arh :arhiv;
i :INT;
END_VAR

//преобразуем текущую дату в строку
dt2str:=INT_TO_STRING (yy);
dt2str:=CONCAT(STR1:= dt2str, STR2:= '/');
dt2str:=CONCAT(STR1:= dt2str, STR2:= INT_TO_STRING (mh));
dt2str:=CONCAT(STR1:= dt2str, STR2:= '/');
dt2str:=CONCAT(STR1:= dt2str, STR2:= INT_TO_STRING (dd));

IF hh=8 THEN
rtr_arch(CLK:= TRUE, Q=> );
IF rtr_arch.Q THEN
rashod_razn:=rashod_tek-rashod_old;
arh.data[i]:=dt2str;
arh.rashod[i]:=rashod_razn;
i:=i+1;
rashod_old:=rashod_tek;
IF i=1000 THEN i:=0; END_IF
END_IF
END_IF