-> Hier kostenlos registrieren
Hallo alles, (entschuldigung für meine Deutsch)
Ich muss viele data lessen , denn Ich muss ein SUM ADS command . Aber meine problem ist das ein 1797 (Parameter size not correct.Error code: 1797(0x705).) Fehler habe. Ich habe info bei Beckhoff web page gelessen aber the Fehler ist da.
Meine code :
//
adsSum : ADSRDWRT;
indexGroup : UDINT:=16#0000F080;//"Index-Group/Offset" Specification of the TwinCAT ADS system services
indexOffset : UDINT; //Number of internal subcommands.
dstLength : DWORD;
dstBuffer : ARRAY [1..1000] OF BYTE;
srcLength : DWORD;
srcBuffer : ARRAY [1..30] OF DWORD;
PORT : UINT:= 852;
MAX_CMD : UINT:=10;
FIELD_PER_CMD: UINT:=3;
RSP_ERROR_SIZE : UINT:=4;
RSP_LEN_SIZE : UINT:=4;
RSP_RES_SIZE:UINT:=4;
RSP_SIZE : UINT:=RSP_ERROR_SIZE+RSP_LEN_SIZE;
//
FOR infoCounter:=1 TO MAX_CMD BY 1 DO
srcBuffer[infoCounter+0]:=symInfoARR[infoCounter].idxGroup;
srcBuffer[infoCounter+1]:=symInfoARR[infoCounter].idxOffset;
srcBuffer[infoCounter+2]:=symInfoARR[infoCounter].byteSize;
dstLength:=dstLength+symInfoARR[infoCounter].byteSize;
END_FOR
srcLength:=MAX_CMD*FIELD_PER_CMD*SIZEOF(srcBuffer[1]);
dstLength:=MAX_CMD*RSP_RES_SIZE+dstLength;
MEMSET(ADR(dstBuffer), 0, dstLength);
adsSum( NETID:='' ,PORT:=PORT ,
IDXGRP:=indexGroup ,(*Index Group where the list is to be written*)
IDXOFFS:=MAX_CMD ,(*How many values in the list are to be read*)
WRITELEN:=srcLength,
READLEN:=dstLength , (*Amount of data expected to be returned*)
SRCADDR:=ADR(srcBuffer) ,
DESTADDR:=ADR(dstBuffer) ,
WRTRD:=runAdsSum ,
TMOUT:=T#10s ,
BUSY=> busy,
ERR=> err,
ERRID=> errId);
Vielen dank.
Ich muss viele data lessen , denn Ich muss ein SUM ADS command . Aber meine problem ist das ein 1797 (Parameter size not correct.Error code: 1797(0x705).) Fehler habe. Ich habe info bei Beckhoff web page gelessen aber the Fehler ist da.
Meine code :
//
adsSum : ADSRDWRT;
indexGroup : UDINT:=16#0000F080;//"Index-Group/Offset" Specification of the TwinCAT ADS system services
indexOffset : UDINT; //Number of internal subcommands.
dstLength : DWORD;
dstBuffer : ARRAY [1..1000] OF BYTE;
srcLength : DWORD;
srcBuffer : ARRAY [1..30] OF DWORD;
PORT : UINT:= 852;
MAX_CMD : UINT:=10;
FIELD_PER_CMD: UINT:=3;
RSP_ERROR_SIZE : UINT:=4;
RSP_LEN_SIZE : UINT:=4;
RSP_RES_SIZE:UINT:=4;
RSP_SIZE : UINT:=RSP_ERROR_SIZE+RSP_LEN_SIZE;
//
FOR infoCounter:=1 TO MAX_CMD BY 1 DO
srcBuffer[infoCounter+0]:=symInfoARR[infoCounter].idxGroup;
srcBuffer[infoCounter+1]:=symInfoARR[infoCounter].idxOffset;
srcBuffer[infoCounter+2]:=symInfoARR[infoCounter].byteSize;
dstLength:=dstLength+symInfoARR[infoCounter].byteSize;
END_FOR
srcLength:=MAX_CMD*FIELD_PER_CMD*SIZEOF(srcBuffer[1]);
dstLength:=MAX_CMD*RSP_RES_SIZE+dstLength;
MEMSET(ADR(dstBuffer), 0, dstLength);
adsSum( NETID:='' ,PORT:=PORT ,
IDXGRP:=indexGroup ,(*Index Group where the list is to be written*)
IDXOFFS:=MAX_CMD ,(*How many values in the list are to be read*)
WRITELEN:=srcLength,
READLEN:=dstLength , (*Amount of data expected to be returned*)
SRCADDR:=ADR(srcBuffer) ,
DESTADDR:=ADR(dstBuffer) ,
WRTRD:=runAdsSum ,
TMOUT:=T#10s ,
BUSY=> busy,
ERR=> err,
ERRID=> errId);
Vielen dank.