Appendix b – Rockwell Automation 1785-Vx0B, D17856.5.9 PLC-5 VME VMEbus Programmable Controllers User Manual User Manual

Page 218

Advertising
background image

Sample API Modules

Appendix B

B-60

* PLC540V_STATUS_TYPE status;
* void plc540v_pccc_echo(
* vmeCmdBlkAddr,
* baseAddress,
* width,
* addrMod,
* data,
* dataLength,
* &reply,
* &status);
*
* Copyright Allen-Bradley Company, Inc. 1993
*
****************************************************************************/
void plc540v_pccc_echo(

ULONG vmeCmdBlkAddr,
UWORD baseAddress,
VME_DATA_WIDTH_TYPE width,
VME_ADDRESS_MODIFIER_TYPE addrMod,
PLC540V_PCCC_DATA_TYPE data,
UBYTE dataLength,
PLC540V_PCCC_ECHO_RPY_TYPE *reply,
PLC540V_STATUS_TYPE *status)

{
/* The ECHO command packet. */
PLC540V_PCCC_ECHO_CMD_TYPE cmdPacket;

/* Let’s initialize these packet to nothing. */
memset((char *) &cmdPacket, 0x0, kPLC540V_PCCC_ECHO_CMD_SIZE);
memset((char *) reply, 0x0, kPLC540V_PCCC_ECHO_RPY_SIZE);
memset((char *) status, 0x0, sizeof(PLC540V_STATUS_TYPE));

/* Let’s establish the command packet contents... Note that
since we set this block with zeros originally, we don’t
need to explicitly set them here.
*/
cmdPacket.cmd = kPLC540V_PCCC_ECHO_CMD;
cmdPacket.fnc = kPLC540V_PCCC_ECHO_FNC;
memmove((char *) cmdPacket.data, (char *) data, dataLength);

plc540v_send_pccc_command(

vmeCmdBlkAddr,
&cmdPacket,
kPLC540V_PCCC_ECHO_CMD_SIZE,
reply,
kPLC540V_PCCC_ECHO_RPY_SIZE,
baseAddress,
kVME_NO_INT_LEVEL,
0,
width,
addrMod,
status);

}

Advertising