반응형

https://youtube.com/live/om1qJ1YQqbc

[ComfilePi#4] 타이머(TIMER)를 이용해서 산업용 라즈베리파이(industrial raspberry pi)의 GPIO로 TASK 제어해보기!(for PLC유저)

녹칸다의 산업용 라즈베리파이(industial raspberry pi) 시리즈이다!
모든 내용은 아래 구글 슬라이드에 작성하도록 한다!(모든 사람에게 공유되어있음)
https://docs.google.com/presentation/d/1871K_l0P315zuN06e6Ngz6LwY4g4cDlw94NcZz7Ql5k/edit#slide=id.g213fd41c803_0_0

산업용 라즈베리파이는 다양한 제품이 있으나 녹칸다는 국내 컴파일 사의 제품인 comfilepi를 시연하는데 활용하도록 한다!
터치패널(디스플레이)이 있고 GPIO를 통해서 24V 입출력이 가능하다!(I/O보드를 추가 구입해아함)

이더넷과 WiFi에 기본으로 연결가능하기 때문에 IoT프로젝트를 하는데도 유리하다!
나중에 나오겠지만 기존 라즈베리파이에서 활용가능한 모든 것들을 활용가능하므로 산업용이 아니라도 장점이 있다!
(예를 들면 데이터베이스를 활용하거나 카메라를 활용하는 등)

산업용이라는 키워드에 맞게 모든 내용의 초점은 기존 산업현상에서 활용하는 개념에 맞추도록 한다!
그리고 녹칸다가 생각하는 주요 유저는 과거 PLC를 사용하던 개발자라고 생각한다!
그러므로 PLC유저가 산업용 라즈베리파이에 입문하기 위한 진입장벽을 낮추기 위한 목표도 함께 존재한다!

제조사에서는 comfilepi를 활용하기 위한 주요 언어로 C#윈폼을 전면에 내세우고 있다!
라즈베리파이는 리눅스환경인데 윈도우앱이 왜 등장하냐고 할 수 있지만 작동된다!
C#윈폼은 GUI환경의 앱을 아주 빠른시간에 만들수 있으므로 할수만 있다면 큰 장점이 있다!
(물론 만들기 위해서 C#언어를 이해해야하고 모든기능이 리눅스환경에서 정상 구동되지는 않음)

제조사에서 제공하는 방법중 녹칸다의 마음에 드는 부분은 그대로 활용하고 아닌부분은 녹칸다 방식으로 구현하도록 한다!
그리고 나중에는 노드레드(node-red) 플랫폼을 comfilepi에 설치해서 활용해보도록 한다!

이번편은 산업용 아두이노에 C#윈폼 컴포넌트의 기본 사용법 소개를 빨리 마무리짓고 본격적인 GPIO제어에 들어가보도록 한다!
산업용 라즈베리파이에서 직접 입출력에 개입하는 것이다!
물론 산업용 라즈베리 자체에서 그것이 가능한 것은 아니고 제조사에서 제공하는 I/O보드가 있어야 가능하다!
라즈베리파이의 GPIO를 24V입출력이 가능하도록 만들어주는 보드인 것이다!

그리고 아두이노처럼 GPIO를 직접적으로 제어할 수는 없고 WringPi라는 별도의 프로그램이 필요하다!
(제조사에서 이미 설치해놓음)
C#에서는 wiringpi를 호출해서 간접적으로 GPIO를 제어할 수 있다!

이러한 방식을 제조사에서도 제공해주기는 하되 완성된 샘플만 제공할뿐 별도의 설명이 없어서 초보자의 접근이 매우 어려워보인다!
샘플코드도 이걸 어떻게 쓰라는건지 알기가 어렵다!

그리고 구글에서 라즈베리파이의 GPIO를 컨트롤하는 방법을 찾아보면 무수한 방법이 난무하는데 정상작동하는 경우가 없었다!
초보자가 사용할 수 있을만한 난이도의 방법을 녹칸다가 준비해왔으니 그 방법으로 GPIO를 제어해보도록 한다!

이번편은 물리버튼이나 터치버튼을 눌렀을때 1회 어떤 작업이 수행되는 것이 아니라 일정한 시간간격으로 반복작업을 하도록 하는 것이 핵심이다!
그렇다면 모든 명령을 내리는 C#윈폼에서 시간간격에 따른 반복작업을 수행하는 코드가 작성되어야한다!

이럴때 사용하는게 바로 타이머이다!
타이머는 현재 물리버튼과 램프의 상태를 입력받기 위해서 사용하고 있으므로 처음보는 녀석이 아닐것이다!
별도의 타이머를 하나더 생성해서 task제어하는데 활용해보는 것이다!

예를들어 버튼을 눌려서 어떤 작업이 진행되었을때 1초간격으로 램프가 반짝인다던지 여러개 작업을 일정 시간간격으로 순차작업하는 코딩이 가능하다!
C#에서 순차적인 작업을 수행하기 위해서 기본 틀을 잡고 어떻게 틀을 활용해 나가면 좋을지 여러가지 예제를 통해서 함께 알아보도록 한다!

일단 준비된 목록은 아래와 같다!(다 못하면 다음회차로 넘어가거나 생략될 수 도 있음)

0.타이머를 이용해서 task제어를 하는 기본원리

comfilepi16.zip
0.04MB

1.버튼2개와 램프1개를 연결하고 버튼1을 누르면 램프가 1초간격으로 on/off를 반복하고 버튼2를 누르면 즉시 멈추도록 하시오

comfilepi17.zip
0.59MB

2.버튼2개와 램프2개가 연결되어있고 버튼1을 누르면 램프1과 램프2가 1초간격으로 번갈아가면서 작동하고 버튼2를 누르면 즉시 멈추도록 하시오!

comfilepi18.zip
0.59MB

3.버튼2개와 램프3개가 있고 버튼1을 누르면 램프가 1초간격으로 순서대로 신호등처럼 켜지고 버튼 2를 누르면 램프가 멈추도록 하시오

comfilepi19.zip
0.59MB

4.버튼2개와 램프3개가 있고 버튼1을 1회누르면 램프1-램프2-램프3 순으로 1초간격으로 켜지고, 버튼1을 1회 더 누르면 램프3-램프2-램프1 간격으로 켜지고, 버튼1을 1회더 누르면 램프 3개가 1초 간격으로 점멸하는 동작을하고 버튼2를 누르면 현재상태와 관계없이 모든 램프가 꺼지도록 하시오!

comfilepi20.zip
0.59MB

5.버튼2개와 램프2개가 있을때 버튼1을 누르면 램프1이 1초간 on/off를 반복하고 버튼2를 누르면 램프2가 1초간 on/off되도록하시오!(서로 독립적으로 구동) 이때 버튼1과 버튼2를 각각 1회 더 누르면 동작이 멈추도록 하시오!

comfilepi21.zip
0.59MB

6.버튼2개와 램프2개가 있을때 버튼1을 누르면 램프1이 1초간 on/off를 반복하고 버튼2를 누르면 램프2가 2초간 on/off되도록하시오!(서로 독립적으로 구동) 이때 버튼1과 버튼2를 각각 1회 더 누르면 동작이 멈추도록 하시오!

comfilepi22.zip
0.59MB

7.버튼3개와 램프2개가 있을때 버튼1을 누르면 램프1이 1초간 on/off를 반복하고 버튼2를 누르면 램프2가 1초간 on/off를 반복하되 선입우선(인터락)으로 작동시키고 버튼3을 누르면 모든 기능이 즉시 off되도록 하시오!

comfilepi23.zip
1.02MB

8.버튼3개와 램프2개가 있을때 버튼1을 누르면 램프1이 1초간 on/off를 반복하고 버튼2를 누르면 램프2가 1초간 on/off를 반복하되 후입우선으로 작동시키고 버튼3을 누르면 모든 기능이 즉시 off되도록 하시오!

 

comfilepi24.zip
1.02MB

9.터치버튼 4개와 램프3개가 있다! 버튼1을 누르면 램프1이 1초간격으로 반짝이는 task가 수행되고, 버튼2를 누르면 램프2가 반짝이고 버튼3을 누르면 램프3이 반짝일때 선입우선방식으로 작동되도록하고 버튼4를 누르면 현재상태와 관계없이 모든 task를 중지시키시오! [프로젝트 다운받기 comfilepi25]

comfilepi25.zip
1.02MB

10.버튼2개와 램프3개가 있다! 버튼1을 누르면 램프1이 켜진다음 3초후에 램프1이 꺼지고 램프2가 켜진다! 5초후에 램프2가 꺼지고 램프3이 켜진다! 2초후에 램프3이 꺼지고 램프1이 켜진다! 버튼 2를 누르면 모든작업이 즉시 중단된다! [프로젝트 다운받기 comfilepi26]

 

comfilepi26.zip
1.02MB

 

반응형
Posted by 덕력킹
,