Well I use ASI bus from a S7300. you need an ASI master module, we use a CP342-2.
Then all asi inputs are mapped to input address space and can be read with for instance PIW and all outputs are mapped to output address space and can be written for instance with PQW.
The limitation is you cannot bit address them directly, which you allmost certainly will want to.
The way round this is at the start of OB1, copy ALL input words to say a data block. Then you can read any input as appropriate either bit byte or word adddressed.
Similarly have another (or the same) data block containing an image of all your outputs which you can address as bit byte or word. At the end of OB1 copy the entire image to the ASI master module.