logo
상품
case details
> 사례 >
시멘스 SCL 프로그래밍 업그레이드 버전: 12 산업 실용 사례
행사
문의하기
Miss. Andy
86-0592-5636807
위챗 +8618020763272
지금 접촉하세요

시멘스 SCL 프로그래밍 업그레이드 버전: 12 산업 실용 사례

2025-07-03

최근 회사 사건 시멘스 SCL 프로그래밍 업그레이드 버전: 12 산업 실용 사례
12 산업적 실제 사례 (1-6)

경우 1: 모터 시작-정지 제어

FUNCTION_BLOCK FB_모터 컨트롤

VAR_INPUT
시작 버튼: BOOL;  
정지 버튼: BOOL;  
과부하 신호: BOOL;  
END_VAR

VAR_OUTPUT
실행 상태: BOOL;  
오류 표시기: BOOL;  
END_VAR

시작해
시작-정지 논리
만약 StartButton NOT StopButton NOT OverloadSignal 그렇다면
실행 상태:= TRUE;  
ELSIF 중지 버튼 또는 과부하 신호 다음
실행 상태:= FALSE;  
END_IF  


// 결함 표시
오류 표시기:= 과부하 신호;  
END_FUNCTION_BLOCK
 

케이스 2: 타이머 적용

FUNCTION_BLOCK FB_DelayStart 

VAR_INPUT
시작 신호: BOOL;  
지연 시간: 시간:= T#5S;  
END_VAR

VAR_OUTPUT
출력 신호: BOOL;  
END_VAR

VAR
지연시간: TON  
END_VAR

시작해
DelayTimer ((IN:= 시작 신호, PT:= 지연 시간);  
출력 신호:= 지연시간.Q;  
END_FUNCTION_BLOCK
 

케이스 3: PID 온도 조절

FUNCTION_BLOCK FB_TempControl

VAR_INPUT
설정점: REAL  
프로세스 값: REAL  
END_VAR

VAR_OUTPUT
제어 출력: REAL  
END_VAR

VAR
Kp: REAL:= 20;  
Ki: REAL:= 0.05;  
Kd: REAL:= 0.5;  
융합Term: REAL:= 0;  
LastError: REAL:= 0;  
타이머: 톤  
END_VAR

시작해
// 주기적으로 실행 (100ms)
타이머 ((IN:= 타이머가 아닙니다.Q, PT:= T#100ms);  
타이머.Q 다음 
VAR 오류:= 설정점 - 프로세스 값;  
IntegralTerm:= IntegralTerm + 오류;  
VAR 파생어:= 오류 - 마지막 오류;  
LastError:= 오류;  


제어 출력:= Kp * Error + Ki * IntegralTerm + Kd * DerivativeTerm;  
제어 출력:= LIMIT(0.0, 제어 출력, 100.0);  


타이머 ((IN:= FALSE);  
END_IF  
END_FUNCTION_BLOCK

케이스 4: 생산 라인 대기열 관리

FUNCTION_BLOCK FB_프로덕션 큐

VAR_INPUT
NewOrder: BOOL;  
OrderID: INT;  
완료 신호: BOOL;  
END_VAR

VAR_OUTPUT
현재 명령어: INT;  
대기열 길이는: INT  
END_VAR

VAR
OrderQuee: INT의 ARRAY[1...50]  
큐헤드: INT:= 1;  
큐테일: INT:= 1;  
END_VAR

시작해
새로운 주문 큐
만약 NewOrder AND QueueLength < 50 THEN
OrderQueue[QueueTail]:= OrderID;  
QueueTail:= QueueTail MOD 50 + 1;  
QueueLength:= QueueLength + 1;  
END_IF  


// 순서 정렬 완료
만약 CompleteSignal AND QueueLength > 0 그렇다면
큐헤드:= 큐헤드 MOD 50 + 1;  
대기열 길이는:= 대기열 길이는 - 1;  
END_IF  


// 현재 순서
만약 QueueLength > 0 그렇다면
CurrentOrder:= OrderQueue[QueueHead];  
다른 것
현재 명령어:= 0;  
END_IF  
END_FUNCTION_BLOCK
 

케이스 5: 안전 게이트 잠금 제어

FUNCTION_BLOCK FB_SafetyGate

VAR_INPUT
게이트1 닫힌, 게이트2 닫힌: BOOL;  
EStopButton: BOOL;  
리셋 버튼: BOOL;  
END_VAR

VAR_OUTPUT
안전상황: BOOL  
END_VAR

VAR
잠금 상태: BOOL:= FALSE;  
잠금시간: TON  
END_VAR

시작해
안전 상태
VAR AllGatesClosed:= Gate1Closed AND Gate2Closed.  


/ 응급 정지 최우선
만약 ESTOPButton 그렇다면
안전상태:= FALSE  
잠금 상태:= TRUE;  
로크아웃타이머 ((IN:= TRUE, PT:= T#10S);  
반환  
END_IF  


// 논리를 해제
IF ResetButton AND LockkoutStatus AND LockkoutTimer.Q 다음 
잠금 상태:= FALSE;  
END_IF  


// 정상 작동
잠금 상태가 안되면
안전 상태:= 모든 게이트가 닫혔다.  
END_IF
사이트맵 |  개인 정보 정책 | 중국 좋은 품질 병든 레이저 센서 공급업체. 저작권 © 2025 Xiamen ZhiCheng Automation Technology Co., Ltd . 판권 소유.