Stype Specification

Prepared by: Srini Komandur

IMPACT SYSTEMS Inc.

1075 E. Brokaw Rd.

San Jose, CA 95131

(408) 293-7000

April 14, 1988

1.Introduction

This document describes the hardware, handshaking protocols and message formats to be used to achieve a data link between a Host computer and Impact's link interface computer on CD Net 2. The host computer system can send and receive messages from the Impact Moisture, Caliper, & Weight systems through a single link interface.

The Host system may send actual setpoints to the actuator to be acted upon without question or modification. Such setpoints are usually in the form of percentages of full power or a delta position change. In this situation, the Host system will be responsible for all operator interface functions necessary for control of that actuator.

The Host system can send profiles and any other incidental data that will allow the Impact system to determine its own setpoints. In this situation, the Impact system is responsible for some or all of the operator interface functions necessary for control of the actuator.

2.Link Hardware

The data link between the Host and Impact systems will be a half duplex, asynchronous, RS-232 link capable of running at 300, 600,900,1200,2400,4800,9600 baud, with the actual rate determined by the Host system. Impact will furnish one modem for each end of the link. Each modem is a self contained unit with approximate dimensions of 3 X 5 X 8 inches. The modems are easily mounted in or near the associated computer cabinet and require only 110V AC power. The connection between the Host computer and the modem is made through a standard 25 pin male D type connector with signal ground on pin 7, transmitted data (from Host to Impact) on pin 2 and received data on pin 3. No other handshaking signals are necessary for the modem to operate.

3.Handshaking protocols

The Host system will be considered the superior station on the link and will initiate all message sequences. The Impact system will transmit only when it is requested to do so. The Impact system will only return a single message in response to a request for information. If the requested information requires more than one response message from Impact, the Host system must request each part individually.

If the Impact system detects an error in any message it receives, it will respond with the negative acknowledge character (lower case 'n'). Otherwise, it will respond with the positive acknowledge character (lower case 'y').

If the Impact system detects an error in a received message prior to reception of the entire message, the Impact system will wait until the entire message has been received before returning the negative acknowledge character. This wait interval is determined by a timer that is set by the Impact system whenever it detects the start of transmission character (lower case 's'). The length of this timer is a function of baud rate and will be as follows:

88.0sec for 600 baud

44.0sec for 1200 baud

22.0sec for 2400 baud

11.0sec for 4800 baud

5.50sec for 9600 baud

No single message should be so long that the time out will expire before the message is completely transmitted.

The Host system will not return either the positive or negative acknowledge character to the Impact system. If the Host system receives a message with a proper checksum, the transaction will be considered complete at that point. If the Host system receives a message with an improper checksum, the Host system may repeat the previous message sequence in its entirety or take whatever other action it deems appropriate. In this way the Host system will be in complete control of the number of times a re-transmission is attempted, and the Impact system will always be ready to accept or transmit any message regardless of any previous errors.

In the event of time out or excessive transmission repetition, it will be the responsibility of the Host system to restore communications. In the event of "light traffic" the superior station (i.e.Host) will send the "request for status" message to the Impact system once every 20 seconds. This is done in order to monitor the integrity of the link and the status of the Impact system.

4.General Message Format

Each message will be sent as a string of printable ASCII characters preceded by a carriage return (0D hex) and line feed (0A hex). Each character will have 7 or 8 data bits, one start bit, one stop bit and even, odd or no parity. A printable character is defined to be one that is represented by hte hex range from 20(space) through 7A (lower case "z") inclusive.

For the purposes of the following discussion, the term "hex digit" will be defined as a quantity consisting of four binary digits. Prior to transmission across the link, a hex digit will be converted to an ASCII character according to the following table:

Hex Digit Ascii Char. Hex Digit Ascii Char.

0000 0 1000 8

0001 1 1001 9

0010 2 1010 A

0011 3 1011 B

0100 4 1100 C

