카테고리 없음

Arduino의 PLC 래더 로직: OpenPLC 소개

기하 2023. 2. 6. 12:43

https://control.com/technical-articles/plc-ladder-logic-on-an-arduino-introduction-to-openplc/

 

 

OpenPLC는

널리 사용되는 마이크로컨트롤러를

프로그래밍 가능한 논리 컨트롤러(PLC)로 변환할 수 있는

오픈 소스 산업용 제어 플랫폼입니다. 

 

OpenPLC는

기능적 프로그래밍 언어에 대한 
 IEC( International Electrotechnical Commission)의 표준 61131-3을 기반으로 하는

완전한 기능의 오픈 소스 PLC입니다 .

 

IEC 61131-3 표준과 관련된 5가지 기능적 프로그래밍 언어가 있습니다. 

LD(Ladder Diagram),

ST(Structured Text),

IL(Instruction List),

SFC(Sequence Function Chart) 및

FBD(Functional Block Diagram)입니다. 

 

PLC와 함께 사용되는 가장 일반적인 프로그래밍 언어는 LD입니다. 

IEC 61131-3 표준은 효과적이고 저렴한 자동화 제어 시스템을 개발하기 위해

소프트웨어 및 하드웨어 요구 사항을 고려합니다.

 

OpenPLC 버전

OpenPLC 플랫폼의 기술 개발 경로는

오픈 소스 프로그래밍 언어 도구 체인의 두 가지 기본 버전인

버전 1.0과 버전 1.2b로 구성되었습니다. 

 

버전 1.0은

LD 프로그램을 테스트하기 위한 시뮬레이터를 제공합니다. 

소프트웨어 버전은

대상 Microchip ATMEGA328 8비트 마이크로컨트롤러에서 ST 코드를 실행할 수 있습니다. 

 

버전 1.0은

C 코드를 설치하고

ATMEGA328 마이크로컨트롤러에서 실행되는

Microchip 기반 PLC 입력/출력 장치를 표시할 수 있는 런타임 기능을 제공합니다. 

 

그림 1은 Hello World LD 프로그램을 실행하는 일반적인 런타임 대시보드를 보여줍니다.

 

그림 1. OpenPLC Hello World 런타임 대시보드.

 

버전 1.2b는

LD 프로그램을 테스트하기 위한 시뮬레이터를 제공하지만

추가 Arduino 플랫폼과 ESP32 및 ESP8266 프로그래밍 가능 장치와 같은

널리 사용되는 마이크로 컨트롤러를 프로그래밍할 수 있습니다. 

그림 2는 Hello World 시뮬레이터 LD 프로그램 환경을 보여줍니다.

 

그림 2 . Hello World 시뮬레이터 LD 프로그램 환경입니다.

 

OpenPLC를 Arduino Uno와 함께 사용하기

OpenPLC 오픈 소스 플랫폼에 대한 이해로

이제 Arduino Uno 또는 호환 가능한 PLC 를 구축할 준비가 되었습니다 . 

오픈 소스 PLC를 구축하는 첫 번째 단계는 

여기 웹 사이트에서 개발 도구를 다운로드하는 것 입니다. 

그림 3 . OpenPLC 웹사이트.

PLC 개발 시스템의 운영 체제용 소프트웨어를 선택하십시오. 

OpenPLC 소프트웨어를 웹 사이트에서 다운로드한 상태에서 더블 클릭하여 설치 프로그램을 실행합니다. 

OpenPLC 설치를 축하합니다! 

 

첫 번째 OpenPLC 프로젝트인 Hello World를 빌드할 준비가 되었습니다.

 

첫 번째 OpenPLC 프로젝트: Hello World

이 프로젝트는

무납땜 브레드보드에서 몇 개의 개별 전자 부품과 함께

Arduino Uno 또는 호환 가능한 보드를 사용합니다. 

 

Hello World PLC 프로젝트는

