Appendix a – Rockwell Automation 1785-Vx0B, D17856.5.9 PLC-5 VME VMEbus Programmable Controllers User Manual User Manual
Page 154
![background image](/manuals/579929/154/background.png)
Appendix A
Sample Applications
A-32
/***************************************************************************/
/********************** PLC_IN_REMOTE_PROGRAM_MODE *************************/
/***************************************************************************/
void plc_in_remote_program_mode(void)
{
PLC540V_PCCC_IHAS_RPY_TYPE replyPacket;
PLC540V_PCCC_SCM_RPY_TYPE scmReplyPacket;
PLC540V_STATUS_TYPE status;
PLC540V_PCCC_SCM_CTLMODE_TYPE ctlMode;
ctlMode.modeSelect=kPLC540V_SCM_PROGRAM_LOAD_MODE;
plc540v_pccc_id_host_and_status(kvmeSlaveAddress,
kplc540vUla,
kVME_D16_DATA_WIDTH,
kVME_A24_ADDR_SPACE,
&replyPacket,
&status);
if (status.plc540vStatus != 0)
{
printf(”\nGetting the PLC’s keyswitch mode failed.”);
exit(1);
}
else
{
if (replyPacket.plcStatus.keyswitchMode!=kPLC540V_REMOTE_PROGRAM_LOAD)
{
printf(”\nPLC is not in remote program mode.”);
printf(”\n\tAttempting to change its mode to program load...”);
plc540v_pccc_set_cpu_mode(kvmeSlaveAddress,
kplc540vUla,
kVME_D16_DATA_WIDTH,
kVME_A24_ADDR_SPACE,
ctlMode,
&scmReplyPacket,
&status);
if (status.plc540vStatus != 0)
{
printf(” FAILED”);
exit(1);
}
else
printf(” OK...”);
}
}
}
/***************************************************************************/
/**************************** CHECK_FOR_FAULTS *****************************/
/***************************************************************************/
void check_for_faults(void)
{
// This function will check the processor for any faults.
PLC540V_PCCC_IHAS_RPY_TYPE replyPacket;
PLC540V_STATUS_TYPE status;
plc540v_pccc_id_host_and_status(kvmeSlaveAddress,
kplc540vUla,
kVME_D16_DATA_WIDTH,
kVME_A24_ADDR_SPACE,
&replyPacket,
&status);