I need to write a simple c# app which communicates with a Siemens S7 via OPC. It just needs to query single inputs and set single outputs.
What do I need to do this? Do I need stuff like Xi from OPCFoundation?
As a more general OPC solution, it may be worth looking at http://www.codeproject.com/KB/COM/opcdotnet.aspx - its a free OPC DLL complete with source code. While it is quite basic, the code is there, so you could easily update it if required, but from the sounds of your requirements it may be ideal.