Applies To:
  • CitectSCADA 5.xx
  • CitectHMI 5.xx

In the 'About Print Management' section of the Online Help (taken from p. 454 in our Citect User's Guide manual), it explains that the printer must either be on a local port or configured as a 'captured' network printer if you are to bypass the Windows print management by writing the output to a file. Since the Online Help specifically mentions that the "printer should be a local [or captured] printer - not on the network server", how does one set up a 'captured' network printer? 

First, it may help to explain what the Windows printer driver is designed to do. Since the printer driver waits until the entire page is complete before printing anything, this method is deemed unsuitable when it comes to logging alarms or keyboard commands. The reason for this being that if the alarm frequency (the rate at which an alarm gets generated) exceeds the time the alarm data gets flushed to the printer, then each alarm is printed onto a new page, resulting in an excessive waste of paper. This flush time can be increased by modifying the [DEVICE]FlushTime parameter (which defaults to 10 seconds) in your CITECT.INI file. Please refer to KB article Q1113 for more details.

You should make sure you've already created an ASCII device in Citect to output all alarm information to the LPT1.DOS file (referencing port LPT1). For instructions on how to set this up, please refer to KB article Q2002. By using the following method, we can capture a printer to the local port (LPT1 or LPT2) so that it will behave as if it were connected to LPT1. Establish a persistent connection using the NET.EXE program (resides in <C>:\<Windows>\System32 directory). To do so, use the following syntax at a command prompt (Start menu | Run... | CMD):

net use lpt<n>: \\<PrintServer>\<ShareName> /persistent:yes

To disconnect persistent LPT<n> connections, use the following syntax:

net use lpt<n> /delete