Rockwell Automation 5370 Color CVIM Communications Manual User Manual
Page 67

Chapter 4
Using the Remote I/O Link
4–30
err = g_op_stat & SO_FAULT;
} break;
case 3: /* read configuration */
{
/* read all config. blocks */
for (block_num = 0; (block_num < 213) && !err; block_num++)
err = get_CVIM_block (CVIM_rack, 2, block_num+1,
config[block_num], &configlen[block_num]);
} break;
case 4: /* write configuration */
{
/* write all config. but last block (0–212) */
for (block_num = 0; (block_num < 212) && !err; block_num++)
err = send_CVIM_block (CVIM_rack, 2, block_num+1,
config[block_num], &configlen[block_num]);
/* write last config block (213) */
err = send_CVIM_block (CVIM_rack, 10, 213,
config[212], &configlen[212]);
/* wait until CVIM busy bit is low */
for (t=65535; t>0 && (g_ipt[8*CVIM_rack] & 8); t––)
for (x=1; x<100; x++);
if (t==0)
{
printf (”Time–out error: CVIM busy\n”);
err = –1;
}
if (g_ipt[8*CVIM_rack] & 2)
printf (”Configuration ERROR.\n”);
else
printf (”Configuration validation OK.\n”);
} break;
} /* end switch (op_num) statement */
if (err)
printf (”Error code: %4x\n”,err);
} while (op_num >= 0);
stop_6008(); /* shut down 6008 before quitting */
}
/* do a BTR (read) from the CVIM */
int get_CVIM_block (CVIM_rack, block_type, block_num, data, length)
unsigned CVIM_rack, block_type, block_num, *data, *length;
{
static QBT block_pkt;
unsigned err, status,x;
/* display msg for program monitoring */
printf (”get_CVIM_block %d(%d)\n”,block_type, block_num);