+1500000 개 이상의 제품 제공

하루에 7000개의 패키지

150개국에서 28만 명 이상의 고객

Quick Buy 즐겨찾기
카트

PLC 제어기 프로그래밍 언어

게시 날짜: 14-03-2025 🕒 4 읽기 시간

PLC 컨트롤러는 공정 제어 및 매개변수 조절이 필요한 모든 산업 환경에서 널리 사용됩니다. 임베디드 전자 기술의 발전으로 인해, 이러한 장치는 높은 성능을 갖추고 있으며, EMI 간섭과 환경 조건에 강하면서도 사용자 친화적인 특성을 지니고 있습니다. 과거와 달리, 프로그램 개발을 위한 환경은 서로 매우 유사해졌으며, 대부분의 환경에서 사용자에게 적합한 방식으로 프로그램을 작성할 수 있습니다. 그렇다면, PLC 컨트롤러는 어떻게 프로그래밍될까요?

PLC 컨트롤러 프로그래밍 언어IEC 61131 표준(2013년 발표)의 대상이 되었습니다. 이 표준의 3부에서는 PLC 컨트롤러 프로그래밍 언어 및 방법에 대한 권장 사항을 담고 있습니다. 데이터 유형, 변수, 구성 및 설명 방법, 프로그램 조직 단위 및 객체 지향 프로그래밍 원칙 외에도 5가지 기본적인 PLC 컨트롤러 프로그래밍 언어를 명시하고, 각각의 기능적 요구 사항을 정의하였습니다. 이 표준 덕분에 PLC 프로그래머들이 사용하는 주요 프로그래밍 언어는 다음과 같이 정리됩니다:

래더 다이어그램 LD (LAD)

PLC용 프로그램 개발 환경에서 가장 널리 사용되며 접근성이 높은 언어는 래더 다이어그램 LD(또는 LAD)입니다. 이 언어는 그래픽 기반이지만, 간단한 기호를 사용하므로 과거에는 ASCII 문자로 구성된 세미그래픽 방식이 사용되기도 했습니다. 이러한 문자는 PLC 화면에서도 쉽게 표시할 수 있어, PC 없이도 간단한 프로그램을 즉석에서 만들 수 있도록 해주었습니다.

이 언어에서는 전기 회로도에서 사용되는 심볼(코일 및 접점)과 유사한 기호를 사용하여 프로그램을 구성합니다. 접점은 정상적으로 열린(NO) 상태 또는 정상적으로 닫힌(NC) 상태일 수 있으며, 코일은 설정(Set), 초기화(Reset), 부정(Negate) 등의 다양한 기능을 가질 수 있습니다. 또한, 타이머, 카운터, 플립플롭과 같은 함수 및 전체 기능 블록을 포함할 수도 있습니다.

래더 다이어그램은 프로그래밍 경험이 없는 사용자도 쉽게 이해할 수 있는 직관적인 언어입니다.

그림 1. 래더 다이어그램 LD (LAD) 언어의 프로그램 예시

기능 블록 다이어그램 FBD

디지털 기술에 익숙한 사람들에게 특히 직관적인 프로그래밍 방식 중 하나는 기능 블록 다이어그램(FBD)입니다. FBD를 사용하여 작성된 코드의 예시는 그림 2에서 볼 수 있습니다. 개별 입력, 출력 및 연산은 기능 블록과 게이트로 표현되며, 이러한 블록들은 논리 연산뿐만 아니라 특정 알고리즘에 따라 신호를 처리할 수도 있습니다. 기능 블록에는 PID 컨트롤러, 다양한 파형 생성기, 카운터 등이 포함됩니다. 일부 개발 환경에서는 사용자가 원하는 기능을 가진 자체 블록을 정의할 수도 있습니다. FBD는 그래픽 기반 언어로, 사용자가 블록을 배치하고 서로 연결하여 프로그램을 구성하는 방식이 논리 회로 설계와 유사합니다. 일부 개발 환경에서는 단순한 입출력 연결뿐만 아니라 여러 개의 매개변수를 전달하는 버스 및 참조를 생성하는 기능도 지원합니다(그림 2에서 버스는 굵은 선으로 표현되며, 여러 비트의 상수 및 변수를 전달합니다).

