데이터, 이미지, API, 프로그램 등등.

licence를 가지는데 아직 까지는 불편하고 귀찮다.

사용된 코드를 공개해야하거나, 링크를 걸거나, 저작권 표시를 해야한다.

Window10이 서비스를 종료하고 11로 전환된다는 이야기를 들었다.

한 때는 Window에서 다른 OS로 넘어가야 할까 라는 이야기도 들었다.

 

여하간 프로그래밍 언어는 바로 기계어로 컴파일 되지않는다. Window에 요청할 수 있도록 메시지를 호출하도록 하고

그 후에 Window에 내부에서 여러과정을 거쳐 기계어로 변환된다. 

때문에 OS가 바뀌면 그위로 쌓아올린 IDE, SDK, 이미 작성된 API의 우리가 익히 알고 익숙한 기능들이 당장 제대로 동작하지 않는다.

통합개발환경 이라고 부르는 IDE는 SDK, ild, 라이브러리나 패키지를 포함하여 프로그래밍 프로젝트를 관리하는 종합개발툴이다.

 

사용해 본것

Visual Studio Coad,

Visual Studio 2019,

Pycharm,

 

뭐가 어떤지는 인터넷을 참고하고, 사용에 필요한 내용들은 메뉴얼을 참고한다.

SDK나 API 등, 사용하려고 하는 api, 목적과 기능, 개발자 작업 편의에 따라 IDE를 다르게 쓰기도 하며 환경설정을 바뀌기도 한다.

'SW 개발환경 > IDE' 카테고리의 다른 글

[IDE] 목차 구성해보기.  (0) 2022.02.13

1. 개요

2. 구분 및 분류 및 차이점.

3. SDK 선택에 고려해야할 사항들.

4. 메모리 관리.

5. 주요 알고리즘.

6. 공용 API 및 패키지들.

7. 오픈 라이브러리들.

8. 사용 예제들. 

 

 

요 몇 일간 PLC, Tach Panel 등 자동화 솔루션을 업으로하는 Cimon 업체에서 강사를 통해

Mes 교육을 받았다.

 

주로 제품을 판매하며 프로그래밍에 익숙하지 않은 기존 다수의 유저를 위해 만든 Studio를 만들었고,

점당 얼마라는 계산으로 라이센스 비용을 받는다.

 

사실상 Mes라는 말 뜻 처럼 생산관리에 대한 교육이라기 보단 Cimon Scada라는 GUI 작성 Studio의 메뉴얼을

내용으로 교육 받은샘이다.

 

메뉴얼은 공개되어 있지 않았고 프로젝트 생성, 장비연동, 작화, 변수 태그 생성 및 사용, 명령어 및 스크립사용, DB연동, 모바일에서 사용하는 방법 등으로 교육내용이 구성되어 있었다.

 

문론, 내 나름대로 메뉴얼을 찾아 다운 받았고, 사실상 프로그래밍을 배운 사람으로서 MFC나, WPF 등등. 어떠한 것을 사용하든 하면 못 할 건 없다라는게 생각이다.

위키피디아 국문 유한상태 기계 중에서.

유한 상태 기계, 또는 유한 오토마토를 위키피디아에서 위와 같이 설명한다.

고대와 중세기에서부터, 현대의 로봇이나 프로그래밍, 논리회로 설계에서도 꾸준히 사용하는 개념으로,

어려운 내용은 아니고. 동작 가능한 몇가지 액션을 각 상태와 상태를 전환이 가능하도록 트리거와 연결 시켜 나타내는 개념이다.

 

몇 달전, 강화 학습을 프로젝트로 진행하던 학생의 발표가 떠오르는데.

그 내용에도 스테이스 머신의 개념은 들어가 있었다.

 

예를 들어 각 에이전트의 가능한 동작을 정의하고 각 상태와 매핑한 후. 각 상태에서 다음 상태가 무엇이 될지를 네트워크가 학습하도록하고 그런 상태에따라 에이전트의 동작을 수행하면 그 결과에따른 보상하거나 벌을 내리는 방식이였다.

 

프로그램, 전자공학, 기계제어 무엇이든 제어에 포함되어 카테고리를 나누려는 고민 끝에 딱히 적을 곳이 마땅치 않아 포스트에 내용을 남긴다.

MFC(Microsoft Foundation Class) 라이브러리는 많은 Win32 및 COM API에 대한 개체 지향 래퍼를 제공합니다. 간단한 데스크톱 애플리케이션을 만드는 데도 사용되지만, 여러 컨트롤 간의 매우 복잡한 사용자 인터페이스를 개발해야 하는 경우에도 매우 유용합니다.

 

Visual  Studio C++ 에서 작성되며, 로봇제어 등, 산업에서 소프트웨어의 성능 등을 이유로 사용하는 C++ 언어를 사용하고 있다.

 

윈도우 -> .Net -> C++ 의 패키징을 거쳐 나온 API로 매크로를 통해 C++ 함수와 윈도우 창을 구성하는 객체의 메세지를 맵핑하여 윈도우 호출에 의해 C++의 기능을 사용할 수 있도록 만든 API이다.

윈도우에서 정해놓은 규칙을 그대로 사용하고 있고 Microsoft에서 MFC의 API DOC를 참고하여 각종 Class와 메시지, 매크로 등의 기능을 그때 그때 확인하고 사용한다.

 