0101 5 1101 D

0110 6 1110 E

0111 7 1111 F

The general purpose message format is as follows:

s(MMM)NNNBBBB......BBBBtWWWWx

Where

"s" Start of transmission character.

"(" Left delimiter for the message type number.

"MMM" 3 digit ASCII decimal number in the range 001 - 999 giving the message type.

")" Right delimiter for the message type number.

"NNN" 3 digit ASCII decimal number in the range 000 - 999 giving the umber of following characters to be expected before the end of message body character is received. This will be the number of B's in the above message format.

"B" Any character in the body of the message.

"t" End of message body character.

"WWWW" 4 digit ASCII hex number (most significant digit first) giving the 16 bit CRC checksum. The checksum will be computed using the 7 bit ASCII representation of all characters from the "s" through the "t" inclusive.

"x" End of tran

Transmission character.

The characters "s", "t", "x", "n", "y" will never appear in the body of a message.

5.Exception Handling

It is the responsibility of the Host system to determine if the data link is working properly and to notify the operator if any remedial action is necessary

.

6.CRC Checksum Generation Algorithm

The defining pseudo code for the CRC checksum routine is given below. All variables are 16 bits in length. Message data bytes are to be masked to their 7 bit ASCII form and extended to become 16 bit quantities with zeros in the nine most significant bit positions.

clear old CRC

get start address of data

DO WHILE (data still available for processing)

exclusive OR data with old CRC

get data byte (mask to 7 bits and zero fill msb)

save in XOR1

use L.S.four bits of XOR1 to access code in CTABL1

save in CODE1

shift XOR1 right four places

use L.S.four bits of result to access code in CTABL2

save in CODE2

exclusive OR CODE1 with CODE2

save in XOR2

logically shift old CRC right eight places

exclusive OR result with XOR2

save in old CRC

END DO

CRC GENERATION TABLES

CTABL1

+0 DATA 00000

+1 DATA 0C0C1

+2 DATA 0C181

+3 DATA 00140

+4 DATA 0C301

+5 DATA 003C0

+6 DATA 00280

+7 DATA 0C241

+8 DATA 0C601

+9 DATA 006C0

+10 DATA 00780

+11 DATA 0C741

+12 DATA 00500

+13 DATA 0C5C1

+14 DATA 0C481

+15 DATA 00440

CTABL2

+0 DATA 00000

+1 DATA 0CC01

+2 DATA 0D801

+3 DATA 01400

+4 DATA 0F001

+5 DATA 03C00

+6 DATA 02800

+7 DATA 0E401

+8 DATA 0A001

+9 DATA 06C00

+10 DATA 07800

+11 DATA 0B401

+12 DATA 05000

+13 DATA 09C01

+14 DATA 08801

+15 DATA 04400

All values in the above tables are in Hexadecimal representation.

7.Architectural Overview

Impact's system architecture has evolved to accommodate multiple moisture, caliper and weight control computers and actuators on a single paper machine. Because of this distributed architecture no single computer knows the overall system status, and actuator control messages must be routed to the appropriate control computer. In order to have a stable reference point within this complexity, the concept of "control groups" was adopted. A control group is defined to be a single profiler or a group of profilers wired together to act as a unit. A single computer may control more than one control group, and a single control group may require more than one control computer. The host computer should not need to know which computer(s) is(are) in control of which actuator(s). The host computer simply needs to know the number of the control group with which it needs to communicate.

When the host computer is performing the control calculations it will send a separate array of setpoint values to each control group. When the host computer requests status or a read back of setpoints it will send a separate request to each control group.

In order for command and request messages from the host to reach the appropriate Impact control group, the control group number must be included in each message. The addition of a control group number to each message constitutes one major difference between the current and old specification. A second major difference is in the messages that send status back to the host system is now furnished for each control group individually, and the concept of overall system status no longer applies.

