사용자 도구

사이트 도구

English

orange:index

ORANGE Automation

  • Orange Panel PC : 리얼 타임 리눅스 기반의 산업용 터치패널 PC (가격대 30~70만원대)
  • CFNET I/O : 모듈형 Digital I/O, Analog I/O
  • jControl : Visual Studio 기반 솔루션 파일. (MONO와 호환됨).

소개

오렌지 오토메이션은 리눅스 기반의 산업용 터치패널PC와 개발 환경을 제공하는 자동화 솔루션 전문 회사입니다.

주요 아이템은 Real-Time 리눅스 기반의 7인치~15인치의 산업용 터치패널 PC 이며, UL인증과 KCC 전자파 인증을 획득한 제품입니다.

개발환경은 MicroSoft사의 Visual Studio 2022 에 무료로 제공되는 jControl 솔루션을 설치한뒤 C#을 이용해서 개발하는 방식입니다.

이제 저희 Orange에서 제공해드리는 하드웨어/소프트웨어 개발환경을 이용하여 여러분이 원하는 자동화 시스템을 보다 쉽고 빠르게 완성하세요.

리얼타임 리눅스란?

여러분들이 일반적으로 알고 계신 리눅스는 Non-Real-Time 방식입니다. 실행 간격을 일정하게 맞출수가 없기 때문에 산업용 어플리케이션에는 적합하지 않습니다. Orange Panel PC는 Real-Time 리눅스를 채택하였습니다.

(단, 완벽한 리얼타임은 불가능합니다. 약간의 지터-jitter는 어쩔수 없이 존재합니다. 이 부분을 메뉴얼에 명시하고 고객한테 이해를 시켜야 합니다.)

정전대비

갑작스러운 정전에 대비하여, 시스템 OS영역을 보호하는 OS Sudden-PowerOff Protect기능을 탑재하였습니다. 이 역시도 산업현장에 반드시 필요한 기능입니다. 작업자가 실수로 전원을 내리거나, 정전이 발생해도, 다시 복구됩니다.

만약 이 기능이 없다면, 블루스크린이 뜨거나, 복구불능상태로 빠지게 됩니다.

jControl

jControls ←— 여기에 소스가 있습니다. 이걸 기반으로 발전시키면 됩니다.

현재 MONO는 .NET 4.8만 지원됩니다. 다행히 VS2022에서는 .NET 4.8을 지원하므로, 쓰는데 문제는 없습니다.

CFNET I/O

산업현장의 콘트롤 시스템에 최종 단계에서는 외부 기기와 연결할 수있는 I/O가 반드시 필요합니다. 시중에는 다양한 종류의 Remote I/O가 있지만, 가격이 비싸고, 조작방법이 까다롭습니다.

저희 회사에서 만든 CFNET I/O 를 현실적인 가격대로 위에서 설명드린 Orange Panel PC와 바로 연결할 수 있습니다. (USB연결)

CFNET I/O는 모듈형으로 되어 있어, 필요한 모듈만 사서 조합하는 방식입니다.

디버깅 문제 해결 방법

리눅스에서 MONO사용시 디버깅이 안됩니다. 개발시 매우 불편합니다. 그래서 CFNET I/O를 그냥 PC에 연결해서 개발하는 방식으로 진행하면 됩니다.

그러면 VS2022의 디버깅 기능을 전부 이용할 수 있습니다. 나중에 최종 결과물만 Orange Panel PC로 옮기면 됩니다.

  • 단, MONO를 지원하는 .NET 4.8로만 개발해야 됩니다.

PC에서 잘 실행되던 프로그램이 리눅스 PC(오렌지 Panel PC)로 옮겼을때, 제대로 실행되지 않을 가능성이 존재합니다. (속도차이, 현장에서의 노이즈 이슈, MONO 프레임웍과 닷넷 프레임웍의 호환성 이슈)

이 경우 고객과의 소통을 통해 문제를 하나씩 해결해 나가야 합니다. (현실적으로 MONO측의 서포트를 기대하기는 어렵고, 마이크로 소프트에서도 지원해주지 않기 때문에, 이 부분을 어떻게 헤쳐나가는 것인지가 관건이 됩니다.)

일반적으로 사용되는 방법과의 차이점

