저는 PC 프로그래밍 (VB/C# .Net 및 PHP)의 배경에서 왔으며 학교에서 PLC 프로그래밍을 배우고 있습니다. 최근 테스트에서 우리는 생산 라인의 요소를 컨테이너로 밀어 넣을 함수 블록을 어디에 만들지를 결정했습니다.구조화 된 텍스트, "푸셔"를 제어하는 기능 블록
지금은 매우 간단합니다. 따라서 10 초 이내에 기동이 완료되지 않으면 활성화 될 "푸셔"(더 나은 단어가 부족한 경우) 코드에 Alarm을 추가했습니다.
내 문제는 푸시 버튼이 즉시 알람 상태로 들어가고 오히려 버그가있는 것처럼 보입니다. (모든 대답은 내 코드를 구조화하는 방법에 대한 방향을 제시하거나 알람에 들어가는 이유를 알아낼 수 있습니다. 빠른 ...
(* INIT *)
(* Drive the pusher back if its out on init *)
IF M8002 THEN
SkyvTilbake := TRUE; (* My "Function"/Step to retract the pusher *)
Ferdig := FALSE; (*Let other components know that the pushers operation has completed *)
SkyverUtMotor := FALSE; (*This is the engine output for driving the pusher out *)
SkyverInnMotor := FALSE; (* This is the engine output for driving the pusher in *)
END_IF;
(* "Aktiver" is a input to activate the pusher *)
IF Aktiver THEN
SkyvTilbake := FALSE;
SkyvUt := TRUE; (* My "Function"/Step" to push the pusher out *)
Ferdig := FALSE;
END_IF;
(* Push out step *)
IF SkyvUt AND NOT SkyvTilbake AND NOT Alarm THEN
TON_1(IN:= SkyvUt ,PT:= AlarmTid ,Q:= Alarm ,ET:= TimeLeft);
SkyverUtMotor := TRUE;
(* When sensor out activates (input), retract the pusher *)
IF SensorUte THEN
SkyvUt := FALSE;
SkyvTilbake := TRUE;
SkyverUtMotor := FALSE;
END_IF;
(* retract the pusher as long as there are no alarms *)
ELSIF SkyvTilbake AND NOT Alarm THEN
TON_2(IN:= SkyvTilbake ,PT:= AlarmTid ,Q:= Alarm ,ET:= TimeLeft);
SkyverInnMotor := TRUE;
(* When it reach the normal position, activate "Ferdig" *)
IF SensorInne THEN
SkyverInnMotor := FALSE;
SkyvTilbake := FALSE;
Ferdig := TRUE;
END_IF;
END_IF;
(* When the alarm activates, stop all the engines *)
IF Alarm THEN
SkyverUtMotor := FALSE;
SkyverInnMotor := FALSE;
END_IF;
(* RESET ALARM *)
IF Reset THEN
Alarm := 0;
SkyvTilbake := TRUE;
END_IF;
PS.이 시험은 12 월 중순에 있었다, 그러나 나는 구조화 된 텍스트와 PLC 프로그램을 설계에 대한 자세한 내용을 찾고 있어요. 또한 코드는 미쓰비시 FXCPU에서 실행되도록 설계되었습니다 GX Works 2에서 작성되었습니다.
안녕하세요, 답변 주셔서 감사합니다 :) 'IN'변수가 낮아질 때마다 내 TON이 재설정됩니다. 케이스 구조를 살펴 보겠습니다. – Richard87
Aha : D 덕분에 문제가 해결되었습니다.) 문제는 SkyvIn 재설정이 활성화되었을 때 재설정되지 않습니다 :) Thx! – Richard87