Impact no longer supports the older style messages for new installations. If this causes great difficulty for a user of this specification, please contact Impact's San Jose, California office.

8.Message Format

Refer to the main body of the specification. Note that the following message definitions should all be preceded by a Carriage Return (0x0D) and Line Feed (0x0A).

9.Field Definitions

Field G in some of the definitions indicates the Control Group number. It is an ASCII digit in the range '1' - '9'.

Field NNN in some of the definitions indicates the length of the message in the range '000' - '999'. See the main part of the specification for information on how to calculate message length.

Field FFF in some of the definitions indicates the position number in ASCII of the first item in the array.

Field LLL in some of the definitions indicates the position number in ASCII of the last item in the array.

Field WWWW is the CRC in ASCII as defined in the main body of the specification.

10.Infrapac Moisture System

Profile Information

s(006)011/G/FFF/LLL/tWWWWx

Host sends start & end data box #.

s(007)NNN/G/FFF/LLL/XX.X/...../XX.X/tWWWWx

Host sends profiles.

Where XX.X is an ASCII decimal number in the range 0 to 99.9 giving the percent moisture value for the moisture array position.

Setpoint Information

s(033)NNN/G/FFF/LLL/XX.X/...../XX.X/tWWWWx

Host sends controller generated power setpoints for a control group.

s(034)011/G/FFF/LLL/tWWWWx

Host requests power setpoints.

s(035)NNN/G/FFF/LLL/XX.X/...../XX.X/tWWWWx

Host receives power setpoints in response to the request.

s(053)NNN/G/FFF/LLL/XX.X/...../XX.X/tWWWWx

Host sends operator generated power setpoints for a control group.

Where XX.X is an ASCII decimal number in the range 0 to 99.9 giving the percent power setpoint for the corresponding control group zone.

Local / Remote

s(030)005/G/M/tWWWWx

Host sends Local/Remote for a control group.

where M is

'0' Remote Mode.

'1' Local Mode.

Control Mode

s(015)005/G/M/tWWWWx

Host sends Control Mode for a control group.

s(016)003/G/tWWWWx

Host requests current control mode for a control group.

s(017)005/G/M/tWWWWx

Host receives current Control Mode for a control group in response to the request.

where M is

'1' Normal CD control mode.

'2' Electricity Minimize.

'3' Production Maximize.

'4' CD/MD dual mode.

'5' Average Loading.

Moisture Target

s(036)017/G/FFF/LLL/XX.XX/tWWWWx

Host sends control group target.

Where XX.XX is an ASCII decimal number in the range 0 to 99.99 giving the percent moisture target for the corresponding control group.

Moisture Base Power

s(037)017/G/FFF/LLL/XX.XX/tWWWWx

Host sends control group base power.

Where XX.XX is an ASCII decimal number in the range 0 to 99.99 giving the percent moisture base power for the corresponding control group.

Last Scan Average

s(038)017/G/FFF/LLL/XX.XX/tWWWWx

Host sends control group last scan average.

Where XX.XX is an ASCII decimal number in the range 0 to 99.99 giving the last scan average of the moisture scanner for the corresponding control group.

Control group Status

s(031)011/G/000/000/tWWWWx

Host requests current control group status.

s(032)030/G/FFF/LLL/F1/..../F10/tWWWWx

Host receives current control group status in response to the request.

where F1 ... F10 are

F1 = 1 = Control group was restarted since last status request.

F2 = 1 = Control group power supply breaker is tripped.

F3 = 1 = Control group is retracted.

F4 = 1 = Control group is in local mode (remote = 0).

F5 = 1 = At least one power supply is over temperature.

F6 = 1 = At least one DAC board has incorrect current level.

F7 = 1 = At least one main circuit breaker is tripped.

F8 = 1 = Last setpoint update rejected : system in local mode.

F9 = 1 = Last setpoint update rejected : invalid zone number.

F10 = 1 = Last setpoint update rejected : invalid zone data.