현재 산업분야에서 단일 전용기 개발에 사용하는 솔루션은 크게 3가지로 나눠볼 수 있습니다.

  1. HMI 와 PLC
  2. PC 와 PLC
  3. PC 와 Remote I/O

1번은 C#언어를 모르는 엔지니어들이 주로 사용하는 방법인데, 이 분야가 시장이 가장 큽니다. 단 미쯔비시, 지멘스, LS산전 과 같은 대기업이 시장을 선점하고 있어, 뚫고 들어가기가 어렵습니다.

2번은 C#언어를 모르는 엔지니어들이 PC에 SCADA 소프트웨어 (수백만원 대)를 설치하고 PLC와 연결하는 방식으로 많이들 사용하는 조합입니다. PLC는 리얼타임을 완벽하게 지원하므로, 주로 모션제어와 같이 타이밍이 중요한 어플리케이션에 사용됩니다.

1,2번 모두 PLC가 주축입니다. 따라서 PLC를 모른다면 적용할 수 없는 방법입니다. PLC는 레더로직이라는 다소 생소한 방법으로 코딩을 하는 산업용 콘트롤러입니다.

3번이 공략하는 시장입니다. Remote I/O는 단순 I/O입니다. 따라서 PC에서 모든것을 다 처리해야되는 상황이므로, C#언어를 가지고 코딩합니다.

하지만 일반 윈도우 PC에는 리얼타임 OS 불가, 갑작스러운 전원 OFF 시 대책없음. 고가격 이라는 3가지 문제점을 가지고 있습니다.

따라서 우리는

  • Windows PC보다는 저렴한 Linux PC
  • 리얼타임 OS
  • 갑작스러운 전원 OFF 상황에 대한 대처

를 주요 장점으로 어필해야 됩니다.

우리나라에서 이 분야의 경쟁사는 한곳뿐임

경쟁사와의 차별성

경쟁사 오렌지
OS 윈도우 CE 리눅스
리얼타임 x o
개발환경 VS2008 (유료) VS2022 (무료)
사용언어 C# C#
닷넷 종류 컴팩트 프레임웍 MONO 프레임웍
I/O 모듈형이 아님 (자유로운 구성이 불가능) 모듈형 (원하는 조합으로 구성이 자유로움)
기반 솔루션 파일 지원함 지원함
갑작스러운 전원 off 대책 있음 대책 있음
개발 방법 배포할때마다 WinCE로 보낸뒤, 디버깅까지 하는 방법임. 배포속도가 느리고, 동작이 굼뜨다. 이렇게 밖에 할 수 없는 이유는 I/O모듈을 PC에 꼽을수가 없기 때문이다. 일단 PC에서 개발을 하고, 완성된 후에 Linux PC에 배포하는 방식. I/O가 USB방식으로 되어 있어, PC 꼽아서 개발이 가능하다.

타겟 시장

자동화 시장을 크게 두가지로 분류할 수 있습니다.

  1. 공장 생산 라인 자동화 : 예) 반도체 생산라인, 자동차 생산라인, 등등
  2. 단일 전용기기 제작 회사 : 예) 곡물선별기, 과적차량측정기, 맥주증류기, 식권발매기, 온도제어챔버 등등

1번은 타겟이 아닙니다. 이 쪽은 한번 설치하면, 끝이기 때문에, 지속적인 수요가 발생하지 않습니다. (이런쪽에서 전화오면 가급적 진행하지 않는 것을 권장합니다. 매출에 도움도 안될 뿐더러, 시간만 뺏깁니다. 이런 업체와는 외주개발도 해서는 안됩니다. 문제가 생기면 현장에 가야 하기 때문입니다. 대부분 현장들이 지방에 있고, 간다고 해도 바로 해결이 안되기 때문에 며칠씩 상주를 해야됩니다. 사실상 남는게 없습니다.)

2번이 주된 타겟입니다. 한번 개발해 놓으면, 계속 생산을 하기 때문에, 지속적인 수요가 발생합니다. 어떻게 2번 분류의 고객임을 알수 있는가? : 해당회사의 홈페이지를 보면 됩니다. 그 홈페이지에 기존 생산하고 있는 단일 전용기류의 제품이 있는가 보면 됩니다. (이 고객은 문제가 생길경우 현장을 방문하지 않아도, 셋트를 한대 보내달라고 하면 보내줍니다. 사무실에서 차근차근 문제를 찾아볼 수 있습니다.)

