News:

Calling all communications systems experts - please share your knowledge here!

Main Menu

PC 700, 900, 1100, 1200 Programming

Started by Dave Loucks, April 05, 2012, 08:41:40 AM

Previous topic - Next topic

Dave Loucks

Click here to watch a get-started demo on how to use the NLSW-784 software: http://pps2.com/v/1/nlsw784_intro.php
(I hadn't used it in over 25 years so was a little rusty... as you'll see in my demo! :) )

In case anyone was trying to troubleshoot a ladder diagram from one of these processors and you were looking for information on what the special functions (TS, UC, LC, etc.) on the printout meant, you can download a copy of the 1200/1250 manual from http://www.pps2.com/communications/PC1200.php.

The PC700, 900, 1100, 1200 and 1250 shared the same programming language.  In fact, programs were portable to the extent that they could be downloaded from one and uploaded to another, just so long as the functions and/or I/O count you chose didn't exceed the limitations of a particular model of processor.  If you need a 700/900 Hardware / Systems Manual, you can download that at the end of this article.

Programming Software
You can also download a copy of the Numa-Logic programming software from https://app.box.com/s/9k64uda58uybr45xhjnh7xwj6uvzl58h.  Note that 783, 783U and 784 software were simply different combinations of options.  All versions performed ladder programming (both on and offline) within the PLC.  The ability to document those ladder diagrams with custom text was an optional feature of some.  See table below:






Westinghouse
Catalog #

Programming
Document
Ladder
Offline
Utilities
NLSW-783YesNoNo
NLSW-783UYesNoYes
NLSW-784YesYesNo
NLSW-786YesYesYes

In addition to the "offline" utilities, Westinghouse offered an add-on program called WHO (Westinghouse Help Outline) that provided online utilities.  These included:

  • Ability to remotely start and stop the PLC over the network
  • Advanced programming, tuning and visualization for the PID function in the PLCs
  • Search for used coil references
  • Search for used special and literal functions
  • Connect to a remote PLC via dial-up modem
  • Connect to a remote PLC via the PC1100/1200 LAN
... and many more.

