채굴기 케이블 자동 견인 시스템의 HMI 및 PLC 통합 제어

광산 채굴 작업에서 채굴기의 동력 케이블은 장비의 움직임에 따라 유연하게 관리되어야 합니다. 케이블이 얽히거나 손상되는 것을 방지하기 위해 자동 견인 및 이완 제어 시스템은 필수적인 구성 요소입니다. 본 시스템은 Siemens SIMATIC S7-1200 PLC를 핵심 제어기로 사용하며, 10인치 터치스크린 HMI(Human Machine Interface)를 통해 현장 작업자에게 직관적인 조작 환경을 제공합니다. HMI 화면은 시스템의 '조종석' 역할을 수행합니다. 메인 화면에는 비상 정지 버튼이 명확하게 배치되어 있으며, 자동/수동 운전 모드를 전환할 수 있는 스위치가 있습니다. 화면 우측 하단의 '설정' 메뉴에서는 케이블 견인 속도 상한 및 장력 임계값과 같은 핵심 파라미터들을 직접 조정할 수 있습니다.

(* HMI 명령 기반 모터 제어 로직 *)
FUNCTION_BLOCK CableMotorControl
VAR_INPUT
    f_AutoModeActive : BOOL; (* 자동 모드 활성화 여부 *)
    f_ManualStartCmd : BOOL; (* 수동 시작 명령 *)
    f_CurrentCableTension : REAL; (* 현재 케이블 장력 (예: 센서 피드백) *)
    f_TensionThreshold : REAL; (* 설정된 장력 임계값 *)
    f_SystemFaultActive : BOOL; (* 시스템 오류 발생 여부 *)
END_VAR
VAR_OUTPUT
    q_CableMotorEnable : BOOL; (* 케이블 인출 모터 구동 허용 *)
END_VAR
BEGIN
    IF f_AutoModeActive THEN
        (* 자동 모드: 장력 센서 피드백에 따라 모터 구동 결정 *)
        q_CableMotorEnable := (f_CurrentCableTension > f_TensionThreshold);
    ELSE
        (* 수동 모드: 수동 시작 명령 및 무고장 상태일 때 모터 구동 허용 *)
        q_CableMotorEnable := f_ManualStartCmd AND NOT f_SystemFaultActive;
    END_IF;
END_FUNCTION_BLOCK
위 PLC 함수 블록은 HMI를 통해 전달되는 자동/수동 모드 선택과 장력 센서 데이터를 기반으로 케이블 인출 모터의 구동 여부를 제어합니다. 케이블 장력이 설정값을 초과하면 시스템이 자동으로 반응하여 케이블이 팽팽해지는 것을 방지합니다. 채굴기가 갑작스럽게 속도를 변경할 때, 케이블 역시 이에 맞춰 부드럽게 견인되거나 이완되어야 합니다. 이를 위해 PLC 프로그램에는 속도 램프(Speed Ramp) 기능이 통합되어 있습니다. 이 기능은 케이블의 급격한 움직임을 방지하고 장비와 케이블에 가해지는 충격을 최소화합니다.

(* 케이블 인출/수납 속도 램프 제어 *)
FUNCTION_BLOCK SpeedRampGenerator
VAR_INPUT
    f_TargetCableSpeed : REAL; (* 목표 케이블 속도 *)
    f_CurrentMotorSpeed : REAL; (* 현재 모터 속도 *)
    f_AccelerationRate : REAL; (* 가속률 (단위: m/s^2 또는 %/s) *)
    f_DecelerationRate : REAL; (* 감속률 (단위: m/s^2 또는 %/s) *)
    f_ControlCycleTime : REAL; (* 제어 주기 시간 (단위: 초) *)
END_VAR
VAR_OUTPUT
    q_RampedOutputSpeed : REAL; (* 램프가 적용된 출력 속도 *)
END_VAR
VAR
    l_MaxSpeedIncrease : REAL;
    l_MaxSpeedDecrease : REAL;
END_VAR
BEGIN
    l_MaxSpeedIncrease := f_AccelerationRate * f_ControlCycleTime;
    l_MaxSpeedDecrease := f_DecelerationRate * f_ControlCycleTime;

    q_RampedOutputSpeed := f_TargetCableSpeed;

    (* 상향 램프 제한 *)
    IF q_RampedOutputSpeed > (f_CurrentMotorSpeed + l_MaxSpeedIncrease) THEN
        q_RampedOutputSpeed := f_CurrentMotorSpeed + l_MaxSpeedIncrease;
    END_IF;

    (* 하향 램프 제한 *)
    IF q_RampedOutputSpeed < (f_CurrentMotorSpeed - l_MaxSpeedDecrease) THEN
        q_RampedOutputSpeed := f_CurrentMotorSpeed - l_MaxSpeedDecrease;
    END_IF;
