The PLCIO library reads and writes data to a variety of programmable logic controllers (PLC). Now in its 20th year, PLCIO is a stable platform allowing the programmer to address PLC memory by their tag names for different data types, regardless of the computer architecture, with the PLC linked either directly or remotely. PLCIO abstracts the application and communications layers so that the programmer of the business and database logic need not worry about the communication details. Full source code is included, as are samples and a CGI interface for PLC access from a Web browser. It runs under Linux, HP-UX, Solaris, and QNX, and can be used as a replacement for the aging Interchange software by Allen-Bradley. PLCIO supports the Serial DF1 and Ethernet protocols of the Allen-Bradley PLC-5, SLC 500, ControlLogix, CompactLogix, and MicroLogix PLCs (using the CIP protocol), the Modicon Quantum PLC, the Wago 750-842 PLC, the Siemens Step5 PLC (using the AS511 serial protocol or via Ethernet using the INAT Echolink), and the Siemens Step 7 200, 300, and 400-series CPUs. It also supports communicating directly with an I/O bus terminal such as the Beckhoff BK9105 or the Phoenix Contact FL IL 24 BK ETH/IP-PAC.