촉각 푸시 버튼 스위치를 누를 때 LED를 켭니다. 

그림 4에 표시된 전자 회로 개략도를 사용하여 Uno 호환 PLC를 배선합니다. 

 

그림 4. Arduino Uno PLC 전자 회로 개략도.

 

추가 참조로 그림 5에 표시된 작성자의 무납땜 브레드보드 PLC가 있습니다.

그림 5 .  저자의 실제 프로토타입 Arduino Uno PLC 배선도.

촉각 푸시 버튼 스위치 PB1 및 PB2는 디지털 논리 스위치로 연결됩니다. 

PB1 또는 PB2를 누르면 핀 3과 2에 각각 약 +5 VDC가 적용됩니다. 

유선 디지털 스위치를 테스트하는 방법을 설명하기 위해 그림 6이 제공됩니다. 

 

Tinkercad 회로 모델에서 디지털 전압계가 저항 R1에 연결되어 있음을 알 수 있습니다. 

USB 케이블은 Arduino PLC를 프로그래밍 컴퓨터에 연결합니다. 

전원 켜짐 LED는 Arduino Uno 인쇄 회로 기판(PCB)에서 볼 수 있습니다. 

이 표시기는 마이크로컨트롤러와 인쇄 회로 기판(PCB)의 지원 전자 회로에 전원이 켜져 있음을 나타냅니다.

 

그림 6 .  디지털 논리 스위치를 테스트합니다.

 

그림 5에 표시된 실제 PLC 프로토타입의 R1에 디지털 전압계 를 놓고 PB1 촉각 스위치를 누릅니다. 

대략 +5 V의 판독값이 전기 측정 기기의 LCD에 표시되어야 합니다. 

전압 판독값이 약 +5V가 아니면 배선을 확인하고 측정을 반복하십시오.

 

 PB2 촉각 스위치에서 동일한 테스트 측정을 수행합니다. 

PB2를 눌러 디지털 전압계에서 약 +5V를 읽습니다. 

축하합니다. Arduino PLC를 위한 두 개의 기능적 디지털 로직 스위치가 있습니다. 

 

다음 단계는 무납땜 브레드보드에 출력 LED 표시기를 배선하고 테스트하는 것입니다. 

그림 7은 무납땜 브레드보드의 유선 및 전력 출력 LED 표시기의 Tinkercad 회로 모델을 보여줍니다. 

실제 브레드보드 프로토타입에서 출력 LED 표시기를 테스트할 때 이 회로 모델을 참조로 사용하십시오.

 

 

그림 7 .  기능 출력 LED 표시기

.

 

출력 LED 표시기가 켜져 있으면 작업이 완료된 것입니다! 

출력 LED 표시기가 제대로 작동하고 있습니다. 

PLC 개발 시스템의 USB 포트에서 USB 케이블을 제거합니다. 

560Ω 저항 에 연결된 빨간색 선을 긴 점퍼선으로 교체합니다. 

560Ω 저항에 연결된 점퍼선 끝을 잡고 Arduino Uno에 장착된 암 헤더 커넥터의 디지털 핀 7(D7)에 삽입합니다. 

 

프로토타입 Arduino Uno PLC의 디지털 논리 스위치와 출력 LED 표시기를 배선하고 테스트했습니다. 

PLC 프로젝트의 마지막 단계는

OpenPLC Hello World LD 프로그램을 빌드하고

Arduino Uno PLC에 업로드하는 것입니다. 

OpenPLC 프로젝트의 마지막 단계를 진행하기 전에

USB 케이블을 PLC 개발 시스템의 USB 포트에 삽입합니다.

 

기본 래더 다이어그램 프로그램 구축

그런 다음 컴퓨터를 마우스 오른쪽 버튼으로 클릭하여

LD 프로그램과 함께 OpenPLC 생성 파일이 저장되는 프로젝트 폴더(내 문서 또는 다른 간단한 위치에서 권장)를 만듭니다. 