Zone Status

s(040)011/G/FFF/LLL/tWWWWx

Host requests current Auto/Manual status.

s(041)NNN/G/FFF/LLL/M1/..../Mn/tWWWWx

Host receives current Auto/Manual status in response to the request.

s(042)NNN/G/FFF/LLL/M1/..../Mn/tWWWWx

Host sends Auto/Manual status.

where M1 ... Mn are

'0' Automatic mode.

'4' Manual mode.

11.Therma-Jet Caliper System

Profile Information

s(106)011/G/FFF/LLL/tWWWWx

Host sends start & end data box #.

s(107)NNN/G/FFF/LLL/XX.XX/...../XX.XX/tWWWWx

Host sends profiles (mils).

Where XX.XX is an ASCII decimal number in the range 0 to 99.99 giving the caliper value in thousandths of an inch for the corresponding caliper array position.

s(114)NNN/G/FFF/LLL/XXXX/...../XXXX/tWWWWx

Host sends profiles (micron or other units).

Where XXXX is an ASCII decimal number in the range 0 to 9999 giving the caliper value in micron or other units for the corresponding caliper array position.

Setpoint Information

s(133)NNN/G/FFF/LLL/XX.XX/...../XX.XX/tWWWWx

Host sends controller generated power setpoints for a control group.

s(153)NNN/G/FFF/LLL/XX.XX/...../XX.XX/tWWWWx

Host sends operator generated power setpoints for a control group.

s(134)011/G/FFF/LLL/tWWWWx

Host requests power setpoints.

s(135)NNN/G/FFF/LLL/XX.XX/...../XX.XX/tWWWWx

Host receives power setpoints in response to the request.

Where XX.XX is an ASCII decimal number in the range 0 to 99.99 giving the percent power setpoint for the corresponding control group zone.

Local / Remote

s(130)005/G/M/tWWWWx

Host sends Local/Remote for a control group.

where M is

'0' Remote Mode.

'1' Local Mode.

Target

s(136)018/G/FFF/LLL/XX.XX/tWWWWx

Host sends control group target.

Where XX.XX is an ASCII decimal number in the range 0 to 999.99 giving the caliper percent power target for the corresponding control group.

Control group Status

s(131)011/G/000/000/tWWWWx

Host requests current control group status.

s(132)030/G/FFF/LLL/F1/..../F10/tWWWWx

Host receives current control group status in response to the request.

where F1 ... F10 are

F1 = 1 = Control group was restarted since last status request.

F2= 1 = At least one power supply breaker is tripped.

F3 =1= Control group is retracted.

F4=1= Control group is in local mode (remote = 0).

F5 = 0 = Unused.

F6= 0 = Unused.

F7= 0 = Unused.

F8= 1 = Last setpoint update rejected : system in local mode.

F9= 1 = Last setpoint update rejected : invalid zone number.

F10=1 = Last setpoint update rejected : invalid zone data.

Zone Status

s(140)011/G/FFF/LLL/tWWWWx

Host requests current Auto/Manual status.

s(141)NNN/G/FFF/LLL/M1/..../Mn/tWWWWx

Host receives current Auto/Manual status in response to the request.

s(142)NNN/G/FFF/LLL/M1/..../Mn/tWWWWx

Host sends Auto/Manual status.

where M1 ... Mn are ASCII decimal number in the range 0 to 6.

'0' Zone in auto & no error.

'1' Zone in auto & open circuit.

'2' Zone in auto & short circuit.

'3' unused.

'4' Zone in manual & no error.

'5' Zone in manual & open circuit.

'6' Zone in manual & short circuit..

12.Dyna step Weight System

Profile Information

s(206)011/G/FFF/LLL/tWWWWx

Host sends start & end data box #.

s(207)NNN/G/FFF/LLL/XXXX.XX/...../XXXX.XX/tWWWWx

Host sends profiles (pounds).

