차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
platform:ethercat:100_api:20_eg:cmp_one [2020/05/12 14:52] winoars 만듦 |
platform:ethercat:100_api:20_eg:cmp_one [2024/07/08 18:23] (현재) |
||
---|---|---|---|
줄 12: | 줄 12: | ||
using ec = ComiLib.EtherCAT.SafeNativeMethods; | using ec = ComiLib.EtherCAT.SafeNativeMethods; | ||
+ | |||
+ | uint logBitAddr = 0; // 출력 채널에 대한 LogicBitAddress | ||
+ | int method = 0; // CMP 출력 조건 | ||
+ | int cntrType = 0; // CMP 위치 조건. Command / Feedback | ||
+ | int logic = 0; // CMP 출력 로직. | ||
+ | int duration = 10; // CMP 출력 유지 시간. 단위 ms. | ||
+ | |||
+ | double cmpPosition = 0; | ||
+ | static ec.CallbackFunc callBackFunc; | ||
+ | | ||
private void btnCmpOneStart_Click(object sender, EventArgs e) | private void btnCmpOneStart_Click(object sender, EventArgs e) | ||
{ | { | ||
- | if (lbxPosition.Items.Count == 0) | + | // 출력 환경을 설정한다. |
- | return; | + | // CMP 출력 채널을 확인하여 LogicBitAddress로 변환 |
+ | // Local 채널도 사용 가능하지만, | ||
+ | if (usingOutputCh) // 범용 Output 채널 사용 시 | ||
+ | { | ||
+ | int ch = 0; // CMP 출력 채널 | ||
+ | logBitAddr = ec.ecdoLogBitAddr_FromGlobalChannel(netID, | ||
+ | if (errorCode != 0) | ||
+ | { | ||
+ | // 에러처리 | ||
+ | } | ||
+ | } | ||
+ | else // OnBoard(마스터 보드) DO 사용 시 | ||
+ | { | ||
+ | int ch = 0; | ||
+ | logBitAddr = ec.ecdoLogBitAddr_FromOnboardChannel(netID, | ||
+ | if (errorCode != 0) | ||
+ | { | ||
+ | // 에러처리 | ||
+ | } | ||
+ | } | ||
- | // 출력 | + | // 이전 |
- | SetCondition(); | + | ec.ecmSxCmpOne_ClearOutResult(netID, |
+ | if (errorCode != 0) | ||
+ | { | ||
+ | // 에러처리 | ||
+ | } | ||
+ | |||
+ | cmpCount = 0; | ||
+ | logic = 0; // CMP 출력 로직. 0 : Logic A. 1 : Logic B | ||
+ | duration = 100; // CMP 출력 유지 시간. 단위 ms. | ||
+ | |||
+ | // CMP 출력채널 정보를 | ||
+ | ec.ecmSxCmpOne_SetChannel(netID, axisID, logBitAddr, logic, duration, ref errorCode); | ||
+ | if (errorCode != 0) | ||
+ | { | ||
+ | // 에러처리 | ||
+ | } | ||
// CMP 출력조건을 설정한다. | // CMP 출력조건을 설정한다. | ||
줄 74: | 줄 118: | ||
} | } | ||
} | } | ||
- | |||
- | private void SetCondition() | ||
- | { | ||
- | // CMP 출력 채널을 확인하여 LogicBitAddress로 변환 | ||
- | // Local 채널도 사용 가능하지만, | ||
- | if (usingOutputCh) // 범용 Output 채널 사용 시 | ||
- | { | ||
- | int ch = 0; // CMP 출력 채널 | ||
- | logBitAddr = ec.ecdoLogBitAddr_FromGlobalChannel(netID, | ||
- | if (errorCode != 0) | ||
- | { | ||
- | // 에러처리 | ||
- | } | ||
- | } | ||
- | else // OnBoard(마스터 보드) DO 사용 시 | ||
- | { | ||
- | int ch = 0; | ||
- | logBitAddr = ec.ecdoLogBitAddr_FromOnboardChannel(netID, | ||
- | if (errorCode != 0) | ||
- | { | ||
- | // 에러처리 | ||
- | } | ||
- | } | ||
- | |||
- | // 이전 출력 결과를 초기화한다. | ||
- | ec.ecmSxCmpOne_ClearOutResult(netID, | ||
- | if (errorCode != 0) | ||
- | { | ||
- | // 에러처리 | ||
- | } | ||
- | |||
- | cmpCount = 0; | ||
- | logic = 0; // CMP 출력 로직. 0 : Logic A. 1 : Logic B | ||
- | duration = 100; // CMP 출력 유지 시간. 단위 ms. | ||
- | |||
- | // CMP 출력채널 정보를 설정한다. | ||
- | ec.ecmSxCmpOne_SetChannel(netID, | ||
- | if (errorCode != 0) | ||
- | { | ||
- | // 에러처리 | ||
- | } | ||
- | } | ||
- | |||
private void btnCmpOneStop_Click(object sender, EventArgs e) | private void btnCmpOneStop_Click(object sender, EventArgs e) |