일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
- MODBUS
- DATAGRIDVIEW
- CDG
- gauge
- 시리얼통신
- rs-485
- Polling
- 드라이에쳐
- 설비제어
- c# build date
- VACUUM
- hivac
- pressure
- 폴링
- REGULATOR
- PMAC
- MelsecNet-G
- 레귤레이터
- Helium
- melsec
- 가스
- ION Gauge
- cluster
- Dry etcher
- rs-232
- 자동제어
- pc제어
- RS232
- Gas box
- HI-Vacuum
- Today
- Total
목록진공/노하우 (31)
진공에 대해 알려주마.

KeyDown과 KeyPress의 기능KeyDown에서는 e.KeyData와 e.KeyCode가 사용가능하며 여기서는 특수키와 지정된 문자명을 얻을수 있다.KeyPress는 e.KeyChar을 사용하여 입력한 문자 그대로 받아 처리 할 수 있다.키 이벤트는 다음 순으로 발생 합니다.KeyDownKeyPressKeyUp키값 테이블은 여기를 참고 하시라.https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=windowsdesktop-9.0 private void tbInDEC_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == (Keys.A |..

드라이버를 맹글어야 한다.IEEE-754 Floating Point를 말이다.새로운 장치가 IEEE-754를 사용한단다. 그럼 찾아봐야지. 역시 자료가 별로 없따. " 나라 말씀이 거시기와 달라 ... "세종 대왕 께서는 이미 알고 계셨던 것인가? 그 옛날 컴퓨터가 사용하는 데이터 구조가 서로 달라 이를 표준화하는 작업이 있었으니 이것중에 하나가 IEEE-754 규격이다.고정된 데이타 사이즈에 부호+지수+숫자를 조합하여 실수를 표현하였다. IEEE-754 Floating point converter 코드를 정리하였다. 이를 십진수로 다시 십진수를 이것으로 변환이 가능하다. 통신중 생각보다 많은 장치가 사용한다. 참고하시라.아래 코드를 테스트 하면서 참조한 사이트https://www.h-schmidt.ne..

Data grid view control 테스트 화면입니다.화면을 만들기 위하여 세팅값을 테스트하면서 찾은 내용을 기록한다. 참고하시라. 우선 작업을 위한 항목을 테스트 하고 추후 다른 기능도 테스트하여 추가토록 하겠다.윈도우에서는 구현 방법이 다를 뿐 같은 기능을 구현할 수 있다. 여기서도 C#을 사용하는 이유는 윈 품을 사용하기 위해서다. 상대적으로 많이 쉬우니까...그리고 한 가지 더 말하면 여기서 설정하는 옵션은 아래와 같이 프로그램 코드에서 조정이 가능하다. // Test tabControl this.Text = "ABC"; tabControl.Alignment = TabAlignment.Left; tabControl.Appearance = TabAppearance.Normal; ..

산업용 설비 PC 제어 프로그램 관리하기이글은 사이트를 개설하고 처음으로 쓴 글이다. 티스토리의 에디터가 변경이 되면서 폼이 마음에 들지 않아 수정/편집하여 다시 게시한다. 반도체 제조 설비를 제작하는 회사에서 십여 년 근무하면서 국내에서 최초로 양산 라인에 설비를 제작 납품하는 귀한 경험을 하고 이후 디스플레이 화면 패널을 생산하는 제조 설비 분야에서 십수 년간 PC 제어 분야의 설계, 테스트, 셋업을 진행하면서 배운 노하우를 기록한다.제어 프로그램은 자동으로 움직이는 장치 즉 사람의 개입없이 자동화되어 움직이는 설비등을 제어하는 프로그램으로 장치의 Controller 역할로 24시간 구동되며 문제 발생 시 빠른 문제 해결을 최우선으로 둔다. 이런 종류의 프로그램을 개발 혹은 패치하는 경우 도움이..

dataGridView 컨트롤을 사용하여 프로그램을 만드는 경우 excel등에서 한 번에 많은 데이터를 붙여넣기 할 때 필요한 코드를 구현하였다. 그리고 클립보드의 저장되는 구조를 함께 설명하였으니 참고하시기 바란다.여기에서는 텍스트 기반의 데이터를 복붙하고자 하였다. 일반 텍스트는 보이는 그대로 클립보드에 저장된다. 오피스의 엑셀의 경우는 아래에 보이는 것처럼 저장되며 이를 이용하여 dataGridView control에 붙여 넣는 방법도 구현하였다. 위와 같이 엑셀에서 복사하기를 하면 클립보드에 아래와 같은 포멧으로 저장된다. 행간은 "\r\n"으로 구분되고 셀간의 구분은 "\t"로 정의되어 있다. 이를 텍스트 파일 처리 하듯이 처리하면 된다. 데이터를 행간 구분자인 "\r\n"을 이용하여 sp..

AOI(자동광학검사기) 셋업을 진행하였다. 2세대 글라스, 8세대 글라스, 6세대 마스크, 300mm 웨이퍼 등 여러 종류의 검사기 셋업을 경험하였다. 내가 생각하는 AOI 설비는 모션 제어와 카메라 제어가 전부라 해도 과언이 아닌 것 같다. 다른 분야에서는 아니라고 할지도 모르겠지만... 카메라는 비전 엔지니어가 별도로 셋업과 셋팅 그리고 테스트를 진행하고 관리한다. 카메라에 능하고 이미지 처리에 특화되어 고급 인력으로 분류된다. 그리고 좋은 대접을 받는다. 그 외 모든 부분은 제어(Software) 엔지니어가 처리한다. 카메라당 한대의 비전 PC를 운영하며 이 모든 연결은 소켓 통신을 주로 사용하여 신호와 데이터를 주고받는다. 제어는 웨이퍼나 글라스 꼭 잡아 고속으로 이동하며 비전 카메라가 원하는 스..

MODBUS-TCP를 사용한다. C++인 경우에는 "libModBus"를 사용해 보시고 여기서는 C#으로 ... EtherNet을 사용하여 통신하는 IO Module을 사용하게 되었다. 통신 프로토콜은 Modbus TCP를 사용한다. 메뉴얼을 보고 통신 패킷을 구성하여 값을 읽고 쓰기 검토하였다. 소켓 구성하고 패킷 작성하고 리턴 밸류 파싱하고 귀찮다. 그냥 다운로드하여 쓰자. 간단한 것으로 검토하여 C#용 SharpModBus를 사용하기로 하였다. 보기에는 간단해 보였다. NuGet 패키지 관리로 다운받아 설치하고 아래와 같이 선언하고 포트를 열어 바로 사용하면 가능하다. Digital(Coil)은 bool로 처리하며 Analog(Register)는 unsigned short으로 읽고 쓰면 된다. 거의..

요즘은 윈도우를 기본으로 하여 설비 제어 프로그램을 구성하게 된다. 요즘 윈도우는 매우 안정적이라 OS가 Down 되는 경우가 거의 없지만 이전에는 일주일이 멀다 하고 죽어 나갔다. OS가 문제인 경우도 있었으며 제어 프로그램이 문제가 되는 경우도 있다. 이런 경우 가장 문제가 되는 것은 출력 제어이다. 출력이 나가는 상태에서 OS나 프로그램이 죽으면 출력은 그대로 유지된다. 특정시간 동안 진행되어야 할 공정이 시간을 초과하게 된다. 이때는 웨이퍼는 물론이고 설비의 하드웨어까지도 손상을 줄 수 있다. 제어 해야할 장치가 아래와 같다. 동작중 PC가 다운되면 즉시 적절한 조치가 취해져야 한다. 특히 식각(Etching)은 즉시 멈추도록 해야 한다. 프로그램을 사용 중에 OS 혹은 제어 프로그램이 원인이 되..

누군가 말했지. 프로그램 개발보다 형변환 하다가 개발 시간을 다보낸다고... 그래서 여기 모아보았다. 프로그램 개발시 필요한 형변환을 중심으로 각종 필요한 항목을 업데이트 할 예정이다. 물론 모두 테스트 완료 되었거나 실제 사용하는 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); 문자열을 구분자로 분리 함수와 호출 예제 (출처 ?) // 스트링..

"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..