deemesh
unified CNC interface
제조사별 통신 규약의 차이를 하나의 주소 체계로 흡수하는 인터페이스
장비 제조사마다 통신 방식이 다릅니다. Fanuc은 FOCAS2, Siemens는 OPC-UA를 쓰고, 한 대를 붙이려면 그 제조사의 SDK를 익혀야 하며 다음 제조사에서는 처음부터 다시 시작해야 합니다.
deemesh(디메시)는 그 위에 인터페이스 하나를 얹습니다. 장비가 Fanuc이든 Siemens든 같은 명령 구조로 축 좌표·알람·프로그램·공구 보정을 읽고, 쓰기를 지원하는 주소는 같은 구조로 씁니다. 주소 하나는 지원하는 어느 장비에서나 같은 것을 뜻하고, 제조사 차이는 그 아래에서 흡수됩니다.
이 명령 구조를 데이터 모델이라 부릅니다. 데이터 모델은 주소(address)와 필터(filter)로 이루어집니다. 무엇을 읽고 쓸지는 주소가 정하고, 그중 어느 것인지는 필터가 정합니다.
내 애플리케이션
브라우저 · 사용자 프로그램
deemesh-sdk
내 애플리케이션에 내장
deemesh-hub
단독 실행 서버
데이터 모델
주소 + 필터
Fanuc
FOCAS2
Siemens
OPC-UA
값에서 주소 찾기
조작반에 보이는 값이 어느 주소인지 눌러서 확인하세요. 실제 HMI 화면을 옮겨 놓은 것으로, 값을 하나 고르면 그 값을 가져오는 주소와 필터가 그대로 나옵니다.
HMI 화면에서 주소 찾기채널 1의 X축(axis=1) 기계 좌표를 읽는 요청
READ /machine/channel/axis/machinePosition?machine=1&channel=1&axis=1주소
필터
주소는 모두 /machine으로 시작합니다. 데이터 모델의 뿌리가 장비 한 대라서, 노란색으로 표시한 machine 필터는 그 뿌리에서 어느 장비인지를 고르는 것입니다. 여러 장비를 함께 다루는 deemesh-hub에서 쓰고, deemesh-sdk에서는 필요 없습니다.
경로 중간의 channel·axis는 그대로 같은 이름의 필터가 됩니다. 주소만 보면 필요한 필터를 알 수 있습니다.
응답은 항상 같은 형식입니다
{"status":0,"value":123.456}명령 문법과 전체 주소 목록은 패키지 안 문서와 주소 카탈로그에 있습니다. 주소 카탈로그 열기
SDK와 HUB
같은 주소 체계를 두 가지 형태로 내놓습니다. 코드를 쓰지 않고 5분 만에 확인해 보려면 deemesh-hub(디메시 허브)입니다.
deemesh-sdk
응용에 내장
네이티브 라이브러리(.dll / .so)와 C 헤더입니다. 표준 C ABI라서 각 언어가 이미 가진 방식으로 그대로 부릅니다 — C#은 P/Invoke, Python은 표준 라이브러리인 ctypes, Rust는 extern "C". 설치할 래퍼가 없습니다.
이런 경우에 장비 통신을 자기 응용 안에 들여놓아야 할 때
deemesh-hub
단독 HTTP 서버 + 관리 화면
config.json에 장비 주소와 프로토콜을 적고 실행하면 됩니다. 브라우저로 관리 화면을 열면 그 장비가 내놓는 주소 전체가 트리로 보이고, 주소를 골라 그 자리에서 읽기(GET)와 쓰기(POST)를 실행해 볼 수 있습니다.
이런 경우에 코드를 쓰지 않고 HTTP로 다루고 싶을 때, 또는 먼저 확인해 보고 싶을 때

지원 범위
| 프로토콜 식별자 | 장비 |
|---|---|
| nc_focas2_fanuc | Fanuc CNC (FOCAS2, 이더넷 전용) |
| nc_opcua_siemens | Siemens Sinumerik CNC (OPC-UA) |
현재 지원하는 것은 이 두 가지이며, 프로토콜은 앞으로 추가됩니다.
장비 측 전제조건
내려받기 전에 확인하세요. 둘 다 deemesh가 제공할 수 있는 것이 아니고 deemesh의 설정도 아닙니다 — 장비와 그 제조사에 속한 문제입니다.
- Fanuc
- Fanuc의 FOCAS2 라이브러리가 필요합니다 — Windows는 fwlib32.dll / fwlib64.dll, Linux는 libfocas64.so. 이 파일들은 Fanuc 라이선스 대상이라 deemesh에 동봉되지 않습니다. Fanuc에서 별도로 입수해야 합니다.
- Siemens
- 장비에 OPC-UA 서버 옵션(SINUMERIK OPC-UA — 별도 구매 옵션)이 라이선스·활성화되어 있어야 합니다. 없는 장비는 연결 자체를 거부합니다. 지원 기능은 SINUMERIK 840D로 테스트되었으며, 828D에서는 일부 기능이 동작하지 않을 수 있습니다.
다운로드
deemesh는 프리웨어입니다. SDK와 HUB는 버전을 각각 따로 매기므로 필요한 것의 최신 릴리스를 받으세요.
GitHub 릴리스 열기