Ранее была тема по поводу мерцаний самописного ШИМ сигнала для обычных DO ПЛК210-03. Проблема была решена после того, как замкнул быстрый вход и обычный выход в цепь. Но вот возникла другая проблема: частота. Частота получается около 15Гц, что мало для работы клапанов манипулятора. Нужно хотя бы 50Гц получить, это было бы уже приемлемо для их работы. Вот код ШИМ, который по итогу получился:
Код:PROGRAM BLINKER VAR_INPUT pwm_coef: UDINT; END_VAR VAR flag1: BOOL; in: BOOL; isPWM: BOOL; B_TRIG: OSCAT_BUILDING.OSCAT_BASIC.B_TRIG; x: UINT := 0; COEF17: ARRAY [0..5] OF BOOL := [1,0,0,0,0,0]; COEF34: ARRAY [0..5] OF BOOL := [1,1,0,0,0,0]; COEF50: ARRAY [0..5] OF BOOL := [1,1,1,0,0,0]; COEF67: ARRAY [0..5] OF BOOL := [1,1,1,1,0,0]; //COEF84: ARRAY [0..5] OF BOOL := [1,1,1,1,1,0]; counter: INT := 0; out_value: BOOL; END_VAR VAR_OUTPUT END_VARКод:IF flag1 AND in THEN isPWM := TRUE; flag1 := FALSE; ELSIF NOT flag1 AND NOT in THEN isPWM := TRUE; flag1 := TRUE; END_IF IF isPWM THEN CASE pwm_coef OF 0: out_value := FALSE; 1: out_value := COEF17[x]; 2: out_value := COEF34[x]; 3: out_value := COEF50[x]; 4: out_value := COEF67[x]; 5: out_value := TRUE; END_CASE x := x+1; isPWM := FALSE; IF x >= 5 THEN x := 0; END_IF END_IF




Ответить с цитированием