차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
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, ch, ref errorCode); 
 + if (errorCode != 0)  
 +
 + // 에러처리 
 +
 +
 + else // OnBoard(마스터 보드) DO 사용 시 
 +
 + int ch = 0; 
 + logBitAddr = ec.ecdoLogBitAddr_FromOnboardChannel(netID, ch, ref errorCode); 
 + if (errorCode != 0)  
 +
 + // 에러처리 
 +
 + }
  
- // 출력 환경을 설정한다. + // 이전 출력 결과를 초기화한다. 
- SetCondition();+ ec.ecmSxCmpOne_ClearOutResult(netID, axisID, ref errorCode); 
 + 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, ch, ref errorCode); 
- if (errorCode != 0)  
- { 
- // 에러처리 
- } 
- } 
- else // OnBoard(마스터 보드) DO 사용 시 
- { 
- int ch = 0; 
- logBitAddr = ec.ecdoLogBitAddr_FromOnboardChannel(netID, ch, ref errorCode); 
- if (errorCode != 0)  
- { 
- // 에러처리 
- } 
- } 
- 
- // 이전 출력 결과를 초기화한다. 
- ec.ecmSxCmpOne_ClearOutResult(netID, axisID, ref errorCode); 
- 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)  
- { 
- // 에러처리 
- }            
-} 
- 
  
 private void btnCmpOneStop_Click(object sender, EventArgs e) private void btnCmpOneStop_Click(object sender, EventArgs e)