프로젝트 폴더 이름을 'HelloWorld'로 지정할 수 있습니다. 

 

프로젝트 폴더가 생성된 상태에서 OpenPLC 소프트웨어를 열고 HelloWorld 프로젝트 폴더를 선택하면 OpenPLC 편집기가 화면에 나타납니다.
 

그림 8 .  OpenPLC 편집기.

 

 

파일>새로 만들기를 선택하여 HelloWorld LD 프로그램을 만듭니다. 

화면에 작은 대화 상자가 나타납니다. 

그림 9와 같이 POU 이름 텍스트 상자에 HelloWorld를 입력합니다.

Language 드롭다운 목록에서 LD( Ladder Diagram 의 경우 )를 선택합니다. 

확인 버튼을 클릭하면 새로운 LD 프로그램 생성이 완료됩니다.

 

그림 9 .  프로젝트 박스 정보를 완성합니다

.

 

프로젝트 상자가 완료되면 I/O 태그를 생성할 준비가 된 것 입니다. 

Hello World LD에는 HelloWorld_PB 및 HelloWorld_LED의 두 가지 태그가 있습니다. 

더하기 기호를 클릭하여 두 개의 I/O 태그를 생성합니다.

 I/O 태그 목록은 그림 10과 같아야 합니다.

 

그림 10 .  HelloWorld I/O 태그 목록.

 

 

I/O 태그 목록에서 열의 유형 및 위치를 확인할 수 있습니다. 

HelloWorld_PB의 Type(데이터 유형) 셀 을 클릭하고 BOOL을 선택 합니다. 

 

HelloWorld_LED에 대해 선택 프로세스를 반복합니다. 

디지털 정보(ON/OFF)를 제공하는 촉각 누름 버튼 스위치와

ON/OFF 명령을 받는 출력 LED 표시기에서 데이터 유형은 부울이므로 BOOL을 선택합니다. 

 

위치 열은 Arduino Uno의 지정된 I/O 핀에 대한 PLC 주소입니다. 

그림 10과 같이 주소를 입력합니다. 

 

I/O 태그 목록이 완료되면 이제 LD 프로그램을 만들 수 있습니다. 

Hello World 프로젝트에 사용할 두 가지 기본 PLC 비트 명령어는

 XIC(Examine If Closed) 및 OTE(Output Energized)입니다.

이러한 비트 명령어의 위치는 프로그래밍 도구 모음에 있습니다. 

 

그림 11.  PLC 비트 명령.

XIC 및 OTE 비트 명령어를 선택하여

OpenPLC 편집기의 LD 프로그램 빌드 섹션의 왼쪽과 오른쪽에 각각 배치합니다. 

생성한 태그는 올바른 비트 명령을 선택하여 연결됩니다. 그림 12는 올바른 비트 명령어와 관련된 태그를 보여줍니다.

 

그림 12 .  XIC 및 OTE 비트 명령어 배치 및 구성.

 

 

전원 레일을 선택하고 핀 수를 구성하여

XIC 및 OTE 비트 명령어를 연결하고 단일 렁 로직을 구축하십시오. 

핀은 LD 프로그램의 가로대입니다. 

그림 13은 파워 레일의 선택 및 구성 프로세스를 보여줍니다.

 

그림 13.  전원 레일의 선택 및 구성

.

 

LD 프로그램 구축의 마지막 단계는 XIC 및 OTE 비트 명령어를 함께 연결하는 것입니다. 

HelloWorld_PB XIC 비트의 오른쪽 끝을 선택하고 드래그하여 선을 만듭니다. 

라인을 계속 드래그하여 HelloWorld_LED OTE 비트의 왼쪽에 연결합니다. 

이 라인은 XIC 및 OTE 비트 명령 제어 로직 작동을 관리하는 렁을 생성합니다. 

