서론: 현장에서 마주한 선별 문제
공장 자동화 현장에서 점심을 먹고 있을 때, 선배 엔지니어가 금속 구 두 개를 던지며 말했습니다. "옆 라인 선별 시스템이 큰 공과 작은 공을 같은 통에 넣고 있어. 한번 봐줘." 이것이 바로 공정 제어 엔지니어의 일상입니다. 결코 편하게 식사할 수 없습니다.
시스템 구성 및 핵심 과제
이 시스템의 기본 구조는 복잡하지 않습니다: 세 개의 광전 센서로 구의 직경을 감지하고, 두 개의 실린더로 푸셔 메커니즘을 구성하며, 컨베이어 벨트는 인버터로 속도를 제어합니다. 진정한 난제는 PLC가 0.3초의 컨베이어 벨트 이동 간격 내에 크기 판단과 동작 실행을 완료하도록 하는 것입니다. 우선 핵심 센서 처리 로직을 살펴보겠습니다.
센서 입력 처리 및 소프트웨어 필터링
// 검사 스테이션에 배치된 세 개의 광전 센서
IF DI1 AND NOT DI2 AND DI3 THEN
BallSize := 1; // 대구경 판정
ELSIF DI1 AND DI2 AND NOT DI3 THEN
BallSize := 2; // 소구경 판정
ELSE
BallSize := 0; // 비정상 상태
END_IF
여기에는 한 가지 함정이 있습니다. 현장 진동으로 인해 DI 접점이 쉽게 떨릴 수 있다는 점입니다. 작년에 자동차 공장에서 이 문제를 경험한 후, 소프트웨어 필터를 추가했습니다:
// 디바운스 처리 (20ms 타이머)
TON_1(IN:=DI1, PT:=T#20MS);
TON_2(IN:=DI2, PT:=T#20MS);
TON_3(IN:=DI3, PT:=T#20MS);
IF TON_1.Q AND TON_2.Q AND TON_3.Q THEN
// 크기 판단 로직 실행
END_IF
실린더 제어 및 속도 동기화
실린더 제어가 가장 중요한 부분입니다. 푸셔 동작은 컨베이어 벨트 속도와 엄격하게 동기화되어야 합니다. 여기서는 S7-1200의 기술 객체를 사용했습니다. 다음 속도 변환 공식에 주목하십시오:
// 컨베이어 벨트 선속도를 실린더 동작 주기로 변환
#CycleTime := (#BeltSpeed * 0.785) / 1000; // 경험 계수
TP_1(IN:=BallSize=1, PT:=T#CycleTime);
TP_2(IN:=BallSize=2, PT:=T#CycleTime);
동작 충돌 방지 및 HMI 디자인
디버깅 중 흥미로운 현상을 발견했습니다: 큰 구와 작은 구가 연속으로 들어올 때 일반 타이머가 충돌한다는 점입니다. 이후 PTO 펄스 트레인을 사용하여 실린더 스트로크를 제어함으로써 동작 중첩 문제를 해결했습니다. HMI 화면에는 다음과 같은 두 가지 동적 효과를 추가했습니다:
- 실린더 동작 진행률 표시줄 (사각형 채우기 애니메이션을 실제 위치에 바인딩)
- 선별 카운터의 그라데이션 효과 (고객이 시각적 효과를 선호하기 때문)
재료 적재 감지 및 비상 정지
현장에서 가장 까다로운 문제는 재료 적재 감지였습니다. 처음에는 광전 센서 어레이를 시도했지만, 나중에 로드 셀 모듈을 사용한 간접 감지로 변경했습니다. 이 솔루션은 화남 지역의 세 전자 공장에서 2년 동안 운영되었으며, 고장률은 월 0.3회 미만입니다. 가장 자랑스러운 부분은 엣지 감지를 사용한 비상 정지 연동입니다:
IF "비상 정지 버튼" THEN
"컨베이어 벨트" := 0;
"실린더 리셋" := 1;
// 엣지 펄스를 사용하여 연속 트리거 방지
POS_TRIG_1(CLK:="비상 정지 버튼");
END_IF
결론: 현장 경험의 중요성
작업을 마무리하기 전에, 작년에 쑤저우 공장에서 전자기 간섭으로 DI 접점이 무작위로 튀는 문제를 떠올렸습니다. 이후 모든 센서에 페라이트 코어를 추가했습니다. 공정 제어 분야에는 항상 예상치 못한 함정이 존재합니다. 하지만 이것이 우리가 이 일을 좋아하는 이유입니다.