그림 2. FBD를 사용하여 작성된 프로그램의 예제 부분

구조적 텍스트 언어 ST

구조적 텍스트 언어 ST는 한때 매우 인기 있었던 Pascal 언어와 유사한 고급 언어입니다. FBD의 경우처럼 화면의 선이 얽히지 않고 더 복잡한 작업을 수행할 수 있으며, 이는 종종 좋은 해상도의 큰 모니터가 필요합니다. ST에서의 프로그래밍은 PC 컴퓨터용 전통적인 프로그래밍 언어로 코드를 작성하는 것과 유사합니다. 복합 명령어, 예를 들어 반복문 repeat…until, do…while, 조건문 if…then…else, case 및 수학 함수 sqrt(), sin() 등이 지원됩니다. 중요한 점은 하드웨어 제조업체나 환경에 관계없이 ST 언어의 기능은 공통적이며 IEC 61131 표준에 정의되어 있다는 것입니다. 이 표준은 언급된 언어를 결합할 수 있도록 허용하므로, ST 언어는 "삽입" 또는 비표준 FBD 블록을 작성하는 데에도 사용할 수 있습니다.

Listing 1. ST 언어로 작성된 예제 함수
//=======================================================================
// Function Block Timed Counter :  Incremental count of the timed interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
    VAR_INPUT
        //Trigger signal to begin Timed Counting
        Execute     : BOOL := FALSE;
        //Enter Cycle Time (Seconds) between counts 
        Time_Increment  : REAL := 1.25;
        //Number of Desired Count Cycles
        Count_Cycles    : INT  := 20;
    END_VAR

VAR_OUTPUT
        //One Shot Bit indicating Timer Cycle Done
        Timer_Done_Bit  : BOOL := FALSE;
        //Output Bit indicating the Count is complete
        Count_Complete  : BOOL := FALSE;
        //Accumulating Value of Counter
        Current_Count   : INT  := 0;
END_VAR

VAR
        //Timer FB from Command Library
        CycleTimer      : TON;
        //Counter FB from Command Library
        CycleCounter    : CTU;
        //Converted Time_Increment in Seconds to MS
        TimerPreset : TIME;
    END_VAR

    // Start of Function Block programming
    TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000;

    CycleTimer(
        in := Execute AND NOT CycleTimer.Q,
        pt := TimerPreset);

        Timer_Done_Bit := CycleTimer.Q;

        CycleCounter(
        cu := CycleTimer.Q,
        r := NOT Execute,
        pv := Count_Cycles);

        Current_Count := CycleCounter.cv;
        Count_Complete := CycleCounter.q;
END_FUNCTION_BLOCK

순차 기능 차트 SFC

순차 기능 차트는 또 다른 그래픽 프로그래밍 언어입니다. 그 원형은 이진 Petri 네트워크를 기반으로 한 GRAFCET 언어였습니다. 이는 엄격하게 정의된 순서로 수행해야 하는 단계(작업)의 시퀀스를 설명할 수 있습니다. 이는 동기화가 필요한 프로세스나 단계로 나눌 수 있는 프로세스를 처리하는 프로그램을 작성하는 데 특히 유용합니다. SFC 프로그램의 주요 구성 요소는 작업과 연결된 단계, 논리 조건과 연결된 전환, 단계와 전환 간의 직접 연결입니다.

종종 SFC 언어는 LD와 같은 다른 프로그래밍 방법과 결합됩니다. SFC는 본질적으로 동시 프로그래밍 언어로, 여러 POU(프로그램 조직 단위)가 동시에 활성화될 수 있습니다. 일부 환경에서는 매크로 작업, 즉 다른 POU의 상태에 영향을 미치는 POU 내부의 작업을 생성할 수도 있습니다. 이 방식으로 하나의 POU는 다른 POU가 수행하는 활성 단계를 결정할 수 있습니다.

그림 3. SFC 언어로 작성된 프로그램의 예제 부분

