일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 설비제어
- MODBUS
- melsec
- REGULATOR
- HI-Vacuum
- Helium
- rs-232
- Dry etcher
- 드라이에쳐
- Polling
- ION Gauge
- PMAC
- 자동제어
- DATAGRIDVIEW
- CDG
- rs-485
- MelsecNet-G
- 폴링
- Gas box
- c# build date
- 레귤레이터
- cluster
- VACUUM
- 가스
- gauge
- pc제어
- hivac
- 시리얼통신
- pressure
- RS232
- Today
- Total
목록진공/노하우 (29)
진공에 대해 알려주마.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EaqyK/btsLSdfczAm/Hdz7Mjt5TSiVFXkI9mdOf1/img.png)
Data grid view control 테스트 화면입니다.화면을 만들기 위하여 세팅값을 테스트하면서 찾은 내용을 기록한다. 참고하시라. 우선 작업을 위한 항목을 테스트 하고 추후 다른 기능도 테스트하여 추가토록 하겠다.윈도우에서는 구현 방법이 다를 뿐 같은 기능을 구현할 수 있다. 여기서도 C#을 사용하는 이유는 윈 품을 사용하기 위해서다. 상대적으로 많이 쉬우니까...그리고 한 가지 더 말하면 여기서 설정하는 옵션은 아래와 같이 프로그램 코드에서 조정이 가능하다. // Test tabControl this.Text = "ABC"; tabControl.Alignment = TabAlignment.Left; tabControl.Appearance = TabAppearance.Normal; ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsUYBF/btsJQGxASK1/thmreLloCbQLsyM34l25Fk/img.jpg)
산업용 설비 PC 제어 프로그램 관리하기이글은 사이트를 개설하고 처음으로 쓴 글이다. 티스토리의 에디터가 변경이 되면서 폼이 마음에 들지 않아 수정/편집하여 다시 게시한다. 반도체 제조 설비를 제작하는 회사에서 십여 년 근무하면서 국내에서 최초로 양산 라인에 설비를 제작 납품하는 귀한 경험을 하고 이후 디스플레이 화면 패널을 생산하는 제조 설비 분야에서 십수 년간 PC 제어 분야의 설계, 테스트, 셋업을 진행하면서 배운 노하우를 기록한다.제어 프로그램은 자동으로 움직이는 장치 즉 사람의 개입없이 자동화되어 움직이는 설비등을 제어하는 프로그램으로 장치의 Controller 역할로 24시간 구동되며 문제 발생 시 빠른 문제 해결을 최우선으로 둔다. 이런 종류의 프로그램을 개발 혹은 패치하는 경우 도움이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bq0Q1T/btsIYsZYl3F/0y8dYZ4XWxn9BpKI4ckk6K/img.png)
dataGridView 컨트롤을 사용하여 프로그램을 만드는 경우 excel등에서 한 번에 많은 데이터를 붙여넣기 할 때 필요한 코드를 구현하였다. 그리고 클립보드의 저장되는 구조를 함께 설명하였으니 참고하시기 바란다.여기에서는 텍스트 기반의 데이터를 복붙하고자 하였다. 일반 텍스트는 보이는 그대로 클립보드에 저장된다. 오피스의 엑셀의 경우는 아래에 보이는 것처럼 저장되며 이를 이용하여 dataGridView control에 붙여 넣는 방법도 구현하였다. 위와 같이 엑셀에서 복사하기를 하면 클립보드에 아래와 같은 포멧으로 저장된다. 행간은 "\r\n"으로 구분되고 셀간의 구분은 "\t"로 정의되어 있다. 이를 텍스트 파일 처리 하듯이 처리하면 된다. 데이터를 행간 구분자인 "\r\n"을 이용하여 sp..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qOu53/btszCGeB1b7/GrkkwFZcseqa9fkLQqbFN0/img.png)
AOI(자동광학검사기) 셋업을 진행하였다. 2세대 글라스, 8세대 글라스, 6세대 마스크, 300mm 웨이퍼 등 여러 종류의 검사기 셋업을 경험하였다. 내가 생각하는 AOI 설비는 모션 제어와 카메라 제어가 전부라 해도 과언이 아닌 것 같다. 다른 분야에서는 아니라고 할지도 모르겠지만... 카메라는 비전 엔지니어가 별도로 셋업과 셋팅 그리고 테스트를 진행하고 관리한다. 카메라에 능하고 이미지 처리에 특화되어 고급 인력으로 분류된다. 그리고 좋은 대접을 받는다. 그 외 모든 부분은 제어(Software) 엔지니어가 처리한다. 카메라당 한대의 비전 PC를 운영하며 이 모든 연결은 소켓 통신을 주로 사용하여 신호와 데이터를 주고받는다. 제어는 웨이퍼나 글라스 꼭 잡아 고속으로 이동하며 비전 카메라가 원하는 스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzha7h/btsyTzaUKjl/YimVpLw7vxnyETMJ9FsE10/img.png)
MODBUS-TCP를 사용한다. C++인 경우에는 "libModBus"를 사용해 보시고 여기서는 C#으로 ... EtherNet을 사용하여 통신하는 IO Module을 사용하게 되었다. 통신 프로토콜은 Modbus TCP를 사용한다. 메뉴얼을 보고 통신 패킷을 구성하여 값을 읽고 쓰기 검토하였다. 소켓 구성하고 패킷 작성하고 리턴 밸류 파싱하고 귀찮다. 그냥 다운로드하여 쓰자. 간단한 것으로 검토하여 C#용 SharpModBus를 사용하기로 하였다. 보기에는 간단해 보였다. NuGet 패키지 관리로 다운받아 설치하고 아래와 같이 선언하고 포트를 열어 바로 사용하면 가능하다. Digital(Coil)은 bool로 처리하며 Analog(Register)는 unsigned short으로 읽고 쓰면 된다. 거의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/deFDxB/btsD4mR6LUL/JqBk814xzdY96QETSx5vFK/img.png)
요즘은 윈도우를 기본으로 하여 설비 제어 프로그램을 구성하게 된다. 요즘 윈도우는 매우 안정적이라 OS가 Down 되는 경우가 거의 없지만 이전에는 일주일이 멀다 하고 죽어 나갔다. OS가 문제인 경우도 있었으며 제어 프로그램이 문제가 되는 경우도 있다. 이런 경우 가장 문제가 되는 것은 출력 제어이다. 출력이 나가는 상태에서 OS나 프로그램이 죽으면 출력은 그대로 유지된다. 특정시간 동안 진행되어야 할 공정이 시간을 초과하게 된다. 이때는 웨이퍼는 물론이고 설비의 하드웨어까지도 손상을 줄 수 있다. 제어 해야할 장치가 아래와 같다. 동작중 PC가 다운되면 즉시 적절한 조치가 취해져야 한다. 특히 식각(Etching)은 즉시 멈추도록 해야 한다. 프로그램을 사용 중에 OS 혹은 제어 프로그램이 원인이 되..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bpLUCo/btssNkdBB4r/LZhACqyu7aqXo2WBetL7ik/img.png)
누군가 말했지. 프로그램 개발보다 형변환 하다가 개발 시간을 다보낸다고... 그래서 여기 모아보았다. 프로그램 개발시 필요한 형변환을 중심으로 각종 필요한 항목을 업데이트 할 예정이다. 물론 모두 테스트 완료 되었거나 실제 사용하는 Code들 이다. C++ CString to Char* (출처 https://sggilsroom.tistory.com/126 ) char Buffer[255] = ""; CString szString; size_t CharactersConverted = 0; wcstombs_s(&CharactersConverted, Buffer, szString.GetLength()+1, szString, _TRUNCATE); 문자열을 구분자로 분리 함수와 호출 예제 (출처 ?) // 스트링..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GL9nk/btr8PZZhRlK/rxae1VFr1ZKZg0cKMNoCzK/img.png)
"A\0B\0C\0\0\0\0\0\0\0\0\0" 받아온 문자열이 이 모양 이다. 이걸 어떻게 처리하지... SharedMemeroy를 이용하여 통신을 시도하였다. string 문자열을 받아 Char*로 변환해야 한다. C#에서는 MMF에 write 한 그대로 read가 가능했다. 잘 사용하였다. 하지만 이번에 C++과 C#을 교차하여 값을 주고받으려 한다. MMF(Memoty Mapped File)을 이용하여 C#에서 문자열을 쓰고 C++에서 읽어오면 아래 그림과 같이 한 글자마다 사이에 \0가 붙어 이를 처리하면 한 글자만 인식하여 원하는 대로 처리가 되지 않는다. 찾아보니 VS2013 쯤 부터 적용된 멀티 바이트 현상이다. 다 아는 내용 이겠지만 아래 사이트를 참고 하시라. https://codin..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NLiWk/btrWir1Cs8P/ilmSzRKukZhQ4lXD13OmD0/img.png)
RS-485 통신 방식은 232 통신에 비해 장점이 많다. RS-232 통신은 1:1 통신 방식으로 단순하고 문제가 발생 시 문제점 파악이 쉽다. GND와 Tx, Rx로 구분된 3개의 신호로 주는 쪽과 받는 쪽의 문제를 명확히 알 수 있다. (Full duplex, Single ended type) 통신 거리는 10미터를 넘는 경우 노이즈에 취약하다. Tx와 Rx가 서로 반대로 연결되는 케이블 꼬임 문제 외에는 큰 이슈가 없다. 현장에서 통신이 안된다면 Tx와 Rx를 바꾸어 연결하면 보통은 문제가 해결된다. 아니면 Tx와 GND를 찍어보면 9 볼트가 측정된다. 각각의 장치에서 GND와 찍어봐서 9 볼트가 측정되면 거기가 Tx인 것이다. RS-485 2 wire는 두 개의 선으로 여러 대의 장치와 통신이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/L3oLT/btrMxXiiImr/K8VCiIxBskYAvQo0Cg56o0/img.png)
이전에 이런 글을 썼는데 뭔가 좀 아쉬워 다르게 다시 써본다. 시리얼 통신을 처음 접하는 사람도 쉽게 이해 할수 있도록 써본다. https://hivac.tistory.com/20 https://hivac.tistory.com/11 https://hivac.tistory.com/12 https://hivac.tistory.com/13 시리얼 통신, 패러럴 통신이 공존하던 시대가 있었다. 통신을 위해서는 저속의 시리얼 통신이 프린터와 같은 고속의 통신에는 패러럴 통신이 사용되었다. 그러나 이제는 USB, EtherNet이 주류가 되었다. 예전에 고속이라던 패러럴 통신은 이제 저쪽으로 사라져 갔다. 예전에 저속이라던 시리얼 통신은 장치간 문자를 전달하기 위하여 개발된 신호 체계이다. 문자마다 신호를 정의하여..