단일전용기 사례

어플리케이션 종류

고객마다 원하는 어플리케이션의 종류는 매우 다양한테 크게보면 이 두가지로 구분할 수 있습니다.

  1. 단순 I/O제어 & UI
  2. 1번 + 원격제어

1번은 일반적인 유형으로, 대부분 이런 종류의 어플리케이션을 원합니다. I/O를 제어하면서, 화면에 UI를 띄워놓고, 엔드유저가 터치하면서 기계를 제어하는 유형입니다. (LAN선이나 WIFI연결이 없이 현장에서 단독으로 동작되는 경우입니다.)

2번은 1번기능을 기본적으로 가지고 있으면서, 외부에서 스마트폰이나 PC웹브라우저를 통해서 제어(또는 모니터링)을 하는 어플리케이션입니다. (LAN또는 WIFI연결이 기본적으로 붙습니다.)

요즘은 2번을 많이 원하는 추세인데, 이에 대한 적절한 솔루션을 갖춘다면 경쟁력을 더 높일 수 있습니다.

예)노드레드를 깔아서 거기있는 iot기능을 활용

리얼타임은 무엇인가?

일정한 실행간격을 보장하는 것을 리얼타임이라고 합니다.

PC에서 10mS마다 On/Off를 반복하라고 명령을 내려도, 실제로는 실행간격이 일정하지 않고 Jitter가 발생합니다. Jitter란 원하는 지점에서 벗어난 오차를 말합니다. 왜냐하면 OS가 우선적으로 처리해야될 것들을 알아서 결정하는데, 일반 OS는 마우스/화면개선등을 우선적으로 처리합니다.

그래야 화면이 깨지지 않고, 마우스가 중간이 멈칫하는 일이 없기 때문입니다.

리얼타임 OS에서는 I/O 처리 우선순위를 더 높게 둡니다. 그래서 실행간격을 좀더 일정하게 유지할 수 있습니다.

하지만 OS자체가 워낙 방대하고 해야될 일이 많기 때문에, 완벽한 리얼타임을 기대할 수는 없습니다.

그럼 코딩하는 입장에서는 어떻게 해야 하는가?

  1. 실행간격을 더 벌린다. (최소간격을 100mS (0.1초)정도로 한다. 그러면 Jitter가 생겨도 눈치채기 어렵다.)
  2. 빠른시간으로 리얼타임을 해야될 부분이 있다면, 이부분만 PLC로 처리한다.

PLC는 오로지 I/O처리만 하므로 리얼타임이 보장됩니다. 크리티컬한 부분을 PLC로 하는 방법이 확실한 리얼타임을 보장하는 유일한 방법입니다.

어플리케이션 중에는 꼭 리얼타임이 필요하지 않는 경우도 많습니다. 예를 들면 비닐하우스 제어, 온도 제어 등입니다. 이런 경우에는 아무 문제없이 C#으로 모든 것을 처리할 수 있습니다.

하지만 곡물선별기()의 경우 C#으로 처리가 불가능합니다. 곡물이 빠르게 지나가는데, 측정하자마자, 타겟을 탁하고 쳐내는 솔레노이드를 0.001초만에 동작시켜야 합니다. 안그러면 지나가고 엉망으로 분류됩니다. 사실상 선별기의 역활을 제대로 수행할 수가 없습니다.

만약 아무것도 모르는 고객이 곡물선별기와 같은 리얼타임이 요구되는 어플리케이션을 C#으로 해달라고 요구하면, 거절해야 됩니다. 어차피 될 수도 없고, 시간만 허비하게 됩니다.

홈페이지

홈페이지를 잘 만들어야 합니다. 무엇보다도 중요합니다. 홈페이지를 보면 마치 큰 회사처럼 보이게 해야합니다. 홈페이지에 쇼핑몰 기능도 같이 있는게 좋습니다.

예1

어떻게 하면 위와 같은 홈페이지를 만들 수 있는지 깊은 고민이 필요합니다.

해결방법은?

플렛폼 (고도몰, cafe24등 여러곳중 하나)를 선정해서, 유료스킨을 구매한뒤, 디자인 전문 업체에 의뢰해서 위와 같은 형태로 만들어달라고 하는 수밖에 없을듯..