END_FUNCTION_BLOCK
이 함수 블록은 현재 속도와 목표 속도 간의 차이를 계산하고, 가속/감속률 및 제어 주기를 고려하여 다음 제어 주기 동안의 최대 속도 변화량을 제한합니다. 가속률은 IO 테이블에서 아날로그 입력(AI0)으로 할당되어 현장 조건에 따라 실시간으로 조정할 수 있습니다. 본 시스템은 두 대의 22kW 가변 주파수 드라이브(VFD) 모터를 CAN 버스를 통해 동기화하여 케이블을 구동합니다.

(* 듀얼 VFD 모터 동기화 제어 로직 *)
FUNCTION_BLOCK DualMotorSynchronizer
VAR_INPUT
    f_MasterMotorRPM : REAL; (* 마스터 모터 실제 RPM *)
    f_SlaveMotorRPM : REAL; (* 슬레이브 모터 실제 RPM *)
    f_MasterVFD_Frequency : REAL; (* 마스터 VFD 주파수 설정값 (Hz) *)
    f_SyncCorrectionFactor : REAL; (* 동기화 보정 계수 (0.95 ~ 1.05 범위) *)
    f_SyncToleranceRPM : REAL; (* 동기화 허용 오차 RPM *)
END_VAR
VAR_OUTPUT
    q_SlaveVFD_FrequencySetpoint : REAL; (* 슬레이브 VFD 주파수 설정값 (Hz) *)
END_VAR
VAR
    l_SpeedError : REAL;
END_VAR
BEGIN
    l_SpeedError := f_MasterMotorRPM - f_SlaveMotorRPM;

    IF ABS(l_SpeedError) > f_SyncToleranceRPM THEN
        (* RPM 차이가 허용 오차를 벗어날 경우 슬레이브 주파수 조정 *)
        (* 간단한 비례 제어 예시: 오차에 비례하여 마스터 주파수에 보정 계수를 적용 *)
        q_SlaveVFD_FrequencySetpoint := f_MasterVFD_Frequency * (1.0 + (l_SpeedError * 0.0001 * f_SyncCorrectionFactor));

        (* 설정된 보정 계수 범위 내에서 주파수 제한 *)
        IF q_SlaveVFD_FrequencySetpoint > (f_MasterVFD_Frequency * 1.05) THEN
            q_SlaveVFD_FrequencySetpoint := f_MasterVFD_Frequency * 1.05;
        ELSIF q_SlaveVFD_FrequencySetpoint < (f_MasterVFD_Frequency * 0.95) THEN
            q_SlaveVFD_FrequencySetpoint := f_MasterVFD_Frequency * 0.95;
        END_IF;
    ELSE
        (* RPM 차이가 허용 오차 이내일 경우 마스터 주파수와 동일하게 설정 *)
        q_SlaveVFD_FrequencySetpoint := f_MasterVFD_Frequency;
    END_IF;
END_FUNCTION_BLOCK
두 모터의 실제 RPM을 지속적으로 비교하여 편차가 발생하면 슬레이브 모터의 주파수 설정값을 동적으로 조정합니다. HMI를 통해 ±5% 범위의 동기화 보정 계수를 설정할 수 있어, 현장 조건에 맞춰 두 모터가 최적의 동기 상태를 유지하도록 돕습니다. 안전은 광산 자동화 시스템의 최우선 과제입니다. 비상 정지(Emergency Stop) 상황 발생 시, 시스템은 일련의 안전 절차를 따릅니다:
  1. 모든 모터에 즉시 브레이크 작동 (0.5초 유지)
  2. 메인 전력 접촉기(Main Contactor) 차단
  3. 모든 가변 주파수 드라이브(VFD)의 구동 인가 신호 비활성화
또한, 시스템은 48가지 이상의 다양한 고장 코드를 진단하고, 이를 적색, 황색, 청색으로 분류하여 HMI에 직관적인 고장 발생 위치 및 해결 방안을 그래픽으로 표시합니다. 예를 들어, 채굴기 드럼에 케이블이 얽히는 위험이 감지되면 "케이블 엉킴 위험" 메시지와 함께 권장 조치 사항이 화면에 즉시 나타나 작업자가 신속하게 대처할 수 있도록 지원합니다. 향후 시스템 확장성을 고려하여, PLC 프로그램에는 Modbus 통신을 위한 DB100 데이터 블록이 미리 예약되어 있습니다. 이 블록에 Modbus 주소를 할당하면 클라우드 기반 모니터링 플랫폼이나 상위 시스템과의 연동을 쉽게 구현할 수 있습니다. 예를 들어, 석탄 적재 감지 센서와 연동하여 자동 제어 로직에 추가적인 안전 인터록 기능을 통합하는 등의 맞춤형 개발이 가능합니다. 전체 제어 프로그램은 TIA Portal V15.1 환경에서 개발되었으며, 명확한 주석과 구조화된 프로그래밍 방식으로 특정 기능(예: "케이블 이완 처리") 검색 시 관련 프로그램 블록, HMI 요소, 주석 등을 쉽게 찾을 수 있도록 설계되어 현장 유지보수 및 기능 추가 시 효율성을 높입니다.

태그: PLC HMI Siemens S7-1200 motor control VFD

8월 21일 09:03에 게시됨