# 생산 시스템에서 HART 센서 테스트를 위한 테이블 기반 DSL
HART 프로토콜을 지원하는 스마트 센서의 교정 및 테스트 시스템 개발에는 다양한 하드웨어를 지원해야 합니다: 신호 발생기, 환경 챔버, 멀티미터, HART 모뎀, 스위치 등. HART 프로토콜은 4-20 mA 전류 루프를 통해 점대점 모드로 작동하며, 교정, 설정, 데이터 교환을 가능하게 합니다. 테스트는 특성 선형화, 압력 및 온도 사이클, 전원 공급 변동, HART 세션을 포함합니다. 순수 SQL과 테이블 기반 스크립팅 언어를 사용한 클라이언트-서버 아키텍처로 2인 팀이 여러 스테이션에서 편집 가능한 테스트를 구현할 수 있었습니다.
시스템을 서브시스템으로 분해
시스템은 주요 구성 요소로 나뉩니다:
- LabVIEW를 통한 하드웨어 제어.
- 테이블 기반 DSL로 테스트 프로그래밍.
- 데이터베이스에서 데이터 처리 및 계산.
- 실시간 SCADA 스타일 스테이션 모니터링.
LabVIEW는 USB, GPIB, TCP/IP, RS232 인터페이스를 위한 즉시 사용 가능한 드라이버 때문에 선택되었습니다. 테스트 스테이션의 클라이언트는 데이터베이스 명령을 해석하는 인터프리터 역할을 하며, OOP 추상화를 건너뜁니다. 테스트 로직은 서버 측 스크립트로 오프로드되어 LabVIEW 다이어그램을 간단하게 유지합니다.
테이블 기반 스크립팅 언어: 구조와 명령
DSL은 선형 및 반복 실행을 가진 데이터베이스 테이블로 구현됩니다. 각 행은 두 개의 매개변수를 가진 작업으로, 편집이 간단합니다. 루프 내 간접 주소 지정이 지원됩니다.
주요 DSL 기능:
- 선형 작업 흐름.
- 자극(압력, 온도, 채널)에 대한 루프.
- 타이머 기반 루프.
- 정적 자극 모델 초기화.
- HART 통신, 측정, 데이터 로깅을 위한 100개 이상의 작업.
루프는 SQL 저장 프로시저로 처리됩니다: 별도 테이블에 매개변수(시작, 끝, 스텝, 현재 값, 활성 센서 풀)를 저장합니다. INIT_LOOP 및 CHECK_END_LOOP 같은 명령이 실행을 제어합니다. 자극 루프의 경우, 수정자 테이블이 사전/사후 증분 로직을 처리합니다.
예제 루프 로직:
- 데이터베이스에서 자극 모델 로드.
- 매개변수로 루프 초기화.
- 종료 조건까지 작업 실행.
- 루프 후 다음 명령 진행.
루프 구현 및 최적화
SQL 프로시저 실험에서 데이터베이스 내 루프가 안정적으로 작동함을 확인했습니다. 루프 매개변수(시작/끝 값, 스텝)는 테이블에 저장되어 동적 테스트 생성을 가능하게 합니다.
루프 유형:
- 일반 루프: 스테이션의 센서 풀에 대한 변수 반복.
- 압력 루프: 스텝과 자극 경계 포함.
- 온도 루프: 챔버 초기화.
- 타이머 루프: 시간 만료까지 작업 반복.
루프 추가로 테스트 크기가 절반으로 줄었습니다. 작업은 반복 의존적 또는 독립적(타이머용)으로 적응됩니다.
테이블 기반 테스트 편집기는 행 번호 매기기, 명령 참조, 주석, 루프 조정을 자동화합니다. "컴파일" 저장 프로시저가 기존 테스트를 새 것으로 교체합니다. 복사-붙여넣기 지원과 상호작용 힌트로 개발 속도가 빨라집니다. 4-20 mA/HART 센서의 생산 및 주기적 테스트를 위해 100개 이상의 프로그램이 생성되었습니다.
하드웨어와 데이터베이스 통합
LabVIEW 클라이언트는 데이터베이스에서 스크립트를 가져와 명령을 순차적으로 해석합니다. 장기 실행 작업(자극 루프)은 높은 속도를 요구하지 않습니다. 원시 데이터는 계산 및 보고서 생성을 위해 데이터베이스에 저장됩니다.
접근 방식 이점:
- 클라이언트 재컴파일 없이 테스트 편집.
- 중앙 집중식 스크립트 및 데이터 저장.
- 수십 개 스테이션으로 확장 가능.
- 최소 개발 팀.
주요 교훈
- 루프가 있는 테이블 기반 SQL DSL로 테스트 코드를 절반으로 줄이면서 완전한 유연성 유지.
- 데이터베이스 명령 인터프리터로서의 LabVIEW로 OOP 복잡성 회피.
- 작업당 두 매개변수로 100개 이상의 HART 테스트 명령.
- 저장 프로시저에서 자동 참조 및 번호 수정.
- SCADA-like 인터페이스를 통한 실시간 스테이션 모니터링.
— Editorial Team
아직 댓글이 없습니다.