자칫 잘못하면 아래 홈페이지처럼 이도 저도 아닌 어정쩡한 홈페이지가 나오고 맙니다.

예2

홈페이지(쇼핑몰)는 한번 만들면 나중에 플렛폼을 바꾸기가 어렵습니다. 유저가 회원가입한 데이터베이스를 그대로 이전하기 힘듭니다.

  • 네이버 페이로 결제가 가능해야함 (그래야 네이버 쇼핑과 연계되어, 검색시 유출되도록 설정할 수 있음)
  • 네이버 페이 결제시 별도의 회원가입이 필요없기 때문에, 유저들이 쉽게 구매 할 수 있음.

마케팅

광고가 필요합니다. 요즘은 잡지/DM발송 광고가 어렵기 때문에, 온라인에서 광고를 해야합니다. 전기/전자 관련 업계 사람들이 주로 가는 사이트에 매달 일정 금액을 내고 광고를 하는 방법이 있습니다.

디바이스마트

ic뱅큐

구글 키워드 광고, 네이버 파워링크 (키워드 광고)는 비추입니다. 가격만 비싸고 효과는 그닥 없습니다.

이메일 마케팅

돈안들이고 하는 광고로 이메일 수집한뒤 이메일로 마케팅 하는 방법이 있습니다. 이 방법은 미끼(?)가 필요합니다. 예를들어 jControl 솔루션파일을 그냥 다운로드 받게 하지말고 홈페이지에서 이메일을 등록하면, 이메일로 다운로드 받을 수 있는 링크를 보내주는 식으로 하면, 고객의 실질적인 이메일 리스트가 쌓입니다.

그리고 쌓여있는 이메일로 광고/홍보 이메일을 주기적으로 발송하는 방법이 있습니다.

외주 개발

외주개발을 가려 받아야 합니다. 안그러면 험난한 길이 됩니다.

좋은 외주개발 거래처 확인 방법

  1. 1인기업 또는 스타트 기업이 아닌지 확인할 것 (나중에 잘될 거라는 식으로 접근하는 경우는 무조건 PASS)
  2. 홈페이지를 보유하고 있는가? (홈페이지 조차 없다면, Pass)
  3. 홈페이지에 반복 생산중인 단일(전용)기를 아이템으로 보유하고 있는가?
  4. 매출 현황이 10억 이상인가? 정부에서 운영하는 중소기업현황정보
  5. 직원수가 일정수준 이상이고, 지속적인 사원모집활동을 하고 있는가? (잡코리아등에서 확인가능)

한마디로 이미 성장해 있거나, 성장중인 회사와 같이 해야된다. 그래야 고정 매출을 기대할 수 있다. 그렇지 않은 회사와 계약하면 시간만 까먹고, 매출도 기대하기 어렵다.

외주개발을 하기로 마음먹고, 계약을 하기전에, 해당 회사에 한번 방문해봐야 한다. 회사 건물과 분위기를 보면 진행여부 결정에 도움이된다.

개발 순서

마치 건물을 짓듯이 수순을 밟아야 한다.

  1. 시방서 요구 : 업체에서 자신들의 요구사항을 적은 문서. (마치 건물 설계도처럼)
  2. 견적 : 시방서를 토대로 견적산출 (시간당 비용으로 산출할 것, 1개월에 500인데, 3개월치 일량이니 1500 이런식으로)
  3. 계약서 작성
  4. 착수 : 착수금 50% 수령후 시작
  5. 완료 : 잔금 수령
  6. 유지보수 계약
  7. 유지보수 수행

개발을 진행하다보면 시방서에 없는 추가 기능 요구가 반드시 있기 마련이다. 이 경우 그냥 해주지 말고, 1개월 치 분량이니 1개월 비용을 추가로 내야한다는 식으로 접근해야 된다. 그래야 업체에서 심사숙고해서 기능 추가를 요구한다. 그냥 해주면 계속 요구하고 개발이 영원히 끝나지 않는다.

유지보수 계약 : 이걸 해야 추후 수정이 가능하다고 첨부터 계약서에 적어두어야 한다. 안그러면 시도 때도 없이 전화와서 수정을 요구한다. 간단한 버그수정이나 파라미터 수정정도는 유지보수안에서 해주되, 큰 수정은 다시 개발계약을 채결하는 식으로 접근해야 한다.