Where XXXX.XX is an ASCII decimal number in the range 0 to 9999.99 giving the weight profile for the corresponding weight array position.

s(214)NNN/G/FFF/LLL/XXXXXX.XX/...../XXXXXX.XX/tWWWWx

Host sends profiles (gsm or other units).

Where XXXXXX.XX is an ASCII decimal number in the range 0 to 999999.99 giving the weight profile for the corresponding weight array position.

Setpoint Information

s(233)NNN/G/FFF/LLL/SXXXX.XX/...../SXXXX.XX/tWWWWx

Host sends controller generated delta setpoints for a control group.

Where delta setpoint is the incremental values from the current slice position.

s(253)NNN/G/FFF/LLL/SXXXX.XX/...../SXXXX.XX/tWWWWx

Host sends operator generated setpoints for a control group.

Where setpoint is the absolute value from the zero slice position.

s(234)011/G/FFF/LLL/tWWWWx

Host request setpoints.

s(235)NNN/G/FFF/LLL/SXXXX.XX/...../SXXXX.XX/tWWWWx

Host receives setpoints in response to the request.

Where XXXX.XX is an ASCII decimal number in the range 0 to 9999.99 giving the setpoint for the corresponding control group zone and S represents the sign of the data plus or minus.

Local / Remote

s(230)005/G/M/tWWWWx

Host sends Local/Remote for a control group.

where M is

'0' Remote Mode.

'1' Local Mode.

Weight Target

s(236)018/G/FFF/LLL/XXXX.XX/tWWWWx

Host sends control group target.

Where XXXX.XX is an ASCII decimal number in the range 0 to 9999.99 giving the weight target for the corresponding control group.

Control group Status

s(231)011/G/000/000/tWWWWx

Host requests current control group status.

s(232)030/G/FFF/LLL/F1/..../F10/tWWWWx

Host receives current control group status in response to the request.

where F1 ... F10 are

F1, = 1 = , Control group was restarted since last status request.

F2, = 1 = , At least one power supply breaker is tripped.

F3, = 1 = , Control group is retracted.

F4, = 1 = , Control group is in local mode (remote = 0).

F5, = 0 = , Unused.

F6, = 0 = , Unused.

F7, = 0 = , Unused.

F8, = 1 = , Last setpoint update rejected : system in local mode.

F9, = 1 = , Last setpoint update rejected : invalid zone number.

F10, = 1 = , Last setpoint update rejected : invalid zone data.

Zone Status

s(240)011/G/FFF/LLL/tWWWWx

Host requests current Auto/Manual status.

s(241)NNN/G/FFF/LLL/M1/..../Mn/tWWWWx

Host receives current Auto/Manual status in response to the request.

s(242)NNN/G/FFF/LLL/M1/..../Mn/tWWWWx

Host sends Auto/Manual status.

where M1 ... Mn are

'0' Automatic mode.

'1' Automatic mode but zone disabled.

'2' Automatic mode but zone failed AND disabled.

'3' unused.

'4' Manual mode.

'5' Manual mode but zone disabled.

'6' Manual mode but zone failed AND disabled.

13.Common message to all Systems

Grade Class

s(900)NNN/XXX...XXX/tWWWWx

Host sends grade code.

s(901)000tWWWWx

Host requests current grade code.

s(902)NNN/XXX...XXX/tWWWWx

Host receives current grade code in response to the request.

where "XXX...XXX" is the grade code. The grade code is a string consisting of any characters in the hexadecimal range from 20 to 7A inclusive, except 's', 't', 'x', 'y', or 'n'.

Wire speed

s(903)008/XXXX.X/tWWWWx

Host sends wire speed.

s(904)000tWWWWx

Host requests wire speed.

s(905)008/XXXX.X/tWWWWx

Host receives wire speed in response to the request.

Where XXXX.X is an ASCII decimal number in the range 0 to 9999.9 represents the wire speed.