완성된 LD 프로그램은 그림 14에 나와 있습니다.

 

그림 14.  Hello World LD 프로그램.

 

 

Hello World LD 프로그램 구축 수고하셨습니다! 

 

LD 프로그램에서 시뮬레이션을 실행하려면

Config0.Res.instance0 드롭다운 상자 옆에 있는 선글라스를 클릭합니다. 

그림 16과 같이 HelloWorld_PB XIC 비트 명령어에 연결된 왼쪽 가로대가 녹색으로 바뀌어

LD 프로그램을 시뮬레이션할 준비가 되었음을 나타냅니다.

 

작업 표시줄에서 실행 중인 사람을 선택하여 LD 프로그램을 실행합니다. 

편집기의 PLC 로그 섹션에 'PLC 시작됨' 텍스트가 표시됩니다. 

그림 15 . LD 시뮬레이션 이벤트를 시작합니다.

 

그림 16.  Hello World LD는 시뮬레이션할 준비가 되었습니다.

 

시뮬레이션과 상호 작용하려면 제시된 선택 목록에서 'Force True'를 마우스 오른쪽 버튼으로 클릭하여 선택합니다. Hello World_LED OTE 비트가 녹색으로 바뀌어야 합니다. 강제로 false를 토글하려면 다시 마우스 오른쪽 버튼을 클릭합니다. Hello World_LED OTE가 꺼지거나 검은색으로 표시됩니다. 

축하합니다. Hello World LD 프로그램의 시뮬레이션 이벤트를 진행하셨습니다. 프로젝트의 마지막 단계는 LD 프로그램을 실제 Arduino PLC에 업로드하는 것입니다.

 

Arduino Uno PLC에서 Hello World Ladder Diagram 프로그램 업로드 및 테스트

정지 신호를 클릭하여 시뮬레이션 이벤트를 끕니다. 편집기 왼쪽에 있는 HelloWorld LD 프로그램 이름 옆의 작은 상자를 클릭하여 LD 프로그램을 재설정합니다. 

업로드하려면 작업 표시줄에서 Arduino Uno 아이콘을 클릭하여 올바른 USB 통신(COM) 포트 와 적절한 마이크로 컨트롤러 개발 플랫폼을 선택하십시오. 그림 17은 선택된 COM 포트와 Arduino 보드에 대한 구성 패널을 보여줍니다.

 

그림 17 . 구성 패널.

 

PLC 개발 시스템의 장치 관리자를 사용하여 올바른 COM 포트를 식별해야 할 수도 있습니다. Arduino Uno 보드와 COM 포트를 선택한 상태에서 업로드 버튼을 클릭합니다. 런타임 도구가 ST 프로그램을 C 코드로 변환한 다음 이진 파일로 변환하고 Arduino에 업로드하면 그림 17 하단에 보이는 컴파일 출력 창에 'done' 메시지가 표시됩니다. PB1을 누릅니다. 무납땜 브레드보드 프로토타입의 촉각 스위치를 누르면 LED가 켜집니다. 촉각 누름 버튼 스위치에서 손을 떼면 LED가 꺼집니다. 

이제 Arduino와 OpenPLC 소프트웨어를 사용하여 저비용 PLC를 구축했습니다!

다음 기사에서는 PB1 촉각 스위치가 산업용 시작/정지 푸시버튼 스테이션으로 대체될 예정입니다. 시작/정지 제어 회로를 수행하도록 OpenPLC 기반 Arduino를 프로그래밍하는 방법을 배웁니다.

 

대화형 퀴즈: 거꾸로 된 Hello World

  1. HelloWorld_LED 표시기가 즉시 켜지는 그림 16에 표시된 LD 프로그램을 수정하십시오.
  2. 촉각 푸시 버튼 스위치를 누르면 LED 표시등이 꺼집니다.

Interactive Quiz에 대한 솔루션은 다음 OpenPLC 기사에서 제공됩니다!