WHO was a TSR (terminate and stay resident) program that was loaded under DOS before starting the NLSW ladder programming programs.  When resident, WHO would monitor certain keys (see help files at http://pps2.com/files/nl/) and "pop up" when those keys were triggered.

To use this software you needed a computer that could run (or emulate) an IBM PC running MS-DOS.  Because NLSW was written in 8088 assembly language, it wrote directly to hardware ports on the computer to control video, keyboard and serial port.  Regarding serial ports, your computer running the NLSW software needs an EIA-232 port (either actual or emulated via USB or Ethernet terminal server) to connect to the Numa-Logic PlCs.  Many companies sell USB to EIA-232 converters for computers, so you many need to purchase one if your computer does not include a 232 port built in.  Another option for obtaining a 232 serial port is to connect a terminal server to the PLC and then connect the PLC to Ethernet.

Note that the 232 port pin-outs vary by device.  On the Numa-Logic PLCs, 25-pin ports were used on the CPUs and they were wired as DTE (Data Terminal Equipment, meaning data output on TxD pin 2, data input on RxD pin 3, etc.)  Your computer (or 232 adapter) will almost certainly have a 9-pin port, and it too will be wired as DTE, although the pin numbers for a 9-pin 232 port are different than a 25-pin 232 port.  The table below gives the pin names and numbers for both 9 and 25-pin ports.

You will need a 9-to-25 pin "cross-over" or "null-modem" cable to connect between your computer and the PLC.  Refer to Section 4 and Appendix E of http://www.pps2.com/communications/files/NumaLogicCommOverview.pdf for more details on the EIA-232 pinout for these PLCs.  Pay particular attention to the fact that the PLC 232 port pins 5 (Clear to Send) and 6 (Data Set Ready) must be high for the PLC to respond to any message.  These "modem control signals" are used to buffer traffic over ports that may become congested and the receiving device (a modem, usually) needs to tell the data terminal to stop sending data.  For a direct connection to a PC this is not a problem.

The simplest method of insuring pins 5 and 6 are high is to jumper pin 4 (Request to Send) to pin 5 (Clear to Send) and separately jumper pin 6 (Data Set Ready) to pin 20 (Data Terminal Ready) on the PLC.  Likewise, the NLSW-784 software honors those signals on the 9-pin side too.  Some software packages (but not NLSW784) required that the computer's Data Carrier Detect (DCD, pin 8 on a 25-pin port or pin 1 on a 9-pin port).  An example of such a cable appears here:

For the Numa-Logic to PC connection, the PLC 25-pin side of the cable needs to be a female connector.  The PC 9-pin side of the cable also needs to be a female connector.


9-pin EIA-232 Port (configured as DTE and usually male connectors on device requiring female cable connector)



   
   
   
   
   
   
   
   
   
   
Pin No.NameDirNotes/Description
1DCDINData Carrier Detect. Raised by DCE when modem synchronized.
2RDINReceive Data (a.k.a RxD, Rx). Arriving data from DCE.
3TDOUTTransmit Data (a.k.a TxD, Tx). Sending data from DTE.
4DTROUTData Terminal Ready. Raised by DTE when powered on. In auto-answer mode raised only when RI arrives from DCE.
5SGND-Ground
6DSRINData Set Ready. Raised by DCE to indicate ready.
7RTSOUTRequest To Send. Raised by DTE when it wishes to send. Expects CTS from DCE.
8CTSINClear To Send. Raised by DCE in response to RTS from DTE.
9RIINRing Indicator. Set when incoming ring detected - used for auto-answer application. DTE raised DTR to answer.

25-pin EIA-232 Port (configured as DTE and usually male connectors on device requiring female cable connector)



   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Pin No.NameDirNotes/Description
1PGNDINProtective ground.  Cable shield connected here.
2TDOUTTransmit Data (a.k.a TxD, Tx). Sending data to DCE from DTE.
3RDINReceive Data (a.k.a RxD, Rx). Arriving data from DCE.
4RTSOUTRequest to Send.  Raised by DTE when it wishes to send.  Expects CTS from DCE.
5CTSINClear to Send. Raised by DCE in response to RTS from DTE
6DSRINData Set Ready. Raised by DCE to indicate ready.
7SGND-Signal ground / common for all other signals.
8DCDINData Carrier Detect. Raised by DCE when modem synchronized.
9+OUT+VOLTAGE.  Defined but typically not implemented.
10-OUT-VOLTAGE.  Defined but typically not implemented.
11--Unassigned pin.  No connection.
12sDCDINSecondary Data Carrier Detect (or Received Line Signal Detector)
13sCTSINSecondary Clear To Send.
14sTDOUTSecondary Transmit Data (sTxD).
15TSETINTransmitter Signal Element Timing.
16sRDINSecondary Received Data (sRxD).
17RSETINReceiver Signal Element Timing.
18LLOUTLocal Loopback.
19sRTSOUTSecondary Request To Send.
20DTROUTData Terminal Ready.  Typically raised when the data terminal (PC or PLC) is powered and ready.
21RLOUTRemote Loopback.
22RIINRing Indicate.  Raised by DCE and sent to DTE to tell DTE to get ready... a call is coming.
23sCTS-Data Signal Rate Selector. Can sent by either DCE or DTE.
24ETSETOUTExternal Transmit Signal Element Timing.
25TMINTest Mode.

Modems
If connecting a program loader through a modem, that modem will almost always have its 232 port wired as DCE (Data Communiations Equipment).  When the original 232 standard was written, 232 was envisioned as a short distance (50 feet max.) cable that would connect DTE (computers, printers, etc.) to DCE (modems).  The plan was to use a straight-through 25-pin to 25-pin cable to connect DTE and DCE devices together.

9-pin EIA-232 Port (configured as DCE and usually female connectors on device requiring male cable connector)



   
   
   
   
   
   
   
   
   
   
Pin No.NameDirNotes/Description
1DCDOUTData Carrier Detect. Raised by DCE when modem synchronized.
2RDOUTReceive Data (a.k.a RxD, Rx). Transmitted data from DCE.
3TDINTransmit Data (a.k.a TxD, Tx). Data input from DTE.
4DTRINData Terminal Ready. Raised by DTE when powered on and monitored by DCE.
5SGND-Ground
6DSROUTData Set Ready. Raised by DCE to indicate ready.
7RTSINRequest To Send. Raised by DTE when it wishes to send. Monitored by DCE.
8CTSOUTClear To Send. Raised by DCE in response to RTS from DTE.
9RIOUTRing Indicator. Raised by DCE when incoming ring detected - used for auto-answer application. DTE raises DTR to answer.

25-pin EIA-232 Port (configured as DCE and usually female connectors on device requiring male cable connector)



   
   
   
   
   
   
   
   
   
   
   
Pin No.NameDirNotes/Description
1PGNDINProtective ground.  Cable shield connected here.
2TDINTransmit Data (a.k.a TxD, Tx). Sending data to DCE from DTE.
3RDOUTReceive Data (a.k.a RxD, Rx). Data sent from DCE.
4RTSINRequest to Send.  Raised by DTE when it wishes to send and monitored by DCE.  DCE sends CTS in response.
5CTSOUTClear to Send. Raised by DCE in response to RTS from DTE
6DSROUTData Set Ready. Raised by DCE to indicate ready.
7SGND-Signal ground / common for all other signals.
8DCDOUTData Carrier Detect. Raised by DCE when modem synchronized (carrier detected).
20DTRINData Terminal Ready.  Typically monitored by DCE to answer phone when raised by DTE.
22RIINRing Indicate.  Raised by DCE and sent to DTE to tell DTE to get ready... a call is coming.

Dave Loucks

#1
Note: During the instructions below, you will see times where function keys must be pressed.  If after pressing a function key it only flashes (and no other action seems to take place), you must confirm it by next pressing the <Enter> or you can cancel it by pressing <backspace>.  Pressing <Esc> returns you to the main menu.

Save Program to Disk

  • (Shown using DOSBox emulation on a Windows 8.1 machine) Using C: and CD... commands in DOS, navigate to the directory where you have stored DOC784.exe.  Type doc784 from the DOS prompt and press Enter.


    You will be brought to the main menu.


    To bring up the list of keyboard shortcuts, you can press ?


  • Unless you are connected with an actual Westinghouse programmable controller (700, 900, 1100, 1200, 1250), it will be better to switch the software into offline mode.  Press the F5 Executive Functions key, then select the F2 Online/Offline key.


    Press the F2 Offline key.


    Using the keyboard arrow keys, select the controller type and memory.  Note: the PC1200/1250 choice is not shown.  As long as the 1200 program is 8K (16-bit) words or less and 32 analog I/O or less, you can chose the PC700 with "All SFs (special functions)".


    If you know the actual target controller, chose F1 default special functions. Changing these settings doesn't affect the program in the offline machine, rather it only prevents you from selecting a special function that is not available in the target controller.  If you are only editing an existing program, selecting F3 configure all special functions will insure that the program stored on disk (if you have a disk) will not be rejected as having "unsupported special functions".  For this demonstration, assume F1 default SFs was chosen.  Select F1 yes to continue, then press enter.  Press <Esc> (or press F10 three times) to return to the main menu.



    Note:
    Besides special functions being different in different processors, each processor supported different amounts of I/O and internal registers.  The PC-1100 programmable controller was available in four operational memory sizes: 512, 1536, 2560 and 3584 words of RAM. Each PC-1100 memory configuration supported 64 discrete inputs, 64 discrete outputs, 8 register inputs, and 8 register outputs. Additionally, the PC-1100 supported 64 or 192 internal logic coils (depending on software level). Up to 1792 holding registers are supported, depending on memory size.

    The PC-1200 was available with 2K, 4K, 8K, or 16K words of RAM. The PC-1200-1020 and -1040 supported 64 discrete inputs, 64 discrete outputs, 32 register inputs, 32 register outputs, and 960 internal logic coils. The PC-1200-1041, 1042, and 1043 supported 128 discrete inputs, 128 discrete outputs, 64 register inputs, 64 register outputs, and 896 internal logic coils. Up to 1792 holding registers were supported in all versions of the PC-1200.

    The PC-1250 was available with 8K or 16K words of RAM. The PC-1250 supported 256 discrete inputs, 256 discrete outputs, 128 register inputs, 128 register  outputs, and 768 internal logic coils. Up to 1792 holding registers are supported.

    Because some of these sizes were larger than what was possible to use offline, it is necessary when working on programs with more than 32 analog inputs + 32 analog outputs and more than 8K of program to only edit these programs when connected directly to such a programmable controller.  This shouldn't be a problem since most actual programs were smaller than these limits, but it is important to understand these restrictions.

  • Now that the system is configured for offline operation, press the F3 key on your keyboard (archive) to switch to the mode that allows storing and restored controller programs to/from disk.


  • Select F2 disk storage.



  • Select whether you wish to copy a program to or from disk.
    Record: PLC -> Disk (F3 - Load)
    Load: Disk -> PLC (F1 - Record)
    Press enter after selecting.

    Verify compares the two and alerts if there are errors.
    F4 - Utils: View directory, erase files or change directory
    F5 - Dir: Allows displaying various disk directories
    F6 - Erase: Allows erasing a file on any directory (or the default directory)
    F7 - Change Directory: Self explanatory
    F9 - Go to Document: Allows switching on documentation features (giving I/O and logic rungs specific names that are cross-referenced to the internal memory name)

    Note:
    When recording memory to the disk, the system will ask if you wish to store all memory or only the highest holding register referenced within your code.  The reason it asks is that while you may not have an absolute reference to a register above a certain value documented within your code you may be using indirect addressing to read or write memory at any arbitrary location within the processor.

    If in doubt, chose F2 - All registers, then press enter.


    Once finished pressed the <backspace> key and you are presented with a verify menu.

    Select F2 - Registers and Ladder if you were able to select an offline processor that exactly matched your actual in-the-field processor.  If not, select F1- Ladder (you'll get an error message about holding register boundaries not matching, but continue anyway).

    Press <backspace> to return to the disk archive menu, or press <Esc> to return to the main menu.