만약 위와 같은 절차없이, 그냥 이번 껀은 500입니다. 이런식으로 시방서/계약서 없이 덜컥 착수금을 받으면, 그 업체한테 끌려다니게 된다. 착수금 달랑 250 주고, 3년 넘게 개발을 시키는 경우도 허다하다. 조심해야 한다.

시방서의 중요성

시방서는 마치 건물 설계도처럼 어떤 건물을 지어야하는 지 모든것이 담겨져있는 마스터 플랜이다. 이걸 업체에 요구해야 한다.

시방서 조차 제대로 못쓰는 업체가 허다하다. 왜냐면 업체자신도 뭘 만들어야 하는지 정확하게 모른다.

  • 시방서 조차 만들지 못하는 업체와는 계약해선 안된다.
  • 시방서가 있어야 견적을 뽑을수 있다.
  • 시방서를 근거로 나중에 추가 기능요구시 이건 시방서에 없던 기능이니까, 추가금이 발생한다고 말할 수 있다.
  • 시방서에 있는 기능을 다 구현하면 비로소 개발이 끝나게 된다. (즉 시방서가 있어야 끝을 알수 있다.)

시방서를 어떻게 작성해야하나요. 하고 물어온다면

  • 시방서에는 UI 화면이 한장/한장 구체적으로 그려있어야 한다.
  • 각 UI화면에 버튼이 어떤기능을 수행하는 구체적으로 명시되어 있어야한다.
  • 외부에 어떤 I/o가 있고 각 i/o의 기능이 무엇인지 명시되어 있어야 한다.
  • 그외 필요한 동작에 구체적인 명시가 있어야 한다. (로그기록, 비상시 처리방법, 등등)

기능추가및 수정요구시 접수 방법

전화로 이런 저런것을 추가해주세요, 또는 고쳐주세요라고 연락해오면, 반드시E-MAIL로 해당 내용을 정리해서 보내달라고 해야된다. 그럼 이걸 근거로 추가비용을 요구할 수 있다.

그리고 말로만 하다보면, 나중에 반드시 문제가 된다. 이메일로 오면 나중에 거래처에서 말을 바꾸더라도 근거를 제시할 수 있다.

외주개발의 목적

외주개발을 진행하는 목적은, 안정적으로 제품을 사가는 고정거래처를 만들기 위함이다. 개발만 해주고 주기적인 매출을 기대하기 어렵다면 애당초 외주개발을 진행하면 안된다.

외주개발해준 제품이 한달에 100대, 아니면 2~3달에 100대씩 사가는 제품이라면, 이것들이 쌓였을때 매출에 큰 도움이 된다.

이런 우량 업체에 개발을 해주고 계속 유지보수를 해주는 관계가 형성되면, 이 업체는 다른 제품으로 갈아타기 어려워진다.

외주개발의 장점

외주개발은 힘들지만 이를 통해 많은 것을 얻을 수 있다.

  • 이 업계의 분위기와 시장의 트랜드를 알 수 있다.
  • 고객과의 소통을 통해, 고객의 니즈를 파악할 수 있다.
  • 향후 어떻게 사업전개를 해나갈지 방향설정을 할 수 있다.
  • 자사 제품인 오렌지 Panel PC에 대한 이해가 더욱 깊어져서, 향후 고객 대응에 자신감을 갖게 된다.

또하나의 장점은 기술력 향상이 있다는 것이다. 고객은 C#만 못할 뿐이지 해당 분야에 전문가 들이다. 하드웨적인 부분과 해당분야에 대한 노우하우가 충분히 있는 상태이다. 그들과 일하면서 기술력도 점점 늘게 된다.

그래서, 외주개발은 이 사업에서 꼭 필요한 요소이다.

개발비 수익> 기술력 향상> 시장트랜드 분석> 제품에 대한 이해도 향상> 향후 고정매출 발생 순서로 이어지니 그야말로 일석 5조이다. 하지만 불량업체도 많으니 업체 선정에 신중해야 한다.

유튜브/블로그 운영

