The best and easiest way to solve your problem is to use I2C protocol...
As Pic16F628A does not have inbuilt I2C peripheral... you can use the bit banging I2C routines for Pic16F628A.
1) Get the Bitbanged I2C code for Pic16F628A (any Pic16Fxxx will do) http://www.microchipc.com/sourcecode/PIC_Hi-Tech_C_Mike_Pearces_I2C_routines.zip
2) Set the Address for all your Pic16F628A as Slave devices (say 0x02,0x04, etc) - I have kept the gap of two between two address as if in future you want to add some device in between it would be easy to expand - (I2C Master address is 0x00 and can go max upto 127 dec)
3) Configure Pic18F4550 as a I2C Master (It has inbuilt I2C peripheral - so u can use the microchip example)
4) Now write a code for Pic18F45500 to read the Slave device
5) Also write a code for Pic16F628A to respond to the read request
Hope this will help you...