예를 들자면, Cwin Class를 상속받은 My Dialog를 포함한 My Dialog에 포함된 각 컴포넌트와 매칭되는 Class를 함수마법사를 통해 상속받고 필요에 따라 맴버변수를 사용하거나, 추가기능을 구현하거나, 해당 Class에 대한 API Doc 를 참고하여 해당 Class에 메소드를 참고하여 작성한다.

작성된 메소드는 afxmsg.h에서 정의된 매크로를 통해 컴포넌트 메시지_ID와 동적 바인딩 매핑되며 Window, .Net 등에서 매크로를 호출하면 매크로가 메시지를 호출하여 해당 메소드가 실행되는 방식으로 동작한다.

 

MFC의  구조를 이해하면 CObject와 그 하위의 상속자간의 종속 관계를 나타낸 그림으로 아래와 같이 나타낸다.

이런 관계는 MFC의 Dialog 컴포넌트에 클래스를 추가하여 사용할 메소드를 사용하려 doc를 확인하는 과정에서도 확인할 수 있다.

 

MFC 구조

 

하위 클래스에서 메소드를 탐색하려 정의를 찾는 과정에서 항상 상위 클래스의 상속을 받는 형태로,

객체지향프로그래밍의 특성을 그대로 표현한다.

 

객체지향 프로그래밍이 입문자에게 암시하는 것은 프로세스를 개발할 때에 컴퓨터 처럼 생각할 필요가 없으며,

컴퓨터가 사람처럼 생각해야 한다라는 것이기도 하다.

https://www.youtube.com/watch?v=tvUU9kktirE 

 

위영상의 동작을 참고하여 아래 표에 맞도록 구성한다.

 

공급 스테이션의 동작은 매거진에서 실린더가 타겟을 밀면, 요동형 엑추에이터가 내려와 타겟을 흡착하고,

다음 스테이션으로 옮기는 역할이다.

 

 

 

동작 모드

위의 동작모드는 Case로 서로 겁치지 않은 5가지 상태 중 하나의 상태만을 가지도록 동작해야한다.

그리고 비상정지 정지 등 어떠한 자동 모드가 실행 중에도 모드 전환이 가능해야하고, 자동 모드의 반복 등

모드가 정지되지 않아도 반복해야한다.

 

 

컨트롤 페널

 

위의 전원 회로는 배선용 차단기, 누전 차단기, 회로 차단기, 필터, 콘센트, SMPS,

 

중간의 제어 장치의 배치는 미츠비씨 모듈로, base unit, Q6ip, Q03udecpu, Qx80, Qy80으로

각각 Pnp 16점을 사용한다.

 

아래는 단자대 

 

터치패널의 입출력

패널 결선, 배선 작업, distribution module 작업후 LD 작성을 하기 위해 다음과 같은 순서로 작업하였다.

 

작업 순서

1. 동작모드 우선순위 파악 후 동작모드가 Case로 작동하도록 우선순위에 따라 자기유지 및 인터록을 걸어준다.

2. 동작모드 중 수동모드를 구현한다.

3. 수동모드의 단계에 따라 감지되는 센서를 보고 자동 모드시 동작 조건 작성

4. 비상정지모드, 초기화 모드. 정지모드, 램프 동작 작성.

 

 

수동동작 모드의 타임 스탭 전환

수동 모드의 동작 타임스텝 전환은 Start  버튼을 눌을 때 마다이고, 단계는 초기 상태로 돌아오는 순간까지로 하여 범위를 정하였다.

그리고 자동동작의 타임 스탭을 리셋시킨다.

 

공압 회로

 

수동 동작 모드를 구현하기 위해서 위의 공압 회로도가 필요하다.

동작해야하는 엑추에이터의 종류와, 엑추에이터가 가질 수 있는 동작상태, 제어해야하는 코일이 어떠한 신호를 주었을 때 엑추에이터가 어떠한 동작 상태를 가질지를 생각하여 변위단계 선도를 작성한다.

 

이 경우 각 컴포넌트가 가질 수 있는 상태의 경우의 수는 2 가지로 3종이 컴포넌트이니 총 8가지 밖에 되지 않는다.

 

바로 LD를 작성해야 하므로 제어해야하는 솔레노이드 기준으로 단계 선도를 흉내내 보았다.

 

나름 변위단계 선도

5종의 솔레노이드로 상승은 24Vdc 입력, 하강은 0v 입력으로 정하고

타임 스탭을 Column에 두어 단계 별로 0~ 8로 표시하였다.

빨간색 동그라미는 각 솔레노이드에 입력되는 전압 값이 변하는 순간으로 하였다.

 

위의 타임스탭 전환과 동그라미가 만나는 지점의 전압을 적어 수동 동작을 완성한다.

 

 

I/O 단자, LED

 

수동 모드를 하나씩 동작하면서 위 사진 속 I/O 단자의 Led의 변화를 참고하여 자동 모드에서의 타임 스텝 전환 조건을 참고하여 자동모드를 완성한다.

 

자동 모드의 타임 스텝전환

수동 모드이 동작과 자동 모드의 동작은 서로 영향을 주지 않아야하고, 하나의 Case를 가지고 동작해야 하므로

자동모드 접점 입력시 수동모드의 타임 스탭을 리셋 시켜준다.

 

 

그리고 수동모드에서 작성한 동작에 자동모드의 타임 스탭을 걸어준다.

다음의 남은 모드에서도 같은 방법으로 작성한다.

+ Recent posts