외주개발을 하면서 얻은 조각 지식이나, 팁등을 유튜브 나 블로그를 통해 기록해 나가면, (바쁜와중에 힘이 들겠지만) 나중에 큰 도움이 된다. (업체의 양해를 구한뒤 개발중인 제품에 대한 사진/동영상을 첨부하면 더 좋다. 해당업체에 홍보에 도움이 된다고 말하고 양해를 구하면 좋다.)

유튭 구독자/ 블로그 이웃이 늘어나면서 광고효과를 볼 수도 있고, 거꾸로 유튜브/블로그를 통해 이 회사를 알게된 사람들이 제품을 구입하거나 외주개발을 맡기는 경우도 많다.

요즘은 자기가 만들고 싶은 제품이나, 하고 싶은 것들을 검색을 통해서 찾아보는 경우가 많은데, 이때 유튜브/블로그가 검색결과에 노출이 된다.

블로그 예

농장자동화 블로그

유튜버 예

블로그는 네이버 블로그를 추천. 다른 블로그 플렛폼도 많지만, 네이버 검색에서 주로 네이버 블로그를 노출시킴.

제가 운영하고 있는 블로그를 보면 평일 클릭수가 500회 정도 인데, 대부분 검색을 통해서 궁금증을 해결할려고 오는 사람들이다. 매일 이정도의 광고효가가 있는셈인데, 이것은 잡지광고보다 효과가 좋은편.

컴파일 블로그

사후 관리 : 하드웨어

Orange Panel PC (리눅스 PC)는 다음과 같은 종류가 있다.

  • LITE 버전 : micoSD 카드를 쓰는 버전
  • eMMC 버전 : microSD 대신에 eMMC가 아예 납땜되어 있는 버전

LITE 버전 같은 경우는 사후 관리가 편하다. 유저가 OS를 날려먹으면, OS이미지를 보내주고, SD카드에 라이팅한뒤 사용하라고 하면된다.

eMMC 버전은 그 과정이 조금 번거롭다. 그래서 유저들이 기피한다. 그럼에도 eMMC를 찾는 유저들이 있다. 왜냐면 양산 (수백대 단위)이 들어가면 제품 안정성 측면에서 eMMC가 더 좋다. (최종 소비자가 microSD카드를 빼가지도 못하고, 진동에도 강한 측면이 있다.)

그래서 기본적으로 판매되는 제품은 사후관리가 편한 LITE 버전만 판매하고, 유저의 요구가 있을경우에만 eMMC를 취급하는 것으로 하는 편이 좋다.

간혹 OS이미지를 보내줘도 라이팅을 못하는 유저들이 있다. 그럴경우 microSD카드만 따로 택배로 보내줄수도 있다.

제품을 쓰다가 다 태워먹고, 고쳐달라고 보내는 경우도 있다. 아니면 제품에는 이상없는데 수리해달라고 보내는 경우도 비일 비재하다. 이런 경우를 매번 본사로 A/S를 요청하면 서로 힘들다. 여분의 메인 보드를 구비해놓고, 직접 교환하는 방법이 좋다.

통상 보증기간은 1년인데, 보증기간이라 하더라도 유저 과실에 의한 수리일 경우에는 수리비를 청구하는게 일반적이다. (다 태워먹었는데, 새걸로 바꿔줄수는 없으니까…) 이 경우 수리비는 마진없이 들어간 비용만 청구하는게, 고객과의 원활한 흐름에 도움이 된다.

수리라고 해봤자 별거없다. 메인보드를 교체하거나 핵심소자인 <라즈베리 컴퓨트 모듈>만 교체하는 것이 전부이다.

사후 관리 : 소프트웨어

한번 제품을 사간 고객이 코딩을 하다가 막혀서 (또는 컴파일시 에러, 디버깅 문제등) 전화하는 경우가 많다.

다 받아주다가는 하루종일 전화가 오는 사태를 맞이할 수 있으므로, 현명한 대처가 필요하다.

  • 일단 홈페이지에서 1:1 접수 (또는 이메일)로 접수를 받는 방법
  • 전화가 오더라도, 접수한뒤, 나중에 (하루중 일정한 시간을 정해놓고) 몰아서 처리하는 방법

