RdcyAcyclicSend (FUN)¶
FUNCTION RdcyAcyclicSend : RTS_IEC_RESULT
Send acyclic data.
This function is protected by a semaphore. When a task uses RdcyAcyclicSend, it will be blocked for other tasks.
Currently RdcyAcyclicSend() has the blocking (synchronous) behavior described below. In future versions the behavior will be non-blocking (asynchronous). RdcyAcyclicSend() will block until any other previous call of this function has finished or a timeout occurs. RdcyAcyclicSend() will block until all of the bytes in the buffer are sent or a timeout occurs. RdcyAcyclicSend() will block until the acknowledge of the internal acyclic network protocol has been received or a timeout occurs. The total timeout for these blocks is the [CmpRedundancy] setting “TcpWaitTime”.
Precondition: The acyclic data transfer module has to be in the RA_STATE_PROTOCOL_VER_SUCCEEDED RdcyAcyclicState. Hint: The current state of the acyclic data transfer module can be queried with the RdcyAcyclicGetCurState FUNCTION.
- InOut:
Scope
Name
Type
Comment
Return
RdcyAcyclicSend
RTS_IEC_RESULT
Error code (see CmpErrors.library). ERR_FAILED if the RdcyConnectionSendData2 function failed, ERR_NOT_READY_YET if the semaphore of this function could not be entered within the timeout because it is locked (currently another task is in a call of this function), ERR_NOTINITIALIZED if the acyclic data transfer module is not in the RA_STATE_PROTOCOL_VER_SUCCEEDED RdcyAcyclicState, ERR_PARAMETER if one of the parameters is invalid, ERR_TIMEOUT if the acknowledge of the internal acyclic network protocol hasn’t been received, else ERR_OK
Input
pcszAcyclicDataUUID
REFERENCE TO STRING
The same Data UUID, which was used for registration with the RdcyAcyclicRegisterUsage FUNCTION.
pBuffer
POINTER TO BYTE
The pointer to the buffer containing the data to transmit
length
DWORD
The length of the data pointed to by the pBuffer parameter