2017-09-15 22 views

답변

1

또 다른 해결책은 IO 구성 및 COE-온라인 탭을 변경하는 것입니다. 거기에서 업데이트하면 항상 값을 기억합니다.

코드에서 CoE (Can over EtherCAT)를 통해 업데이트 할 수 있습니다. 설정 변수의 인덱스 번호는 documentation에서 찾을 수 있습니다. 채널 1의 경우 8000 : 11이므로 index = 8000 및 subindex = 11 인 것처럼 보입니다.

그런 다음 Tc2_EtherCAT 라이브러리의 사서함 작성기 블록 (FB_EcCoESdoWriteEx)을 사용하여 해당 매개 변수에 값을 쓸 수 있습니다. 따라서 PLC 프로그램이 시작될 때 변수를 원하는 전송 속도로 업데이트하는 코드를 먼저 실행하십시오. 예를 들어

, 이런 식으로 뭔가 :

TargetValue := 1; //WORD, Check documentation for correct value 

//MailBoxWriter = Instance of FB_EcCoESdoWriteEx 
MailBoxWriter(
     sNetId:= **AmsNetId of the EtherCAT master**, 
     nSlaveAddr:= **Serial interface terminal port**, 
     nSubIndex:= 11, 
     nIndex:= 8000, 
     pSrcBuf:= ADR(TargetValue), 
     cbBufLen:= SIZEOF(TargetValue), 
     bExecute:= TRUE, 
     tTimeout:= T#500MS, 
     bCompleteAccess:= FALSE, 
     bBusy=> , 
     bError=> , 
     nErrId=> 
    ); 

sNetId는 EtherCAT의 버스 마스터의 AmsNetId입니다. IO 구성에서 연결할 수 있습니다 (Master->Infodata->AmsNetId 참조).

nSlaveAddr은 EL6002의 터미널 포트이며 IO 구성에서 연결할 수 있습니다 (Terminal->InfoData->AdsAddr->port 참조).

2

프로그래밍 대신 IO 구성을 통해 직접 구성 할 수 있습니다. 시작 값을 추가하면 IO가 지정된 상태에서 다른 상태로 변경 될 때마다 설정됩니다. 아래 사진에서 PS는 Pre-Op에서 Safety로 전환 할 때를 의미합니다. 따라서 IO를 교체하더라도 작동합니다.

Setting IO Startup values