이렇게 하는 이유는 일의 효율성 때문이다. 하루종일 전화를 받다보면 흐름이 끊기고 개발에 집중하기가 어렵다. 전화가 오는것을 막을 수는 없기 때문에, 몰아서 하루에 1시간 또는 2시간 정도만 이 업무를 하고, 나머지 시간에는 개발업무에 집중해야한다.

이렇게 해야하는 다른 이유중 하나는 고객의 전화를 즉각적으로 대응을하다 보면, 이게 실시간 대응이 되다보니, 그 고객은 계속 전화를 하게 된다. 문제가 생길때마다 전화가 오기때문에 전화량이 많아지고, 그만큼 시간도 많이 뺏기게 된다.

그 고객은 스스로 찾아보고 해결하기보다는 전화라는 간편한 방법에 의존하기 마련이다. 하지만 시간 텀을 두고 대응하게 되면, 급한 사람은 스스로 길을 찾아보기 마련이다. 사실상 C#이나 Linux는 구글링이나 깃허브등에서 충분히 해결방법을 찾을 수 있다.

가장 좋은 것은 고객이 스스로 길을 찾아서 문제를 해결하고, 양산까지 도달하는 것이다. 모든것을 다 돌봐주고 디버깅까지 해주면서 목적지에 도달한 고객은, 운영중 문제가 발생하면 또 전화를 해서 문제해결까지 요구하기 때문이다.

리모트 I/O

일반적으로 PC에는 I/O 가 없고, 통신포트 (시리얼, 이더넷, USB)만 있는 형태이다. 그래서 자동화 기기를 만드려면 별도의 I/O를 붙여야 하는데, <리모트 I/O>라는 이름으로 다양한 제품들이 출시되어 있다.

리모트 I/O들도 결국에는 PC와 물리기 위해서, 통신이 필요한데, 매우 다양하다. (이더넷방식, USB, RS485, RS232C등등)

그중 우리는 USB를 이용한 방식을 채택했다. 그 이유는 가장 저렴하면서 속도 또한 빠르기 때문이다.

결국 제어라는 것이 리모트 I/O를 통해서 뭔가를 켜고 끄는것이다. 그러면서 상황을 파악하기 위해 뭔가를 읽어 오는 것이다.

따라서 C#으로 이 리모트I/O를 어떻게 잘 제어할 건지가 관건이다.

GPIO

통신포트에 연결되지 않고 직접 제어가능한 I/O를 뜻한다. 처리속도가 빠르다는 장점이 있지만, 숫자가 제한적이다.

GPIO의 또 다른 문제로는 써지 데미지가 메인보드로 그대로 유입된다는 것이다.그럼 CPU나 메모리에 데미지가 가해진다

노이즈와 써지

산업용 기기를 만들때, 노이즈 나 써지 때문에 상당히 고생을 하게 된다.

  • 노이즈 : 잡음을 뜻한다. 음악을 들을때, 칙~하고 계속 들리는 경우.
  • 써지 : 갑자기 훅하고 들어오는 큰전압/큰전류. 음악을 들을때, 팍하고 튀는 소리를 생각하면 된다.

사무실에서 잘 되던 프로그램이 현장가면 문제를 일으키는 경우가 다반사이다. 왜냐하면 현장에서는 전기공급도 열악하고, 옆에서는 모터나, 인버터등이 시끄럽게 돌아가고 있다.

코딩을 할때, 이런 환경임을 가정하고 짜야한다. INPUT포트를 한번 읽어서 처리할 게 아니라, 주기적으로 확인해서 처리해야 한다. 한번 읽은게 재수없게 써지/노이즈 라면 잘못된 출력(결과)로 이어지기 때문이다.

일부러 노이즈가 심한 환경을 사무실에서 재현한뒤 코딩하는 것도 좋은 방법이다. (노이즈를 발생하도록 하는 전문장비는 고가이다. 싸게 하는 방법도 있다. 모터를 아예 설치하는 방법도 있고, 부실한 파워서플라이를 구해서 사용하는 방법도 있다.)

노이즈와 써지와 관련해서 가장 트러블도 많이 생기고, 전화도 많이 온다. 블로그에 있는 노이즈관련 포스팅을 참조하거나, 요약서를 고객한테 보내주는 것이 좋다. 요약서

orange/index.txt · 마지막으로 수정됨: 2024/05/17 21:50 저자 Comfile Technology