명령어 목록 IL

명령어 목록은 이제 구식 프로그래밍 방법으로 간주됩니다. 이 언어는 어셈블러와 약간 유사하지만, 다양한 프로세서를 장착한 다양한 PLC 드라이버에 구현되었음에도 불구하고 IL 언어는 사용된 프로세서 유형에 독립적입니다. 어셈블러와 마찬가지로 매우 간단한 명령어로 구성되어 있으며, 더 복잡한 작업은 많은 명령어를 사용해야 합니다. 프로그램 실행 제어는 점프 명령어 및 서브루틴 호출을 통해 수행됩니다.

많은 드라이버 제조업체는 IEC 61131-3 표준과 완전히 호환되는 하드웨어 및 소프트웨어를 제공하면서도 특정 공급업체에 특화된 추가 호출/기능 블록을 제공하여 제공된 하드웨어에 맞게 조정합니다. 예를 들어, Siemens PLC 드라이버용 IL 언어는 영어로 "Statement List" 또는 "STL"로, 독일어로 "Anweisungs-Liste" 또는 "AWL"로 명명되었습니다. 독일어 이름은 이탈리아어 및 스페인어로 된 실행 환경의 국가 버전에도 전파되었습니다. Simatic 패키지 사용자는 명령어를 나타내기 위해 독일어 및 국제적인 기호 중에서 선택할 수 있습니다. 예를 들어 "A"는 "AND" 또는 "U"는 "UND", "I"는 "입력" 또는 "E"는 "Eingang" 등을 의미합니다.

Listing 2. IL 언어로 작성된 프로그램의 예제 부분
        LD      Speed
        GT      2000
        JMPCN       VOLTS_OK
        LD      Volts
VOLTS_OK    LD      1
        ST      %Q75

어떤 언어가 가장 좋을까요? 그것은 다릅니다…

이 텍스트의 목적은 PLC 드라이버 프로그래밍을 가르치는 것이 아니라 특정 가능성과 선택 옵션을 알리는 것입니다. 각 PLC 프로그래머는 자신의 필요에 가장 적합한 방법을 선택하거나 응용 프로그램에 따라 결합해야 합니다. 예를 들어, FBD 다이어그램은 논리 회로를 알고 이해하는 사용자에게 매력적일 것이며, LD 래더는 더 간단한 제어 시퀀스를 프로그래밍하는 데 유용할 것입니다. 반면에 ST와 SFC는 복잡한 프로세스를 프로그래밍하는 데 적합하지만, 예를 들어 ST 언어는 Eaton의 Easy 마이크로 PLC 드라이버에 구현되었으며, 이는 아마도 더 간단하고 덜 요구되는 제어 및 모니터링 기능을 수행하는 데 유용할 것입니다. 반면에, 어떤 언어를 어떤 용도로 사용할 수 있는지, 어떤 용도에 적합한지에 대한 권장 사항은 없습니다. 각 방법을 사용하여 적절한 소프트웨어를 작성할 수 있습니다. 가장 좋은 옵션은 필요에 따라 언어를 결합하여 응용 프로그램의 가독성을 최대한 높이는 것입니다.

Transfer Multisort Elektronik (TME)은 전자 부품, 전기 기술 부품, 작업장 장비 및 산업 자동화의 세계 최대 글로벌 유통업체 중 하나입니다. 카탈로그에는 1,300개 주요 제조업체의 1,500,000개 이상의 제품이 포함되어 있습니다. Łódź와 Rzgów (폴란드)에 있는 TME의 현대적인 물류 센터는 총 면적이 40,000 m² 이상이며 매일 약 6,000개의 패키지를 150개국 이상의 고객에게 발송합니다.

TME는 또한 TME Education 프로젝트를 통해 젊은 엔지니어와 전자공학 애호가들의 지식과 기술 개발에 투자하고 있으며, TechMasterEvent 시리즈를 조직하여 혁신과 경험 교류를 촉진하면서 기술 커뮤니티를 지원합니다。

rightColumnPicture rightColumnPicture

또 읽기