614 lines
48 KiB
C#
614 lines
48 KiB
C#
/****************************************************************************
|
|
*****************************************************************************
|
|
**
|
|
** File Name
|
|
** ----------
|
|
**
|
|
** AXC.CS
|
|
**
|
|
** COPYRIGHT (c) AJINEXTEK Co., LTD
|
|
**
|
|
*****************************************************************************
|
|
*****************************************************************************
|
|
**
|
|
** Description
|
|
** -----------
|
|
** Ajinextek Counter Library Header File
|
|
**
|
|
**
|
|
*****************************************************************************
|
|
*****************************************************************************
|
|
**
|
|
** Source Change Indices
|
|
** ---------------------
|
|
**
|
|
** (None)
|
|
**
|
|
**
|
|
*****************************************************************************
|
|
*****************************************************************************
|
|
**
|
|
** Website
|
|
** ---------------------
|
|
**
|
|
** http://www.ajinextek.com
|
|
**
|
|
*****************************************************************************
|
|
*****************************************************************************
|
|
*/
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
public class CAXC
|
|
{
|
|
//========== 보드 및 모듈 정보
|
|
// CNT 모듈이 있는지 확인
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoIsCNTModule(ref uint upStatus);
|
|
|
|
// CNT 모듈 No 확인
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetModuleNo(int lBoardNo, int lModulePos, ref int lpModuleNo);
|
|
|
|
// CNT 입출력 모듈의 개수 확인
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetModuleCount(ref int lpModuleCount);
|
|
|
|
// 지정한 모듈의 카운터 입력 채널 개수 확인
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetChannelCount(int lModuleNo, ref int lpCount);
|
|
|
|
// 시스템에 장착된 카운터의 전 채널 수를 확인
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetTotalChannelCount(ref int lpChannelCount);
|
|
|
|
// 지정한 모듈 번호로 베이스 보드 번호, 모듈 위치, 모듈 ID 확인
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetModule(int lModuleNo, ref int lpBoardNo, ref int lpModulePos, ref uint upModuleID);
|
|
|
|
//지정한 모듈 번호로 해당 모듈의 Sub ID, 모듈 Name, 모듈 설명을 확인한다.
|
|
//======================================================/
|
|
// 지원 제품 : EtherCAT
|
|
// upModuleSubID : EtherCAT 모듈을 구분하기 위한 SubID
|
|
// szModuleName : 모듈의 모델명(50 Bytes)
|
|
// szModuleDescription : 모듈에 대한 설명(80 Bytes)
|
|
//======================================================//
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetModuleEx(int lModuleNo, ref uint upModuleSubID, System.Text.StringBuilder szModuleName, System.Text.StringBuilder szModuleDescription);
|
|
|
|
// 해당 모듈이 제어가 가능한 상태인지 반환한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetModuleStatus(int lModuleNo);
|
|
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetFirstChannelNoOfModuleNo(int lModuleNo, ref int lpChannelNo);
|
|
[DllImport("AXL.dll")] public static extern uint AxcInfoGetModuleNoOfChannelNo(int lChannelNo, ref int lpModuleNo);
|
|
|
|
// 카운터 모듈의 Encoder 입력 방식을 설정 합니다.
|
|
// dwMethod --> 0x00 : Sign and pulse, x1 multiplication
|
|
// dwMethod --> 0x01 : Phase-A and phase-B pulses, x1 multiplication
|
|
// dwMethod --> 0x02 : Phase-A and phase-B pulses, x2 multiplication
|
|
// dwMethod --> 0x03 : Phase-A and phase-B pulses, x4 multiplication
|
|
// dwMethod --> 0x08 : Sign and pulse, x2 multiplication
|
|
// dwMethod --> 0x09 : Increment and decrement pulses, x1 multiplication
|
|
// dwMethod --> 0x0A : Increment and decrement pulses, x2 multiplication
|
|
// SIO-CN2CH/HPC4의 경우
|
|
// dwMethod --> 0x00 : Up/Down 방식, A phase : 펄스, B phase : 방향
|
|
// dwMethod --> 0x01 : Phase-A and phase-B pulses, x1 multiplication
|
|
// dwMethod --> 0x02 : Phase-A and phase-B pulses, x2 multiplication
|
|
// dwMethod --> 0x03 : Phase-A and phase-B pulses, x4 multiplication
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalSetEncInputMethod(int lChannelNo, uint dwMethod);
|
|
|
|
// 카운터 모듈의 Encoder 입력 방식을 설정 합니다.
|
|
// *dwpUpMethod --> 0x00 : Sign and pulse, x1 multiplication
|
|
// *dwpUpMethod --> 0x01 : Phase-A and phase-B pulses, x1 multiplication
|
|
// *dwpUpMethod --> 0x02 : Phase-A and phase-B pulses, x2 multiplication
|
|
// *dwpUpMethod --> 0x03 : Phase-A and phase-B pulses, x4 multiplication
|
|
// *dwpUpMethod --> 0x08 : Sign and pulse, x2 multiplication
|
|
// *dwpUpMethod --> 0x09 : Increment and decrement pulses, x1 multiplication
|
|
// *dwpUpMethod --> 0x0A : Increment and decrement pulses, x2 multiplication
|
|
// SIO-CN2CH/HPC4의 경우
|
|
// dwMethod --> 0x00 : Up/Down 방식, A phase : 펄스, B phase : 방향
|
|
// dwMethod --> 0x01 : Phase-A and phase-B pulses, x1 multiplication
|
|
// dwMethod --> 0x02 : Phase-A and phase-B pulses, x2 multiplication
|
|
// dwMethod --> 0x03 : Phase-A and phase-B pulses, x4 multiplication
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalGetEncInputMethod(int lChannelNo, ref uint dwpUpMethod);
|
|
|
|
// 카운터 모듈의 트리거를 설정 합니다.
|
|
// dwMode --> 0x00 : Latch
|
|
// dwMode --> 0x01 : State
|
|
// dwMode --> 0x02 : Special State --> SIO-CN2CH 전용
|
|
// SIO-CN2CH의 경우
|
|
// dwMode --> 0x00 : 절대 위치 트리거 또는 주기 위치 트리거.
|
|
// 주의 : 제품마다 기능이 서로 다르기 때문에 구별하여 사용 필요.
|
|
// dwMode --> 0x01 : 시간 주기 트리거(AxcTriggerSetFreq로 설정)
|
|
// SIO-HPC4의 경우
|
|
// dwMode --> 0x00 : timer mode with counter & frequncy.
|
|
// dwMode --> 0x01 : timer mode.
|
|
// dwMode --> 0x02 : absolute mode[with fifo].
|
|
// dwMode --> 0x03 : periodic mode.[Default]
|
|
// CNT_RECAT_SC_10의 경우
|
|
// dwMode : 트리거를 출력하는 방식을 설정한다.
|
|
// [0] CCGC_CNT_RANGE_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치할 때 트리거를 출력하는 모드
|
|
// [2] CCGC_CNT_DISTANCE_PERIODIC_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치 등강격으로 트리거를 출력하는 모드
|
|
// [3] CCGC_CNT_PATTERN_TRIGGER : 위치와 무관하게 지정한 개수만큼 설정한 주파수로 트리거를 출력하는 모드
|
|
// [4] CCGC_CNT_POSITION_ON_OFF_TRIGGER : 지정한 트리거 위치에서 트리거 출력을 유지하는 모드 (CCGC_CNT_RANGE_TRIGGER 와 같은 방식으로
|
|
// 설정하며 홀수번째 TargetPosition 에서 출력이 시작되고 짝수번째 Position 에서 출력이 꺼진다.)
|
|
// [5] CCGC_CNT_AREA_ON_OFF_TRIGGER : 지정한 Low Position 부터 Upper Position 까지 트리거 출력을 유지하는 모드
|
|
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetFunction(int lChannelNo, uint dwMode);
|
|
|
|
// 카운터 모듈의 트리거 설정을 확인 합니다.
|
|
// *dwMode --> 0x00 : Latch
|
|
// *dwMode --> 0x01 : State
|
|
// *dwMode --> 0x02 : Special State
|
|
// SIO-CN2CH의 경우
|
|
// *dwMode --> 0x00 : 절대 위치 트리거 또는 주기 위치 트리거.
|
|
// 주의 : 제품마다 기능이 서로 다르기 때문에 구별하여 사용 필요.
|
|
// *dwMode --> 0x01 : 시간 주기 트리거(AxcTriggerSetFreq로 설정)
|
|
// SIO-HPC4의 경우
|
|
// *dwMode --> 0x00 : timer mode with counter & frequncy.
|
|
// *dwMode --> 0x01 : timer mode.
|
|
// *dwMode --> 0x02 : absolute mode[with fifo].
|
|
// *dwMode --> 0x03 : periodic mode.[Default]
|
|
// CNT_RECAT_SC_10의 경우
|
|
// dwpMode : 트리거를 출력하는 방식.
|
|
// [0] CCGC_CNT_RANGE_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치할 때 트리거를 출력하는 모드
|
|
// [2] CCGC_CNT_DISTANCE_PERIODIC_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치 등강격으로 트리거를 출력하는 모드
|
|
// [3] CCGC_CNT_PATTERN_TRIGGER : 위치와 무관하게 지정한 개수만큼 설정한 주파수로 트리거를 출력하는 모드
|
|
// [4] CCGC_CNT_POSITION_ON_OFF_TRIGGER : 지정한 Low Position 부터 Upper Position 까지 트리거 출력을 유지하는 모드
|
|
// [5] CCGC_CNT_AREA_ON_OFF_TRIGGER : 지정한 Low Position 부터 Upper Position 까지 트리거 출력을 유지하는 모드
|
|
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetFunction(int lChannelNo, ref uint dwpMode);
|
|
|
|
// dwUsage --> 0x00 : Trigger Not use
|
|
// dwUsage --> 0x01 : Trigger use
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetNotchEnable(int lChannelNo, uint dwUsage);
|
|
|
|
// *dwUsage --> 0x00 : Trigger Not use
|
|
// *dwUsage --> 0x01 : Trigger use
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetNotchEnable(int lChannelNo, ref uint dwpUsage);
|
|
|
|
|
|
// 카운터 모듈의 Captuer 극성을 설정 합니다.(External latch input polarity)
|
|
// dwCapturePol --> 0x00 : Signal OFF -> ON
|
|
// dwCapturePol --> 0x01 : Signal ON -> OFF
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalSetCaptureFunction(int lChannelNo, uint dwCapturePol);
|
|
|
|
// 카운터 모듈의 Capture 극성 설정을 확인 합니다.(External latch input polarity)
|
|
// *dwCapturePol --> 0x00 : Signal OFF -> ON
|
|
// *dwCapturePol --> 0x01 : Signal ON -> OFF
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalGetCaptureFunction(int lChannelNo, ref uint dwpCapturePol);
|
|
|
|
// 카운터 모듈의 Capture 위치를 확인 합니다.(External latch)
|
|
// *dbpCapturePos --> Capture position 위치
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalGetCapturePos(int lChannelNo, ref double dbpCapturePos);
|
|
|
|
// 카운터 모듈의 카운터 값을 확인 합니다.
|
|
// *dbpActPos --> 카운터 값
|
|
[DllImport("AXL.dll")] public static extern uint AxcStatusGetActPos(int lChannelNo, ref double dbpActPos);
|
|
|
|
// 카운터 모듈의 카운터 값을 dbActPos 값으로 설정 합니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcStatusSetActPos(int lChannelNo, double dbActPos);
|
|
|
|
// 카운터 모듈의 트리거 위치를 설정합니다.
|
|
// 카운터 모듈의 트리거 위치는 2개까지만 설정 할 수 있습니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetNotchPos(int lChannelNo, double dbLowerPos, double dbUpperPos);
|
|
|
|
// 카운터 모듈의 설정한 트리거 위치를 확인 합니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetNotchPos(int lChannelNo, ref double dbpLowerPos, ref double dbpUpperPos);
|
|
|
|
// 카운터 모듈의 트리거 출력을 강제로 합니다.
|
|
// dwOutVal --> 0x00 : 트리거 출력 '0'
|
|
// dwOutVal --> 0x01 : 트리거 출력 '1'
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetOutput(int lChannelNo, uint dwOutVal);
|
|
|
|
// 카운터 모듈의 상태를 확인합니다.
|
|
// Bit '0' : Carry (카운터 현재치가 덧셈 펄스에 의해 카운터 상한치를 넘어 0로 바뀌었을 때 1스캔만 ON으로 합니다.)
|
|
// Bit '1' : Borrow (카운터 현재치가 뺄셈 펄스에 의해 0을 넘어 카운터 상한치로 바뀌었을 때 1스캔만 ON으로 합니다.)
|
|
// Bit '2' : Trigger output status
|
|
// Bit '3' : Latch input status
|
|
[DllImport("AXL.dll")] public static extern uint AxcStatusGetChannel(int lChannelNo, ref uint dwpChannelStatus);
|
|
|
|
|
|
// SIO-CN2CH 전용 함수군
|
|
//
|
|
// 카운터 모듈의 위치 단위를 설정한다.
|
|
// 실제 위치 이동량에 대한 펄스 갯수를 설정하는데,
|
|
// ex) 1mm 이동에 1000가 필요하다면dMoveUnitPerPulse = 0.001로 입력하고,
|
|
// 이후 모든 함수의 위치와 관련된 값을 mm 단위로 설정하면 된다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcMotSetMoveUnitPerPulse(int lChannelNo, double dMoveUnitPerPulse);
|
|
|
|
// 카운터 모듈의 위치 단위를 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcMotGetMoveUnitPerPulse(int lChannelNo, ref double dpMoveUnitPerPuls);
|
|
|
|
// 카운터 모듈의 엔코더 입력 카운터를 반전 기능을 설정한다.
|
|
// dwReverse --> 0x00 : 반전하지 않음.
|
|
// dwReverse --> 0x01 : 반전.
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalSetEncReverse(int lChannelNo, uint dwReverse);
|
|
|
|
// 카운터 모듈의 엔코더 입력 카운터를 반전 기능을 설정을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalGetEncReverse(int lChannelNo, ref uint dwpReverse);
|
|
|
|
// 카운터 모듈의 Encoder 입력 신호를 선택한다.
|
|
// dwSource --> 0x00 : 2(A/B)-Phase 신호.
|
|
// dwSource --> 0x01 : Z-Phase 신호.(방향성 없음.)
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalSetEncSource(int lChannelNo, uint dwSource);
|
|
|
|
// 카운터 모듈의 Encoder 입력 신호 선택 설정을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalGetEncSource(int lChannelNo, ref uint dwpSource);
|
|
|
|
// 카운터 모듈의 트리거 출력 범위 중 하한 값을 설정한다.
|
|
// 위치 주기 트리거 제품의 경우 위치 주기로 트리거 출력을 발생시킬 범위 중 하한 값을 설정한다.
|
|
// 절대 위치 트리거 제품의 경우 Ram 시작 번지의 트리거 정보의 적용 기준 위치를 설정한다.
|
|
// 단위 : AxcMotSetMoveUnitPerPulse로 설정한 단위.
|
|
// Note : 하한값은 상한값보다 작은값을 설정하여야 합니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetBlockLowerPos(int lChannelNo, double dLowerPosition);
|
|
|
|
// 카운터 모듈의 트리거 출력 범위 중 하한 값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetBlockLowerPos(int lChannelNo, ref double dpLowerPosition);
|
|
|
|
// 카운터 모듈의 트리거 출력 범위 중 상한 값을 설정한다.
|
|
// 위치 주기 트리거 제품의 경우 위치 주기로 트리거 출력을 발생시킬 범위 중 상한 값을 설정한다.
|
|
// 절대 위치 트리거 제품의 경우 트리거 정보가 설정된 Ram 의 마지막 번지의 트리거 정보가 적용되는 위치로 사용된다.
|
|
// 단위 : AxcMotSetMoveUnitPerPulse로 설정한 단위.
|
|
// Note : 상한값은 하한값보다 큰값을 설정하여야 합니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetBlockUpperPos(int lChannelNo, double dUpperPosition);
|
|
// 카운터 모듈의 트리거 출력 범위 중 하한 값을 설정한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetBlockUpperPos(int lChannelNo, ref double dpUpperrPosition);
|
|
|
|
// 카운터 모듈의 위치 주기 모드 트리거에 사용되는 위치 주기를 설정한다.
|
|
// 단위 : AxcMotSetMoveUnitPerPulse로 설정한 단위.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetPosPeriod(int lChannelNo, double dPeriod);
|
|
|
|
// 카운터 모듈의 위치 주기 모드 트리거에 사용되는 위치 주기를 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetPosPeriod(int lChannelNo, ref double dpPeriod);
|
|
|
|
// 카운터 모듈의 위치 주기 모드 트리거 사용시 위치 증감에 대한 유효기능을 설정한다.
|
|
// dwDirection --> 0x00 : 카운터의 증/감에 대하여 트리거 주기 마다 출력.
|
|
// dwDirection --> 0x01 : 카운터가 증가 할때만 트리거 주기 마다 출력.
|
|
// dwDirection --> 0x01 : 카운터가 감소 할때만 트리거 주기 마다 출력.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetDirectionCheck(int lChannelNo, uint dwDirection);
|
|
// 카운터 모듈의 위치 주기 모드 트리거 사용시 위치 증감에 대한 유효기능 설정을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetDirectionCheck(int lChannelNo, ref uint dwpDirection);
|
|
|
|
// 카운터 모듈의 위치 주기 모드 트리거 기능의 범위, 위치 주기를 한번에 설정한다.
|
|
// 위치 설정 단위 : AxcMotSetMoveUnitPerPulse로 설정한 단위.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetBlock(int lChannelNo, double dLower, double dUpper, double dABSod);
|
|
|
|
// 카운터 모듈의 위치 주기 모드 트리거 기능의 범위, 위치 주기를 설정을 한번에 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetBlock(int lChannelNo, ref double dpLower, ref double dpUpper, ref double dpABSod);
|
|
|
|
// 카운터 모듈의 트리거 출력 펄스 폭을 설정한다.
|
|
// 단위 : uSec
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetTime(int lChannelNo, double dTrigTime);
|
|
|
|
// 카운터 모듈의 트리거 출력 펄스 폭 설정을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetTime(int lChannelNo, ref double dpTrigTime);
|
|
|
|
// 카운터 모듈의 트리거 출력 펄스의 출력 레벨을 설정한다.
|
|
// dwLevel --> 0x00 : 트리거 출력시 'Low' 레벨 출력.
|
|
// dwLevel --> 0x01 : 트리거 출력시 'High' 레벨 출력.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetLevel(int lChannelNo, uint dwLevel);
|
|
// 카운터 모듈의 트리거 출력 펄스의 출력 레벨 설정을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetLevel(int lChannelNo, ref uint dwpLevel);
|
|
|
|
// 카운터 모듈의 주파수 트리거 출력 기능에 필요한 주파수를 설정한다.
|
|
// 단위 : Hz, 범위 : 1Hz ~ 500 kHz
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetFreq(int lChannelNo, uint dwFreqency);
|
|
// 카운터 모듈의 주파수 트리거 출력 기능에 필요한 주파수를 설정을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetFreq(int lChannelNo, ref uint dwpFreqency);
|
|
|
|
|
|
////Used for CNT_RECAT_SC_10 //////////////////////////////////////
|
|
// 1d Time trigger mode with count 모드에서 트리거 출력 개수를 설정한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetTriggerOutCount(int lChannelNo, ref uint dwpTriggerOutCount);
|
|
// 1d Time trigger mode with count 모드에서 트리거 출력 개수 설정값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetTriggerOutCount(int lChannelNo, uint dwTriggerOutCount);
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// 카운터 모듈의 지정 채널에 대한 범용 출력 값을 설정한다.
|
|
// dwOutput 범위 : 0x00 ~ 0x0F, 각 채널당 4개의 범용 출력
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalWriteOutput(int lChannelNo, uint dwOutput);
|
|
|
|
// 카운터 모듈의 지정 채널에 대한 범용 출력 값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalReadOutput(int lChannelNo, ref uint dwpOutput);
|
|
|
|
// 카운터 모듈의 지정 채널에 대한 범용 출력 값을 비트 별로 설정한다.
|
|
// lBitNo 범위 : 0 ~ 3, 각 채널당 4개의 범용 출력
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalWriteOutputBit(int lChannelNo, int lBitNo, uint uOnOff);
|
|
// 카운터 모듈의 지정 채널에 대한 범용 출력 값을 비트 별로 확인 한다.
|
|
// lBitNo 범위 : 0 ~ 3
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalReadOutputBit(int lChannelNo, int lBitNo, ref uint upOnOff);
|
|
|
|
// 카운터 모듈의 지정 채널에 대한 범용 입력 값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalReadInput(int lChannelNo, ref uint dwpInput);
|
|
|
|
// 카운터 모듈의 지정 채널에 대한 범용 입력 값을 비트 별로 확인 한다.
|
|
// lBitNo 범위 : 0 ~ 3
|
|
[DllImport("AXL.dll")] public static extern uint AxcSignalReadInputBit(int lChannelNo, int lBitNo, ref uint upOnOff);
|
|
|
|
// 카운터 모듈의 트리거 출력을 활성화 한다.
|
|
// 현재 설정된 기능에 따라 트리거 출력이 최종적으로 출력할 것인지 설정한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetEnable(int lChannelNo, uint dwUsage);
|
|
|
|
// 카운터 모듈의 트리거 출력 활설화 설정 내용을 확인하다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetEnable(int lChannelNo, ref uint dwpUsage);
|
|
|
|
// 카운터 모듈의 절대위치 트리거 기능을 위해 설정된 RAM 내용을 확인한다.
|
|
// dwAddr 범위 : 0x0000 ~ 0x1FFFF;
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerReadAbsRamData(int lChannelNo, uint dwAddr, ref uint dwpData);
|
|
|
|
// 카운터 모듈의 절대위치 트리거 기능을 위해 필요한 RAM 내용을 설정한다.
|
|
// dwAddr 범위 : 0x0000 ~ 0x1FFFF;
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerWriteAbsRamData(int lChannelNo, uint dwAddr, uint dwData);
|
|
|
|
// 카운터 모듈의 절대위치 트리거 기능을 위해 필요한 RAM 내용을 한번에 설정한다.
|
|
// dwTrigNum 범위 : ~ 0x20000 *RTEX CNT2 의 경우 0x200*
|
|
// dwDirection --> 0x0 : 하한 트리거 위치에 대한 트리거 정보 부터 입력. 위치가 증가하는 방향으로 트리거 출력시 사용.
|
|
// dwDirection --> 0x1 : 상한 카운터에 대한 트리거 정보 부터 입력. 위치가 감소하는 방향으로 트리거 출력시 사용.
|
|
// CNT_RECAT_SC_10 의 경우 (dwDirection -> Reserved).
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetAbs(int lChannelNo, uint dwTrigNum, uint[] dwTrigPos, uint dwDirection);
|
|
|
|
// 카운터 모듈의 절대위치 트리거 기능을 위해 필요한 RAM 내용을 한번에 설정한다.
|
|
// dwTrigNum 범위 : ~ 0x20000 *RTEX CNT2 의 경우 0x200*
|
|
// dwDirection --> 0x0 : 하한 트리거 위치에 대한 트리거 정보 부터 입력. 위치가 증가하는 방향으로 트리거 출력시 사용.
|
|
// dwDirection --> 0x1 : 상한 카운터에 대한 트리거 정보 부터 입력. 위치가 감소하는 방향으로 트리거 출력시 사용.
|
|
// dTrigPos : 카운터 모듈의 트리거 Pos를 double 형으로 사용
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetAbsDouble(int lChannelNo, uint dwTrigNum, double[] dTrigPos, uint dwDirection);
|
|
|
|
// 카운터 모듈의 각 테이블에 할당 할 2개의 엔코더 입력 신호를 설정한다.
|
|
// dwEncoderInput1 [0-3]: 카운터 모듈에 입력되는 4개의 엔코더 신호중 하나
|
|
// dwEncoderInput2 [0-3]: 카운터 모듈에 입력되는 4개의 엔코더 신호중 하나
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetEncoderInput(int lModuleNo, uint dwEncoderInput1, uint dwEncoderInput2);
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetEncoderInput(int lModuleNo, ref uint dwpEncoderInput1, ref uint dwpEncoderInput2);
|
|
|
|
////////////////// HPC4_30_Version
|
|
// 카운터 모듈의 각 테이블에 할당된 트리거 출력의 레벨을 설정한다.
|
|
// uLevel : 트리거 출력 신호의 Active Level
|
|
// [0] : 트리거 출력시 'Low' 레벨 출력.
|
|
// [1] : 트리거 출력시 'High' 레벨 출력.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerLevel(int lModuleNo, int lTablePos, uint uLevel);
|
|
// 카운터 모듈의 각 테이블에 지정된 트리거 출력의 레벨 설정값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetTriggerLevel(int lModuleNo, int lTablePos, ref uint upLevel);
|
|
|
|
// 카운터 모듈의 각 테이블에 할당된 트리거 출력의 펄스 폭을 설정한다.
|
|
// dTriggerTimeUSec : [Default 500ms], us단위로 지정
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerTime(int lModuleNo, int lTablePos, double dTriggerTimeUSec);
|
|
// 카운터 모듈의 각 테이블에 지정된 트리거 출력의 펄스 폭 설정값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetTriggerTime(int lModuleNo, int lTablePos, ref double dpTriggerTimeUSec);
|
|
|
|
// 카운터 모듈의 각 테이블에 할당 할 2개의 엔코더 입력 신호를 설정한다.
|
|
// uEncoderInput1 [0-3]: 카운터 모듈에 입력되는 4개의 엔코더 신호중 하나
|
|
// uEncoderInput2 [0-3]: 카운터 모듈에 입력되는 4개의 엔코더 신호중 하나
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetEncoderInput(int lModuleNo, int lTablePos, uint uEncoderInput1, uint uEncoderInput2);
|
|
// 카운터 모듈의 각 테이블에 할당 된 2개의 엔코더 입력 신호를 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetEncoderInput(int lModuleNo, int lTablePos, ref uint upEncoderInput1, ref uint upEncoderInput2);
|
|
|
|
|
|
// 카운터 모듈의 각 테이블에 할당 할 트리거 출력 포트를 설정한다.
|
|
// uTriggerOutport [0x0-0xF]: Bit0: 트리거 출력 0, Bit1: 트리거 출력 1, Bit2: 트리거 출력 2, Bit3: 트리거 출력 3
|
|
// Ex) 0x3(3) : 출력 0, 1에 트리거 신호를 출력하는 경우
|
|
// 0xF(255) : 출력 0, 1, 2, 3에 트리거 신호를 출력하는 경우
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerOutport(int lModuleNo, int lTablePos, uint uTriggerOutport);
|
|
// 카운터 모듈의 각 테이블에 할당 된 트리거 출력 포트를 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetTriggerOutport(int lModuleNo, int lTablePos, ref uint upTriggerOutport);
|
|
|
|
// 카운터 모듈의 각 테이블에 설정된 트리거 위치에 대한 허용 오차 범위를 설정한다.
|
|
// dErrorRange : 지정 축의 Unit단위로 트리거 위치에 대한 허용 오차 범위를 설정
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetErrorRange(int lModuleNo, int lTablePos, double dErrorRange);
|
|
// 카운터 모듈의 각 테이블에 설정된 트리거 위치에 대한 허용 오차 범위를 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetErrorRange(int lModuleNo, int lTablePos, ref double dpErrorRange);
|
|
|
|
// 카운터 모듈의 각 테이블에 설정된 정보로(트리거 출력 Port, 트리거 펄스 폭) 트리거를 1개 발생시킨다.
|
|
// ※ 주의 : 1) 트리거가 Disable되어 있으면 이 함수는 자동으로 Enable시켜 트리거를 발생시킴
|
|
// 2) Trigger Mode가 HPC4_PATTERN_TRIGGER 모드일 경우 이 함수는 자동으로 트리거 모드를 HPC4_RANGE_TRIGGER로 변경 함(하나의 트리거만 발생시키기 위해)
|
|
// 3) Trigger Mode가 CCGC_CNT_PATTERN_TRIGGER 모드일 경우 이 함수는 자동으로 트리거 모드를 CCGC_CNT_RANGE_TRIGGER 변경 함(하나의 트리거만 발생시키기 위해)
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableTriggerOneShot(int lModuleNo, int lTablePos);
|
|
|
|
// 카운터 모듈의 각 테이블에 설정된 정보로(트리거 출력 Port, 트리거 펄스 폭), 지정한 개수만큼 설정한 주파수로 트리거를 발생시킨다.
|
|
// lTriggerCount : 지정한 주파수를 유지하며 발생시킬 트리거 출력 개수
|
|
// uTriggerFrequency : 트리거를 발생시킬 주파수
|
|
// ※ 주의 : 1) 트리거가 Disable되어 있으면 이 함수는 자동으로 Enable시켜 패턴을 가진 트리거를 발생시킴
|
|
// 2) Trigger Mode가 HPC4_PATTERN_TRIGGER 모드가 아닐 경우 이 함수는 자동으로 트리거 모드를 HPC4_PATTERN_TRIGGER로 변경 함
|
|
// 3) Trigger Mode가 CCGC_CNT_PATTERN_TRIGGER 모드가 아닐 경우 이 함수는 자동으로 트리거 모드를 CCGC_CNT_PATTERN_TRIGGER 변경
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableTriggerPatternShot(int lModuleNo, int lTablePos, int lTriggerCount, uint uTriggerFrequency);
|
|
// 카운터 모듈의 각 테이블에 설정된 패턴 트리거 설정 정보를(주파수, 카운터) 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetPatternShotData(int lModuleNo, int lTablePos, ref int lpTriggerCount, ref uint upTriggerFrequency);
|
|
|
|
// 카운터 모듈의 각 테이블에 트리거를 출력하는 방식을 설정한다.
|
|
// uTrigMode : 트리거를 출력하는 방식을 설정한다.
|
|
// [0] HPC4_RANGE_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치할 때 트리거를 출력하는 모드
|
|
// [1] HPC4_VECTOR_TRIGGER : 지한 트리거 위치에 설정한 허용 범위와 벡터 방향이 일치할 때 트리거를 출력하는 모드
|
|
// [3] HPC4_PATTERN_TRIGGER : 위치와 무관하게 지정한 개수만큼 설정한 주파수로 트리거를 출력하는 모드
|
|
// CNT_RECAT_SC_10 의경우
|
|
// 카운터 모듈의 각 테이블에 트리거를 출력하는 방식을 설정한다.
|
|
// uTrigMode : 트리거를 출력하는 방식을 설정한다.
|
|
// [0] CCGC_CNT_RANGE_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치할 때 트리거를 출력하는 모드
|
|
// [1] CCGC_CNT_VECTOR_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위와 벡터 방향이 일치할 때 트리거를 출력하는 모드
|
|
// [2] CCGC_CNT_DISTANCE_PERIODIC_TRIGGER : 지정한 트리거 위치에 설정한 허용 범위안에 위치 등강격으로 트리거를 출력하는 모드
|
|
// [3] CCGC_CNT_PATTERN_TRIGGER : 위치와 무관하게 지정한 개수만큼 설정한 주파수로 트리거를 출력하는 모드
|
|
// [4] CCGC_CNT_POSITION_ON_OFF_TRIGGER : 지정한 트리거 위치에서 트리거 출력을 유지하는 모드 (CCGC_CNT_RANGE_TRIGGER 와 같은 방식으로
|
|
// 설정하며 홀수번째 TargetPosition 에서 출력이 시작되고 짝수번째 Position 에서 출력이 꺼진다.)
|
|
// [5] CCGC_CNT_AREA_ON_OFF_TRIGGER : 지정한 Low Position 부터 Upper Position 까지 트리거 출력을 유지하는 모드
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerMode(int lModuleNo, int lTablePos, uint uTrigMode);
|
|
// 카운터 모듈의 각 테이블에 설정된 트리거를 출력하는 방식을 확인한다
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetTriggerMode(int lModuleNo, int lTablePos, ref uint upTrigMode);
|
|
// 카운터 모듈의 각 테이블 별로 출력된 누적 트리거 갯수를 초기화 한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerCountClear(int lModuleNo, int lTablePos);
|
|
|
|
// 카운터 모듈의 각 테이블에 2-D 절대위치에서 트리거 신호를 출력하기 위해 필요한 정보를 설정한다.
|
|
// lTriggerDataCount : 설정 할 트리거 정보의 전체 개수
|
|
// [-1, 0] : 등록된 트리거 정보 데이타 초기화
|
|
// dpTriggerData : 2-D 절대위치 트리거 정보(해당 배열의 개수는 lTriggerDataCount * 2가 되어야됨)
|
|
// *[0, 1] : X[0], Y[0]
|
|
// lpTriggerCount : 입력한 2-D 절대 트리거 위치에서 트리거 조건 만족 시 발생시킬 트리거 갯수를 배열로 설정(해당 배열의 개수는 lTriggerDataCount)
|
|
// dpTriggerInterval : TriggerCount 만큼 연속해서 트리거를 발생시킬때 유지 할 간격을 주파수 단위로 설정(해당 배열의 개수는 lTriggerDataCount)
|
|
// ※주의 :
|
|
// 1) 각 전달인자의 배열 개수를 주의하여 사용해야됩니다. 내부에서 사용되는 인자 보다 적은 배열을 지정하면 메모리 참조 오류가 발생 될 수 있음.
|
|
// 2) Trigger Mode는 HPC4_RANGE_TRIGGER로 자동 변경됨
|
|
// 3) 함수 내부에서 Trigger를 Disable한 후 모든 설정을 진행하며 완료 후 다시 Enable 시킴
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerData(int lModuleNo, int lTablePos, int lTriggerDataCount, double[] dpTriggerData, int[] lpTriggerCount, double[] dpTriggerInterval);
|
|
// 카운터 모듈의 각 테이블에 트리거 신호를 출력하기 위해 설정한 트리거 설정 정보를 확인한다.
|
|
// ※ 주의 : 각 테이블에 등록된 최대 트리거 데이타 개수를 모를 때는 아래와 같이 트리거 데이타 개수를 미리 파악한 후 사용하십시요.
|
|
// Ex) 1) AxcTableGetTriggerData(lModuleNo, lTablePos, &lTriggerDataCount, NULL, NULL, NULL);
|
|
// 2) dpTriggerData = new double[lTriggerDataCount * 2];
|
|
// 3) lpTriggerCount = new long[lTriggerDataCount];
|
|
// 4) dpTriggerInterval = new double[lTriggerDataCount];
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetTriggerData(int lModuleNo, int lTablePos, ref int lpTriggerDataCount, double[] dpTriggerData, int[] lpTriggerCount, double[] dpTriggerInterval);
|
|
|
|
// SIO-HPC4 의 경우 ///////////////////////////
|
|
// 카운터 모듈의 각 테이블에 2-D 절대위치에서 트리거 신호를 출력하기 위해 필요한 정보를 AxcTableSetTriggerData함수와 다른 방식으로 설정한다.
|
|
// lTriggerDataCount : 설정 할 트리거 정보의 전체 개수
|
|
// uOption : dpTriggerData 배열의 데이타 입력 방식을 지정
|
|
// [0] : dpTriggerData 배열에 X Pos[0], Y Pos[0], X Pos[1], Y Pos[1] 순서로 입력
|
|
// [1] : dpTriggerData 배열에 X Pos[0], Y Pos[0], Count, Inteval, X Pos[1], Y Pos[1], Count, Inteval 순서로 입력
|
|
// ※주의 :
|
|
// 1) dpTriggerData의 배열 개수를 주의하여 사용해야됩니다. 내부에서 사용되는 인자 보다 적은 배열을 지정하면 메모리 참조 오류가 발생 될 수 있음.
|
|
// 2) Trigger Mode는 HPC4_RANGE_TRIGGER로 자동 변경됨
|
|
// 3) 함수 내부에서 Trigger를 Disable한 후 모든 설정을 진행하며 완료 후 다시 Enable 시킴
|
|
// CNT_RECAT_SC_10 의경우 ///////////////////////////
|
|
// 카운터 모듈의 각 테이블에 2-D 절대위치에서 트리거 신호를 출력하기 위해 필요한 정보를 AxcTableSetTriggerData함수와 다른 방식으로 설정한다.
|
|
// lTriggerDataCount : 설정 할 트리거 정보의 전체 개수
|
|
// uOption : Reserved
|
|
// dpTriggerData : 설정 할 트리거 정보
|
|
// CCGC_CNT_RANGE_TRIGGER 인 경우
|
|
// dpTriggerData 배열에 X Pos[0], Y Pos[0], X Pos[1], Y Pos[1] 순서로 입력
|
|
// CCGC_CNT_VECTOR_TRIGGER 인 경우]
|
|
// dpTriggerData 배열에 X Pos[0], Y Pos[0], X UnitVector[0], Y UnitVector[0] X Pos[1], Y Pos[1], X UnitVector[1], Y UnitVector[1] 순서로 입력
|
|
// CCGC_CNT_POSITION_ON_OFF_TRIGGER 인 경우
|
|
// dpTriggerData 배열에 X Pos[0], Y Pos[0], X Pos[1], Y Pos[1] 순서로 입력
|
|
// ※주의 :
|
|
// 1) dpTriggerData의 배열 개수를 주의하여 사용해야됩니다. 내부에서 사용되는 인자 보다 적은 배열을 지정하면 메모리 참조 오류가 발생 될 수 있음.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerDataEx(int lModuleNo, int lTablePos, int lTriggerDataCount, uint uOption, double[] dpTriggerData);
|
|
// SIO-HPC4 의 경우 ///////////////////////////
|
|
// 카운터 모듈의 각 테이블에 트리거 신호를 출력하기 위해 설정한 트리거 설정 정보를 확인한다.
|
|
// ※ 주의 : 각 테이블에 등록된 최대 트리거 데이타 개수를 모를 때는 아래와 같이 트리거 데이타 개수를 미리 파악한 후 사용.
|
|
// Ex) 1) AxcTableGetTriggerDataEx(lModuleNo, lTablePos, &lTriggerDataCount, &uOption, NULL);
|
|
// 2) if(uOption == 0) : dpTriggerData = new double[lTriggerDataCount * 2];
|
|
// 3) if(uOption == 1) : dpTriggerData = new double[lTriggerDataCount * 4];
|
|
// CNT_RECAT_SC_10 의경우 ///////////////////////////
|
|
// 카운터 모듈의 각 테이블에 트리거 신호를 출력하기 위해 설정한 트리거 설정 정보를 확인한다.
|
|
// ※ 주의 : 각 테이블에 등록된 최대 트리거 데이타 개수를 모를 때는 아래와 같이 트리거 데이타 개수를 미리 파악한 후 사용.
|
|
// uOption : Reserved
|
|
// Ex) 1) AxcTableGetTriggerDataEx(lModuleNo, lTablePos, &lTriggerDataCount, &uOption, NULL);
|
|
// CCGC_CNT_RANGE_TRIGGER 인 경우
|
|
// dpTriggerData = new double[lTriggerDataCount * 2];
|
|
// CCGC_CNT_VECTOR_TRIGGER 인 경우]
|
|
// dpTriggerData = new double[lTriggerDataCount * 4];
|
|
// CCGC_CNT_POSITION_ON_OFF_TRIGGER 인 경우
|
|
// dpTriggerData = new double[lTriggerDataCount * 2];
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetTriggerDataEx(int lModuleNo, int lTablePos, ref int lpTriggerDataCount, ref uint upOption, double[] dpTriggerData);
|
|
|
|
// 카운터 모듈의 지정한 테이블에 설정된 모든 트리거 데이타와 H/W FIFO의 데이타를 모두 삭제한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetTriggerDataClear(int lModuleNo, int lTablePos);
|
|
|
|
// 카운터 모듈의 지정한 테이블의 트리거 출력 기능을 동작시킴.
|
|
// uEnable : 트리거를 출력 기능의 사용여부를 설정
|
|
// ※ 주의 : 1) 트리거 출력 중 DISABLE하면 출력이 바로 멈춤
|
|
// 2) AxcTableTriggerOneShot, AxcTableGetPatternShotData,AxcTableSetTriggerData, AxcTableGetTriggerDataEx 함수 호출시 자동으로 ENABLE됨
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetEnable(int lModuleNo, int lTablePos, uint uEnable);
|
|
// 카운터 모듈의 지정한 테이블의 트리거 출력 기능의 동작 여부를 확인함.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetEnable(int lModuleNo, int lTablePos, ref uint upEnable);
|
|
|
|
// 카운터 모듈의 지정한 테이블을 이용해 발생된 트리거 개수를 확인.
|
|
// lpTriggerCount : 현재까지 출력된 트리거 출력 개수를 반환, AxcTableSetTriggerCountClear 함수로 초기화
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableReadTriggerCount(int lModuleNo, int lTablePos, ref int lpTriggerCount);
|
|
|
|
// 카운터 모듈의 지정한 테이블에 할당된 H/W 트리거 데이타 FIFO의 상태를 확인.
|
|
// lpCount1[0~500] : 2D 트리거 위치 데이타 중 첫번째(X) 위치를 저정하고 있는 H/W FIFO에 입력된 데이타 개수
|
|
// upStatus1 : 2D 트리거 위치 데이타 중 첫번째(X) 위치를 저정하고 있는 H/W FIFO의 상태
|
|
// [Bit 0] : Data Empty
|
|
// [Bit 1] : Data Full
|
|
// [Bit 2] : Data Valid
|
|
// lpCount2[0~500] : 2D 트리거 위치 데이타 중 두번째(Y) 위치를 저정하고 있는 H/W FIFO에 입력된 데이타 개수
|
|
// upStatus2 : 2D 트리거 위치 데이타 중 두번째(Y) 위치를 저정하고 있는 H/W FIFO의 상태
|
|
// [Bit 0] : Data Empty
|
|
// [Bit 1] : Data Full
|
|
// [Bit 2] : Data Valid
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableReadFifoStatus(int lModuleNo, int lTablePos, ref int lpCount1, ref uint upStatus1, ref int lpCount2, ref uint upStatus2);
|
|
|
|
// 카운터 모듈의 지정한 채널에 할당된 H/W 트리거 데이타 FIFO의 상태를 확인.
|
|
// lpCount[0~500] : 1D 트리거 위치 데이타 중 첫번째(X) 위치를 저정하고 있는 H/W FIFO에 입력된 데이타 개수
|
|
// upStatus : 1D 트리거 위치 데이타 중 첫번째(X) 위치를 저정하고 있는 H/W FIFO의 상태
|
|
// [Bit 0] : Data Empty
|
|
// [Bit 1] : Data Full
|
|
// [Bit 2] : Data Valid
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerReadFifoStatus(int lChannelNo, ref int lpCount, ref uint upStatus);
|
|
|
|
// 카운터 모듈의 지정한 테이블에 할당된 H/W 트리거 데이타 FIFO의 현재 위치 데이타값을 확인.
|
|
// dpTopData1 : 2D H/W 트리거 데이타 FIFO의 현재 데이타 중 첫번째(X) 위치 데이타를 확인 함
|
|
// dpTopData1 : 2D H/W 트리거 데이타 FIFO의 현재 데이타 중 두번째(Y) 위치 데이타를 확인 함
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableReadFifoData(int lModuleNo, int lTablePos, ref double dpTopData1, ref double dpTopData2);
|
|
|
|
// 카운터 모듈의 지정한 채널에 할당된 H/W 트리거 데이타 FIFO의 현재 위치 데이타값을 확인.
|
|
// dpTopData : 1D H/W 트리거 데이타 FIFO의 현재 데이타 중 첫번째(X) 위치 데이타를 확인 함
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerReadFifoData(int lChannelNo, ref double dpTopData);
|
|
|
|
//카운터 모듈의 dimension 값을 설정한다.
|
|
// dwDimension : 1D/2D 설정값
|
|
// [0] : 1D
|
|
// [1] : 2D
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetDimension(int lModuleNo, int lTablePos, int dwDimension);
|
|
//카운터 모듈의 dimension 값을 확인한다.
|
|
// dwpDimension : 1D/2D 설정값
|
|
// [0] : 1D
|
|
// [1] : 2D
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetDimension(int lModuleNo, int lTablePos, ref uint dwpDimension);
|
|
|
|
// 카운터 모듈의 트리거 출력 범위 중 하한 값을 설정한다.
|
|
// 위치 주기 트리거 제품의 경우 위치 주기로 트리거 출력을 발생시킬 범위 중 하한 값을 설정한다.
|
|
// 단위 : AxcMotSetMoveUnitPerPulse로 설정한 단위.
|
|
// Note : 하한값은 상한값보다 작은값을 설정하여야 합니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetBlockLowerPos(int lModuleNo, int lTablePos, double dLowerPosition1, double dLowerPosition2);
|
|
// 카운터 모듈의 트리거 출력 범위 중 하한 값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetBlockLowerPos(int lModuleNo, int lTablePos, ref double dpLowerPosition1, ref double dpLowerPosition2);
|
|
// 카운터 모듈의 트리거 출력 범위 중 상한 값을 설정한다.
|
|
// 위치 주기 트리거 제품의 경우 위치 주기로 트리거 출력을 발생시킬 범위 중 상한 값을 설정한다.
|
|
// 단위 : AxcMotSetMoveUnitPerPulse로 설정한 단위.
|
|
// Note : 상한값은 하한값보다 큰값을 설정하여야 합니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableSetBlockUpperPos(int lModuleNo, int lTablePos, double dUpperPosition1, double dUpperPosition2);
|
|
// 카운터 모듈의 트리거 출력 범위 중 상한 값을 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetBlockUpperPos(int lModuleNo, int lTablePos, ref double dpUpperPosition1, ref double dpUpperPosition2);
|
|
|
|
/// 카운터 모듈의 각 테이블에 설정된 정보로(트리거 출력 Port, 트리거 펄스 폭),허용범위 내에서 지정한 위치 등간격으로 트리거를 발생시킨다.
|
|
// dDistance : 트리거 마다의 위치 간격
|
|
// ※ 주의 : 1) 트리거가 Disable되어 있으면 이 함수는 자동으로 Enable시켜 패턴을 가진 트리거를 발생시킴
|
|
// 2) Trigger Mode가 CCGC_CNT_DISTANCE_PERIODIC_TRIGGER 모드가 아닐 경우 이 함수는 자동으로 트리거 모드를 CCGC_CNT_DISTANCE_PERIODIC_TRIGGER 변경 함
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableTriggerDistancePatternShot(int lModuleNo, int lTablePos, double dDistance);
|
|
// 카운터 모듈의 각 테이블에 설정된 트리거 설정 정보를(트리거 마다의 간격)확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTableGetDistancePatternShotData(int lModuleNo, int lTablePos, ref double dpDistance);
|
|
|
|
// 카운터 모듈의 각 채널에 트리거 신호를 출력하기 위해 설정한 트리거 설정 정보를 확인한다.
|
|
// ※ 주의 : 각 채널에 등록된 최대 트리거 데이타 개수를 모를 때는 아래와 같이 트리거 데이타 개수를 미리 파악한 후 사용.
|
|
// Ex) 1) AxcTriggerGetAbs(long lChannelNo, DWORD* dwpTrigNum, DWORD* dwTrigPos, DWORD dwDirection);
|
|
// 2) dpTriggerData = new double[dwTrigPos];
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetAbs(int lChannelNo, ref uint dwpTrigNum, uint[] dwpTrigPos);
|
|
// 카운터 모듈의 각 채널에 설정된 정보로(트리거 출력 Port, 트리거 펄스 폭), 지정한 개수만큼 설정한 주파수로 트리거를 발생시킨다.
|
|
// lTriggerCount : 지정한 주파수를 유지하며 발생시킬 트리거 출력 개수
|
|
// uTriggerFrequency : 트리거를 발생시킬 주파수
|
|
// ※ 주의 : 1) 트리거가 Disable되어 있으면 이 함수는 자동으로 Enable시켜 패턴을 가진 트리거를 발생시킴
|
|
// 2) Trigger Mode가 CCGC_CNT_PATTERN_TRIGGER 모드가 아닐 경우 이 함수는 자동으로 트리거 모드를 CCGC_CNT_PATTERN_TRIGGER 변경 함
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerPatternShot(int lChannelNo, int lTriggerCount, uint uTriggerFrequency);
|
|
|
|
// 카운터 모듈의 각 채널에 설정된 패턴 트리거 설정 정보를(주파수, 카운터) 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetPatternShotData(int lChannelNo, ref int lpTriggerCount, ref uint upTriggerFrequency);
|
|
// 카운터 모듈의 각 채널 별로 출력된 누적 트리거 갯수를 초기화 한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetTriggerCountClear(int lChannelNo);
|
|
// 카운터 모듈의 지정한 채널을 이용해 발생된 트리거 개수를 확인.
|
|
// lpTriggerCount : 현재까지 출력된 트리거 출력 개수를 반환, AxcTriggerSetTriggerCountClear 함수로 초기화
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerReadTriggerCount(int lChannelNo, ref int lpTriggerCount);
|
|
/// 카운터 모듈의 각 채널에 설정된 정보로(트리거 출력 Port, 트리거 펄스 폭),허용범위 내에서 지정한 위치 등간격으로 트리거를 발생시킨다.
|
|
// dDistance : 트리거 마다의 위치 간격
|
|
// ※ 주의 : 1) 트리거가 Disable되어 있으면 이 함수는 자동으로 Enable시켜 패턴을 가진 트리거를 발생시킴
|
|
// 2) Trigger Mode가 CCGC_CNT_DISTANCE_PERIODIC_TRIGGER 모드가 아닐 경우 이 함수는 자동으로 트리거 모드를 CCGC_CNT_DISTANCE_PERIODIC_TRIGGER 변경 함
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerDistancePatternShot(int lChannelNo, double dDistance);
|
|
// 카운터 모듈의 각 채널에 설정된 트리거 설정 정보를(트리거 마다의 간격)확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetDistancePatternShotData(int lChannelNo, ref double dpDistance);
|
|
|
|
// 카운터 모듈의 각 채널에 할당 할 트리거 출력 포트를 설정한다.
|
|
// uTriggerOutport [0x0-0xF]: Bit0: 트리거 출력 0, Bit1: 트리거 출력 1, Bit2: 트리거 출력 2, Bit3: 트리거 출력 3
|
|
// Ex) 0x3(3) : 출력 0, 1에 트리거 신호를 출력하는 경우
|
|
// 0xF(255) : 출력 0, 1, 2, 3에 트리거 신호를 출력하는 경우
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerSetTriggerOutport(int lChannelNo, uint dwTriggerOutPort);
|
|
// 카운터 모듈의 각 채널에 할당 된 트리거 출력 포트를 확인한다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerGetTriggerOutport(int lChannelNo, ref uint dwpTriggerOutPort);
|
|
|
|
// 카운터 모듈의 지정한 체널에 대하여 1회성으로 트리거를 출력한다. AxcTriggerSetLevel / AxcTriggerSetTime함수로 파라미터를 설정 후 사용하여야 한다.
|
|
// CN2CH ABS/PERI 제품군도 지원되나 HW에서 처리한것이 아닌 상위 라이브러리에서 해당 기능을 구현한것으로 사용자의 PC환경에 따라 성능이 변경될 수 있습니다.
|
|
// 해당 증상에 대하여 추가적인 지원은 불가능합니다. TEST용도로 사용 바랍니다.
|
|
[DllImport("AXL.dll")] public static extern uint AxcTriggerOneShot(int lChannelNo);
|
|
}
|