TURBO PMAC QNA 게시판입니다.

궁금한점 있으시면 문의하세요. 답변은 댓글로 되어집니다.
 
내용에 그림을 삽입을 원할 경우, 파일첨부를 한 뒤 "본문 삽입"을 하시면 그림을 삽입 할 수 있습니다.

DPRAM 사용 문의 드립니다.

조회수 4322 추천수 0 2017.04.26 11:54:57
iNT [주소복사 ->]    

안녕하세요.


Data Gathering 관련하여 여러번 답변 주신 것과 각종 자료들을 보고 계속 공부중입니다.

이번엔 DPRAM 관련 함수들을 이용하여 Data Gathering 하는 법을 보는 중인데 아래와 같이 작성하면

실시간 Data Gathering이 가능할지 문의드립니다.


1. PComm32.dll 관련 API 동적 링크 과정은 모두 완료 되었다고 가정합니다.


2. DeviceDPRAvailable() 함수로 DPRAM 장착 여부 확인.

if (DeviceDPRAvailable(m_nDeviceNo))
    printf("DPRAM is available for USE");
else

    printf("DPRAM is not available for USE"); 


3. DeviceDPRRealTimeEX() 함수로 축, 업데이트 추기, enable 여부 설정.

 BOOL bEnabled = DeviceDPRRealTimeEx(m_nDeviceNo,

                                     0x07,        // Motor 1, 2, 3
                                     100,         // 100 servo cyle 마다 한번 씩 (1 servo cycle = 0.442 msec)
                                     TRUE);


4. DeviceDPRUpdateRealtime() 함수로 업데이트 되어 있는 모든 데이터를 로컬 메모리로 복사.

 if ( DeviceDPRUpdateRealtime(m_nDeviceNo)==TRUE )

{
    int nServoCycleCounter = DeviceDPRGetServoTimer(m_nDeviceNo);
    float nPostion = DeviceDPRPosition(m_nDeviceNo, 01);
    float nCommandedPostion = DeviceDPRGetCommandedPos(m_nDeviceNo, 01);
    float nFollowError = DeviceDPRFollowError(m_nDeviceNo, 01);
    float nBiasPositoin = DeviceDPRGetBiasPos(m_nDeviceNo, 01);
    float nVelocity = DeviceDPRGetVel(m_nDeviceNo, 01);
    long nPrevDAC = DeviceDPRGetPrevDAC(m_nDeviceNo, 0);
}


5. 위 과정이 Data를 읽어올 수 있는 기본 구조라면, 실시간으로 읽어 와 출력 할 수 있도록 While 문 등을 이용해 

nServoCycleCounter, nPostion 등의 값들을 출력.



질문1. 4번 과정의 각 함수에서 첫 번 째 Parameter 값은 Device Number, 두 번 째 Parameter 값은 Motor Number? 로 확인됩니다.

          그렇다면 세 번째 Parameter는 무엇을 의미하나요?

          함수 선언에는 "double posscale"로 되어있어서 Scale을 위한 값일 것 같은데, 부연 설명 요청드립니다.


질문2. 위의 코드 순서(1~5)로 할 경우 실시간 Data Gathering에 문제가 있을까요?



답변 부탁드립니다.

감사합니다.


deltatau

2017.04.26 20:52
 
항상 저희 제품을 사용해 주셔서 감사합니다.

위의 함수들은 DPRAM을 액세스하는 함수들이며 Data Gathering을 하는 함수들이 아닙니다.
전에도 말씀 드렸지만 Data Gathering은 실시간 처리하기 위한 기능이 아니기 때문에 구현 방향을 다시 잡으시길 바랍니다.
질문하신 posscale는 Position scale로 말 그대로 위치 값을 스케일 조정한다고 보시면 됩니다. 디폴트가 1로 설정하시면 위치 값 그대로 읽을 수 있습니다.
다시 말해
   out = position / posscale
으로 계산됩니다.
두번째 질문은 실시간 Data Gathering은 해당사항이 아니며 Thread나 Timer 를 사용하여 polling 방식으로 읽을 수는 있습니다.
특별한 문제는 없습니다.

그럼.. 항상 즐거운 하루 되십시요.
List of Articles
번호
제목
글쓴이 날짜 조회수
1975 CMD vel 가 떠든 증상 file [1] Mr.Han 2017-07-10 4274
1974 ACC 24E2A카드로 스테핑모터 셋팅하는 방법 문의 [1] 주주주주주주 2017-07-06 4022
1973 UMAC <--> PLC(OMRON, 미쓰비시) EXCOM 통신 문의 [1] UMAC123 2017-05-14 5838
1972 장비를 킨 후 원점을 잡는 과정에서 일부 문제가 있습니다 [1] jace 2017-06-21 7075
1971 장비를 보호하면서 서보 제어 실험이 가능한지요? [1] 도전자 2017-06-21 3967
1970 모션프로그램에서 축 속도와 TA와의 관계 문의 [1] 홍재희 2017-06-19 4558
1969 직선(대각선) 보간 처리 방법 문의 [1] 박성우 2017-06-19 3654
1968 보정테이블 [1] 요괴인간 2017-06-14 3636
1967 최대속도가 307247.04Cts/s 이상 안되네요 [3] 홍재희 2017-06-01 4274
1966 Turbo PMAC - Axislink-32 통신 문의 [1] 햄볶는달팽이 2017-05-15 4069
1965 I/O신호 오동작 file [1] PID튜닝 2017-05-26 3723
1964 인포지션 밴드 관련 문의 [1] M4 CS 2017-05-27 3712
1963 DeviceDPRGetVel() 함수사용 중 문제사항 문의드립니다. [4] iNT 2017-05-16 4455
1962 UMAC IP주소 변경 관련 질문 [1] 피롭모션 2017-05-10 4141
1961 모션 프로그램 관련 질문드립니다. [1] 피롭모션 2017-04-26 4674
» DPRAM 사용 문의 드립니다. [1] iNT 2017-04-26 4322
1959 Motion Program과 PLC Program의 차이점 [1] 담덕대마왕 2017-04-26 4364
1958 TINI32보드 문의 [1] 초보FA 2017-04-25 3880
1957 Pmac Plot 에러 문의 file [2] gyucholly 2017-04-20 3998
1956 로터리 버퍼 에러 (?) [1] bychul2 2017-04-18 3990