я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0
я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0
PROGRAM PLC_PRG
VAR_INPUT
PUSK: BOOL:=TRUE;
END_VAR
VAR
time_ton: TIME:=T#1s;
TON1: TON;
result: BOOL;
fileName: STRING := 'myFile';
mode: STRING := 'w';
state: INT:=0;
in_ton: BOOL;
cycle: INT;
OUT_flag: BOOL;
PULSE: BOOL:=TRUE;
END_VAR
VAR RETAIN PERSISTENT
counter:INT ;
END_VAR
IF PUSK=TRUE THEN
cycle:=counter;
PUSK:=FALSE;
END_IF
CASE state OF
0: IF PULSE=TRUE THEN
in_ton:=TRUE;
state:=10;
END_IF
10:
IF in_ton=TRUE THEN
cycle:=cycle+1;
state:=20;
END_IF
20:
TON1(IN:=in_ton, PT:= time_ton, Q=>OUT_flag);
state:=30;
30:
in_ton:=FALSE;
OUT_flag:=FALSE;
state:=40;
40:
IF PULSE=FALSE THEN
counter:=cycle;
ELSE
state:=0;
END_IF
END_CASE
вот такой тестовый код написал для проверки и пробы
Последний раз редактировалось petera; 12.04.2023 в 11:19.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Из всего этого нужно всего лишь
Память убить нельзя, т.к. RETAIN переменные физически записываются в момент выключения питанияКод:PROGRAM PLC_PRG VAR TON1: TON:=(PT:=T#1s); OUT_flag: BOOL; END_VAR VAR RETAIN cycle: UDINT; END_VAR TON1(IN:=NOT OUT_flag, Q=>OUT_flag ); cycle:= cycle + BOOL_TO_INT(OUT_flag);
Последний раз редактировалось petera; 12.04.2023 в 11:49.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg