Você está na página 1de 244

'DQORDG

&20081,&$7,216
63(&,),&$7,21
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
&#0+'. /'#574'/'06 #0& %10641.
*175610 6':#5

&CP.QCF 
%1//70+%#6+105
52'%+(+%#6+10

2CTV 0WODGT 


4'8+5+10 
5WRRQTVU 5QHVYCTG 8GTUKQP  CPF CDQXG

5GRVGODGT 

;GCT  9CTTCPV[

6JG %QORCP[ TGRTGUGPVU CPF YCTTCPVU VJCV EQORWVGT RTQITCOU KP CP[ OGFKWO UQHVYCTG
HKTOYCTG CPF EQODKPCVKQPU VJGTGQH
K&GNKXGTCDNGUL OCPWHCEVWTGF D[ VJG %QORCP[ CPF
KPEQTRQTCVGF KPVQ QT UWRRNKGF D[ VJG %QORCP[ HQT WUG YKVJ IQQFU OCPWHCEVWTGF D[ VJG %QORCP[
YKNN WPFGT PQTOCN WUG CPF ECTG
K

TGEQIPK\G CPF CEEGRV FCVGU HCNNKPI QP QT CHVGT  ,CPWCT[ 

KK

TGEQIPK\G CPF CEEGRV VJG [GCT  CPF GXGT[ UWEEGGFKPI HQWTVJ [GCT CU NGCR [GCTU

KKK

TGEQIPK\G CPF CEEGRV  (GDTWCT[ KP VJG [GCT  CPF GXGT[ UWEEGGFKPI HQWTVJ
[GCT

KX

TGEQTF UVQTG RTQEGUU UGSWGPEG RTGUGPV CPF QWVRWV ECNGPFCT FCVGU CPF FCVC TGNCVGF
VQ FCVGU HCNNKPI QP QT CHVGT  ,CPWCT[  KP VJG UCOG OCPPGT CPF YKVJ VJG UCOG
HWPEVKQPCNKV[ CU VJG[ FQ QP QT DGHQTG  &GEGODGT  CPF YKVJQWV GTTQTU QT
QOKUUKQPU CPF

NQUG PQ HWPEVKQPCNKV[ YKVJ TGURGEV VQ VJG KPVTQFWEVKQP KPVQ VJGO QH FCVGU QT FCVC
TGNCVGF VQ FCVGU HCNNKPI QP QT CHVGT  ,CPWCT[ 

RTQXKFGF VJCV KP VJG ECUG QH CP[ PQPEQPHQTOKPI &GNKXGTCDNGU VJCV CTG TGVWTPGF VQ VJG %QORCP[
RTQORVN[ HQNNQYKPI FKUEQXGT[ QH VJG PQPEQPHQTOKV[ VJG %QORCP[ YKNN CV KVU QRVKQP CPF EQUV
TGRCKT QT TGRNCEG UWEJ &GNKXGTCDNG QT TGHWPF VQ VJG 2WTEJCUGT VJG RWTEJCUG RTKEG VJGTGHQT 6JKU
UJCNN DG VJG 2WTEJCUGTIU UQNG CPF GZENWUKXG TGOGF[ HQT DTGCEJ QH VJG HQTGIQKPI YCTTCPV[
0QVYKVJUVCPFKPI VJG HQTGIQKPI VJG %QORCP[ UJCNN PQV WPFGT CP[ EKTEWOUVCPEGU YJCVUQGXGT DG
NKCDNG HQT CP[ FGHGEVU QT GTTQTU ECWUGF D[ OCVGTKCNU QT YQTMOCPUJKR OCFG HWTPKUJGF QT URGEKHKGF
D[ VJG 2WTEJCUGT PQPEQORNKCPEG YKVJ VJG %QORCP[IU KPUVCNNCVKQP QT QRGTCVKQP TGSWKTGOGPVU
HCKNWTG VQ KPUVCNN CP[ TGXKUKQPU CPFQT WRITCFGU VQ VJG &GNKXGTCDNGU FGGOGF OCPFCVQT[ D[ VJG
%QORCP[ CP[ OQFKHKECVKQPU VQ &GNKXGTCDNGU PQV RTGXKQWUN[ CWVJQTK\GF D[ VJG %QORCP[ KP
YTKVKPI VJG WUG D[ VJG 2WTEJCUGT QH CP[ PQPCWVJQTK\GF URCTG QT TGRNCEGOGPV RCTVU KP EQPPGEVKQP
YKVJ VJG IQQFU WUGF KP EQPLWPEVKQP YKVJ VJG &GNKXGTCDNGU QT VJG WUG QH VJG &GNKXGTCDNGU YKVJ CP[
JCTFYCTG QT UQHVYCTG PQV UWRRNKGF D[ VJG %QORCP[ 6JG 2WTEJCUGT UJCNN CV CNN VKOGU TGOCKP UQNGN[
TGURQPUKDNG HQT VJG CFGSWCE[ CPF CEEWTCE[ QH CNN KPHQTOCVKQP UWRRNKGF D[ KV #P[ VJKTF RCTV[
EQPVGPV KP &GNKXGTCDNGU UJCNN ECTT[ QPN[ VJG YCTTCPV[ GZVGPFGF D[ VJG QTKIKPCN OCPWHCEVWTGT

6*' (14')1+0) %1056+676'5 6*' %1/2#0;I5 51.' #0& ':%.75+8'


9#44#06; +0 4'.#6+10 61 6*' 2'4(14/#0%' 1( 6*' &'.+8'4#$.'5 #5 +6
4'.#6'5 61 6*' %*#0)' (41/ ;'#4  61 ;'#4  14 6*' 1%%744'0%'
1( .'#2 ;'#45 6*'4'#(6'4 #0& 6*' 274%*#5'4I5 ':%.75+8' 4'/'&; (14
$4'#%* 6*'4'1( +0 01 '8'06 9+.. 6*' %1/2#0; $' .+#$.' (14 +0&+4'%6
%105'37'06+#. +0%+&'06#. 14 52'%+#. &#/#)'5 +0%.7&+0) .155 1( 75'
$75+0'55 +06'44726+10 14 .155 1( 241(+65 +44'52'%6+8' 1( 9*'6*'4 6*'
%1/2#0; *#& 016+%' 1( 6*' 2155+$+.+6; 1( 57%* &#/#)'5
6JG HQTGIQKPI YCTTCPV[ UJCNN TGOCKP XCNKF WPVKN VJG NCVGT QH &GEGODGT   QT QPG [GCT CHVGT
VJG FCVG VJCV VJG &GNKXGTCDNG YCU UJKRRGF

&#0+'. +0&7564+'5 +0%


&CP.QCF 
%1//70+%#6+105
52'%+(+%#6+10

016+%'
&#0+'. +0&7564+'5 +0% #0& &#0+'. /'#574'/'06 #0& %10641.

&#0+'. 5*#.. 016 $' .+#$.' (14 6'%*0+%#. 14 '&+614+#. '44145 +0 6*+5
/#07#. 14 1/+55+105 (41/ 6*+5 /#07#. &#0+'. /#-'5 01 9#44#06+'5
':24'55

14

+/2.+'&

+0%.7&+0)

6*'

+/2.+'&

9#44#06+'5

1(

/'4%*#06#$+.+6; #0& (+60'55 (14 # 2#46+%7.#4 274215' 9+6* 4'52'%6


61 6*+5 /#07#. #0& +0 01 '8'06 5*#.. &#0+'. $' .+#$.' (14 #0;
52'%+#. 14 %105'37'06+#. &#/#)'5 +0%.7&+0) $76 016 .+/+6'& 61
.155 1( 241&7%6+10 .155 1( 241(+65 '6%

241&7%6 0#/'5 75'& *'4'+0 #4' (14 /#07(#%674'4 14 5722.+'4


+&'06+(+%#6+10 10.; #0& /#; $' 64#&'/#4-54')+56'4'& 64#&'/#4-5
1( 6*'5' %1/2#0+'5

%12;4+)*6 l 
$; &#0+'. /'#574'/'06 #0& %10641.
*175610 6':#5 75#
#NN TKIJVU TGUGTXGF 0Q RCTV QH VJKU YQTM OC[ DG TGRTQFWEGF QT
EQRKGF KP CP[ HQTO QT D[ CP[ OGCPU  ITCRJKE GNGEVTQPKE QT
OGEJCPKECN  YKVJQWV HKTUV TGEGKXKPI VJG YTKVVGP RGTOKUUKQP QH
&CPKGN /GCUWTGOGPV CPF %QPVTQN *QWUVQP 6GZCU 75#

9#44#06;

&CPKGN /GCUWTGOGPV CPF %QPVTQN


&CPKGN YCTTCPVU CNN GSWKROGPV OCPWHCEVWTGF D[ KV VQ DG HTGG
HTQO FGHGEVU KP YQTMOCPUJKR CPF OCVGTKCN RTQXKFGF VJCV UWEJ GSWKROGPV YCU RTQRGTN[ UGNGEVGF
HQT VJG UGTXKEG KPVGPFGF RTQRGTN[ KPUVCNNGF CPF PQV OKUWUGF 'SWKROGPV YJKEJ KU TGVWTPGF
VTCPURQTVCVKQP RTGRCKF VQ &CPKGN YKVJKP VYGNXG
 OQPVJU QH VJG FCVG QH UJKROGPV
GKIJVGGP

OQPVJU HTQO FCVG QH UJKROGPV HQT FGUVKPCVKQPU QWVUKFG QH VJG 7PKVGF 5VCVGU  YJKEJ KU HQWPF CHVGT
KPURGEVKQP D[ &CPKGN VQ DG FGHGEVKXG KP YQTMOCPUJKR QT OCVGTKCN YKNN DG TGRCKTGF QT TGRNCEGF CV
&CPKGN U UQNG QRVKQP HTGG QH EJCTIG CPF TGVWTPUJKRRGF CV NQYGUV EQUV VTCPURQTVCVKQP #NN
VTCPURQTVCVKQP EJCTIGU CPF GZRQTV HGGU YKNN DG DKNNGF VQ VJG EWUVQOGT 9CTTCPVKGU QP FGXKEGU
RWTEJCUGF HTQO VJKTF RCTV[ OCPWHCEVWTGTU PQV DGCTKPI C &CPKGN NCDGN UJCNN JCXG VJG YCTTCPV[
RTQXKFGF D[ VJG VJKTF RCTV[ OCPWHCEVWTGT
6JG YCTTCPVKGU URGEKHKGF JGTGKP CTG KP NKGW QH CP[ CPF CNN QVJGT YCTTCPVKGU GZRTGUU QT KORNKGF
KPENWFKPI CP[ YCTTCPV[ QH OGTEJCPVCDKNKV[ QT HKVPGUU HQT C RCTVKEWNCT RWTRQUG

&CPKGN UJCNN DG NKCDNG QPN[ HQT NQUU QT FCOCIG FKTGEVN[ ECWUGF D[ KVU UQNG PGINKIGPEG &CPKGN U
NKCDKNKV[ HQT CP[ NQUU QT FCOCIG CTKUKPI QWV QH EQPPGEVGF YKVJ QT TGUWNVKPI HTQO CP[ DTGCEJ JGTGQH
UJCNN KP PQ ECUG GZEGGF VJG RTKEG CNNQECDNG VQ VJG GSWKROGPV QT WPKV VJGTGQH YJKEJ IKXGU TKUG VQ VJG
ENCKO &CPKGN U NKCDKNKV[ UJCNN VGTOKPCVG QPG [GCT CHVGT VJG FGNKXGT[ QH VJG GSWKROGPV GZEGRV HQT
QXGTUGCU FGNKXGTKGU CPF GZVGPFGF YCTTCPV[ RTQFWEVU CU PQVGF CDQXG
+P PQ GXGPV YJGVJGT CU C TGUWNV QH DTGCEJ QH YCTTCPV[ QT CNNGIGF PGINKIGPEG UJCNN &CPKGN DG NKCDNG
HQT URGEKCN QT EQPUGSWGPVKCN FCOCIGU KPENWFKPI DWV PQV NKOKVGF VQ NQUU QH RTQHKVU QT TGXGPWG NQUU
QH GSWKROGPV QT CP[ CUUQEKCVGF GSWKROGPV EQUV QH ECRKVCN EQUV QH UWDUVKVWVG GSWKROGPV HCEKNKVKGU
QT UGTXKEGU FQYPVKOG EQUVU QT ENCKOU QH EWUVQOGTU QH VJG RWTEJCUGT HQT UWEJ FCOCIGU

7DEOH RI &RQWHQWV

3UHIDFH

                                                     

*ORVVDU\                                                      

3URWRFRO 2YHUYLHZ                                              

0HVVDJH )UDPLQJ

                                             

&RPPXQLFDWLRQV 0HWKRGRORJ\                                     





&RPPXQLFDWLRQV 6WDUW8S                                   





$XWR0DQXDO &KDQJH2YHU                                  





&RPPXQLFDWLRQV )DLOXUH                                    





7UDQVDFWLRQ $XWKRUL]DWLRQ                                   





%DWFK $XWKRUL]DWLRQ                                        





(QG RI %DWFK                                             





(QG RI 7UDQVDFWLRQ

                                       





6ZLQJ$UP 3URFHVVLQJ 'RXEOH6LGH /RDG 5DFNV                





0DQXDO 2SHUDWLQJ 0RGH                                    



,PSOHPHQWLQJ WKH ,QWHUIDFH

                                      





&RQVWDQWV $OO 9HUVLRQV                                    





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





'DQ/RDG  Y 'DWDEDVH

                             





6FULSW 'DQ/RDG  Y 'DWDEDVH

                        





&5& &DOFXODWLRQ

                                      





&5& &RPSXWDWLRQ 0HWKRG DQG ([DPSOH                     





([DPSOH 3URJUDP                                         



&RPPXQLFDWLRQV &RPPDQGV                                      





3URPSW 5HFLSH K Y DQG DERYH

                       





5HTXHVW 6HOHFWHG 5HFLSH K Y DQG DERYH                





3URPSW $GGLWLYHV K Y DQG DERYH                       





5HTXHVW 6HOHFWHG $GGLWLYHV K Y DQG DERYH

            





7LPH2XW 2SHUDWLRQ K Y DQG DERYH

                  





$XWKRUL]H 7UDQVDFWLRQ K Y DQG DERYH                  





(QG 7UDQVDFWLRQ K Y DQG DERYH



                     



3URPSW 3UHVHW 9ROXPH K Y DQG DERYH

                





5HTXHVW 3UHVHW 9ROXPH K Y DQG DERYH



$XWKRUL]H %DWFK $K Y DQG DERYH

               



                     





6HW 'HQVLWLHV*UDYLWLHV %K Y DQG DERYH                 





6HW 7HPSHUDWXUHV &K Y DQG DERYH                     





(QG %DWFK 'K Y DQG DERYH                           





6WDUW %DWFK 5HPRWH 67$57 (K Y DQG DERYH           





6WRS %DWFK 5HPRWH 6723 )K Y DQG DERYH            





%DWFK 'DWD E\ &RPSRQHQW K Y DQG DERYH

             





$GGLWLYH 7RWDOL]HUV K Y DQG DERYH                     





5HTXHVW 6WDWXV K Y DQG DERYH                       





&OHDU 6WDWXV K Y DQG DERYH

                        





5HVHW 3ULPDU\ $ODUPV K Y DQG DERYH                  





0HWHU 7RWDOL]HUV K Y DQG DERYH

                     





&RPSRQHQW 7RWDOL]HUV K Y DQG DERYH                  





8QDXWKRUL]HG )ORZ K Y DQG DERYH

                   





'DWD &RGH 9DOXH K Y DQG DERYH                      





5HTXHVW 0HWHU 9DOXHV K Y DQG DERYH                  





5HTXHVW &RPSRQHQW 9DOXHV $K Y DQG DERYH             





5HTXHVW 3RZHU )DLO 'DWH DQG 7LPH %K Y DQG DERYH

      





'LVSOD\ 0HVVDJH &K Y DQG DERYH

                    





5HTXHVW .H\SDG 'DWD 'K Y DQG DERYH

                





5HTXHVW 7UDQVDFWLRQ 6WRUDJH 6WDWXV (K Y DQG DERYH      





7UDQVDFWLRQ 'DWD E\ &RPSRQHQW )K Y DQG DERYH

        





,QLWLDOL]H 7UDQVDFWLRQ 6WRUDJH K Y DQG DERYH            





6WDUW &RPPXQLFDWLRQV K Y DQG DERYH                  





5HTXHVW 3URJUDP &RGH 9DOXHV DQG $WWULEXWHV K Y DQG DERYH
                                                     





6HW 3URJUDP &RGH 9DOXH K Y DQG DERYH

              





0RGLI\ 3URJUDP &RGH $WWULEXWH K Y DQG DERYH           





5HTXHVW 9DOXH &KDQJHG $WWULEXWHV K Y DQG DERYH        





&OHDU 9DOXH &KDQJHG $WWULEXWHV K Y DQG DERYH          





&RQILJXUH 5HFLSH K Y DQG DERYH

                    





*HW 'DWH DQG 7LPH K Y DQG DERYH                    





6HW 'DWH DQG 7LPH K Y DQG DERYH

                   





5HTXHVW )LUPZDUH 9HUVLRQV $K Y DQG DERYH             





5HDG ,QSXW %K Y DQG DERYH

                         





:ULWH 2XWSXW &K Y DQG DERYH                         





'8$57 'LDJQRVWLF 'K Y DQG DERYH                    





$5&1(7 'LDJQRVWLF (K Y DQG DERYH                   





5HTXHVW &UDVK 'DWD )K Y DQG DERYH                   





5HVHW 8QLW K Y DQG DERYH                           





/DVW .H\ 3UHVVHG K Y DQG DERYH

                    





5$0 7HVWV K Y DQG DERYH

                         





6ZLQJDUP 6LGH K Y DQG DERYH                       







,QVWDOOHG %RDUGV K Y DQG DERYH

                     





&RQILJXUH K Y DQG DERYH

                          





:HLJKWV DQG 0HDVXUHV 6ZLWFK K Y DQG DERYH           





&KDQJH 2SHUDWLQJ 0RGH K Y DQG DERYH                





&OHDU 'LVSOD\ K Y DQG DERYH                         





5HTXHVW 6WRUHG 7UDQVDFWLRQ K Y DQG DERYH             





5HTXHVW 6WRUHG %DWFK $K Y DQG DERYH                  





(QKDQFHG 6WDUW &RPPXQLFDWLRQV %K Y DQG DERYH         





(QKDQFHG 5HTXHVW 6WDWXV &K Y DQG DERYH



5HSRUW $ODUP 'K Y DQG DERYH

             



                       



&RGHV DQG )ODJV                                              





6WDWXV )ODJV

                                           





'DQ/RDG  ([FHSWLRQ 5HVSRQVH &RGHV                    





$ODUP )ODJV                                             





.H\ &RGHV                                              





$GGLWLYH 6HOHFWLRQ &RGHV





3URJUDP &RGH $WWULEXWHV                                   





9DOLG &KDUDFWHUV LQ $OSKDQXPHULF 6WULQJV

                    



&RQQHFWLRQ WR DQ $XWRPDWLRQ 6\VWHP                              



                                 



'8$57 3LQ2XWV                                         





5HGXQGDQW &RPPXQLFDWLRQV /LQN                            



5HYLVLRQ ,QIRUPDWLRQ

                                          





5HYLVLRQ   0D\ 

                                





5HYLVLRQ   -XQH                                 





5HYLVLRQ   6HSWHPEHU                            





5HYLVLRQ   -DQXDU\ 

                            





5HYLVLRQ   0D\ 

                               





5HYLVLRQ   2FWREHU 



5HYLVLRQ   1RYHPEHU 




                            



                          



5HYLVLRQ   -XO\ 

                                



5HYLVLRQ   'HF 

                                



 5HYLVLRQ   0DU                                  



 5HYLVLRQ   6HS 



                               

7KLV SDJH LQWHQWLRQDOO\ OHIW EODQN

'DQLHO )ORZ 3URGXFWV


7KLV

3UHIDFH
GRFXPHQW

GHVFULEHV

WKH

PDVWHUVODYH

FRPPXQLFDWLRQV

SURWRFRO

EHWZHHQ

DQ

DXWRPDWLRQ V\VWHP PDVWHU DQG 'DQLHO )ORZ 3URGXFWV


'DQ/RDG  HOHFWURQLF SUHVHW
XQLW VODYH 

7KH 'DQ/RDG  HOHFWURQLF SUHVHW LV GHVFULEHG LQ PRUH GHWDLO LQ WKH

'DQ/RDG  5HIHUHQFH 0DQXDO 'DQLHO ,QGXVWULHV SDUW QXPEHU  


,Q WKLV GRFXPHQW QXPEHUV DUH GHFLPDO EDVH WHQ XQOHVV VXIIL[HG E\ DQ K LQ ZKLFK FDVH
WKH\ DUH KH[DGHFLPDO EDVH VL[WHHQ 
0RGEXV LV D UHJLVWHUHG WUDGHPDUN RI 0RGLFRQ ,QF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KLV SDJH LQWHQWLRQDOO\ OHIW EODQN

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

*ORVVDU\

DODUP

$ FRQGLWLRQ JHQHUDWHG E\ WKH 'DQ/RDG  ZKHQ LW GHWHFWV D IDLOXUH LQ


RSHUDWLRQ RU RSHUDWLQJ FRQGLWLRQV

DGGLWLYH

$ VXEVWDQFH LQMHFWHG LQ UHODWLYHO\ VPDOO TXDQWLWLHV LQWR D SURGXFW ZKLFK


FKDQJHV WKH TXDOLWLHV RI WKDW SURGXFW

DXWRPDWLRQ

$Q\ HTXLSPHQW GHVLJQHG WR LPSURYH VDIHW\ FRQWURO DFFHVV WR SURGXFW RU


IDFLOLWDWH PHDVXUHPHQW DW D EXON ORDGLQJ WHUPLQDO

EDWFK

$ GHOLYHU\ RI RQH RU PRUH SURGXFWV VHTXHQWLDOO\ RU LQ SDUDOOHO FRUUHVSRQGLQJ


WR D SUHVHW YROXPH RQ WKH 'DQ/RDG 

EOHQG

$ FRPELQDWLRQ RI WZR RU PRUH SURGXFWV ORDGHG DV D VLQJOH EDWFK

EURDGFDVW

FRPPXQLFDWLRQV

FRPPDQG

WUDQVPLWWHG

WR

PRUH

WKDQ

RQH

UHFHLYHU

VLPXOWDQHRXVO\

FRPPDQG

$ FRPPXQLFDWLRQV PHVVDJH UHTXHVWLQJ LQIRUPDWLRQ RU DFWLRQ

FRPSRQHQW

$ SURGXFW GHOLYHUHG DQG PHWHUHG E\ WKH 'DQ/RDG 

7KH 'DQ/RDG

 FDQ GHOLYHU PRUH WKDQ RQH SURGXFW LQ D VLQJOH EDWFK

&5&

$ YHU\ HIIHFWLYH PHWKRG RI GHWHFWLQJ HUURUV LQ WUDQVPLWWHG GDWD

'8$57

'XDO 8QLYHUVDO $V\QFKURQRXV 5HFHLYHU 7UDQVPLWWHU


FLUFXLW

ERDUG

WKDW

FDQ

WUDQVPLW

DQG

UHFHLYH

$ GHYLFH RU SULQWHG

GDWD

RQ

WZR

FKDQQHOV

VLPXOWDQHRXVO\

NH\SDG

$UUDQJHPHQW RI NH\V SXVKEXWWRQV E\ ZKLFK GDWD LV HQWHUHG LQWR WKH


'DQ/RDG 

ORDG

7KH GHOLYHU\ RI D YROXPH RI RQH SURGXFW WKURXJK RQH PHWHU DV SDUW RI D


EDWFK

0RGEXV

$ FRPPXQLFDWLRQV SURWRFRO LH D PHWKRG RI FRPPXQLFDWLQJ GDWD IURP RQH


GHYLFH WR DQRWKHU

RSHUDWRU

2QH ZKR RSHUDWHV WKH 'DQ/RDG  YLD LWV NH\SDG HJ D WUXFN GULYHU D
WDQNHU WHUPLQDO HPSOR\HH RU D VHUYLFH WHFKQLFLDQ

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

338

3XOVH SHU XQLW HJ RQH SXOVH SHU JDOORQ RU RQH SXOVH SHU OLWHU

UHFLSH $ VSHFLILFDWLRQ RI WKH SURSRUWLRQV RI RQH RU PRUH SURGXFWV WR EH ORDGHG DV D VLQJOH


EDWFK

WUDQVDFWLRQ

7KH FRQVHFXWLYH GHOLYHU\ RI RQH RU PRUH EDWFKHV KDYLQJ WKH VDPH UHFLSH
DGGLWLYHV DQG VZLQJDUP VLGH

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

3URWRFRO 2YHUYLHZ

7KLV VHFWLRQ GHVFULEHV WKH FRPPXQLFDWLRQV SURWRFRO EHWZHHQ DQ DXWRPDWLRQ V\VWHP DQG
WKH 'DQ/RDG  7KH IROORZLQJ VKRXOG EH QRWHG

7KH 'DQ/RDG  KDV WZR FRPPXQLFDWLRQV FKDQQHOV SRUWV ZLWK WKH
VDPH DGGUHVV WKDW FDQ DFFHSW FRPPDQGV IURP DXWRPDWLRQ V\VWHPV

7KH

DGGUHVV LV VHW RQ WKH '8$57 ERDUG $GGUHVV ]HUR VKRXOG QRW EH XVHG VLQFH
RQO\ EURDGFDVW PHVVDJHV ZRXOG EH SURFHVVHG DQG WKH 'DQ/RDG 
ZRXOG QRW UHVSRQG WR DQ\ TXHU\
,I WZR DXWRPDWLRQ V\VWHPV DUH FRQQHFWHG WR WKH 'DQ/RDG  RQH RI WKHP
LV W\SLFDOO\ UHVSRQVLEOH IRU DXWKRUL]DWLRQ DQG WKH RWKHU RQH IRU PRQLWRULQJ
XQOHVV WKH WZR DXWRPDWLRQ V\VWHPV HQJDJH LQ VRPH IRUP RI KDQGVKDNLQJ
SRVVLEO\ YLD WKH 'DQ/RDG 
V VWDWXV ELWV  7KH 'DQ/RDG  UHFHLYHV
TXHULHV RQ ERWK FRPPXQLFDWLRQV FKDQQHOV SRVVLEO\ VLPXOWDQHRXVO\ DQG LI
WKH TXHU\ LV QRW D UHWU\ TXHXHV WKHP WR D VLQJOH LQWHUQDO SURFHVV ZKLFK LV
UHVSRQVLEOH IRU EXLOGLQJ WKH UHVSRQVH 7KXV TXHULHV DUH KDQGOHG RQ D ILUVW
FRPH ILUVW VHUYHG EDVLV EXW DQ DXWRPDWLRQ V\VWHP QHYHU KDV WR ZDLW LH
ZRUVW FDVH IRU ORQJHU WKDQ LW WDNHV WR UHVSRQG WR D VLQJOH TXHU\ RQ WKH RWKHU
FKDQQHO VLQFH LW ZLOO DOZD\V KDYH WKH QH[W SODFH LQ WKH TXHXH

:KHQ D

UHVSRQVH KDV EHHQ EXLOW LW LV KDQGHG EDFN WR WKH DSSURSULDWH FKDQQHO


SURFHVV LH WKH RQH IRU ZKLFK WKH TXHU\ ZDV UHFHLYHG LQ RUGHU WR EH
WUDQVPLWWHG WR WKH DXWRPDWLRQ V\VWHP
)RU 'DQ/RDG  Y DQG DERYH SURJUDP FRGH  PXVW EH XVHG WR
FRQILJXUH WKH XQLW
V FRPPXQLFDWLRQV DGGUHVV WKH '8$57
V DGGUHVV VZLWFK
LV QR ORQJHU XVHG

&RPPXQLFDWLRQV DUH IXOOGXSOH[ RSHUDWLQJ DV PDVWHUVODYH

7KH PD[LPXP QXPEHU RI VODYHV RQ D FRPPRQ OLQH PXOWLGURS LV 

,Q

SUDFWLFH GXH WR FDEOH OHQJWKV DQG GDWD UDWHV D VPDOOHU QXPEHU RI VODYHV PD\
EH QHFHVVDU\

7KH SURWRFRO LV 0RGEXV FRPSDWLEOH LH LW XVHV 0RGEXV 578 PHVVDJH


IUDPLQJ
7KH

PD[LPXP TXHU\ PHVVDJH OHQJWK IRU 0RGEXV 578 LV  E\WHV

LQFOXGLQJ FKHFN FKDUDFWHUV  7KH PD[LPXP UHVSRQVH PHVVDJH OHQJWK IRU


0RGEXV 578 LV  E\WHV LQFOXGLQJ FKHFN FKDUDFWHUV 

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KH ILUVW FKDUDFWHU RI WKH GDWD ILHOG LV WKH GDWD ILHOG OHQJWK 7KLV LV D FRXQW
RI WKH QXPEHU RI FKDUDFWHUV LQ WKH GDWD ILHOG DQG VR QRUPDOO\ KDV D YDOXH RI
 RU JUHDWHU 7KH PD[LPXP GDWD ILHOG OHQJWK LV  FKDUDFWHUV LH   
7KH 0RGEXV IXQFWLRQ FRGHV IRU QRUPDO TXHULHV DQG UHVSRQVHV DUH K DQG
K

WKH

IXQFWLRQ

FRGHV

DUH

V\QFKURQL]HG

,1'(3(1'(17/<

3(5

&20081,&$7,216 &+$11(/ E\ WKH 6WDUW &RPPXQLFDWLRQV FRPPDQG DQG


DUH WKHUHDIWHU DOWHUQDWHG E\ WKH DXWRPDWLRQ V\VWHP ,1'(3(1'(17/< 3(5
&20081,&$7,216 &+$11(/ 7KH 'DQ/RDG  NQRZV ZKLFK IXQFWLRQ
FRGH WR H[SHFW QH[W RQ HDFK FRPPXQLFDWLRQV FKDQQHO ,I WKH 'DQ/RDG 
UHFHLYHV K ZKHQ LW H[SHFWV K RU UHFHLYHV K ZKHQ LW H[SHFWV K DQG
WKH FRPPDQG LV QRW D 6WDUW &RPPXQLFDWLRQV FRPPDQG  LW DVVXPHV D UHWU\
E\ WKH DXWRPDWLRQ V\VWHP DQG UHWUDQVPLWV H[DFWO\ WKH ODVW UHVSRQVH VHQW RQ
WKH FRPPXQLFDWLRQV FKDQQHO 7KH DOWHUQDWLQJ IXQFWLRQ FRGHV DUH SURYLGHG
SULPDULO\ WR DOORZ WKH DXWRPDWLRQ V\VWHP WR WUDQVPLW UHWULHV LI WKH 'DQ/RDG

V UHVSRQVH LV ORVW RU FRUUXSWHG

7KH 0RGEXV SURWRFRO UHVHUYHV

IXQFWLRQ FRGHV K WKURXJK K IRU XVHUGHILQHG FXVWRP IXQFWLRQV

FRPPXQLFDWLRQV FKDQQHO
V H[SHFWHG IXQFWLRQ FRGH LV LQGHSHQGHQW RI DQ\
RWKHU 'DQ/RDG 
V RQ WKH VDPH FRPPXQLFDWLRQV OLQH

7KH 'DQ/RDG


V WZR FRPPXQLFDWLRQV FKDQQHOV VKRXOG QRW EH FRQQHFWHG RQ WKH VDPH
FRPPXQLFDWLRQV OLQH VLQFH WKH\ ERWK KDYH WKH VDPH FRPPXQLFDWLRQV
DGGUHVV 7KH DXWRPDWLRQ V\VWHP VKRXOG PDLQWDLQ D QH[W IXQFWLRQ FRGH IRU
HDFK FRQILJXUHG 'DQ/RDG 
7KH 'DQ/RDG  XVHV IXQFWLRQ FRGHV &K DQG &K WR LQGLFDWH H[FHSWLRQ
UHVSRQVHV WR IXQFWLRQ FRGHV  KH[ DQG  KH[ UHVSHFWLYHO\ LH LQYDOLG
GDWD ILHOG LQ ZKLFK FDVH WKH UHVSRQVH
V GDWD ILHOG FRQWDLQV D 'DQ/RDG 
([FHSWLRQ 5HVSRQVH &RGH

&K DQG &K DUH QRW VWDQGDUG 0RGEXV

H[FHSWLRQ UHVSRQVH FRGHV 6HH 


7KH 'DQ/RDG  GRHV QRW UHVSRQG WR D EURDGFDVW PHVVDJH LH DGGUHVV
ILHOG HTXDO WR  7KH DXWRPDWLRQ V\VWHP PXVW GHFLGH ZKLFK FRPPDQGV DUH
VDIH WR EH EURDGFDVW HJ 6HW 'DWH DQG 7LPH

$ EURDGFDVW PHVVDJH
V

DOWHUQDWLQJ VHTXHQFH IXQFWLRQ FRGH LV QRW FKHFNHG E\ WKH 'DQ/RDG 


K RU K LV DFFHSWDEOH DQG WKH 'DQ/RDG  EHKDYHV DV LI WKH FRUUHFW
DOWHUQDWLQJ VHTXHQFH IXQFWLRQ FRGH ZDV UHFHLYHG VR WKH DXWRPDWLRQ V\VWHP
VKRXOG XSGDWH LWV FRS\ RI WKH DOWHUQDWLQJ VHTXHQFH IXQFWLRQ FRGHV IRU HDFK
'DQ/RDG  WKDW VKRXOG KDYH UHFHLYHG WKH EURDGFDVW PHVVDJH
6HH WKH 0RGEXV 3URWRFRO 5HIHUHQFH *XLGH *RXOG$(* IRU DGGLWLRQDO
GHWDLOV

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

7KH 'DQ/RDG  RSHUDWHV DV DQ DGGUHVVDEOH VODYH VWDWLRQ DQG VSHDNV


RQO\ ZKHQ VSRNHQ WR WKLV LV D QHFHVVDU\ FRQVHTXHQFH RI 56 PXOWLGURS
FRPPXQLFDWLRQV ZKLFK UHTXLUHV WKDW D VODYH VWDWLRQ UHSO\ RQO\ WR D PHVVDJH
GLUHFWHG WR LW
7KH 'DQ/RDG  GRHV QRW UHVSRQG WR D PHVVDJH WKDW LV LQFRUUHFWO\
IUDPHG LH QRW LWV DGGUHVV DQ XQXVHG IXQFWLRQ FRGH RU DQ LQFRUUHFW HUURU
FKHFN
7KH 'DQ/RDG  GRHV QRW UHVSRQG WR D PHVVDJH WKDW LV LQFRPSOHWH LH
IHZHU RU PRUH FKDUDFWHUV WKDQ H[SHFWHG
,W LV HVVHQWLDO WR SURJUDP WKH 0RGEXV PDVWHU WR DVVXPH D FRPPXQLFDWLRQV
HUURU KDV RFFXUUHG LI WKHUH LV QR UHVSRQVH LQ D UHDVRQDEOH WLPH 7KH OHQJWK
RI WKLV WLPH SHULRG GHSHQGV XSRQ EDXG UDWH W\SH RI PHVVDJH DQG VFDQ WLPH
RI WKH VODYH 2QFH WKLV WLPH LV GHWHUPLQHG WKH PDVWHU PD\ EH SURJUDPPHG
WR DXWRPDWLFDOO\ WUDQVPLW WKH PHVVDJH
6HH WKH 0RGEXV 3URWRFRO 5HIHUHQFH *XLGH *RXOG$(* IRU DGGLWLRQDO
GHWDLOV

7KH

'DQ/RDG



LJQRUHV

WKURZV

DZD\

DQ\

FKDUDFWHUV

WKDW

DUH

WUDQVPLWWHG WR LW E\ WKH DXWRPDWLRQ V\VWHP ZKLOH LW LV SURFHVVLQJ D SUHYLRXV


FRPPDQG IURP WKH DXWRPDWLRQ V\VWHP

7KH

'DQ/RDG



LV

QRW

UHDG\

WR

UHFHLYH

FKDUDFWHUV

XQWLO

IHZ

PLOOLVHFRQGV DIWHU LW KDV FRPSOHWHG D WUDQVPLVVLRQ 7KH DXWRPDWLRQ V\VWHP


VKRXOG GHOD\  PLOOLVHFRQGV EHWZHHQ UHFHLYLQJ WKH ODVW FKDUDFWHU RI D
PHVVDJH IURP D 'DQ/RDG  DQG WUDQVPLWWLQJ WKH ILUVW FKDUDFWHU RI D
PHVVDJH WR WKH VDPH 'DQ/RDG 

1XPHULF GDWD LQW ORQJ HWF DUH WUDQVPLWWHG LQ ELQDU\ ZLWK WKH OHDVW
VLJQLILFDQW E\WH ILUVW DQG WKH PRVW VLJQLILFDQW E\WH ODVW :LWKLQ E\WHV ELWV DUH
ODEHOHG IURP  WR  ZLWK  EHLQJ WKH OHDVW VLJQLILFDQW ELW

data stream >

6WULQJ GDWD DUUD\V RI FKDUDFWHUV DUH QXOOWHUPLQDWHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KH 'DQ/RDG  KDV WZR RSHUDWLQJ PRGHV WKDW OLPLW WKH FRPPDQG FRGHV WKDW DUH
DFFHSWHG

$XWRPDWLF

$OO FRPPDQG FRGHV FDQ EH XVHG

6WDWXV LQIRUPDWLRQ FDQ EH

UHTXHVWHG DQG WKH 'DQ/RDG 


V RSHUDWLRQ FDQ EH FRQWUROOHG

0DQXDO 2QO\ FHUWDLQ FRPPDQG FRGHV FDQ EH XVHG VWDWXV LQIRUPDWLRQ FDQ
EH UHTXHVWHG EXW WKH 'DQ/RDG 
V RSHUDWLRQ FDQQRW EH FRQWUROOHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

0HVVDJH )UDPLQJ
!! 0RGEXV 578 

4XHULHV UHVSRQVHV DQG H[FHSWLRQ UHVSRQVHV DUH IUDPHG DV IROORZV

ADR

FN

D1

...

DN

BCC1

BCC2

:KHUH

$'5

$GGUHVV ILHOG HJ $K

)1

)XQFWLRQ ILHOG 7KH IXQFWLRQ FRGH LV


K RU K IRU QRUPDO TXHULHV DQG
UHVSRQVHV &K RU &K IRU H[FHSWLRQ
UHVSRQVHV

'

'DWD ILHOG FKDUDFWHU 

'1

'DWD ILHOG FKDUDFWHU 1

%&&

(UURU FKHFN ILHOG &5& FKDUDFWHU




%&&

(UURU FKHFN ILHOG &5& FKDUDFWHU




7KH GDWD ILHOG OHQJWK DQG WKH FRPPDQG FRGH DUH WKH ILUVW DQG VHFRQG FKDUDFWHUV
UHVSHFWLYHO\ RI WKH GDWD ILHOG ' WKURXJK '1  $Q H[FHSWLRQ UHVSRQVH
V GDWD ILHOG FRQWDLQV
WKH GDWD ILHOG OHQJWK

 '  FRPPDQG FRGH UHFHLYHG E\ WKH 'DQ/RDG  ' DQG

H[FHSWLRQ UHVSRQVH FRGH ' 


7KH UHFHLYLQJ GHYLFH PRQLWRUV WKH HODSVHG WLPH EHWZHHQ UHFHLSW RI FKDUDFWHUV ,I WKUHH
DQG RQHKDOI FKDUDFWHU WLPHV HODSVH ZLWKRXW D QHZ FKDUDFWHU RU FRPSOHWLRQ RI WKH IUDPH
WKHQ WKH GHYLFH IOXVKHV WKH IUDPH DQG DVVXPHV WKDW WKH QH[W E\WH UHFHLYHG ZLOO EH DQ
DGGUHVV 6HH WKH 0RGEXV 3URWRFRO 5HIHUHQFH *XLGH *RXOG$(* IRU DGGLWLRQDO GHWDLOV
,Q 0RGEXV 578 LW LV D EDG LGHD WR VHQG WKH DGGUHVV IXQFWLRQ FRGH DQG GDWD ILHOG DQG WKHQ
FRPSXWH DQG VHQG WKH HUURU FKHFN ILHOG VLQFH WKH HODSVHG WLPH LQGHWHUPLQDWH RQ PDQ\
RSHUDWLQJ V\VWHPV EHWZHHQ WKH WZR ZULWHV WR WKH SRUW PD\ FDXVH DQ LQDGYHUWHQW HQG RI
IUDPH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KLV SDJH LQWHQWLRQDOO\ OHIW EODQN

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

&RPPXQLFDWLRQV 0HWKRGRORJ\



&RPPXQLFDWLRQV 6WDUW8S

7KH DXWRPDWLRQ V\VWHP FDQ FRPPXQLFDWH ZLWK WKH 'DQ/RDG  LQ WKH PDQXDO RU
DXWRPDWLF RSHUDWLQJ PRGHV ,Q HLWKHU FDVH D FRPPXQLFDWLRQV VWDUWXS PXVW WDNH SODFH
RQ HDFK FRPPXQLFDWLRQV FKDQQHO WKDW LV XVHG 7KH 'DQ/RDG  ZLOO QRW UHVSRQG WR DQ\
FRPPDQG IURP WKH DXWRPDWLRQ V\VWHP XQWLO FRPPXQLFDWLRQV RQ WKDW FKDQQHO KDYH EHHQ
VWDUWHG &RPPXQLFDWLRQV FDQ EH VWDUWHG RQO\ LQ WKH ORDGLQJ PRGH ,Q SURJUDP PRGH WKH
'DQ/RDG  GRHV QRW UHVSRQG WR FRPPDQGV IURP WKH DXWRPDWLRQ V\VWHP WKH
DXWRPDWLRQ V\VWHP PXVW UHVWDUW FRPPXQLFDWLRQV ZLWK WKH 6WDUW &RPPXQLFDWLRQV FRPPDQG
DIWHU WKH 'DQ/RDG  KDV H[LWHG SURJUDP PRGH

7KH DXWRPDWLRQ V\VWHP VKRXOG

UHSHDWHGO\ VHQG WKH 6WDUW &RPPXQLFDWLRQV FRPPDQG WR D 'DQ/RDG  WKDW LV RIIOLQH LQ
RUGHU WR EULQJ LW EDFN RQOLQH ZKHQ LW LV DYDLODEOH
7KH DXWRPDWLRQ V\VWHP HVWDEOLVKHV FRPPXQLFDWLRQV ZLWK WKH 'DQ/RDG  XVLQJ WKH
6WDUW &RPPXQLFDWLRQV FRPPDQG

7KLV LQLWLDOL]HV WKH 'DQ/RDG 


V DOWHUQDWLQJ

VHTXHQFH IXQFWLRQ FRGH WR WKH IXQFWLRQ FRGH LQ WKH 6WDUW &RPPXQLFDWLRQV FRPPDQG HLWKHU
K RU K  7KH QH[W QRQUHWU\ TXHU\ IURP WKH DXWRPDWLRQ V\VWHP VKRXOG XVH WKH RWKHU
IXQFWLRQ

FRGH

2SHUDWLRQV

DW

WKH

'DQ/RDG



DUH

XQDIIHFWHG

E\

WKH

6WDUW

&RPPXQLFDWLRQV FRPPDQG
7KH DXWRPDWLRQ V\VWHP FDQ UHTXHVW WKH GDWH DQG WLPH WKDW WKH 'DQ/RDG  ZDV ODVW
SRZHUHG GRZQ XVLQJ WKH 5HTXHVW 3RZHU )DLO 'DWH DQG 7LPH FRPPDQG
7KH DXWRPDWLRQ V\VWHP FDQ UHTXHVW WKH WUDQVDFWLRQ QXPEHUV RI WKH WUDQVDFWLRQV WKDW DUH
VWRUHG LQ WKH 'DQ/RDG 
V QRQYRODWLOH WUDQVDFWLRQ VWRUDJH PHPRU\ XVLQJ WKH 5HTXHVW
6WRUHG 7UDQVDFWLRQ 1XPEHUV FRPPDQG

7KH DXWRPDWLRQ V\VWHP PD\ ZLVK WR UHWULHYH

VWRUHG WUDQVDFWLRQV IURP WKH 'DQ/RDG 



$XWR0DQXDO &KDQJH2YHU

7KH 'DQ/RDG 


V RSHUDWLQJ PRGH LV DXWRPDWLF RU PDQXDO 7KH XSSHU \HOORZ /('
WR WKH ULJKW RI WKH 'DQ/RDG 
V GLVSOD\ LQGLFDWHV DXWRPDWLF RQ RU PDQXDO RII  7KH
DXWRPDWLRQ V\VWHP FDQ FRPPXQLFDWH ZLWK WKH 'DQ/RDG  LQ HLWKHU RSHUDWLQJ PRGH
SURYLGHG WKDW RQH RI WKH 'DQ/RDG 
V VHULDO SRUWV LV FRQILJXUHG IRU WKLV IXQFWLRQ
,I DQ $XWRPDQXDO FKDQJHRYHU LQSXW LV FRQILJXUHG SURJUDP FRGH  WKH 'DQ/RDG

V RSHUDWLQJ PRGH LV GHWHUPLQHG VROHO\ E\ WKH VWDWH RI WKDW LQSXW

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

,I DQ $XWRPDQXDO FKDQJHRYHU LQSXW LV QRW FRQILJXUHG WKH 'DQ/RDG 


V RSHUDWLQJ
PRGH LV GHWHUPLQHG E\ FRPPXQLFDWLRQV RU E\ VHWXS SURJUDP FRGH   7KH DXWRPDWLRQ
V\VWHP FDQ FKDQJH WKH 'DQ/RDG 
V RSHUDWLQJ PRGH EHWZHHQ PDQXDO DQG DXWRPDWLF
XVLQJ WKH &KDQJH 2SHUDWLQJ 0RGH FRPPDQG 7KH &KDQJH 2SHUDWLQJ 0RGH FRPPDQG LV
WKH FRPPXQLFDWLRQV HTXLYDOHQW RI WKH DXWRPDQXDO FKDQJHRYHU LQSXW

7KH RSHUDWLQJ

PRGH LV FKDQJHG LQ H[DFWO\ WKH VDPH ZD\ DV LI WKH DXWRPDQXDO FKDQJHRYHU LQSXW ZDV
XVHG
,I WKH DXWRPDQXDO FKDQJHRYHU LQSXW FKDQJHV VWDWH RU WKH &KDQJH 2SHUDWLQJ 0RGH
FRPPDQG LV UHFHLYHG LQGLFDWLQJ D FKDQJH RI RSHUDWLQJ PRGH D EDWFK RU WUDQVDFWLRQ LQ
SURJUHVV DUH HQGHG EHIRUH WKH RSHUDWLQJ PRGH FKDQJHV

:KHQ WKH 'DQ/RDG 


V

RSHUDWLQJ PRGH FKDQJHV WR PDQXDO LW GLVSOD\V WKH UHFLSH VHOHFWLRQ VFUHHQ WKH DGGLWLYH
VHOHFWLRQ VFUHHQ RU WKH ORDGLQJ VFUHHQ GHSHQGLQJ RQ WKH FRQILJXUDWLRQ



&RPPXQLFDWLRQV )DLOXUH

,Q WKH DXWRPDWLF RSHUDWLQJ PRGH WKH 'DQ/RDG  PDLQWDLQV D WLPHU SHU FRPPXQLFDWLRQV
FKDQQHO ZKLFK LV UHVHW HDFK WLPH D FRUUHFWO\ IUDPHG PHVVDJH LV UHFHLYHG RQ WKDW FKDQQHO
7KLV LV QRW WKH VDPH WLPHU XVHG WR IUDPH 0RGEXV 578 PHVVDJHV
$ &RPPV IDLOXUH FKDQQHO $ RFFXUV ZKHQ WKH 'DQ/RDG  GRHV QRW UHFHLYH D FRUUHFWO\
IUDPHG PHVVDJH ZLWK LWV DGGUHVV RQ FKDQQHO $ IRU WKH FRQILJXUHG QXPEHU RI VHFRQGV
ZKHQ FRPPXQLFDWLRQV RQ FKDQQHO $ DUH XS LQ DXWRPDWLF PRGH
6LPLODUO\ IRU &RPPV IDLOXUH FKDQQHO %
:KHQ D &RPPV IDLOXUH FKDQQHO $ RU &RPPV IDLOXUH FKDQQHO % RFFXUV WKH 'DQ/RDG
 UDLVHV D SULPDU\ DODUP $ EDWFK LQ SURJUHVV WR VWRSSHG 6WDQGDUG SULPDU\ DODUP
SURFHVVLQJ 7KH 'DQ/RDG  FDQ EH SODFHG LQ WKH PDQXDO RSHUDWLQJ PRGH WKH EDWFK
DQG WUDQVDFWLRQ DUH HQGHG  WKH DODUP FDQ EH UHVHW DQG ORDGLQJ FDQ UHVXPH LQ PDQXDO
$OWHUQDWLYHO\ FRPPXQLFDWLRQV FDQ EH UHVWDUWHG XVLQJ WKH 6WDUW &RPPXQLFDWLRQV FRPPDQG
WKH DODUP FDQ EH UHVHW DQG ORDGLQJ FDQ UHVXPH LQ DXWRPDWLF



7UDQVDFWLRQ $XWKRUL]DWLRQ

7KH DXWRPDWLRQ V\VWHP FDQ FRPPDQG WKH 'DQ/RDG  WR SURPSW WKH RSHUDWRU IRU GDWD
HJ FXVWRPHU QXPEHU RUGHU QXPEHU FRPSDUWPHQW QXPEHU XVLQJ WKH 'LVSOD\ 0HVVDJH
FRPPDQG 7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH ZKHQ NH\SDG GDWD LV DYDLODEOH 7KH
DXWRPDWLRQ V\VWHP REWDLQV WKH NH\SDG GDWD XVLQJ WKH 5HTXHVW .H\SDG 'DWD FRPPDQG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

:KLOH ZDLWLQJ IRU D SDUWLFXODU VWDWXV FKDQJH RQ WKH 'DQ/RDG  WKH DXWRPDWLRQ V\VWHP
VKRXOG EH DZDUH WKDW DQRWKHU XQH[SHFWHG HYHQW FRXOG RFFXU WKDW FKDQJHV WKH RXWFRPH
RI WKH GDWD H[FKDQJH HJ D SULPDU\ DODUP LV UDLVHG RU WKH 'DQ/RDG  WLPHV RXW ZDLWLQJ
IRU LQSXW
7KH 'DQ/RDG  DOORZV D SUHVHW YROXPH RI D SURGXFW EOHQG RU UHFLSH WR EH ORDGHG DV
D EDWFK 7KH RSHUDWRU RU WKH DXWRPDWLRQ V\VWHP VHWV WKH SUHVHW YROXPH 7KH EDWFK
EHJLQV ZKHQ WKH 67$57 NH\ LV SUHVVHG 7KH EDWFK HQGV ZKHQ GHOLYHU\ RI SURGXFW KDV
VWRSSHG DQG FDQQRW EH UHVXPHG ZLWKRXW EHJLQQLQJ D QHZ EDWFK  :KHQ D SUHVHW YROXPH
RI D PXOWLFRPSRQHQW VHTXHQWLDO RU LQOLQH EOHQG LV ORDGHG WKLV LV MXVW RQH EDWFK
2Q WKH 'DQ/RDG  RQH RU PRUH EDWFKHV DUH ORDGHG RQ D VLQJOH WUDQVDFWLRQ (DFK
WUDQVDFWLRQ LV DVVLJQHG D GLJLW VHTXHQFH QXPEHU ZKHQ LW LV VWDUWHG

(DFK EDWFK LV

DVVLJQHG D GLJLW VHTXHQFH QXPEHU ZKHQ LW LV VWDUWHG $OO EDWFKHV RQ D WUDQVDFWLRQ DUH
IRU WKH VDPH UHFLSH $OO EDWFKHV RQ D WUDQVDFWLRQ DUH ZLWK WKH VDPH DGGLWLYHV $OO EDWFKHV
RQ D WUDQVDFWLRQ VKDUH WKH VDPH RSHUDWRUHQWHUHG GDWD LWHPV $ WUDQVDFWLRQ YROXPH LV
WKH VXP RI WKH DVVRFLDWHG EDWFK YROXPHV
$ EDWFK FDQ VWDUW DQG HQG ZLWKRXW DQ\ YROXPH KDYLQJ EHHQ ORDGHG

7KH DXWRPDWLRQ

V\VWHP PD\ FKRRVH WR GLVFDUG VXFK EDWFKHV WKRXJK WKLV ZRXOG UHVXOW LQ DSSDUHQWO\
PLVVLQJ EDWFK VHTXHQFH QXPEHUV
$ UHFLSH PXVW EH VHOHFWHG EHIRUH D WUDQVDFWLRQ FDQ EHJLQ ,I WKH 'DQ/RDG  KDV RQO\
RQH UHFLSH WKHQ LW LV VHOHFWHG E\ GHIDXOW

7KH DXWRPDWLRQ V\VWHP FDQ FRPPDQG WKH

'DQ/RDG  WR SURPSW WKH RSHUDWRU IRU D UHFLSH VHOHFWLRQ XVLQJ WKH 3URPSW 5HFLSH
FRPPDQG 7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW D UHFLSH KDV EHHQ VHOHFWHG E\
WKH RSHUDWRU 7KH DXWRPDWLRQ V\VWHP UHTXHVWV WKH VHOHFWHG UHFLSH IURP WKH 'DQ/RDG 
XVLQJ WKH 5HTXHVW 6HOHFWHG 5HFLSH FRPPDQG ,I WKH DXWRPDWLRQ V\VWHP FDQ GHWHUPLQH
WKH UHFLSH ZLWKRXW LQSXW IURP WKH RSHUDWRU WKH 3URPSW 5HFLSH DQG 5HTXHVW 6HOHFWHG
5HFLSH FRPPDQGV DUH QRW UHTXLUHG ,I PXOWLSOH UHFLSHV DUH DYDLODEOH DW WKH 'DQ/RDG 
WKH DXWRPDWLRQ V\VWHP PD\ UHTXLUH D WDEOH WR FURVVUHIHUHQFH WKH 'DQ/RDG 
V UHFLSH
QXPEHUV ZLWK WKH DXWRPDWLRQ V\VWHP
V SURGXFW FRGHV

7KH IODJ WKDW LQGLFDWHV WKDW D

UHFLSH KDV EHHQ VHOHFWHG LV FOHDUHG E\ WKH $XWKRUL]H 7UDQVDFWLRQ FRPPDQG WKH 3URPSW
5HFLSH FRPPDQG RU WKH &OHDU 6WDWXV FRPPDQG
$GGLWLYHV FDQ EH VHOHFWHG EHIRUH D WUDQVDFWLRQ LV VWDUWHG
VHOHFWHG

8S WR VL[ DGGLWLYHV FDQ EH

$ VHOHFWLRQ RI QR DGGLWLYHV LV D YDOLG DGGLWLYH VHOHFWLRQ

7KH DXWRPDWLRQ

V\VWHP FDQ FRPPDQG WKH 'DQ/RDG  WR SURPSW IRU DQ DGGLWLYH VHOHFWLRQ XVLQJ WKH
3URPSW $GGLWLYHV FRPPDQG

$ VXJJHVWHG DGGLWLYH VHOHFWLRQ FDQ EH GLVSOD\HG IRU WKH

RSHUDWRU 7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW DQ DGGLWLYH VHOHFWLRQ KDV EHHQ
PDGH E\ WKH RSHUDWRU 7KH DXWRPDWLRQ V\VWHP UHTXHVWV WKH DGGLWLYH VHOHFWLRQ IURP WKH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

'DQ/RDG  XVLQJ WKH 5HTXHVW 6HOHFWHG $GGLWLYHV FRPPDQG ,I WKH DXWRPDWLRQ V\VWHP
FDQ GHWHUPLQH WKH DGGLWLYH VHOHFWLRQ ZLWKRXW LQSXW IURP WKH RSHUDWRU WKH 3URPSW $GGLWLYHV
DQG 5HTXHVW 6HOHFWHG $GGLWLYHV FRPPDQGV DUH QRW UHTXLUHG 7KH IODJ WKDW LQGLFDWHV WKDW
DQ DGGLWLYH VHOHFWLRQ KDV EHHQ PDGH LV FOHDUHG E\ WKH $XWKRUL]H 7UDQVDFWLRQ FRPPDQG
WKH 3URPSW $GGLWLYHV FRPPDQG RU WKH &OHDU 6WDWXV FRPPDQG
7KH DXWRPDWLRQ V\VWHP DXWKRUL]HV D WUDQVDFWLRQ XVLQJ WKH $XWKRUL]H 7UDQVDFWLRQ
FRPPDQG 7KH DXWKRUL]DWLRQ FRPPDQG VHWV WKH UHFLSH DGGLWLYHV VLGH HWF 7KH 'DQ/RDG
 VHWV D IODJ WR LQGLFDWH WKDW D WUDQVDFWLRQ KDV EHHQ DXWKRUL]HG

7KH $XWKRUL]H

WUDQVDFWLRQ FRPPDQG DOVR FDXVHV WKH ORDGLQJ VFUHHQ WR EH GLVSOD\HG LI LW LV QRW DOUHDG\
GLVSOD\HG 

7KH WUDQVDFWLRQ LV QRW DFWXDOO\ VWDUWHG LQ SURJUHVV XQWLO WKH ILUVW EDWFK LV

VWDUWHG



%DWFK $XWKRUL]DWLRQ

7KH DXWRPDWLRQ V\VWHP FDQ FRPPDQG WKH 'DQ/RDG  WR SURPSW IRU D SUHVHW YROXPH
XVLQJ WKH 3URPSW 3UHVHW 9ROXPH FRPPDQG

2SWLRQDOO\ WKH 3URPSW 3UHVHW 9ROXPH

FRPPDQG LQFOXGHV D VXJJHVWHG SUHVHW YROXPH ZKLFK FDQ EH HQWHUHGDFFHSWHG RU FOHDUHG


DQG PRGLILHG XS RU GRZQ E\ WKH RSHUDWRU 7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW
SUHVHW YROXPH KDV EHHQ HQWHUHG 7KH DXWRPDWLRQ V\VWHP UHTXHVWV WKH SUHVHW YROXPH IURP
WKH 'DQ/RDG  XVLQJ WKH 5HTXHVW 3UHVHW 9ROXPH FRPPDQG ,I WKH SUHVHW YROXPH LV
YDOLG WKH DXWRPDWLRQ V\VWHP FDQ VHW WKH SUHVHW YROXPH XVLQJ WKH $XWKRUL]H %DWFK
FRPPDQG ,I WKH DXWRPDWLRQ V\VWHP FDQ GHWHUPLQH WKH EDWFK YROXPH ZLWKRXW LQSXW IURP
WKH RSHUDWRU WKH 3URPSW 3UHVHW 9ROXPH DQG 5HTXHVW 3UHVHW 9ROXPH FRPPDQGV DUH QRW
UHTXLUHG 7KH IODJ WKDW LQGLFDWHV WKDW D SUHVHW YROXPH KDV EHHQ HQWHUHG LV FOHDUHG E\ D
3URPSW 3UHVHW 9ROXPH FRPPDQG RU D &OHDU 6WDWXV FRPPDQG
7KH 'DQ/RDG  SUHVHWV WKH EDWFK DQG GLVSOD\V 3UHVV 67$57 ZKHQ UHDG\ RU 6723
WR FDQFHO ZKHQ WKH $XWKRUL]H %DWFK FRPPDQG LV UHFHLYHG 7KH EDWFK LV VWDUWHG ZKHQ WKH
RSHUDWRU SUHVVHV WKH 67$57 NH\ RU WKH 6WDUW %DWFK FRPPDQG LV UHFHLYHG 7KH 'DQ/RDG
 VHWV D IODJ WR LQGLFDWH WKDW WKH EDWFK KDV EHHQ VWDUWHG DQG DVVLJQV D EDWFK VHTXHQFH
QXPEHU ZKLFK UROOV IURP  WR   ,I WKH EDWFK LV DERUWHG HJ WKH RSHUDWRU SUHVVHV WKH
6723 NH\ LQVWHDG RI WKH 67$57 NH\ RU WKH 'DQ/RDG  WLPHV RXW ZDLWLQJ IRU WKH
67$57 NH\ WR EH SUHVVHG WKH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW WKH EDWFK KDV
EHHQ DERUWHG
:KHQ D EDWFK KDV EHHQ VWDUWHG WKH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW D EDWFK LV
LQ SURJUHVV

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



(QG RI %DWFK

7KH EDWFK GHOLYHU\ LV VWRSSHG ZKHQ WKH RSHUDWRU SUHVVHV WKH 6723 NH\ RU WKH 6WRS
%DWFK FRPPDQG LV UHFHLYHG IURP WKH DXWRPDWLRQ V\VWHP RU D SULPDU\ RU VHFRQGDU\ DODUP
RFFXUV $ EDWFK WKDW LV VWRSSHG LQ WKLV ZD\ PD\ EH UHVWDUWDEOH 7KH 'DQ/RDG  VHWV
D IODJ WR LQGLFDWH WKDW WKH EDWFK KDV VWRSSHG DQG LV UHVWDUWDEOH
$ EDWFK HQGV ZKHQ WKH SUHVHW YROXPH KDV EHHQ GHOLYHUHG RU DQ (QG %DWFK FRPPDQG LV
UHFHLYHG IURP WKH DXWRPDWLRQ V\VWHP $ EDWFK PD\ DOVR HQG LI LW KDV EHHQ VWRSSHG DQG
FHUWDLQ RWKHU FRQGLWLRQV DSSO\ 6HH  $ EDWFK WKDW KDV HQGHG FDQQRW EH UHVWDUWHG
7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW WKH EDWFK KDV HQGHG
7KH DXWRPDWLRQ V\VWHP FDQ REWDLQ EDWFK GDWD EDWFK YROXPHV FRPSRQHQW WHPSHUDWXUHV
EDWFK VHTXHQFH QXPEHU WUDQVDFWLRQ VHTXHQFH QXPEHU VZLQJDUP VLGH HWF IRU D EDWFK
WKDW KDV HQGHG XVLQJ WKH %DWFK 'DWD E\ &RPSRQHQW FRPPDQG  7KH IODJ WKDW LQGLFDWHV
WKDW D EDWFK KDV HQGHG DQG FDQQRW EH UHVWDUWHG LV FOHDUHG E\ WKH &OHDU 6WDWXV FRPPDQG



(QG RI 7UDQVDFWLRQ

,Q WKH DXWRPDWLF RSHUDWLQJ PRGH D WUDQVDFWLRQ LV HQGHG E\ DQ (QG 7UDQVDFWLRQ FRPPDQG


IURP WKH DXWRPDWLRQ V\VWHP ZKHQ WKHUH LV QRW D EDWFK LQ SURJUHVV E\ SRZHULQJ GRZQ WKH
'DQ/RDG  RU E\ FKDQJHRYHU WR PDQXDO 7KH RSHUDWRU FDQ SUHVV WKH 6723 NH\ DW
WKH 'DQ/RDG  WR UHTXHVW WKH DXWRPDWLRQ V\VWHP WR HQG WKH WUDQVDFWLRQ

:KHQ LW

UHFHLYHV DQ (QG 7UDQVDFWLRQ FRPPDQG WKH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW WKH
WUDQVDFWLRQ KDV HQGHG

7KH DXWRPDWLRQ V\VWHP FDQ UHTXHVW WUDQVDFWLRQ GDWD IURP WKH

'DQ/RDG  XVLQJ WKH 7UDQVDFWLRQ 'DWD E\ &RPSRQHQW FRPPDQG



6ZLQJ$UP 3URFHVVLQJ 'RXEOH6LGH /RDG 5DFNV

2Q D GRXEOHVLGHG ORDGLQJ UDFN LW LV SRVVLEOH WKDW GULYHUV RQ ERWK VLGHV RI WKH ORDG UDFN DUH
DXWKRUL]HG WR XVH WKH VDPH 'DQ/RDG  7KH DXWRPDWLRQ V\VWHP FDQ GHWHUPLQHG WKH
FXUUHQW VZLQJDUP VLGH IURP WKH 'DQ/RDG  XVLQJ WKH 5HTXHVW 6WDWXV FRPPDQG RU WKH
6ZLQJDUP VLGH FRPPDQG WKH 'DQ/RDG  KDV GHGLFDWHG VZLQJDUP LQSXWV RQ LWV &38
ERDUG RU IURP RWKHU LQSXWV WR WKH DXWRPDWLRQ V\VWHP LQGHSHQGHQW RI WKH 'DQ/RDG 
7KH DXWRPDWLRQ V\VWHP VKRXOG VHQG FRPPDQGV WR FRQWURO DXWKRUL]DWLRQ EDVHG RQ WKH
FXUUHQW VZLQJDUP VLGH 7KH VZLQJDUP VLGH FDQ FKDQJH DW DOPRVW DQ\ WLPH ,I WKH VLGH
FKDQJHV IXUWKHU FRPPDQGV VKRXOG EH WUDQVPLWWHG ,I D WUDQVDFWLRQ LV LQ SURJUHVV RQ VLGH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

 DQG WKH VLGH FKDQJHV WR VLGH  D 6WRS %DWFK(QG %DWFK(QG 7UDQVDFWLRQ FRPPDQG
VKRXOG EH VHQW WR HQG WKH WUDQVDFWLRQ RQ VLGH  DQG DQ $XWKRUL]HG 7UDQVDFWLRQ FRPPDQG
IRU H[DPSOH FRXOG EH VHQW WR DXWKRUL]H D WUDQVDFWLRQ RQ VLGH 

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



0DQXDO 2SHUDWLQJ 0RGH

*HQHUDOO\ VSHDNLQJ LQ WKH PDQXDO RSHUDWLQJ PRGH DQ DXWRPDWLRQ V\VWHP FDQ UHTXHVW GDWD
IURP WKH 'DQ/RDG  HJ UHTXHVW GDWD FRGH YDOXHV EXW FDQQRW FRQWURO LWV RSHUDWLRQ
HJ SURPSW IRU SUHVHW YROXPH
7KH WUDQVDFWLRQ GDWD E\ FRPSRQHQW )K FRPPDQG LV DYDLODEOH LQ WKH PDQXDO DQG
DXWRPDWLF RSHUDWLQJ PRGHV

+RZHYHU LWV XVH LQ WKH PDQXDO RSHUDWLQJ PRGH LV QRW

UHFRPPHQGHG WKH WUDQVDFWLRQ GDWD E\ FRPSRQHQW FRPPDQG LV YDOLG RQO\ IRU WKH PRVW
UHFHQWO\ HQGHG WUDQVDFWLRQ DQG RQH WUDQVDFWLRQ PD\ HQG DQG DQRWKHU EHFRPH DXWKRUL]HG
IDVWHU WKDQ DQ DXWRPDWLRQ V\VWHP FDQ UHVSRQG SDUWLFXODUO\ LI WKH FRQILJXUDWLRQ LV VXFK WKDW
WKH 'DQ/RDG  VWD\V LQ WKH ORDGLQJ VFUHHQ ZKHQ D WUDQVDFWLRQ LV HQGHG 
:KHQ LPSOHPHQWLQJ DQ DXWRPDWLRQ V\VWHP LQWHUIDFH ZLWK WKH 'DQ/RDG  LQ WKH PDQXDO
RSHUDWLQJ PRGH LH PRQLWRULQJ RQO\ WKH DXWRPDWLRQ V\VWHP VKRXOG PDNH XVH RI WKH
'DQ/RDG 
V WUDQVDFWLRQ VWRUDJH IDFLOLW\ 7KH DXWRPDWLRQ V\VWHP VKRXOG SROO WKH VWDWXV
RI WUDQVDFWLRQ VWRUDJH FRPPDQG FRGH (K DQG UHTXHVW EDWFKHV FRPPDQG FRGH $K
DQG WUDQVDFWLRQV FRPPDQG FRGH K DV WKH\ DUH VWRUHG E\ WKH 'DQ/RDG 

7KH

DXWRPDWLRQ V\VWHP QHHGV WR EH DZDUH RI WKH IRUPDWV RI WKH EDWFK DQGRU WUDQVDFWLRQ
UHFRUGV ZKLFK DUH XVHUFRQILJXUDEOH 7KH DXWRPDWLRQ V\VWHP FDQ GHULYH WKH EDWFK DQGRU
WUDQVDFWLRQ UHFRUG IRUPDWV E\ UHTXHVWLQJ XVLQJ FRPPDQG FRGH K WKH FRQILJXUHG
VWRUDJH FRGH RIIVHWV JLYHQ E\ SURJUDP FRGHV  WKURXJK  5HIHU WR WKH 'DQ/RDG
 5HIHUHQFH 0DQXDO IRU GHWDLOV

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KLV SDJH LQWHQWLRQDOO\ OHIW EODQN

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

,PSOHPHQWLQJ WKH ,QWHUIDFH

7KH IROORZLQJ LQIRUPDWLRQ DQG H[DPSOHV PD\ EH KHOSIXO LQ LPSOHPHQWLQJ WKH LQWHUIDFH $
'DQ/RDG  $XWRPDWLRQ 6\VWHP &RPPXQLFDWLRQV 6XSSRUW 'LVNHWWH LV DYDLODEOH RQ
UHTXHVW IURP $XWRPDWLRQ 6DOHV 7HO   

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



&RQVWDQWV $OO 9HUVLRQV

7KH IROORZLQJ FRQVWDQWV DUH XVHG E\ WKH 'DQ/RDG 

////
/* Maximum # users. */
#define MAXUSER 8
/* Maximum # meters. */
#define MAXMTR 4
/* Maximum # additives. */
#define MAXADDS 6
/* Maximum # recipes. */
#define MAXRECIPES 30
/* Maximum # components. */
#define MAXCOMPS 4
/* Maximum # data items. */
#define MAXDATAITEMS 5
/* Maximum # safety circuits. */
#define MAXSAFETY 8
/* Maximum # T/Pe pairs for Pe linearization. */
#define MAXPELIN 3
/* Maximum # transaction storage codes. */
#define MAXTSC 36
/* Maximum # batch storage codes. */
#define MAXBSC 22 /* v3.00 */
#define MAXBSC 23 /* v4.00 and above. */
/* Maximum batch sequence number before rolling over to 0. */
#define MAXBATCHSEQ 9999
/* Maximum transaction sequence number before rolling over to 0. */
#define MAXTRANSEQ 9999
/* Maximum # program
#define MAXPC 831 /*
#define MAXPC 981 /*
#define MAXPC 982 /*

code.
v2.00
v3.00
v4.00

*/
*/
*/
and above. */

/* # bytes required to store one bit for each program code. */


#define NUMPCBYTES 104 /* v2.00 */
#define NUMPCBYTES 123 /* v3.00 and above. */
/* Maximum # data
#define MAXDC 129
#define MAXDC 134
#define MAXDC 146
#define MAXDC 222
#define MAXDC 231
////

codes. */
/* v2.00 */
/* v3.00 */
/* v4.00 */
/* v5.00 */
/* v5.11 */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
**
** Database
*/
struct {
long passcode;
char userid[17];
byte pwacess;
} pw[MAXUSER];
int nummtrs;
struct {
char mtrid[6];
int mpulsin;
int mtrvlv;
int radjfac; /* Ratio adjustment factor. */
int fadjfac; /* Flow adjustment factor. */
int ramppct; /* Ramp percentage. */
} mtrparms[MAXMTR];
byte opmode;
byte language;
byte dtefmt;
byte dtesep;
byte decsep;
byte units;
byte numdataprompts; /* Number of data prompts. */
char dataprompt[MAXDATAITEMS][33];
int pmt_timout;
byte chk_disp;
byte unit_type;
byte fcv_type;
byte dspdr;
int transeqnum;
int batchseqnum;
byte roundmthd; /* Rounding method. */
int densscale; /* Density/gravity scale. */
int maxbatch; /* Maximum batches/transaction. */
int numvalves;
int initflwtime; /* Initial flow time. */
/* Component parameters */
int numcomps;
struct {
char compid[17];
int compmtr;
byte compavail;
} comp[MAXCOMPS];
/* Delivery parameters */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

long maxpreset;
long minpreset;
byte predeltype;
byte deldisptype;
byte stopkey;
long fallbackvol;
int maxblenddev;
struct Compdel {
long loflwstart;
long loflwrestart;
long loflwstop;
int linepackdly;
int pumpstopdly;
int blkvalvedly;
} compdel[MAXCOMPS];
int maxrampclicks;
int maxmaintclicks;
int addpmpdly; /* Additive pump stop delay. */
int primcmp;
/* Digital Valve Parameters */
struct {
int dvlferrpct;
int dvhferrpct;
int dvdly;
byte openmthd;
} dvparms[MAXVLV];
/* Pulse per unit parameters */
int numdaus;
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* 2 * MAXMTR bytes for each program code. */
int daufactor;
int daupulwidth;
} dau[MAXDAU];
/* Additive Parameters */
int numadds;
byte addprompt;
byte addtotmthd;
int addclnlinvol; /* Was "injlowflw". */
byte addunits;
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* 2 * MAXMTR bytes for each program code. */
int ratiovol;
int offsetvol;
long totvol; /* Volume per pulse or K-factor. */
/*** byte addavail; ***/
long reqdvol; /* Required volume of additive per 1000 of product for
** additive volume verification.
*/
} add[MAXADDS];
/* Factors */
int numfacs;

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

byte mfacmthd;
struct Fac {
int nomkfac;
long mstrmfac;
/* byte tempcomp; */
struct Mtrfac {
long flwrate;
long mfac;
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct;
int adjmfacpct;
byte pwpertr; /* Password (passcode) per transaction. */
/* Alarm Parameters */
int secalrst;
byte lowflwact;
long lowflwlim;
int lowflwtime;
byte hiflwact;
long hiflwlim;
int hiflwtime;
int ovrunlim;
byte undrflwact;
int undrflwlim;
byte noflwact;
int noflwtime;
int unauthflwlim;
int pserr;
long psresetcnt;
byte dlfailact;
byte commfailact;
int commtimout;
byte tempfailact;
int tempmin;
int tempmax;
byte densfailact;
long densmin;
long densmax;
long presmin;
long presmax;
int adderrlim;
int feedbacktime;
int bvclsdly;
struct Safety {
byte action;
char msg[33];
} safety[MAXSAFETY];
byte
byte
byte
byte

sc5type;
sc6type;
sc7type;
sc8type;

int praddminpct; /* Additive volume verification minimum error percentage. */


int praddmaxpct; /* Additive volume verification maximum error percentage. */
byte storeact;
byte poweract;
byte rampact; /* Ramp down alarm action. */
int ramptime; /* Ramp down time. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

/* I/O Parameters */
byte islot[9];
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out;
unsigned long mask;
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS];
struct Vlvio {
int sol1;
int sol2;
int stemsw1;
int stemsw2;
int clsinp;
} vlvio[MAXVLV];
byte sidemthd;
int dauout[MAXDAU];
int trip1out;
int trip2out;
int trip3out;
struct Mtrtmp {
int mtempinp;
long moffset;
int mstrtstop;
int mpresinp;
long pres4;
long pres20;
int mdensinp;
long dens4;
long dens20;
} mtrtmp[MAXMTR];
int startend;
int autochng;
int primalrst;
int safetyinp[MAXSAFETY];
byte temprange;
int opdly; /* Delay after outputs, e.g. for DART 2. */
byte pridsptyp;
int priminlt;
int primaxlt;
byte secdsptyp;
int secminlt;
int secmaxlt;
int recipeinp[MAXRECIN]; /* Recipe selection inputs. */
int recipeout[MAXRECOUT]; /* Recipe selection outputs. */
struct Addinp {
int ratio;
int feedback;
int select;
int pmpctlout;

/* Additive pump control output. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int bvout;
} addinp[MAXADDS];

/* Additive block valve output. */

int addclnlinout; /* Additive clean line output. */


struct Cmpio {
int bvout;
int bvin;
} cmpio[MAXCOMPS];
int combio[15];
byte tempunits;
byte densunits;
byte presunits;
int reftemp;
long tempsmpl;
struct Cmptemp {
byte option;
long alpha;
int backup;
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option;
long pffac;
long vp;
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option;
long backup;
} cmpdens[MAXCOMPS];
int numrecipes;
struct Recipe {
char name[17];
int cmppct[MAXCOMPS];
struct Cmpseq {
int cmpno;
} cmpseq[MAXCOMPS];
} recipe[MAXRECIPES];
struct Commun {
byte mode;
byte baud;
byte dbits;
byte sbits;
byte parity;
} commun[2];
int ddpc[16];
byte
byte
byte
byte
byte
byte
byte
byte
byte
byte
byte

batch;
trans;
almlog;
pflog;
progmode;
wmsw;
pcchnglog;
provelog;
crash;
totlog;
trtkauto;

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

byte trtk;
byte recipethru;
byte dlogseq;
/* Blending. */
int rampdownpct; /* The percentage of the blend's current flow rate, etc. */
int deltarate; /* Change in flow rate for batch fall back. */
long loflwstart;
int clnlinvol; /* Clean line volume. */
int lopropfac; /* The meter factor flow rate for low proportion components. */
int blchkvol; /* Volume after which blend ratio adjustment begins. */
int blchkvol2; /* Volume after which blend ratio alarm is checked. */
int vadjust; /* Volume over which blend adjustment is made. */
byte comppctmthd;
byte blenderrmthd;
int blnddev;
int blndtol;
int blnddevvol;
int blndtolvol;
int blendsmpl;
long stoprate[MAXCOMPS];
long rflwrate[MAXRFLWRATE][2]; /* Low and high recipe flow rates. */
byte pttype; /* Pressure transmitter types. */
byte pemthd; /* Pe method. */
byte pinchmthd; /* Pinch back method. */
long pinchpres; /* Pinch back pressure. */
long atmospres; /* Atmospheric pressure. */
struct Pe_lin {
int temp;
long pres;
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
byte trrecl; /* Transaction record length. */
int trnumpgs; /* Transaction file start page (/ 100) and # pages (% 100). */
byte barecl; /* Batch record length. */
int banumpgs; /* Batch file start page (/ 100) and # pages (% 100). */
byte trtkfmt; /* Transaction ticket predefined format. */
/* Transaction storage code configuration. */
struct Sccfg tsccfg[MAXTSC];
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];
/*
**
** Database
****************
*/
////

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
**
** Database
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte units; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {
char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int compmtr; /* PC 67, etc. Component X meter number. */


byte compavail; /* PC 68, etc. Component X available. */
} comp[MAXCOMPS];
/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product
** units x 10,000) per 1000 units of product.

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

*/
} add[MAXADDS];
/* Factors */
int numfacs; /* PC 169. Number of factors/component. */
byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
unsigned char pwpertr; /* PC 217. Password (passcode) per transaction. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
byte commfailact; /* PC 236. Comms fail alarm action. */
int commtimout; /* PC 237. Comms fail time-out. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte
byte
byte
byte

sc5type;
sc6type;
sc7type;
sc8type;

/*
/*
/*
/*

PC
PC
PC
PC

265.
266.
267.
268.

Safety
Safety
Safety
Safety

circuit
circuit
circuit
circuit

5
6
7
8

type.
type.
type.
type.

*/
*/
*/
*/

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

*/
int praddmaxpct; /* PC 273. Additive volume verification maximum error
** percentage.
*/
byte storeact; /* PC 274. Storage alarm action. */
byte poweract; /* PC 275. Power fail alarm action. */
byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endbatim; /* PC 279. End batch time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int startend; /* PC 342. Off-rack start/end input. */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. RTD inputs type. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

byte secdsptyp; /* PC 358. Secondary display type. */


int secminlt; /* PC 359. Secondary display min. light. */
int secmaxlt; /* PC 360. Secondary display max. light. */
int recipeinp[MAXRECIN]; /* PC 361, etc. Recipe X selection input. */
int recipeout[MAXRECOUT]; /* PC 367, etc. Recipe X selection output. */
unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */
int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398.

Additive clean line output. */

struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endbaout; /* PC 423. End batch output. */
int endbain; /* PC 424. End batch input. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {
int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc. Recipe X sequence. */
} recipe[MAXRECIPES];
struct Commun {
byte mode; /* PC 663, etc.
byte baud; /* PC 664, etc.

Channel X mode. */
Channel X data rate. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

byte dbits; /* PC 665, etc. Channel X word size. */


byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */
long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc. Recipe "group" low and
** high flow rates.
*/
unsigned char pttype; /* PC 818. Pressure transmitter types. */
unsigned char pemthd; /* PC 819. Pe method. */
unsigned char pinchmthd; /* PC 820. Pinch back method. */
long pinchpres; /* PC 821. Pinch back pressure. */
long atmospres; /* PC 822. Atmospheric pressure. */
struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char trrecl; /* PC 834. Transaction record length. */
int trnumpgs; /* PC 835. Transaction file start page (/ 100) and # pages (% 100). */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

unsigned char barecl; /* PC 836. Batch record length. */


int banumpgs; /* PC 837. Batch file start page (/ 100) and # pages (% 100). */
unsigned char trtkfmt; /* PC 838. Transaction ticket predefined format. */
/* Transaction storage code configuration. */
struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.

TSC X offset and row/column. */

/*
**
** Database
****************
*/
////

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
**
** Data Base
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
unsigned char calmonanalmthd; /* PC 731, etc. Meter X CALMON analysis method. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte units; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */


int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, etc. Component X mass adjustment. */
} comp[MAXCOMPS];
/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

** units x 10,000) per 1000 units of product.


*/
} add[MAXADDS];
/* Factors */
int numfacs; /* PC 169. Number of factors/component. */
byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
unsigned char pwpertr; /* PC 217. Password (passcode) per transaction. */
char produnitsmnemo[7]; /* PC 218. Product units mnemonic. */
unsigned char userestart; /* PC 219. Use restart quantity. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
int commtimout[2]; /* PC 236's and 237. Comms fail time-out per channel. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte sctype[MAXSAFETY]; /* PC 265, etc.

Safety circuit X type. */

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.
*/

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int praddmaxpct; /* PC 273. Additive volume verification maximum error


** percentage.
*/
byte storeact; /* PC 274. Storage alarm action. */
byte poweract; /* PC 275. Power fail alarm action. */
byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endbatim; /* PC 279. End batch time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int startend; /* PC 342. Off-rack start/end input. */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. RTD inputs type. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */
byte secdsptyp; /* PC 358. Secondary display type. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int secminlt; /* PC 359.


int secmaxlt; /* PC 360.

Secondary display min. light. */


Secondary display max. light. */

int recipeinp[MAXRECIN]; /* PC 361, etc. Recipe X selection input. */


int recipeout[MAXRECOUT]; /* PC 367, etc. Recipe X selection output. */
int swing2; /* PC 376. Swing-arm switch 2. */
int swing1; /* PC 377. Swing-arm switch 1. */
unsigned char psmode; /* PC 378. Pulse security mode. */
unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */
int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
byte calibfailact; /* PC 755. Calibration failure alarm action for CALMON. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398. Additive clean line output. */
int addmtrflushout; /* PC 399. Additive meter flush output. */
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endbaout; /* PC 423. End batch output. */
int endbain; /* PC 424. End batch input. */
unsigned long addmtrflushpulses; /* PC 425. Additive meter flush pulses. */
long buoyancy; /* PC 426. Density adjustment for buoyancy in air. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {
int cmpno;

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

} cmpseq[MAXCOMPS]; /* PC 486, etc.


} recipe[MAXRECIPES];

Recipe X sequence. */

struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char ddenabled; /* PC 679. Dynamic data display enabled. */
int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */
long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc. Recipe "group" low and
** high flow rates.
*/
unsigned char pttype; /* PC
unsigned char pemthd; /* PC
unsigned char pinchmthd; /*
long pinchpres; /* PC 821.
long atmospres; /* PC 822.

818. Pressure transmitter types. */


819. Pe method. */
PC 820. Pinch back method. */
Pinch back pressure. */
Atmospheric pressure. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char
int trnumpgs;
unsigned char
int banumpgs;
unsigned char

trrecl; /* PC 834. Transaction record length. */


/* PC 835. Transaction file start page (/ 100) and # pages (% 100). */
barecl; /* PC 836. Batch record length. */
/* PC 837. Batch file start page (/ 100) and # pages (% 100). */
trtkfmt; /* PC 838. Transaction ticket predefined format. */

/* Transaction storage code configuration. */


struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.
/*
**
** Data Base
****************
*/
////

3DJH   'DQ/RDG  &RPPV 6SHF

TSC X offset and row/column. */

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
**
** Data Base
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
unsigned char calmonanalmthd; /* PC 731, etc. Meter X CALMON analysis method. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte units; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */


int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, etc. Component X mass adjustment. */
} comp[MAXCOMPS];
/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

** units x 10,000) per 1000 units of product.


*/
} add[MAXADDS];
/* Factors */
int numfacs; /* PC 169. Number of factors/component. */
byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
unsigned char pwpertr; /* PC 217. Password (passcode) per transaction. */
char produnitsmnemo[7]; /* PC 218. Product units mnemonic. */
unsigned char userestart; /* PC 219. Use restart quantity. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
int commtimout[2]; /* PC 236's and 237. Comms fail time-out per channel. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte sctype[MAXSAFETY]; /* PC 265, etc.

Safety circuit X type. */

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.
*/

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int praddmaxpct; /* PC 273. Additive volume verification maximum error


** percentage.
*/
byte storeact; /* PC 274. Storage alarm action. */
byte poweract; /* PC 275. Power fail alarm action. */
byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endbatim; /* PC 279. End batch time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int startend; /* PC 342. Off-rack start/end input. */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. Range for RTD inputs on analog inputs boards. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */
byte secdsptyp; /* PC 358. Secondary display type. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int secminlt; /* PC 359.


int secmaxlt; /* PC 360.

Secondary display min. light. */


Secondary display max. light. */

int recipeinp[MAXRECIN]; /* PC 361, etc. Recipe X selection input. */


int recipeout[MAXRECOUT]; /* PC 367, etc. Recipe X selection output. */
int swing2; /* PC 376. Swing-arm switch 2. */
int swing1; /* PC 377. Swing-arm switch 1. */
unsigned char psmode; /* PC 378. Pulse security mode. */
unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */
int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
byte calibfailact; /* PC 755. Calibration failure alarm action for CALMON. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398. Additive clean line output. */
int addmtrflushout; /* PC 399. Additive meter flush output. */
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endbaout; /* PC 423. End batch output. */
int endbain; /* PC 424. End batch input. */
unsigned long addmtrflushpulses; /* PC 425. Additive meter flush pulses. */
long buoyancy; /* PC 426. Density adjustment for buoyancy in air. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {
int cmpno;

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

} cmpseq[MAXCOMPS]; /* PC 486, etc.


} recipe[MAXRECIPES];
/* v5.30 */
int commsaddr; /* PC 662.

Recipe X sequence. */

Communications address. */

struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char ddenabled; /* PC 679. Dynamic data display enabled. */
int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */
long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc. Recipe "group" low and
** high flow rates.
*/
unsigned char pttype; /* PC 818.
unsigned char pemthd; /* PC 819.

Pressure transmitter types. */


Pe method. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

unsigned char pinchmthd; /* PC 820. Pinch back method. */


long pinchpres; /* PC 821. Pinch back pressure. */
long atmospres; /* PC 822. Atmospheric pressure. */
struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char
int trnumpgs;
unsigned char
int banumpgs;
unsigned char

trrecl; /* PC 834. Transaction record length. */


/* PC 835. Transaction file start page (/ 100) and # pages (% 100). */
barecl; /* PC 836. Batch record length. */
/* PC 837. Batch file start page (/ 100) and # pages (% 100). */
trtkfmt; /* PC 838. Transaction ticket predefined format. */

/* Transaction storage code configuration. */


struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.

TSC X offset and row/column. */

/* v5.30 */
/* Calibration for 4-20 mA and RTD inputs on CPU board. */
unsigned char rtdalpha; /* PC 983. Alpha for all RTD's. */
int clcalib[4]; /* PC 984, etc. CPU board 4-20 ma input LOLO, LOHI, HILO and
** HIHI counts.
*/
int rtdcalib[4]; /* PC 988, etc. CPU board RTD input LOLO, LOHI, HILO and
** HIHI counts.
*/
/*
**
** Data Base
****************
*/
////

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
**
** Data Base
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
unsigned char calmonanalmthd; /* PC 731, etc. Meter X CALMON analysis method. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte units; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */


int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, etc. Component X mass adjustment. */
} comp[MAXCOMPS];
/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

** units x 10,000) per 1000 units of product.


*/
} add[MAXADDS];
/* Factors */
int numfacs; /* PC 169. Number of factors/component. */
byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
char grsunitsmnemo[7]; /* PC 217. Gross quantity units mnemonic. */
char stdunitsmnemo[7]; /* PC 218. Standard quantity units mnemonic. */
unsigned char userestart; /* PC 219. Use restart quantity. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
int commtimout[2]; /* PC 236's and 237. Comms fail time-out per channel. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte sctype[MAXSAFETY]; /* PC 265, etc.

Safety circuit X type. */

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.
*/

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int praddmaxpct; /* PC 273. Additive volume verification maximum error


** percentage.
*/
byte storeact; /* PC 274. Storage alarm action. */
byte poweract; /* PC 275. Power fail alarm action. */
byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endbatim; /* PC 279. End batch time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int startend; /* PC 342. Off-rack start/end input. */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. Range for RTD inputs on analog inputs boards. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */
byte secdsptyp; /* PC 358. Secondary display type. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int secminlt; /* PC 359.


int secmaxlt; /* PC 360.

Secondary display min. light. */


Secondary display max. light. */

int recipeinp[MAXRECIN]; /* PC 361, etc. Recipe X selection input. */


int recipeout[MAXRECOUT]; /* PC 367, etc. Recipe X selection output. */
int swing2; /* PC 376. Swing-arm switch 2. */
int swing1; /* PC 377. Swing-arm switch 1. */
unsigned char psmode; /* PC 378. Pulse security mode. */
unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */
int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
byte calibfailact; /* PC 755. Calibration failure alarm action for CALMON. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398. Additive clean line output. */
int addmtrflushout; /* PC 399. Additive meter flush output. */
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endbaout; /* PC 423. End batch output. */
int endbain; /* PC 424. End batch input. */
unsigned long addmtrflushpulses; /* PC 425. Additive meter flush pulses. */
long buoyancy; /* PC 426. Density adjustment for buoyancy in air. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {
int cmpno;

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

} cmpseq[MAXCOMPS]; /* PC 486, etc.


} recipe[MAXRECIPES];
/* v5.30 */
int commsaddr; /* PC 662.

Recipe X sequence. */

Communications address. */

struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char commalarmmanb; /* PC 673.

Channel B alarm in manual. */

unsigned char ddenabled; /* PC 679. Dynamic data display enabled. */


int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */
long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc. Recipe "group" low and
** high flow rates.
*/

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

unsigned char pttype; /* PC 818. Pressure transmitter types. */


unsigned char pemthd; /* PC 819. Pe method. */
unsigned char pinchmthd; /* PC 820. Pinch back method. */
long pinchpres; /* PC 821. Pinch back pressure. */
long atmospres; /* PC 822. Atmospheric pressure. */
struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char
int trnumpgs;
unsigned char
int banumpgs;
unsigned char

trrecl; /* PC 834. Transaction record length. */


/* PC 835. Transaction file start page (/ 100) and # pages (% 100). */
barecl; /* PC 836. Batch record length. */
/* PC 837. Batch file start page (/ 100) and # pages (% 100). */
trtkfmt; /* PC 838. Transaction ticket predefined format. */

/* Transaction storage code configuration. */


struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.

TSC X offset and row/column. */

/* v5.30 */
/* Calibration for 4-20 mA and RTD inputs on CPU board. */
unsigned char rtdalpha; /* PC 983. Alpha for all RTD's. */
int clcalib[4]; /* PC 984, etc. CPU board 4-20 ma input LOLO, LOHI, HILO and
** HIHI counts.
*/
int rtdcalib[4]; /* PC 988, etc. CPU board RTD input LOLO, LOHI, HILO and
** HIHI counts.
*/
/*
**
** Data Base
****************
*/
////

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
**
** Data Base
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
unsigned char calmonanalmthd; /* PC 731, etc. Meter X CALMON analysis method. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte units; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */


int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, etc. Component X mass adjustment. */
} comp[MAXCOMPS];
/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

** units x 10,000) per 1000 units of product.


*/
} add[MAXADDS];
/* Factors */
int numfacs; /* PC 169. Number of factors/component. */
byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
char grsunitsmnemo[7]; /* PC 217. Gross quantity units mnemonic. */
char stdunitsmnemo[7]; /* PC 218. Standard quantity units mnemonic. */
unsigned char userestart; /* PC 219. Use restart quantity. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
int commtimout[2]; /* PC 236's and 237. Comms fail time-out per channel. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte sctype[MAXSAFETY]; /* PC 265, etc.

Safety circuit X type. */

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.
*/

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int praddmaxpct; /* PC 273. Additive volume verification maximum error


** percentage.
*/
byte storeact; /* PC 274. Storage alarm action. */
byte poweract; /* PC 275. Power fail alarm action. */
byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endbatim; /* PC 279. End batch time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int numcpmtszin; /* PC 341. Number of compartment size inputs. */ /* v5.50 */
byte startmthd; /* PC 342. Start batch method. */ /* v5.50 */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. Range for RTD inputs on analog inputs boards. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

byte secdsptyp; /* PC 358. Secondary display type. */


int secminlt; /* PC 359. Secondary display min. light. */
int secmaxlt; /* PC 360. Secondary display max. light. */
int
int
int
int
int
int
int

recipeinp[MAXRECIN]; /* PC 361, etc. Recipe X selection input. */


recipeout[MAXRECOUT]; /* PC 367, etc. Recipe X selection output. */
levelinp; /* PC 374. Intermediate level input. */ /* v5.50 */
hatchinp; /* PC 375. Hatch sensor input. */ /* v5.50 */
swing2; /* PC 376. Swing-arm switch 2. */
swing1; /* PC 377. Swing-arm switch 1. */
loflwinp; /* PC 378. Stay in low flow input. */

unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */


int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
byte calibfailact; /* PC 755. Calibration failure alarm action for CALMON. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398. Additive clean line output. */
int addmtrflushout; /* PC 399. Additive meter flush output. */
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endbaout; /* PC 423. End batch output. */
int endbain; /* PC 424. End batch input. */
unsigned long addmtrflushpulses; /* PC 425. Additive meter flush pulses. */
long buoyancy; /* PC 426. Density adjustment for buoyancy in air. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */


struct Cmpseq {
int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc. Recipe X sequence. */
} recipe[MAXRECIPES];
/* v5.30 */
int commsaddr; /* PC 662.

Communications address. */

struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char commalarmmanb; /* PC 673.

Channel B alarm in manual. */

unsigned char ddmode; /* PC 679. Dynamic data display mode. */


int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */
long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc. Recipe "group" low and

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

** high flow rates.


*/
unsigned char pttype; /* PC 818. Pressure transmitter types. */
unsigned char pemthd; /* PC 819. Pe method. */
unsigned char pinchmthd; /* PC 820. Pinch back method. */
long pinchpres; /* PC 821. Pinch back pressure. */
long atmospres; /* PC 822. Atmospheric pressure. */
long pinchqty; /* PC 823. Pinch back qty. */
struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char
int trnumpgs;
unsigned char
int banumpgs;
unsigned char
unsigned char

trrecl; /* PC 834. Transaction record length. */


/* PC 835. Transaction file start page (/ 100) and # pages (% 100). */
barecl; /* PC 836. Batch record length. */
/* PC 837. Batch file start page (/ 100) and # pages (% 100). */
trtkfmt; /* PC 838. Transaction ticket predefined format. */
timouttr; /* PC 839. Time out transaction. */

/* Transaction storage code configuration. */


struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.

TSC X offset and row/column. */

/* v5.30 */
/* Calibration for 4-20 mA and RTD inputs on CPU board. */
unsigned char rtdalpha; /* PC 983. Alpha for all RTD's. */
int clcalib[4]; /* PC 984, etc. CPU board 4-20 ma input LOLO, LOHI, HILO and
** HIHI counts.
*/
int rtdcalib[4]; /* PC 988, etc. CPU board RTD input LOLO, LOHI, HILO and
** HIHI counts.
*/
/*
**
** Data Base
****************
*/
////

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

////
/*
**
** Data Base
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
unsigned char calmonanalmthd; /* PC 731, etc. Meter X CALMON analysis method. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte produnits; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {
char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */
int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, etc. Component X mass adjustment. */
} comp[MAXCOMPS];

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product
** units x 10,000) per 1000 units of product.
*/
} add[MAXADDS];
/* Factors

*/

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int numfacs; /* PC 169. Number of factors/component. */


byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
char grsunitsmnemo[7]; /* PC 217. Gross quantity units mnemonic. */
char stdunitsmnemo[7]; /* PC 218. Standard quantity units mnemonic. */
unsigned char userestart; /* PC 219. Use restart quantity. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
int commtimout[2]; /* PC 236's and 237. Comms fail time-out per channel. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte sctype[MAXSAFETY]; /* PC 265, etc.

Safety circuit X type. */

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.
*/
int praddmaxpct; /* PC 273. Additive volume verification maximum error
** percentage.
*/
byte storeact; /* PC 274.

Storage alarm action. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

byte poweract; /* PC 275. Power fail alarm action. */


byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endtim; /* PC 279. End time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int numcpmtszin; /* PC 341. Number of compartment size inputs. */ /* v5.50 */
byte startmthd; /* PC 342. Start batch method. */ /* v5.50 */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. Range for RTD inputs on analog inputs boards. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */
byte secdsptyp; /* PC 358. Secondary display type. */
int secminlt; /* PC 359. Secondary display min. light. */
int secmaxlt; /* PC 360. Secondary display max. light. */
int recipeinp[MAXRECIN]; /* PC 361, etc.

Recipe X selection input. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int recipeout[MAXRECOUT]; /* PC 367, etc.


unsigned char endmthd; /* PC 373.
int
int
int
int
int

Recipe X selection output. */

End output method. */ /* v5.60 */

levelinp; /* PC 374. Intermediate level input. */ /* v5.50 */


hatchinp; /* PC 375. Hatch sensor input. */ /* v5.50 */
swing2; /* PC 376. Swing-arm switch 2. */
swing1; /* PC 377. Swing-arm switch 1. */
loflwinp; /* PC 378. Stay in low flow input. */

unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */


int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
byte calibfailact; /* PC 755. Calibration failure alarm action for CALMON. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398. Additive clean line output. */
int addmtrflushout; /* PC 399. Additive meter flush output. */
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endout; /* PC 423. End output. */
int endinp; /* PC 424. End input. */
unsigned long addmtrflushpulses; /* PC 425. Additive meter flush pulses. */
long buoyancy; /* PC 426. Density adjustment for buoyancy in air. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc.
} recipe[MAXRECIPES];
int numaddcalibcycles; /* PC 662.
/* v5.30 */
int commsaddr; /* PC 662.

Recipe X sequence. */

# additive calibration injection cycles. */

Communications address. */

struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char commalarmmanb; /* PC 673.

Channel B alarm in manual. */

unsigned char ddmode; /* PC 679. Dynamic data display mode. */


int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
int addcalibdly; /* PC 720. Additive calibration delay. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc.


** high flow rates.
*/

Recipe "group" low and

unsigned char pttype; /* PC 818. Pressure transmitter types. */


unsigned char pemthd; /* PC 819. Pe method. */
unsigned char pinchmthd; /* PC 820. Pinch back method. */
long pinchpres; /* PC 821. Pinch back pressure. */
long atmospres; /* PC 822. Atmospheric pressure. */
long pinchqty; /* PC 823. Pinch back qty. */
struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char
int trnumpgs;
unsigned char
int banumpgs;
unsigned char
unsigned char

trrecl; /* PC 834. Transaction record length. */


/* PC 835. Transaction file start page (/ 100) and # pages (% 100). */
barecl; /* PC 836. Batch record length. */
/* PC 837. Batch file start page (/ 100) and # pages (% 100). */
trtkfmt; /* PC 838. Transaction ticket predefined format. */
timouttr; /* PC 839. Time out transaction. */

/* Transaction storage code configuration. */


struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.

TSC X offset and row/column. */

/* v5.30 */
/* Calibration for 4-20 mA and RTD inputs on CPU board. */
unsigned char rtdalpha; /* PC 983. Alpha for all RTD's. */
int clcalib[4]; /* PC 984, etc. CPU board 4-20 ma input LOLO, LOHI, HILO and
** HIHI counts.
*/
int rtdcalib[4]; /* PC 988, etc. CPU board RTD input LOLO, LOHI, HILO and
** HIHI counts.
*/
////

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  Y 'DWDEDVH

////
/*
**
** Data Base
*/
struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mtrvlv; /* PC 52, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
int ramppct; /* PC 730, etc. Meter X ramp percentage. */
int fpo; /* PC 756, etc. Meter X MPMC factored pulse output. */
int numblades; /* PC 757, etc. Meter X CALMON number of blades. */
long maxmaxchardev; /* PC 758, etc. Meter X CALMON max. max. characteristic deviation. */
long maxtotchardevs; /* PC 759, etc. Meter X CALMON max. total characteristic deviations.
*/
unsigned char calibsmplstat; /* PC 760, etc. Meter X calibration sample status. */
unsigned char calmonanalmthd; /* PC 731, etc. Meter X CALMON analysis method. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte produnits; /* PC 29. Product units. */
byte numdataitems; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int maxbatch; /* PC 47. Maximum batches/transaction. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {
char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */
int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, etc. Component X mass adjustment. */
} comp[MAXCOMPS];

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

/* Delivery parameters */
long maxpreset; /* PC 78. Maximum preset volume. */
long minpreset; /* PC 79. Minimum preset volume. */
byte predeltype; /* PC 80. Preset/delivery type. */
byte deldisptype; /* PC 81. Delivery display type. */
byte stopkey; /* PC 82. Stop key action. */
long fallbackvol; /* PC 83. Fall back volume. */
struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start volume. */
long loflwrestart; /* PC 85, etc. Component X low flow restart volume. */
long loflwstop; /* PC 86, etc. Component X low flow stop volume. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit (DAU) parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addselmthd; /* PC 136. Additive selection method. */
int injpct; /* PC 137. Additive inject % */
int addclnlinvol; /* PC 138. Additive clean line volume. */
byte addunits; /* PC 44. Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio volume in whole units. */
unsigned char injmthd; /* PC 141, etc. Additive X injection method. */
long kfac; /* PC 142, etc. Additive X volume per pulse or K-factor in
** hundredths.
*/
long reqdvol; /* PC 143, etc. Additive X volume (in external product
** units x 10,000) per 1000 units of product.
*/
} add[MAXADDS];
/* Factors

*/

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int numfacs; /* PC 169. Number of factors/component. */


byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
long nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
struct Mtrfac {
long flwrate; /* PC 174, etc. Component X flow rate Y. */
long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
char grsunitsmnemo[7]; /* PC 217. Gross quantity units mnemonic. */
char stdunitsmnemo[7]; /* PC 218. Standard quantity units mnemonic. */
unsigned char userestart; /* PC 219. Use restart quantity. */
/* Alarm Parameters */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. */
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflw; /* PC 232. Unauth. flow limit volume. */
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
int commtimout[2]; /* PC 236's and 237. Comms fail time-out per channel. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int addfbckcnt; /* PC 247. # pulses per additive cycle or # seconds. */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte sctype[MAXSAFETY]; /* PC 265, etc.

Safety circuit X type. */

long unauthaddflw; /* PC 271. Unauthorized additive flow volume. */


int praddminpct; /* PC 272. Additive volume verification minimum error
** percentage.
*/
int praddmaxpct; /* PC 273. Additive volume verification maximum error
** percentage.
*/
byte storeact; /* PC 274.

Storage alarm action. */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

byte poweract; /* PC 275. Power fail alarm action. */


byte rampact; /* PC 276. Ramp down alarm action. */
int ramptime; /* PC 277. Ramp down time. */
int add1000errlim; /* PC 278. Additive per 1000 error limit. */
int endtim; /* PC 279. End time. */
/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

struct Almout {
int out; /* PC 287, etc. Alarm output X. */
unsigned long mask; /* PC 269, etc. Alarm output X mask. */
} almout[MAXALMOUT];
int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */
struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
int flowinp; /* PC 322, etc. Meter X flow input. */
} mtrtmp[MAXMTR];
int numcpmtszin; /* PC 341. Number of compartment size inputs. */ /* v5.50 */
byte startmthd; /* PC 342. Start batch method. */ /* v5.50 */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. Range for RTD inputs on analog inputs boards. */
int opdly; /* PC 354. Delay after outputs, e.g. for DART 2. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */
byte secdsptyp; /* PC 358. Secondary display type. */
int secminlt; /* PC 359. Secondary display min. light. */
int secmaxlt; /* PC 360. Secondary display max. light. */
int recipeinp[MAXRECIN]; /* PC 361, etc.

3DJH   'DQ/RDG  &RPPV 6SHF

Recipe X selection input. */

'DQLHO )ORZ 3URGXFWV

int recipeout[MAXRECOUT]; /* PC 367, etc.


unsigned char endmthd; /* PC 373.
int
int
int
int
int

Recipe X selection output. */

End output method. */ /* v5.60 */

levelinp; /* PC 374. Intermediate level input. */ /* v5.50 */


hatchinp; /* PC 375. Hatch sensor input. */ /* v5.50 */
swing2; /* PC 376. Swing-arm switch 2. */
swing1; /* PC 377. Swing-arm switch 1. */
loflwinp; /* PC 378. Stay in low flow input. */

unsigned char fpobasis; /* PC 752. Factored pulse outputs basis. */


int calmonerr; /* PC 753. Calibration monitoring error limit. */
int calmonrcnt; /* PC 754. Calibration monitoring reset count. */
byte calibfailact; /* PC 755. Calibration failure alarm action for CALMON. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
int addclnlinout; /* PC 398. Additive clean line output. */
int addmtrflushout; /* PC 399. Additive meter flush output. */
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
int endout; /* PC 423. End output. */
int endinp; /* PC 424. End input. */
unsigned long addmtrflushpulses; /* PC 425. Additive meter flush pulses. */
long buoyancy; /* PC 426. Density adjustment for buoyancy in air. */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {
byte option; /* PC 432, etc. Component X temperature correction option. */
long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction option. */
long pffac; /* PC 445, etc. Component X F-factor. */
long backup; /* PC 446, etc. Component X backup pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity. */
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc.
} recipe[MAXRECIPES];
int numaddcalibcycles; /* PC 662.
/* v5.30 */
int commsaddr; /* PC 662.

Recipe X sequence. */

# additive calibration injection cycles. */

Communications address. */

struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char commalarmmanb; /* PC 673.

Channel B alarm in manual. */

unsigned char ddmode; /* PC 679. Dynamic data display mode. */


int ddpc[16]; /* PC 680, etc. Dynamic data display element X data code. */
byte batch; /* PC 696. Batch summary. */
byte trans; /* PC 697. Transaction summary. */
byte almlog; /* PC 698. Alarm log. */
byte pflog; /* PC 699. Power fail log. */
byte progmode; /* PC 700. Program mode entry/exit. */
byte wmsw; /* PC 701. W&M switch opened/closed. */
byte pcchnglog; /* PC 702. Program value change. */
byte cfglog; /* PC 703. Configuration summary data log. */
byte crash; /* PC 704. Crash memory summary. */
byte totlog; /* PC 705. Totalizers. */
byte trtkauto; /* PC 706. Transaction ticket. */
byte trtk; /* PC 708. Transaction ticket reprint. */
byte thrulog; /* PC 708. Thruput. */
byte dlogseq; /* PC 709. Sequence numbers. */
int cuthour; /* PC 710. Cutoff hour. */
/* Blending. */
int rampdownpct; /* PC 711. The percentage of the blend's current flow rate, etc. */
int deltarate; /* PC 712. Change in flow rate for batch fall back. */
long loflwstart; /* PC 713. Low flow start volume for in-line blend. */
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low proportion
** components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which blend
** ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which blend
** ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment is made. */
unsigned char comppctmthd; /* PC 719. Component % display. */
int addcalibdly; /* PC 720. Additive calibration delay. */
unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 725. Max. dev. volume. */
int blndtolvol; /* PC 726. Blend tol. volume. */
int blendsmpl; /* PC 727. Blend sample volume. */
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line blend. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc.


** high flow rates.
*/

Recipe "group" low and

unsigned char pttype; /* PC 818. Pressure transmitter types. */


unsigned char pemthd; /* PC 819. Pe method. */
unsigned char pinchmthd; /* PC 820. Pinch back method. */
long pinchpres; /* PC 821. Pinch back pressure. */
long atmospres; /* PC 822. Atmospheric pressure. */
long pinchqty; /* PC 823. Pinch back qty. */
struct Pe_lin {
int temp; /* PC 824, etc. Tx. */
long pres; /* PC 825, etc. Pe at Tx. */
} pe_lin[MAXPELIN]; /* T/Pe pairs for Pe linearization. */
/* Transaction storage. */
unsigned char
int trnumpgs;
unsigned char
int banumpgs;
unsigned char
unsigned char

trrecl; /* PC 834. Transaction record length. */


/* PC 835. Transaction file start page (/ 100) and # pages (% 100). */
barecl; /* PC 836. Batch record length. */
/* PC 837. Batch file start page (/ 100) and # pages (% 100). */
trtkfmt; /* PC 838. Transaction ticket predefined format. */
timouttr; /* PC 839. Time out transaction. */

/* Transaction storage code configuration. */


struct Sccfg tsccfg[MAXTSC]; /* PC 840, etc. TSC X offset and row/column. */
/* Batch storage code configuration. */
struct Sccfg bsccfg[MAXBSC];/* PC 880, etc.

TSC X offset and row/column. */

/* v5.30 */
/* Calibration for 4-20 mA and RTD inputs on CPU board. */
unsigned char rtdalpha; /* PC 983. Alpha for all RTD's. */
int clcalib[4]; /* PC 984, etc. CPU board 4-20 ma input LOLO, LOHI, HILO and
** HIHI counts.
*/
int rtdcalib[4]; /* PC 988, etc. CPU board RTD input LOLO, LOHI, HILO and
** HIHI counts.
*/
////

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



6FULSW 'DQ/RDG  Y 'DWDEDVH

7KH GDWDEDVH LV WKH QDPH JLYHQ WR WKH VWRUHG SURJUDP FRGH YDOXHV 7KH GDWDEDVH IRU
6FULSW 'DQ/RDG  Y LV VKRZQ EHORZ $ E\WH LV DQ XQVLJQHG FKDU

////
/*
*
*
*/

Data Base

struct {
long passcode; /* PC 1, etc. User X 9-digit passcode. */
char userid[17]; /* PC 2, etc. User X NUL terminated ID. */
byte pwacess; /* PC 3, etc. User X supervisor privilege. */
} pw[MAXUSER];
int nummtrs; /* PC 50. Number of meters. */
struct {
char mtrid[6]; /* PC 51, etc. Meter X ID. */
int mpulsin; /* PC 52, etc. Meter pulse board input. */
int mtrvlv; /* PC 53, etc. Meter X flow control valve. */
int radjfac; /* PC 729, etc. Meter X ratio adjustment factor. */
int fadjfac; /* PC 728, etc. Meter X flow adjustment factor. */
} mtrparms[MAXMTR];
byte opmode; /* PC 25. Operating mode. */
byte language; /* PC 28. Language. */
byte dtefmt; /* PC 38. Date format. */
byte dtesep; /* PC 39. Date separator. */
byte decsep; /* PC 40. Decimal separator. */
byte units; /* PC 29. Product units. */
byte stndby_prompts; /* PC 30. Number of data items. */
char dataprompt[5][33]; /* PC 31, etc. Data item X NUL terminated prompt. */
int pmt_timout; /* PC 36. Prompt time-out. */
byte chk_disp; /* PC 37. Check display. */
byte unit_type; /* PC 26. Unit type. */
byte fcv_type; /* PC 27. Valve type. */
unsigned char dspdr; /* PC 41. Display data rate. */
int transeqnum; /* PC 42. Transaction #. */
int batchseqnum; /* PC 43. Batch #. */
unsigned char roundmthd; /* PC 45. Rounding method. */
int densscale; /* PC 46. Density/gravity scale. */
int numvalves; /* PC 48. Number of (flow control) valves. */
int initflwtime; /* PC 49. Initial flow time. */
/* Component parameters */
int numcomps; /* PC 65. Number of components. */
struct {
char compid[17]; /* PC 66, etc. Component X NUL terminated ID. */
int compmtr; /* PC 67, etc. Component X meter number. */
long massadj; /* PC 68, Component X mass adjustment factor. */
} comp[MAXCOMPS];
/* Delivery parameters */
long maxpreset; /* PC 78.
long minpreset; /* PC 79.

Maximum preset quantity. */


Minimum preset quantity. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

byte
byte
byte
long

predeltype; /* PC 80. Preset/delivery type. */


deldisptype; /* PC 81. Delivery display type. */
stopkey; /* PC 82. Stop key action. */
fallbackvol; /* PC 83. Fall back quantity. */

struct Compdel {
long loflwstart; /* PC 84, etc. Component X low flow start quantity.*/
long loflwrestart; /* PC 85, etc. Component X low flow restart quantity. */
long loflwstop; /* PC 86, etc. Component X low flow stop quantity. */
int linepackdly; /* PC 87, etc. Component X line pack delay. */
int pumpstopdly; /* PC 88, etc. Component X pump stop delay. */
int blkvalvedly; /* PC 89, etc. Component X block valve delay. */
} compdel[MAXCOMPS];
int maxrampclicks; /* PC 108. Ramp clicks. */
int maxmaintclicks; /* PC 109. Maintenance clicks. */
int addpmpdly; /* PC 110. Additive pump stop delay. */
int primcmp; /* PC 111. Primary component. */
/* Digital Valve Parameters */
struct {
int dvlferrpct; /* PC 112, etc. Valve X low flow % error. */
int dvhferrpct; /* PC 113, etc. Valve X high flow % error. */
int dvdly; /* PC 114, etc. Valve X maint click adjustment. */
byte openmthd; /* PC 115, etc. Valve X open method. */
} dvparms[MAXVLV];
/* Pulse per unit parameters */
int numdaus; /* PC 128. Number of PPU's. */
struct Dau {
struct Dauctl {
byte gross;
byte net;
} dauctl[MAXMTR]; /* PC 129, etc. PPU X control meters. */
int daufactor; /* PC 130, etc. PPU X factor. */
int daupulwidth; /* PC 131, etc. PPU X pulse width. */
} dau[MAXDAU];
/* Additive Parameters */
int numadds; /* PC 135. Number of additives. */
byte addprompt; /* PC 136. Additive selection method. */
byte addtotmthd; /* PC 137. Additive totalizing method */
int injlowflw; /* PC 138. Additive clen line quantity */
byte addunits; /* PC 44.
Additive units. */
struct Add {
struct Addctl {
byte gross;
byte net;
} addctl[MAXMTR]; /* PC 139, etc. Additive X control meters. */
int ratiovol; /* PC 140, etc. Additive X ratio qty in whole units.*/
int offsetvol; /* PC 141, etc. Additive X offset quantity. */
long totvol; /* PC 142, etc, Additive X totalizing volume */
byte addavail; /* PC 143, etc, Additive X available */
} add[MAXADDS];
/* Factors */
int numfacs; /* PC 169. Number of factors/component. */
byte mfacmthd; /* PC 170. Meter factor method. */
struct Fac {
int nomkfac; /* PC 171, etc. Component X nominal K-factor. */
long mstrmfac; /* PC 172, etc. Component X master meter factor. */
/* byte tempcomp; */
struct Mtrfac {

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

long flwrate; /* PC 174, etc. Component X flow rate Y. */


long mfac; /* PC 175. Component X meter factor Y. */
} mtrfac[MAXFACS];
} fac[MAXCOMPS];
int mstrmfacpct; /* PC 215. Master meter factor percentage. */
int adjmfacpct; /* PC 216. Adjacent meter factor percentage. */
unsigned char pwpertr; /* PC 217. Password (passcode) per transaction */
char produnitsmnemo[7]; /* PC 218 Product units mnemonic */
/* Alarm Parameters */
unsigned char safetymsg; /* PC 219 Type of safety message */
int secalrst; /* PC 220. Secondary alarm reset (secs). */
byte lowflwact; /* PC 221. Low flow alarm action. */
long lowflwlim; /* PC 222. Minimum flow rate. */
int lowflwtime; /* PC 223. Low flow time. */
byte hiflwact; /* PC 224. High flow alarm action. */
long hiflwlim; /* PC 225. Maximum flow rate. */
int hiflwtime; /* PC 226. High flow time. */
int ovrunlim; /* PC 227. Overrun limit volume. *
byte undrflwact; /* PC 228. Underflow alarm action. */
int undrflwlim; /* PC 229. Underflow limit volume. */
byte noflwact; /* PC 230. No flow alarm action. */
int noflwtime; /* PC 231. No flow time. */
int unauthflwlim; /* PC 232. Unauth. flow limit volume. *
int pserr; /* PC 233. Pulse security error limit. */
long psresetcnt; /* PC 234. Pulse security reset count. */
byte dlfailact; /* PC 235. Data logging alarm action. */
byte commfailact; /* PC 236. Comms fail alarm action. */
int commtimout; /* PC 237. Comms fail time-out. */
byte tempfailact; /* PC 238. Temperature fail alarm action. */
int tempmin; /* PC 239. Min. temperature. */
int tempmax; /* PC 240. Max. temperature. */
byte densfailact; /* PC 241. Density fail alarm action. */
long densmin; /* PC 242. Minimum density/gravity. */
long densmax; /* PC 243. Maximum density/gravity. */
long presmin; /* PC 244. Minimum pressure. */
long presmax; /* PC 245. Maximum pressure. */
int adderrlim; /* PC 246. Additive error limit. */
int feedbacktime; /* PC 247
Feedback time */
int bvclsdly; /* PC 248. Block valve time. */
struct Safety {
byte action; /* PC 249, etc. Safety circuit X alarm action. */
char msg[33]; /* PC 250, etc. Safety ciruit X alarm message. */
} safety[MAXSAFETY];
byte
byte
byte
byte

sc5type;
sc6type;
sc7type;
sc8type;

/*
/*
/*
/*

PC
PC
PC
PC

265.
266.
267.
268.

Safety
Safety
Safety
Safety

circuit
circuit
circuit
circuit

5
6
7
8

type.
type.
type.
type.

*/
*/
*/
*/

/* I/O Parameters */
unsigned char islot[9]; /* Slots J1 thru J7, DUART and ARCNET. */
struct
struct
struct
struct
struct

Ioctl
Ioctl
Ioctl
Ioctl
Ioctl

mtrin[MAXMTRIN];
rtdin[MAXRTDIN];
anain[MAXANAIN];
digin[MAXDIGIN];
digout[MAXDIGOUT];

int almctlout; /* PC 287, etc.

Alarm output X. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

int pmpctlout[MAXCOMPS]; /* PC 288, etc. Component X pump output. */


struct Vlvio {
int sol1; /* PC 292, etc. Valve X solenoid 1. */
int sol2; /* PC 293, etc. Valve X solenoid 2. */
int stemsw1; /* PC 294, etc. Valve X stem switch 1. */
int stemsw2; /* PC 295, etc. Valve X stem switch 2. */
int clsinp; /* PC 296, etc. Valve X close input. */
} vlvio[MAXVLV];
byte sidemthd; /* PC 312. Side detect method. */
int dauout[MAXDAU]; /* PC 313, etc. PPU output X. */
int trip1out; /* PC 315. Trip 1 output. */
int trip2out; /* PC 316. Trip 2 output. */
int trip3out; /* PC 317. Trip 3 output. */
struct Mtrtmp {
int mtempinp; /* PC 318, etc. Meter X temperature input. */
long moffset; /* PC 319, etc. Meter X offset (Ohms). */
int mpresinp; /* PC 320, etc. Meter X pressure input. */
long pres4; /* PC 464, etc. Meter X pressure at 4 mA. */
long pres20; /* PC 465, etc. Meter X pressure at 20 mA. */
int mdensinp; /* PC 321, etc. Meter X density input. */
long dens4; /* PC 466, etc. Meter X density at 4 mA. */
long dens20; /* PC 467, etc. Meter X density at 20 mA. */
} mtrtmp[MAXMTR];
int startend; /* PC 342. Off-rack start/end input. */
int autochng; /* PC 343. Auto/manual change-over input. */
int primalrst; /* PC 344. Primary alarm reset input. */
int safetyinp[MAXSAFETY]; /* PC 345, etc. Safety circuit X input. */
byte temprange; /* PC 353. RTD inputs type. */
byte pridsptyp; /* PC 355. Primary display type. */
int priminlt; /* PC 356. Primary display min. light. */
int primaxlt; /* PC 357. Primary display max. light. */
byte secdsptyp; /* PC 358. Secondary display type. */
int secminlt; /* PC 359. Secondary display min. light. */
int secmaxlt; /* PC 360. Secondary display max. light. */
int recipeinp[MAXRECIN]; /* PC 361, etc. Recipe X selection input. */
int recipeout[MAXRECOUT]; /* PC 367, etc. Recipe X selection output. */
struct Addinp {
int ratio; /* PC 380, etc. Additive X ratio output. */
int feedback; /* PC 381, etc. Additive X feedback input. */
int select; /* PC 382, etc. Additive X selection input. */
int pmpctlout; /* PC 800, etc. Additive X pump control output. */
int bvout; /* PC 801, etc. Additive X block valve output. */
} addinp[MAXADDS];
struct Cmpio {
int bvout; /* PC 400, etc. Component X block valve output. */
int bvin; /* PC 401, etc. Component X block valve input. */
} cmpio[MAXCOMPS];
int combio[15]; /* PC 408, etc. Component combination X. */
long buoyancy; /* PC 426
buoyancy */
byte tempunits; /* PC 427. Temperature units. */
byte densunits; /* PC 428. Density units. */
byte presunits; /* PC 429. Pressure units. */
int reftemp; /* PC 430. Reference temperature. */
long tempsmpl; /* PC 431. Sample volume. */
struct Cmptemp {

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

byte option; /* PC 432, etc. Component X temp correction option.*/


long alpha; /* PC 433, etc. Component X alpha. */
int backup; /* PC 434, etc. Component X backup temperature. */
} cmptemp[MAXCOMPS];
struct Cmppres {
byte option; /* PC 444, etc. Component X pressure correction */
long pffac; /* PC 445, etc. Component X F-factor. */
long vp; /* PC 446, etc. Component X vapor pressure. */
} cmppres[MAXCOMPS];
struct Cmpdens {
byte option; /* PC 456, etc. Component X density option. */
long backup; /* PC 457, etc. Component X backup density/gravity.*/
} cmpdens[MAXCOMPS];
int numrecipes; /* PC 480. Number of recipes. */
struct Recipe {
char name[17]; /* PC 481, etc. Recipe X NUL terminated name. */
int cmppct[MAXCOMPS]; /* PC 482, etc. Recipe X component percentages. */
struct Cmpseq {
int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc. Recipe X sequence. */
} recipe[MAXRECIPES];
struct Commun {
byte mode; /* PC 663, etc. Channel X mode. */
byte baud; /* PC 664, etc. Channel X data rate. */
byte dbits; /* PC 665, etc. Channel X word size. */
byte sbits; /* PC 666, etc. Channel X stop bits. */
byte parity; /* PC 667, etc. Channel X parity. */
} commun[2];
unsigned char ddenabled; /* PC 679 Dynamic data display enabled */
int ddpc[16]; /* PC 680, etc. Dynamic data display element X DC. */
byte
byte
byte
byte
byte
byte
byte
byte
byte

batch; /* PC 696. Batch summary. */


trans; /* PC 697. Transaction summary. */
almlog; /* PC 698. Alarm log. */
pflog; /* PC 699. Power fail log. */
progmode; /* PC 700. Program mode entry/exit. */
wmsw; /* PC 701. W&M switch opened/closed. */
pcchnglog; /* PC 702. Program value change. */
provelog; /* PC 703. Meter proving run log. */
crash; /* PC 704. Crash memory summary. */

/* Blending. */
int deltarate; /* PC 712. Change in flow rate for batch fall back.*/
long loflwstart; /* PC 713. Low flow start volume for in-line blend.*/
int clnlinvol; /* PC 714. Clean line volume. */
int lopropfac; /* PC 715. The meter factor flow rate for low
** proportion components of an in-line blend.
*/
int blchkvol; /* PC 716. Correct after volume. Volume after which
** blend ratio adjustment begins.
*/
int blchkvol2; /* PC 717. Alarm after volume. Volume after which
** blend ratio alarm is checked.
*/
int vadjust; /* PC 718. Volume over which blend adjustment
** is made.
*/

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

unsigned char comppctmthd; /* PC 719. Component % display. */


unsigned char blenderrmthd; /* PC 722. Blend error method. */
int blnddev; /* PC 723. Max. dev. % */
int blndtol; /* PC 724. Blend tol. % */
int blnddevvol; /* PC 726. Blend tol. volume. */
int blndtolvol; /* PC 727. Blend sample volume. */
int blendsmpl; /* PC 173. Component X stop rate for in-line blend.*/
long stoprate[MAXCOMPS]; /* PC 173. Component X stop rate for in-line
** blend.
*/
long rflwrate[MAXRFLWRATE][2]; /* PC 776, 777, etc.
** high flow rates.
*/

Recipe "group" low and

////

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



&5& &DOFXODWLRQ
1RWH
7KLV &5& FDOFXODWLRQ VKRZQ LV IRU DQ ,QWHOW\SH
PLFURSURFHVVRU WKDW VWRUHV WKH OHDVW VLJQLILFDQW E\WH RI D
ELW ZRUG DW WKH ORZ DGGUHVV 6RPH PRGLILFDWLRQ PD\ EH
UHTXLUHG IRU RWKHU PLFURSURFHVVRUV

/****************************************************************************
**
** Filename
: crc16.c
**
**
Copyright (c) 1992 by Daniel Flow Products
**
9753 Pine Lake Drive
**
P.O. Box 55435
**
Houston
**
Texas 77255
**
**
Tel. 713-467 6000
**
Fax. 713-827 3887
**
** Modified...
** Date
: 6 December 1992
** By
: Daniel Flow Products
** Version
: 1.00
** Description : Original.
**
**
CRC-16.
**
**
16
15
2
**
X
+ X
+ X + 1
**
****************************************************************************/
#include <crc16.h>
/* Combining-value lookup table for classic CRC-16 polynomial.
*/
const unsigned short crc16tab[256] = {
0x0000,
0x01c6,
0x01cc,
0x000a,
0x01d8,
0x001e,
0x0014,
0x01d2,
0x01f0,
0x0036,
0x003c,
0x01fa,
0x0028,
0x01ee,
0x01e4,
0x0022,

0xc1c0,
0xc006,
0xc00c,
0xc1ca,
0xc018,
0xc1de,
0xc1d4,
0xc012,
0xc030,
0xc1f6,
0xc1fc,
0xc03a,
0xc1e8,
0xc02e,
0xc024,
0xc1e2,

0x81c1,
0x8007,
0x800d,
0x81cb,
0x8019,
0x81df,
0x81d5,
0x8013,
0x8031,
0x81f7,
0x81fd,
0x803b,
0x81e9,
0x802f,
0x8025,
0x81e3,

0x4001,
0x41c7,
0x41cd,
0x400b,
0x41d9,
0x401f,
0x4015,
0x41d3,
0x41f1,
0x4037,
0x403d,
0x41fb,
0x4029,
0x41ef,
0x41e5,
0x4023,

0x01c3,
0x0005,
0x000f,
0x01c9,
0x001b,
0x01dd,
0x01d7,
0x0011,
0x0033,
0x01f5,
0x01ff,
0x0039,
0x01eb,
0x002d,
0x0027,
0x01e1,

0xc003,
0xc1c5,
0xc1cf,
0xc009,
0xc1db,
0xc01d,
0xc017,
0xc1d1,
0xc1f3,
0xc035,
0xc03f,
0xc1f9,
0xc02b,
0xc1ed,
0xc1e7,
0xc021,

3DJH   'DQ/RDG  &RPPV 6SHF

0x8002,
0x81c4,
0x81ce,
0x8008,
0x81da,
0x801c,
0x8016,
0x81d0,
0x81f2,
0x8034,
0x803e,
0x81f8,
0x802a,
0x81ec,
0x81e6,
0x8020,

0x41c2,
0x4004,
0x400e,
0x41c8,
0x401a,
0x41dc,
0x41d6,
0x4010,
0x4032,
0x41f4,
0x41fe,
0x4038,
0x41ea,
0x402c,
0x4026,
0x41e0,

'DQLHO )ORZ 3URGXFWV

0x01a0,
0x0066,
0x006c,
0x01aa,
0x0078,
0x01be,
0x01b4,
0x0072,
0x0050,
0x0196,
0x019c,
0x005a,
0x0188,
0x004e,
0x0044,
0x0182,
};

0xc060,
0xc1a6,
0xc1ac,
0xc06a,
0xc1b8,
0xc07e,
0xc074,
0xc1b2,
0xc190,
0xc056,
0xc05c,
0xc19a,
0xc048,
0xc18e,
0xc184,
0xc042,

0x8061,
0x81a7,
0x81ad,
0x806b,
0x81b9,
0x807f,
0x8075,
0x81b3,
0x8191,
0x8057,
0x805d,
0x819b,
0x8049,
0x818f,
0x8185,
0x8043,

0x41a1,
0x4067,
0x406d,
0x41ab,
0x4079,
0x41bf,
0x41b5,
0x4073,
0x4051,
0x4197,
0x419d,
0x405b,
0x4189,
0x404f,
0x4045,
0x4183,

0x0063,
0x01a5,
0x01af,
0x0069,
0x01bb,
0x007d,
0x0077,
0x01b1,
0x0193,
0x0055,
0x005f,
0x0199,
0x004b,
0x018d,
0x0187,
0x0041,

0xc1a3,
0xc065,
0xc06f,
0xc1a9,
0xc07b,
0xc1bd,
0xc1b7,
0xc071,
0xc053,
0xc195,
0xc19f,
0xc059,
0xc18b,
0xc04d,
0xc047,
0xc181,

0x81a2,
0x8064,
0x806e,
0x81a8,
0x807a,
0x81bc,
0x81b6,
0x8070,
0x8052,
0x8194,
0x819e,
0x8058,
0x818a,
0x804c,
0x8046,
0x8180,

0x4062,
0x41a4,
0x41ae,
0x4068,
0x41ba,
0x407c,
0x4076,
0x41b0,
0x4192,
0x4054,
0x405e,
0x4198,
0x404a,
0x418c,
0x4186,
0x4040

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

/****************************************************************************
**
** Filename
: crc16.h
**
**
Copyright (c) 1992 by Daniel Flow Products
**
9753 Pine Lake Drive
**
P.O. Box 55435
**
Houston
**
Texas 77255
**
**
Tel. 713-467 6000
**
Fax. 713-827 3887
** Modified...
** Date
: 29 April 1994
** By
: Daniel Flow Products, Inc
**
9753 Pine Lake Drive
**
Houston, Texas 77255
** Version
: 3.00
** Description : Compute CRC-16.
**
**
16
15
2
**
X
+ X
+ X + 1
**
**
C language code example:
**
**
#include <crc16.h>
**
**
extern unsigned char buff[256];
**
**
void cmptcrc(int numchars)
**
{
**
unsigned short acc;
**
unsigned char crc_byte1, crc_byte2;
**
int i;
**
**
/* Using an array of unsigned chars for the message
**
** buffer avoids "sign extension" assignment problems.
**
*/
**
acc = 0xffff; /* Flush with ones. */
**
for (i = 0; i < numchars; i++) {
**
crc16update(buff[i], &acc);
**
}
**
crc_byte1 = acc >> 8; /* Typically assigned to
**
** buff[numchars] before
**
** transmitting.
**
*/
**
crc_byte2 = acc & 0xff; /* Typically assigned to
**
** buff[numchars + 1] before
**
** transmitting.
**
*/
**
} /* cmptcrc() */
**
**
For greater efficiency, CRC-16 can be computed
**
character-by-character as a message is transmitted or
**
received.
**
****************************************************************************/
void crc16update(unsigned short, unsigned short *);
/* Macro to calculate classic CRC-16 on data using lookup table. */
#define crc16update(d, a) *(a) = ((*(a) << 8) ^ crc16tab[(*(a) >> 8) ^ (d)])
extern const unsigned short crc16tab[256];

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



&5& &RPSXWDWLRQ 0HWKRG DQG ([DPSOH

7KH IROORZLQJ PHWKRG DQG H[DPSOH PD\ EH XVHIXO WR VRPHRQH SURJUDPPLQJ DQ LQWHUIDFH
WR WKH 'DQ/RDG  ZKR LV QRW IDPLOLDU ZLWK WKH & ODQJXDJH

1RWDWLRQ
6+/

VKLIW OHIW ELWV

6+5

VKLIW ULJKW ELWV

;25

ELWZLVH H[FOXVLYH RU

$OO QXPEHUV DUH KH[DGHFLPDO EDVH  H[FHSW WKH  LQ ELW DQG WKH URZ DQG FROXPQ
QXPEHUV LQGLFDWHG LQ VWHS  RI WKH H[DPSOH ZKLFK DUH GHFLPDO EDVH  

0HWKRG
)RU HDFK GDWD E\WH SHUIRUP WKH IROORZLQJ VWHSV
 ,GHQWLI\ WKH ELW XQVLJQHG DFFXPXODWRU D DQG ELW XQVLJQHG GDWD E\WH G  )RU WKH
ILUVW GDWD E\WH WKH DFFXPXODWRU LV )))) )RU WKH VHFRQG WKLUG IRXUWK HWF GDWD E\WHV WKH
DFFXPXODWRU LV WKH UHVXOW IURP WKH SUHYLRXV VWHS  
 &RPSXWH Z

D 6+/ 

 &RPSXWH [

D 6+5 

 &RPSXWH \

[ ;25 G \ LV DOZD\V JUHDWHU WKDQ RU HTXDO WR ]HUR DQG OHVV WKDQ RU HTXDO

WR 
 &RPSXWH ]

FUFWDE>\@ YLD WDEOH ORRNXS

 &RPSXWH Z ;25 ] ,I WKLV LWHUDWLRQ LV IRU WKH ODVW GDWD E\WH WKH UHVXOW LV WKH &5&
FKHFNVXP WKH &5& FKHFNVXP VKRXOG EH WUDQVPLWWHG KLJK E\WH ILUVW ORZ E\WH VHFRQG

([DPSOH &RPSXWH WKH &5& FKHFNVXP IRU WKH VHTXHQFH RI GDWD E\WHV
   

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

LH 6WDUW &RPPXQLFDWLRQV FRPPDQG ZLWK IXQFWLRQ FRGH  WR 'DQ/RDG  ZLWK
FRPPXQLFDWLRQV DGGUHVV 
 D

)))) IRU ILUVW GDWD E\WH DQG G

 )))) 6+/ 

))

 )))) 6+5 

))

 )) ;25 

)(

 FUFWDE>)(@

 URZ  FROXPQ  LQ WDEOH

 )) ;25 


 D

(

( IURP SUHYLRXV VWHS  DQG G

 ( 6+/ 



 ( 6+5 

(

 ( ;25 

 URZ  FROXPQ  LQ WDEOH

  ;25 

&

& IURP SUHYLRXV VWHS  DQG G

 & 6+/ 



 & 6+5 

&

 & ;25 

 WKLUG GDWD E\WH 

&

 FUFWDE>&@
  ;25 
 D

 VHFRQG GDWD E\WH 

)

 FUFWDE>)@

 D

 ILUVW GDWD E\WH 

 URZ  FROXPQ  LQ WDEOH




 IURP SUHYLRXV VWHS  DQG G

  6+/ 



  6+5 



  ;25 

 IRXUWK DQG ODVW GDWD E\WH 

%

 FUFWDE>%@

% URZ  FROXPQ  LQ WDEOH

  ;25 %

% 7KLV LV WKH ODVW GDWD E\WH 7KH &5& FKHFNVXP VKRXOG EH

WUDQVPLWWHG DV  % LH WKH FRPSOHWH PHVVDJH ZLWK &5& FKHFNVXP LV
     %

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



([DPSOH 3URJUDP

7KH IROORZLQJ LV DQ H[DPSOH SURJUDP LQ & WKDW LOOXVWUDWHV DXWRPDWLRQ V\VWHP'DQ/RDG


 FRPPXQLFDWLRQV

////
/* "example.c" */
#include <stdio.h>
#define TRUE 1
#define FALSE 0
/* Max. # bytes in a Modbus RTU message. */
#define MAXMBMSGSZ 256
/* Max. # DanLoad 6000's supported by this program. */
#define MAXDL6000 16
/* Macro to calculate classic CRC-16 on data using lookup table. */
#define crc16update(d, a) *(a) = ((*(a) << 8) ^ crc16tab[(*(a) >> 8) ^ (d)])
/***************************************************************************/
struct Dl6000 {
unsigned char *omsg; /* Message buffer for sending. */
unsigned char *imsg; /* Message buffer for receiving. */
unsigned char addr; /* DanLoad 6000 address. */
unsigned char fc; /* Modbus RTU function code. */
unsigned char online; /* Online/offline flag. */
/*** DanLoad 6000 configuration. ***/
int nummtrs;
int numcomps;
int numvalves;
int numfacs;
int numrecipes;
int numadds;
unsigned char tempunits;
};
/***************************************************************************/
FILE *port; /* FILE should be typedef in <stdio.c>. */
int baud_rate;
unsigned char mbmsgin[MAXMBMSGSZ];
unsigned char mbmsgout[MAXMBMSGSZ];
struct Dl6000 dl6000[MAXDL6000];
/* Combining-value lookup table for classic
const unsigned short crc16tab[256] = {
0x0000, 0xc1c0, 0x81c1, 0x4001, 0x01c3,
0x01c6, 0xc006, 0x8007, 0x41c7, 0x0005,
0x01cc, 0xc00c, 0x800d, 0x41cd, 0x000f,
0x000a, 0xc1ca, 0x81cb, 0x400b, 0x01c9,
0x01d8, 0xc018, 0x8019, 0x41d9, 0x001b,
0x001e, 0xc1de, 0x81df, 0x401f, 0x01dd,
0x0014, 0xc1d4, 0x81d5, 0x4015, 0x01d7,
0x01d2, 0xc012, 0x8013, 0x41d3, 0x0011,

CRC-16 polynomial. */
0xc003,
0xc1c5,
0xc1cf,
0xc009,
0xc1db,
0xc01d,
0xc017,
0xc1d1,

0x8002,
0x81c4,
0x81ce,
0x8008,
0x81da,
0x801c,
0x8016,
0x81d0,

0x41c2,
0x4004,
0x400e,
0x41c8,
0x401a,
0x41dc,
0x41d6,
0x4010,

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

0x01f0,
0x0036,
0x003c,
0x01fa,
0x0028,
0x01ee,
0x01e4,
0x0022,
0x01a0,
0x0066,
0x006c,
0x01aa,
0x0078,
0x01be,
0x01b4,
0x0072,
0x0050,
0x0196,
0x019c,
0x005a,
0x0188,
0x004e,
0x0044,
0x0182,

0xc030,
0xc1f6,
0xc1fc,
0xc03a,
0xc1e8,
0xc02e,
0xc024,
0xc1e2,
0xc060,
0xc1a6,
0xc1ac,
0xc06a,
0xc1b8,
0xc07e,
0xc074,
0xc1b2,
0xc190,
0xc056,
0xc05c,
0xc19a,
0xc048,
0xc18e,
0xc184,
0xc042,

0x8031,
0x81f7,
0x81fd,
0x803b,
0x81e9,
0x802f,
0x8025,
0x81e3,
0x8061,
0x81a7,
0x81ad,
0x806b,
0x81b9,
0x807f,
0x8075,
0x81b3,
0x8191,
0x8057,
0x805d,
0x819b,
0x8049,
0x818f,
0x8185,
0x8043,

0x41f1,
0x4037,
0x403d,
0x41fb,
0x4029,
0x41ef,
0x41e5,
0x4023,
0x41a1,
0x4067,
0x406d,
0x41ab,
0x4079,
0x41bf,
0x41b5,
0x4073,
0x4051,
0x4197,
0x419d,
0x405b,
0x4189,
0x404f,
0x4045,
0x4183,

0x0033,
0x01f5,
0x01ff,
0x0039,
0x01eb,
0x002d,
0x0027,
0x01e1,
0x0063,
0x01a5,
0x01af,
0x0069,
0x01bb,
0x007d,
0x0077,
0x01b1,
0x0193,
0x0055,
0x005f,
0x0199,
0x004b,
0x018d,
0x0187,
0x0041,

0xc1f3,
0xc035,
0xc03f,
0xc1f9,
0xc02b,
0xc1ed,
0xc1e7,
0xc021,
0xc1a3,
0xc065,
0xc06f,
0xc1a9,
0xc07b,
0xc1bd,
0xc1b7,
0xc071,
0xc053,
0xc195,
0xc19f,
0xc059,
0xc18b,
0xc04d,
0xc047,
0xc181,

0x81f2,
0x8034,
0x803e,
0x81f8,
0x802a,
0x81ec,
0x81e6,
0x8020,
0x81a2,
0x8064,
0x806e,
0x81a8,
0x807a,
0x81bc,
0x81b6,
0x8070,
0x8052,
0x8194,
0x819e,
0x8058,
0x818a,
0x804c,
0x8046,
0x8180,

0x4032,
0x41f4,
0x41fe,
0x4038,
0x41ea,
0x402c,
0x4026,
0x41e0,
0x4062,
0x41a4,
0x41ae,
0x4068,
0x41ba,
0x407c,
0x4076,
0x41b0,
0x4192,
0x4054,
0x405e,
0x4198,
0x404a,
0x418c,
0x4186,
0x4040

};
/***************************************************************************/
/* Prototypes. */
unsigned int crc_calc(void *, int);
void delay(unsigned int);
int fclose(FILE *);
int fflush(FILE *);
int fgetc(FILE *);
FILE *fopen(const char *, const char *);
int fputc(int, FILE *);
void logerr(char *);
void mkdlmsg(struct Dl6000 *, unsigned char, unsigned char);
void mkmbmsg(unsigned char, unsigned char, int, unsigned char *);
void start_comms(struct Dl6000 *);
int txdl(struct Dl6000 *);
int ungetc(int, FILE *);
/***************************************************************************/
main()
{
int dlx;
if ((port = fopen("COM", "r+b")) != NULL) {
baud_rate = 9600;
for (dlx = 0; dlx < MAXDL6000; dlx++) {
/* Set addresses for testing. */
dl6000[dlx].addr = (unsigned char) dlx;
/* All DL6000's on the same port, i.e. the same multidrop, can
** use the same transmit and receive buffers. (Master/slave
** comms demands one query and

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

** one response.)
*/
dl6000[dlx].imsg = mbmsgin;
dl6000[dlx].omsg = mbmsgout;
/* Start comms and get version numbers. */
start_comms(&dl6000[dlx]);
}
/* Other start-up processing, e.g. set date and time, request program
** code values, audit program codes, get stored transactions, etc.
*/
/* ... */
fclose(port);
return (0);
}
else {
logerr("Couldn't open port");
return (-1);
}
} /* main() */
/***************************************************************************/
/* Start communications and get version number. */
void start_comms(struct Dl6000 *dl)
{
dl->online = TRUE; /* txdl() will make FALSE if necessary. */
mkdlmsg(dl, 2, 0x21);
mkmbmsg(dl->addr, *(dl->omsg + 1), 2, dl->omsg);
(void) txdl(dl);
if (dl->online) {
/* Store configuration information. */
dl->nummtrs = *(int *) (dl->imsg + 4);
dl->numcomps = *(int *) (dl->imsg + 6);
dl->numvalves = *(int *) (dl->imsg + 8);
dl->numfacs = *(int *) (dl->imsg + 10);
dl->numrecipes = *(int *) (dl->imsg + 12);
dl->numadds = *(int *) (dl->imsg + 14);
dl->tempunits = *(unsigned char *) (dl->imsg + 16);
/* Get version number. */
mkdlmsg(dl, 2, 0x2a);
mkmbmsg(dl->addr, *(dl->omsg + 1), 2, dl->omsg);
(void) txdl(dl);
if (*(dl->imsg + 3) == 0x2a) {
/* Process version number. */
/* ... */
}
else {
dl->online = FALSE;
logerr("Unable to get version number");
}
} /* if online. */
} /* start_comms() */

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

/***************************************************************************/
/* Make Modbus RTU message frame. Number of characters to transmit will be
** dcnt + 4.
*/
void mkmbmsg(unsigned char adr, /* Slave address. */
unsigned char fc, /* Modbus RTU function code. */
int dcnt, /* Number of characters in data field (0 to 250). */
unsigned char *mbmsg)
{
unsigned int crc;
*(mbmsg) = adr; /* Address. */
*(mbmsg + 1) = fc; /* Function code. */
crc = crc_calc(mbmsg, dcnt + 2);
*(mbmsg + dcnt + 2) = (unsigned char) (crc >> 8);
*(mbmsg + dcnt + 3) = (unsigned char) (crc & 0xff);
} /* mkmbmsg() */
/***************************************************************************/
/* Make DanLoad 6000 Modbus RTU message. */
void mkdlmsg(struct Dl6000 *dl,
unsigned char dfl, /* Data field length. */
unsigned char cmd) /* DanLoad 6000 command code. */
{
*(dl->omsg + 1) = dl->fc; /* Use current Modbus RTU function code. */
/* Set next Modbus RTU function code. */
switch (dl->fc) {
case 0x41:
dl->fc = 0x42;
break;
case 0x42:
dl->fc = 0x41;
break;
default:
logerr("Invalid function code");
break;
} /* switch */
*(dl->omsg + 2) = dfl; /* First byte of data field. */
*(dl->omsg + 3) = cmd; /* Second byte of data field. */
} /* mkdlmsg() */
/***************************************************************************/
/* Transmit message to DanLoad 6000 and process response. */
int txdl(struct Dl6000 *dl)
{
int i, cnt, trycnt;
int c;
unsigned int crc;
unsigned char fc; /* Function code. */
/* Store function code for checking response. */
fc = *(dl->omsg + 1);
/* Initialize try count. */
trycnt = 0;
do {

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

(void) fflush(port); /* Flush I/O buffers. */


/* Transmit query. */
for (i = 0; i < *(dl->omsg + 2) + 4; i++) {
fputc(*(dl->omsg + i), port);
}
/* Process response. */
i = 0;
crc = 0xffff; /* Flush with 1's. */
/* Wait up to 1000 ms for first character. */
for (cnt = 0; cnt < 10; cnt++) {
if ((c = fgetc(port)) != EOF) {
/* One or more characters received. */
(void) ungetc(c, port);
break;
}
delay(100);
cnt++;
}
if (cnt == 10) {
logerr("No response");
trycnt++;
continue;
}
do {
while ((c = fgetc(port)) != EOF) {
/* Copy received message into message buffer. */
*(dl->imsg + i) = (unsigned char) c;
/* Update checksum as we go. */
crc16update(*(dl->imsg + i), &crc);
cnt = 0; /* Reset with each character in. */
i++;
}
/* Delay one character time assuming 10 bits per character. */
switch (baud_rate) {
case 110:
delay(91);
break;
case 150:
delay(67);
break;
case 300:
delay(34);
break;
case 600:
delay(17);
break;
case 1200:
delay(9);
break;
case 2400:
delay(5);
break;
case 4800:

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

delay(3);
break;
case 9600:
delay(2);
break;
default:
logerr("Invalid baud rate programmed");
break;
} /* switch */
cnt++;
} while (cnt < 4); /* Count 4 characters. */
/* Check checksum. */
if (crc != 0) {
logerr("Invalid checksum");
trycnt++;
continue;
}
/* Check function code. An exception is a valid response at this
** level, but must be dealt with by the application.
*/
if (*(dl->imsg + 1) != fc) {
if (*(dl->imsg + 1) == (fc | 0x80)) {
logerr("Exception");
}
else {
logerr("Invalid function code");
trycnt++;
continue;
}
}
return (0); /* Success. */
} while (trycnt < 3);
dl->online = FALSE; /* Flag offline on failure. */
return (-1); /* Failure. */
} /* txdl() */
/***************************************************************************/
/* System dependent function to delay x milliseconds. */
void delay(unsigned int x)
{
} /* delay() */
/***************************************************************************/
/* System dependent error logging. */
void logerr(char *s)
{
} /* logerr() */
/***************************************************************************/
/* End of file. */
////

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

&RPPXQLFDWLRQV &RPPDQGV

7KH FRPPDQGV DUH OLVWHG E\ FRPPDQG FRGH 7KH FRPPDQG FRGH LQ KH[ DQG YHUVLRQ
QXPEHU V LQ ZKLFK WKH FRPPDQG LV DYDLODEOH DUH LQ SDUHQWKHVHV DIWHU WKH FRPPDQG QDPH
HJ 3URPSW 5HFLSH K Y DQG DERYH 

1RWH
'DQ/RDG  Y ZDV WKH ILUVW YHUVLRQ WR VXSSRUW
DXWRPDWLRQ V\VWHP FRPPXQLFDWLRQV
7KH FRPPDQG FRGHV DUH GRFXPHQWHG LQ WKH IROORZLQJ IRUPDW

1RWH
,I \RX XVH D & ODQJXDJH VWUXFW RU D 3DVFDO UHFRUG WR KROG
WKH GDWD \RXU FRPSLOHU PXVW VXSSRUW SDFNHG VWUXFWXUHV
LI \RX LQWHQG WR WUDQVIHU GDWD GLUHFWO\ EHWZHHQ WKH
VWUXFWXUH DQG WKH VHULDO SRUW ,W PD\ EH PRUH FRQYHQLHQW WR
UHSUHVHQW WKH TXHU\ DQG UHVSRQVH GDWD DV DQ DUUD\ RI
E\WHV
4XHU\ GDWD

7KH GDWD ILHOG WUDQVPLWWHG WR WKH 'DQ/RDG  LH RQH RU PRUH
GDWD YDOXHV 7KH ILUVW E\WH RI WKH GDWD ILHOG LV WKH GDWD ILHOG OHQJWK
7KH GDWD LV UHSUHVHQWHG DV D TXDVL & /DQJXDJH VWUXFWXUH TXDVL
EHFDXVH WKH & ODQJXDJH GRHV QRW DFWXDOO\ VXSSRUW DUUD\V ZLWK WKHLU
GLPHQVLRQ LQLWLDOL]HG E\ D YDULDEOH VXFK DV DUH LQGLFDWHG LQ VRPH
FRPPDQGV ZKLFK PD\ LQ SUDFWLFH PD\ FRQWDLQ KROHV GXH WR
DOLJQPHQW UHTXLUHPHQWV RQ GLIIHUHQW KDUGZDUH SODWIRUPV +RZHYHU
WKH GDWD LV WUDQVPLWWHG DV LI WKH VWUXFWXUH ZHUH SDFNHG LH QR KROHV

'DWD W\SH

 E\WHV

FKDU

LQW

ORQJ

SRLQWHU

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

&RXQWHUV VXFK DV QXPPWUV DUH DOZD\V SRVLWLRQHG LQ D PHVVDJH VR


WKDW WKHLU ORFDWLRQ LV LQGHSHQGHQW RI DQ\ YDULDEOH OHQJWK GDWD LH WKH\
SUHFHGH DQ\ YDULDEOH OHQJWK GDWD LQ D PHVVDJH
,PSOLFLWO\ DQ DUUD\ RI GLPHQVLRQ ]HUR RFFXSLHV ]HUR E\WHV

5HVSRQVH GDWD

7KH GDWD ILHOG UHFHLYHG IURP WKH 'DQ/RDG  LH RQH RU PRUH
GDWD YDOXHV

1RWH
7KH GDWD ILHOG OHQJWK LV QRW QHFHVVDULO\ FRQVWDQW IRU DQ\
JLYHQ FRPPDQG FRGH HJ WKH UHVSRQVH WR WKH 0HWHU
7RWDOL]HUV FRPPDQG GHSHQGV RQ WKH QXPEHU RI PHWHUV
FRQILJXUHG
6WDWXV IODJV LPPHGLDWHO\ VHW
7KH VWDWXV IODJV LPPHGLDWHO\ VHW E\ WKLV TXHU\ LH SULRU WR WKH
UHVSRQVH LI WKHUH LV QR H[FHSWLRQ

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


7KH VWDWXV IODJV LPPHGLDWHO\ FOHDUHG E\ WKLV TXHU\ LH SULRU WR WKH
UHVSRQVH LI WKHUH LV QR H[FHSWLRQ

([FHSWLRQV

([FHSWLRQ UHVSRQVH FRGHV WKDW PD\ EH UHFHLYHG E\ WKH DXWRPDWLRQ


V\VWHP LQ UHVSRQVH WR WKH FRPPDQG
7KH 'DQ/RDG  UHVSRQGV ZLWK H[FHSWLRQ UHVSRQVH FRGH K
ZKHQ LW UHFHLYHV DQ LQYDOLG FRPPDQG FRGH IURP WKH DXWRPDWLRQ
V\VWHP

7KLV H[FHSWLRQ UHVSRQVH FRGH LV QRW LQFOXGHG LQ WKH OLVW RI

SRVVLEOH H[FHSWLRQ UHVSRQVH FRGHV IRU HDFK YDOLG FRPPDQG

'HVFULSWLRQ

$GGLWLRQDO LQIRUPDWLRQ GHVFULELQJ WKH PHVVDJH VWUXFWXUH DQG WKH


SURFHVVLQJ WKDW LV SHUIRUPHG

9DOLG PRGHV

7KH 'DQ/RDG 


V RSHUDWLQJ PRGHV VHH 3URJUDP &RGH  LQ
ZKLFK WKH FRPPDQG FDQ EH XVHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



3URPSW 5HFLSH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int timout; /* Time-out seconds. 0=No time-out.
time-out. */
};

<0=Use configured

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K .H\SDG DQG GLVSOD\ ORFNHG RXW

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K 2SHUDWLRQ WLPH RXW
K 5HFLSH VHOHFWHG

([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


$K 3ULPDU\ DODUP DFWLYH
&K 7UDQVDFWLRQ DXWKRUL]HG
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1XPEHU RI UHFLSHV  

1RW 'DQ/RDG  Y DQG DERYH

K .H\SDG DQG GLVSOD\ ORFNHG RXW

'HVFULSWLRQ

7KLV FRPPDQG DOORZV WKH DXWRPDWLRQ V\VWHP WR OHW DQ RSHUDWRU VHOHFW


D UHFLSH DW WKH 'DQ/RDG  7KH NH\SDG DQG GLVSOD\ DUH ORFNHG
RXW WR WKH DXWRPDWLRQ V\VWHP
7KH 'DQ/RDG  GLVSOD\V WKH 5HFLSH 6HOHFWLRQ 'LVSOD\ VWDUWLQJ
ZLWK WKH ILUVW SDJH ZLWK WKH ILUVW UHFLSH KLJKOLJKWHG DQG SURPSWV WKH
RSHUDWRU WR VHOHFW D UHFLSH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW D WLPHRXW KDV


RFFXUUHG 7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW D UHFLSH KDV
EHHQ VHOHFWHG E\ WKH RSHUDWRU

7KH DXWRPDWLRQ V\VWHP FDQ REWDLQ

WKH 'DQ/RDG 


V VWDWXV IODJV XVLQJ WKH 5HTXHVW 6WDWXV FRPPDQG

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HTXHVW 6HOHFWHG 5HFLSH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int recipenumber; /* 1->30 */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

$K 3ULPDU\ DODUP DFWLYH


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1R UHFLSH VHOHFWHG

'HVFULSWLRQ

7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW D UHFLSH KDV EHHQ
VHOHFWHG E\ WKH RSHUDWRU

7KH DXWRPDWLRQ V\VWHP FDQ UHTXHVW WKH

VHOHFWHG UHFLSH XVLQJ WKH 5HTXHVW 6HOHFWHG 5HFLSH FRPPDQG


7KH

DXWRPDWLRQ

V\VWHP

7UDQVDFWLRQ FRPPDQG
RSHUDWRU

RU

FDQ

EH

VSHFLILHV

UHFLSH

LQ

WKH

$XWKRUL]H

7KLV FDQ EH WKH UHFLSH VHOHFWHG E\ WKH


GHWHUPLQHG

E\

WKH

DXWRPDWLRQ

V\VWHP

LQGHSHQGHQWO\

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



3URPSW $GGLWLYHV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int timout; /* Time-out seconds. 0=No time-out. <0=Use configured
time-out. */
unsigned char addsel; /* Suggested additive selection bit map. Re.
8.5. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K .H\SDG DQG GLVSOD\ ORFNHG RXW

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K 2SHUDWLRQ WLPHG RXW
K $GGLWLYHV VHOHFWHG

([FHSWLRQV

K 7UDQVDFWLRQ LQ SURJUHVV


$K 3ULPDU\ DODUP DFWLYH
&K 7UDQVDFWLRQ DXWKRUL]HG
K 1R DGGLWLYHV FRQILJXUHG
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K .H\SDG DQG GLVSOD\ ORFNHG RXW

'HVFULSWLRQ

7KLV LV XVHG ZKHQ WKH DXWRPDWLRQ V\VWHP UHTXLUHV WKH RSHUDWRU WR


VHOHFW DGGLWLYHV DW WKH NH\SDG
7KH 'DQ/RDG  GLVSOD\V WKH $GGLWLYH 6HOHFWLRQ 6FUHHQ LI LW LV QRW
DOUHDG\ GLVSOD\HG ZLWK WKH VXJJHVWHG DGGLWLYH VHOHFWLRQ DQG SURPSWV
WKH RSHUDWRU WR VHOHFW DGGLWLYHV
FDQ EH QR DGGLWLYHV

3DJH   'DQ/RDG  &RPPV 6SHF

7KH VXJJHVWHG DGGLWLYH VHOHFWLRQ

'DQLHO )ORZ 3URGXFWV

7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW WKH DGGLWLYH VHOHFWLRQ
LV FRPSOHWH RU WKDW D WLPHRXW RFFXUUHG GLVSOD\V 3OHDVH ZDLW DQG
ZDLWV IRU D FRPPDQG
7KLV FRPPDQG GRHV QRW UHVXOW LQ DQ DGGLWLYH VHOHFWLRQ EHLQJ VHW LQ WKH
'DQ/RDG 

,W MXVW DOORZV WKH DXWRPDWLRQ V\VWHP WR REWDLQ D

SRVVLEOH DGGLWLYH VHOHFWLRQ IURP DQ RSHUDWRU DW WKH 'DQ/RDG 


7KH DXWRPDWLRQ V\VWHP FDQ VHW WKH DGGLWLYH VHOHFWLRQ XVLQJ WKH
$XWKRUL]H 7UDQVDFWLRQ FRPPDQG

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 6HOHFWHG $GGLWLYHV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char addsel; /* Additive selection bit map.
};

Re. 8.5. */

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

$K 3ULPDU\ DODUP DFWLYH


&K 7UDQVDFWLRQ DXWKRUL]HG
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1R DGGLWLYH VHOHFWLRQ PDGH

'HVFULSWLRQ

7KLV LV XVHG IROORZLQJ WKH 3URPSW $GGLWLYHV FRPPDQG ZKHQ WKH


'DQ/RDG  LQGLFDWHV WKDW DQ DGGLWLYH VHOHFWLRQ KDV EHHQ PDGH
WR REWDLQ WKH DGGLWLYH VHOHFWLRQ SRVVLEO\ QRQH IURP WKH 'DQ/RDG

7KH

DXWRPDWLRQ

V\VWHP

VSHFLILHV

DQ

DGGLWLYH

VHOHFWLRQ

LQ

WKH

$XWKRUL]H 7UDQVDFWLRQ FRPPDQG 7KLV FDQ EH WKH DGGLWLYH VHOHFWLRQ


PDGH E\ WKH RSHUDWRU RU FDQ EH GHWHUPLQHG E\ WKH DXWRPDWLRQ V\VWHP
LQGHSHQGHQWO\
7KH DGGLWLYH VHOHFWLRQ DGGVHO LV GHVFULEHG LQ D WDEOH EHORZ

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



7LPH2XW 2SHUDWLRQ K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


K %DWFK LQ SURJUHVV
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

,I WKH 'DQ/RDG 


V LV SURPSWLQJ IRU D UHFLSH SURPSWLQJ IRU
DGGLWLYHV SURPSWLQJ IRU D SUHVHW YROXPH SURPSWLQJ IRU NH\SDG LQSXW
GLVSOD\LQJ D PHVVDJH RU ZDLWLQJ IRU WKH RSHUDWRU WR VWDUW RU DERUW D
EDWFK WKH RSHUDWLRQ LV WLPHG RXW
6WDWXV IODJ K 2SHUDWLRQ WLPHG RXW ZLOO EH VHW VXEVHTXHQWO\
7KH 'DQ/RDG  GLVSOD\V 3OHDVH ZDLW DQG ZDLWV IRU D IXUWKHU
FRPPDQG IURP WKH DXWRPDWLRQ V\VWHP

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



$XWKRUL]H 7UDQVDFWLRQ K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int recipenumber; /* Recipe number 1->30. */
unsigned char addselmthd; /* Additive selection method. */
unsigned char addsel; /* Additive selection bit map. Re. 8.5. */
unsigned char side; /* Swing-arm side. */
unsigned char numdataprompts; /* 0->5 */
long dataitem[numdataprompts]; /* Data items. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int transeqnum; /* Prospective transaction sequence number. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K .H\SDG DQG GLVSOD\ ORFNHG RXW

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K 5HFLSH VHOHFWHG
K $GGLWLYH VHOHFWHG
&K 7UDQVDFWLRQ HQGHG
K 7UDQVDFWLRQ HQG UHTXHVWHG

([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


$K 3ULPDU\ DODUP DFWLYH
&K 7UDQVDFWLRQ DXWKRUL]HG
K $GGLWLYH QRW DYDLODEOH
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K .H\SDG DQG GLVSOD\ ORFNHG RXW
K ,QYDOLG UHFLSH QXPEHU
K ,QYDOLG QXPEHU RI GDWD SURPSWV
K ,QYDOLG VZLQJDUP VLGH
(K ,QYDOLG DGGLWLYH VHOHFWLRQ PHWKRG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

'HVFULSWLRQ

$ WUDQVDFWLRQ IRU UHFLSH UHFLSHQXPEHU VLGH VLGH DQG DGGLWLYHV


GHWHUPLQHG E\ DGGVHO DQG DGGVHOPWKG LV DXWKRUL]HG EXW QRW VWDUWHG
7KH DXWRPDWLRQ V\VWHP LQGLFDWHV RQ ZKLFK VLGH  RU  ORDGLQJ LV
DXWKRUL]HG WR WDNH SODFH 7KH YDOXH  VKRXOG EH XVHG IRU QRQVZLQJ
DUP DSSOLFDWLRQV

DGGVHOLV WKH DGGLWLYH VHOHFWLRQ ZKLFK GHWHUPLQHV ZKLFK DGGLWLYH UDWLR


RXWSXWV DUH F\FOHG GXULQJ D EDWFK
7KH DGGLWLYH VHOHFWLRQ PHWKRGV DGGVHOPWKG DUH

$GGLWLYH VHOHFWLRQ SHU DGGVHO LQ WKH


$XWKRUL]H 7UDQVDFWLRQ FRPPDQG LH
VHOHFWHG E\ DXWRPDWLRQ V\VWHP

$GGLWLYH VHOHFWLRQ SHU 'DQ/RDG



V FRQILJXUHG DGGLWLYH VHOHFWLRQ
PHWKRG SURJUDP FRGH  

1RWH
$ IDXOW LQ WKH VWDQGDUG 'DQ/RDG  Y DQG EHORZ
ILUPZDUH SUHYHQWV WKH DXWRPDWLRQ V\VWHP IURP VHOHFWLQJ
WKH DGGLWLYHV WKURXJK FRPPXQLFDWLRQV LI WKH FRQILJXUHG
DGGLWLYH VHOHFWLRQ PHWKRG LV ,QSXWV
,I DGGLWLYHV DUH HQDEOHG YLD H[WHUQDO WR WKH 'DQ/RDG  FRQWDFWV
WKDW FRPSOHWH HOHFWULFDO FLUFXLWV EHWZHHQ WKH 'DQ/RDG 
V DGGLWLYH
UDWLR RXWSXWV DQG WKH DGGLWLYH LQMHFWRUV WKH DXWRPDWLRQ V\VWHP VKRXOG
VHOHFW DOO VL[ DGGLWLYHV E\ VHWWLQJ DGGVHOPWKG WR  DQG DGGVHO WR )K


ELQDU\ 

WKRXJK

IHZHU

WKDQ

VL[

DGGLWLYHV

PD\

EH

FRQILJXUHG RQ WKH 'DQ/RDG  SURJUDP FRGH   $Q DOWHUQDWLYH


LV IRU WKH DXWRPDWLRQ V\VWHP WR VHW ELWV LQ DGGVHO EDVHG RQ WKH
FRQILJXUHG QXPEHU RI DGGLWLYHV LQ WKH 'DQ/RDG 
V UHVSRQVH WR
WKH 6WDUW &RPPXQLFDWLRQV FRPPDQG %HDU LQ PLQG WKDW LW LV SRVVLEOH
IRU HDFK 'DQ/RDG WR KDYH D GLIIHUHQW FRQILJXUHG QXPEHU RI DGGLWLYHV

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KH DXWRPDWLRQ V\VWHP FDQ LQFOXGH XS WR ILYH GDWD LWHPV HDFK LQ WKH
UDQJH  WR  IRU WKH 'DQ/RDG  WR VWRUH LQ WUDQVDFWLRQ
VWRUDJH PHPRU\ HJ SUHYLRXVO\ HQWHUHG RUGHU QXPEHU RU GULYHU
QXPEHU
SURPSW

,Q WKH PDQXDO RSHUDWLQJ PRGH WKH 'DQ/RDG  FDQ


WKH

RSHUDWRU

IRU

WKHVH

GDWD

LWHPV

DQG

VWRUH

WKHP

LQ

WUDQVDFWLRQ VWRUDJH PHPRU\


7KH 'DQ/RDG  LQGLFDWHV WKH WUDQVDFWLRQ VHTXHQFH QXPEHU
WUDQVHTQXP WKDW ZLOO EH XVHG LI D WUDQVDFWLRQ LV ODWHU VWDUWHG E\
VWDUWLQJ WKH ILUVW EDWFK RQ WKH WUDQVDFWLRQ 7KH WUDQVDFWLRQ VHTXHQFH
QXPEHU UROOV IURP  WR 
7KH 'DQ/RDG  GLVSOD\V WKH ORDGLQJ GLVSOD\ LI LW LV QRW DOUHDG\
GLVSOD\HG DQG GLVSOD\V 3OHDVH ZDLW 7KH $XWKRUL]HG 7UDQVDFWLRQ
FRPPDQG LV WKH PHDQV E\ ZKLFK WKH DXWRPDWLRQ V\VWHP FDXVHV WKH
ORDGLQJ VFUHHQ WR EH GLVSOD\HG 7KH ODUJH QXPEHU SUHVHW YROXPH
RQ WKH ORDGLQJ GLVSOD\ LV FOHDUHG LI LW LV SUHVHQW  7KH EDWFK ORDGHG
SUHVHW DQG UHPDLQLQJ YROXPHV DQG WKH WUDQVDFWLRQ YROXPH DUH
]HURHG
6WDWXV IODJ K 7UDQVDFWLRQ DXWKRUL]HG ZLOO EH VHW VXEVHTXHQWO\

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



(QG 7UDQVDFWLRQ K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char side; /* Swing-arm side. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int transeqnum; /* Transaction sequence number. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K %DWFK LQ SURJUHVV


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1R WUDQVDFWLRQ DXWKRUL]HG
K ,QYDOLG VZLQJDUP VLGH

'HVFULSWLRQ

7KH VLGH VKRXOG EH WKH VZLQJDUP VLGH RQ ZKLFK WKH WUDQVDFWLRQ ZDV
DXWKRUL]HG
,I WKHUH LV D WUDQVDFWLRQ LQ SURJUHVV WKH 'DQ/RDG  SHUIRUPV HQG
RI WUDQVDFWLRQ SURFHVVLQJ
,I D WUDQVDFWLRQ LV DXWKRUL]HG EXW WKHUH LV QR WUDQVDFWLRQ LQ SURJUHVV
WKH 'DQ/RDG  GRHV QRW SHUIRUP HQG RI WUDQVDFWLRQ SURFHVVLQJ
EXW VLPSO\ GHDXWKRUL]HV WKH WUDQVDFWLRQ
7KH 'DQ/RDG  VWRUHV IXUWKHU WUDQVDFWLRQ GDWD LH GDWH WLPH
JURVV YROXPH QHW YROXPH RU PDVVZHLJKW DYHUDJH WHPSHUDWXUH HWF
7KH 'DQ/RDG  UHVSRQGV ZLWK WKH WUDQVDFWLRQ VHTXHQFH QXPEHU
RI WKH WUDQVDFWLRQ WKDW ZLOO EH EHHQ HQGHG
6WDWXV IODJ K 7UDQVDFWLRQ LQ SURJUHVV LV FOHDUHG VXEVHTXHQWO\
&K 7UDQVDFWLRQ HQGHG LV VHW VXEVHTXHQWO\ DQG K 7UDQVDFWLRQ
DXWKRUL]HG LV FOHDUHG VXEVHTXHQWO\

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KH 'DQ/RDG  GLVSOD\V 3OHDVH ZDLW


,Q WKH PDQXDO RSHUDWLQJ PRGH D WUDQVDFWLRQ LV HQGHG E\ SUHVVLQJ WKH
6723 NH\ ZKHQ WKHUH LV D WUDQVDFWLRQ LQ SURJUHVV DQG D EDWFK LV
VWRSSHG RU HQGHG RU WKHUH LV QR EDWFK LQ SURJUHVV

,Q DXWRPDWLF

RSHUDWLQJ PRGH SUHVVLQJ WKH 6723 NH\ ZKHQ WKHUH LV D WUDQVDFWLRQ


LQ SURJUHVV DQG D EDWFK LV VWRSSHG RU HQGHG RU WKHUH LV QR EDWFK LQ
SURJUHVV GRHV QRW HQG WKH WUDQVDFWLRQ ,QVWHDG WKH 'DQ/RDG 
VHWV D IODJ LQGLFDWLQJ WKDW D UHTXHVW KDV EHHQ PDGH WR HQG WKH
WUDQVDFWLRQ WR ZKLFK WKH DXWRPDWLRQ V\VWHP FDQ VHQG DQ (QG
7UDQVDFWLRQ FRPPDQG WR RQH RU PRUH 'DQ/RDG 
V RU VLPSO\
FOHDU RU LJQRUH WKH IODJ 

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



3URPSW 3UHVHW 9ROXPH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
long preset; /* Suggested preset volume. */
long maxpreset; /* Override maximum preset volume. */
int timout; /* Time-out seconds. 0=No time-out. <0=Use configured
time-out. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K .H\SDG DQG GLVSOD\ ORFNHG RXW

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K 2SHUDWLRQ WLPHG RXW
K 3UHVHW YROXPH HQWHUHG

([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


K %DWFK LQ SURJUHVV
$K 3ULPDU\ DODUP DFWLYH
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1R WUDQVDFWLRQ DXWKRUL]HG
K .H\SDG DQG GLVSOD\ ORFNHG RXW
)K ,QYDOLG SUHVHW YROXPH

'HVFULSWLRQ

7KH ORDGLQJ GLVSOD\ LV DOUHDG\ GLVSOD\HG


7KH 'DQ/RDG  SURPSWV WKH RSHUDWRU WR HQWHU D SUHVHW YROXPH
,I WKH VXJJHVWHG SUHVHW YROXPH LV JUHDWHU WKDQ ]HUR WKH 'DQ/RDG
 SUHW\SHV WKH VXJJHVWHG SUHVHW YROXPH DQG WKH RSHUDWRU QHHG
RQO\ SUHVV (17(5 RU FDQ SUHVV &/($5 DQG HQWHU DQRWKHU
YROXPH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

,I WKH RYHUULGH PD[LPXP SUHVHW YROXPH LV JUHDWHU WKDQ ]HUR WKH


'DQ/RDG  HQVXUHV WKDW WKH SUHVHW YROXPH LV OHVV WKDQ RU HTXDO
WR WKH PLQLPXP RI WKH FRQILJXUHG PD[LPXP SUHVHW YROXPH DQG WKH
RYHUULGH PD[LPXP SUHVHW YROXPH LQFOXGHG LQ WKH 3URPSW 3UHVHW
9ROXPH FRPPDQG

7KH FRQILJXUHG PD[LPXP SUHVHW YROXPH LV QRW

PRGLILHG E\ WKLV FRPPDQG


7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW WKH SUHVHW YROXPH LV
DYDLODEOH RU WKDW D WLPHRXW RFFXUUHG GLVSOD\V 3OHDVH ZDLW DQG ZDLWV
IRU D FRPPDQG
7KH 3URPSW 3UHVHW 9ROXPH FRPPDQG GRHV QRW FOHDU WKH EDWFK HQGHG
VWDWXV IODJ +RZHYHU WKH $XWKRUL]H %DWFK FRPPDQG GRHV FOHDU WKH
EDWFK HQGHG VWDWXV IODJ

7KXV GHSHQGLQJ RQ WKH GHVLJQ RI WKH

DXWRPDWLRQ V\VWHP LW PD\ QRW EH QHFHVVDU\ IRU WKH DXWRPDWLRQ


V\VWHP WR FOHDU WKH EDWFK HQGHG VWDWXV IODJ ZLWK WKH &OHDU 6WDWXV
K FRPPDQG DIWHU REWDLQLQJ EDWFK GDWD ZLWK WKH %DWFK 'DWD E\
&RPSRQHQW K FRPPDQG

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HTXHVW 3UHVHW 9ROXPH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
long preset; /* Preset volume. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

$K 3ULPDU\ DODUP DFWLYH


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1R SUHVHW YROXPH HQWHUHG

'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV ZLWK YROXPH HQWHUHG E\ WKH RSHUDWRU LQ


UHVSRQVH WR WKH 3URPSW 3UHVHW 9ROXPH FRPPDQG
7KH DXWRPDWLRQ V\VWHP FDQ SHUIRUP IXUWKHU YDOLGDWLRQ RQ WKH SUHVHW
YROXPH HQWHUHG E\ WKH RSHUDWRU
$ SUHVHW YROXPH LV VHW LQ WKH 'DQ/RDG  XVLQJ WKH $XWKRUL]H
%DWFK FRPPDQG

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



$XWKRUL]H %DWFK $K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
long preset; /* Preset volume. */
int numcomps; /* Configured number of components. */
int timout; /* Time-out seconds. 0=No time-out. <0=Use configured
time-out. */
struct {
unsigned char use_gord; /* Use or don't use this backup gravity
or density.
*/
long gord; /* Gravity or density. */
unsigned char use_temp; /* Use or don't use this backup
temperature. */
int temp; /* Temperature. */
} comp[numcomps];
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int batchseqnum; /* Prospective batch sequence number. */
};

1RWH
:LWK WKH ZHLJKWV DQG PHDVXUHV VZLWFK FORVHG EDFNXS
WHPSHUDWXUHV DQG GHQVLWLHVJUDYLWLHV FDQ EH PRGLILHG RQO\
LI WKH FRUUHVSRQGLQJ SURJUDP FRGHV
ZHLJKWV DQG
PHDVXUHV DWWULEXWHV DUH QRW VHW
6WDWXV IODJV LPPHGLDWHO\ VHW
K .H\SDG DQG GLVSOD\ ORFNHG RXW

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K 2SHUDWLRQ WLPHG RXW
K 3UHVHW YROXPH HQWHUHG
'K %DWFK HQGHG
(K %DWFK DERUWHG QRW VWDUWHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


K

3URJUDP

FRGH

YDOXH

LV

:HLJKWV

DQG

0HDVXUHV

EDFNXS

GHQVLW\JUDYLW\ RU WHPSHUDWXUH
$K 3ULPDU\ DODUP DFWLYH
%K %DWFK DXWKRUL]HG
K 3URJUDP FRGH YDOXH LV UHDG RQO\
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K 1R WUDQVDFWLRQ DXWKRUL]HG
K .H\SDG DQG GLVSOD\ ORFNHG RXW
K

,QYDOLG

SURJUDP

FRGH

YDOXH

EDFNXS

GHQVLW\JUDYLW\

RU

WHPSHUDWXUH
K ,QYDOLG QXPEHU RI FRPSRQHQWV
)K ,QYDOLG SUHVHW YROXPH

'HVFULSWLRQ

7KH SUHVHW YROXPH LV VHW LQ WKH 'DQ/RDG  VR WKDW LW FDQ EH


ORDGHG 7KH 'DQ/RDG  GLVSOD\V 3UHVV 67$57 ZKHQ UHDG\ RU
6723 WR FDQFHO 7KH 67$57 DQG 6723 NH\V DUH HQDEOHG 7KH
RSHUDWRU KDV WLPRXW VHFRQGV WR SUHVV WKH 67$57 NH\ RU WKH EDWFK
LV DXWRPDWLFDOO\ DERUWHG
7KH SUHVHW YROXPH PXVW QRW EH JUHDWHU WKDQ WKH FRQILJXUHG PD[LPXP
SUHVHW YROXPH SURJUDP FRGH  DQG PXVW QRW EH OHVV WKDQ WKH
FRQILJXUHG PLQLPXP SUHVHW YROXPH SURJUDP FRGH  
7KH

SUHVHW

YROXPH

LV

LQ

WKH

XQLWV

RI

YROXPH

LPSOLHG

E\

WKH

FRPSRQHQW
V QRPLQDO .IDFWRUV DQG PHWHU IDFWRUV
,I WKH XVHBJRUG IODJ LV VHW WKH FRQILJXUHG EDFNXS GHQVLW\ RU JUDYLW\ LV
UHSODFHG E\ WKH YDOXH LQ WKH PHVVDJH 7KH XQLWV RI JUDYLW\ RU GHQVLW\
VKRXOG EH WKH VDPH DV WKRVH LQ XVH E\ WKH 'DQ/RDG  SURJUDP
FRGH  HWF
,I WKH XVHBWHPS IODJ LV VHW WKH FRQILJXUHG EDFNXS WHPSHUDWXUH LV
UHSODFHG E\ WKH WHPS LQ WKH PHVVDJH

7KH XQLWV RI WHPSHUDWXUH

VKRXOG EH WKH VDPH DV WKRVH LQ XVH E\ WKH 'DQ/RDG  SURJUDP


FRGHV   HWF
7KH 'DQ/RDG  LQGLFDWHV WKH SURVSHFWLYH EDWFK VHTXHQFH
QXPEHU EDWFKVHTQXP WKDW ZLOO EH XVHG LI D EDWFK LV VWDUWHG

7KH

EDWFK VHTXHQFH QXPEHU UROOV IURP  WR 

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

6WDWXV IODJ K %DWFK DXWKRUL]HG ZLOO EH VHW

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6HW 'HQVLWLHV*UDYLWLHV %K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int numcomps; /* Configured number of components. */
struct {
unsigned char use_gord; /* Use or don't use this backup gravity
or density.
*/
long gord; /* Gravity or density. */
} comp[numcomps];
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

1RWH
:LWK WKH ZHLJKWV DQG PHDVXUHV VZLWFK FORVHG EDFNXS
WHPSHUDWXUHV DQG GHQVLWLHVJUDYLWLHV FDQ EH PRGLILHG RQO\
LI WKH FRUUHVSRQGLQJ SURJUDP FRGHV
ZHLJKWV DQG
PHDVXUHV DWWULEXWHV DUH QRW VHW
6WDWXV IODJV LPPHGLDWHO\ VHW
6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 3URJUDP FRGH YDOXH LV :HLJKWV DQG 0HDVXUHV


$K 3ULPDU\ DODUP DFWLYH
%K %DWFK DXWKRUL]HG
K 3URJUDP FRGH YDOXH LV UHDG RQO\
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K ,QYDOLG SURJUDP FRGH YDOXH
K ,QYDOLG QXPEHU RI FRPSRQHQWV

'HVFULSWLRQ

7KH 'DQ/RDG  XVHV D FRPSRQHQW


V EDFNXS GHQVLW\JUDYLW\
SURJUDP FRGH  HWF ZKHQ WKH JUDYLW\GHQVLW\ RSWLRQ SURJUDP
FRGH  HWF LV 2II

7KH DXWRPDWLRQ V\VWHP FDQ GRZQORDG WKH

ODWHVW NQRZQ GHQVLW\JUDYLW\ SULRU WR DXWKRUL]LQJ D EDWFK

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

,I WKH XVHBJRUG IODJ LV VHW WKH FRQILJXUHG EDFNXS GHQVLW\ RU JUDYLW\ LV


UHSODFHG E\ WKH YDOXH LQ WKH PHVVDJH 7KH XQLWV RI JUDYLW\ RU GHQVLW\
VKRXOG EH WKH VDPH DV WKRVH LQ XVH E\ WKH 'DQ/RDG  SURJUDP
FRGH  HWF
7KH EDFNXS GHQVLWLHV RU JUDYLWLHV FDQ DOVR EH XSGDWHG XVLQJ WKH
$XWKRUL]HG %DWFK FRPPDQG ZKLFK LV XVHIXO LI WKHUH LV DQ RQ OLQH
GHQVLW\ LQSXW WR WKH DXWRPDWLRQ V\VWHP

+RZHYHU LI GHQVLWLHV RU

JUDYLWLHV DUH XSGDWHG PDQXDOO\ HJ LQ WKH DXWRPDWLRQ V\VWHP


V WDQN
RU SURGXFW ILOHV WKH 6HW 'HQVLWLHV*UDYLWLHV FRPPDQG FDQ EH XVHG WR
VHQG WKH XSGDWHG GHQVLWLHV RU JUDYLWLHV WR WKH DSSURSULDWH 'DQ/RDG

V

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6HW 7HPSHUDWXUHV &K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int numcomps; /* Configured number of components. */
struct {
unsigned char use_temp; /* Use or don't use
temperature. */
int temp; /* Temperature. */
} comp[numcomps];
};

this

backup

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

1RWH
:LWK WKH ZHLJKWV DQG PHDVXUHV VZLWFK FORVHG EDFNXS
WHPSHUDWXUHV DQG GHQVLWLHVJUDYLWLHV FDQ EH PRGLILHG RQO\
LI WKH FRUUHVSRQGLQJ SURJUDP FRGHV
ZHLJKWV DQG
PHDVXUHV DWWULEXWHV DUH QRW VHW
1RWH
7KH 6HW 7HPSHUDWXUHV DXWRPDWLRQ V\VWHP FRPPDQG &K
GRHV QRW ZRUN FRUUHFWO\ IRU FRPSRQHQWV   DQG  LQ Y
WKUX Y 7KHUH DUH WZR ZRUNDURXQGV  8VH WKH 6HW
3URJUDP &RGH 9DOXH FRPPDQG K WR VHW WKH EDFNXS
WHPSHUDWXUHV  8VH WKH $XWKRUL]H %DWFK FRPPDQG $K
WR VHW WKH EDFNXS WHPSHUDWXUHV
7KH EDFNXS
WHPSHUDWXUHV DUH QRW XVHG LI WKH\ DUH XVHG DW DOO XQWLO D
EDWFK LV LQ SURJUHVV
6WDWXV IODJV LPPHGLDWHO\ VHW
6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 3URJUDP FRGH YDOXH LV :HLJKWV DQG 0HDVXUHV

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

$K 3ULPDU\ DODUP DFWLYH


%K %DWFK DXWKRUL]HG
K 3URJUDP FRGH YDOXH LV UHDG RQO\
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K ,QYDOLG SURJUDP FRGH YDOXH
K ,QYDOLG QXPEHU RI FRPSRQHQWV

'HVFULSWLRQ

7KH

DXWRPDWLRQ

V\VWHP

FDQ

VHW

WKH

'DQ/RDG


V

EDFNXS

WHPSHUDWXUHV
,I WKH XVHBWHPS IODJ LV VHW WKH FRQILJXUHG EDFNXS WHPSHUDWXUH LV
UHSODFHG E\ WKH WHPS LQ WKH PHVVDJH

7KH XQLWV RI WHPSHUDWXUH

VKRXOG EH WKH VDPH DV WKRVH LQ XVH E\ WKH 'DQ/RDG  SURJUDP


FRGHV   HWF
7KH DXWRPDWLRQ V\VWHP FRXOG VHQG WKLV FRPPDQG HJ ZKHQ DQ
RSHUDWRU XSGDWHV WKH EDFNXS WHPSHUDWXUHV LQ WKH DXWRPDWLRQ V\VWHP
V
PHWHU RU WHPSHUDWXUH SUREH ILOH

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



(QG %DWFK 'K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int batchseqnum; /* Batch sequence number. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 1R EDWFK LQ SURJUHVV


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

,I WKHUH LV D EDWFK LV SURJUHVV DQG VWRSSHG LW LV HQGHG 7KH 'DQ/RDG


 VHWV D IODJ WR LQGLFDWH WKDW WKH EDWFK KDV HQGHG ZKLFK LPSOLHV
LW LV QRQUHVWDUWDEOH 

7KLV LV D VLJQDO IRU WKH DXWRPDWLRQ V\VWHP WR

UHTXHVW EDWFK GDWD

7KH 'DQ/RDG  VWRUHV EDWFK GDWD DQG

WUDQVDFWLRQ GDWD LQ WUDQVDFWLRQ VWRUDJH PHPRU\


7KH 'DQ/RDG  GLVSOD\V 3OHDVH ZDLW
6WDWXV IODJ $K %DWFK LQ SURJUHVV LV FOHDUHG 'K %DWFK HQGHG LV
VHW DQG K %DWFK VWRSSHG LV FOHDUHG
7KLV LV QRW WKH VDPH DV WKH 6WRS %DWFK FRPPDQG ZKLFK VLPXODWHV WKH
6723 NH\ EHLQJ SUHVVHG DQG WKHUHIRUH SRWHQWLDOO\ DOORZV WKH EDWFK
WR EH UHVWDUWHG
8QGHU QRUPDO FLUFXPVWDQFHV D EDWFK HQGV E\ LWVHOI ZKHQ WKH SUHVHW
YROXPH KDV EHHQ GHOLYHUHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

8VH WKH 7LPH2XW 2SHUDWLRQ FRPPDQG WR DERUW D EDWFK WKDW KDV EHHQ
DXWKRUL]HG EXW QRW \HW VWDUWHG

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6WDUW %DWFK 5HPRWH 67$57 (K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int batchseqnum; /* Batch sequence number. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


$K %DWFK LQ SURJUHVV

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K %DWFK VWRSSHG UHVXPDEOH

([FHSWLRQV

$K 3ULPDU\ DODUP DFWLYH


K 1R EDWFK DXWKRUL]HG
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

$ EDWFK PXVW SUHYLRXVO\ KDYH EHHQ DXWKRUL]HG XVLQJ WKH $XWKRUL]H


%DWFK FRPPDQG

7KH 'DQ/RDG  VWDUWV GHOLYHU\ RI WKH EDWFK

7KLV LV WKH VDPH DV SUHVVLQJ WKH 67$57 NH\ DW WKH DSSURSULDWH


WLPH
7KLV LV XVHG WR VWDUW D EDWFK WKDW KDV EHHQ DXWKRUL]HG EXW LV QRW \HW LQ
SURJUHVV RU WR UHVWDUW D EDWFK LQ SURJUHVV WKDW KDV EHHQ VWRSSHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KLV LV XVHG IRU UHPRWH FRQWURO RI WKH 'DQ/RDG  ZKHUH WKHUH
FDQQRW EH DQ RSHUDWRU LQ SUR[LPLW\ RI WKH 'DQ/RDG 

,Q WKHVH

FLUFXPVWDQFHV WKH 'DQ/RDG  PD\ EH FRQWUROOHG HQWLUHO\ IURP WKH


DXWRPDWLRQ V\VWHP DQG WKH 'DQ/RDG  PD\ QRW HYHQ EH ILWWHG
ZLWK D GLVSOD\ RU NH\SDG
ORDGHG IURP D FRQWURO URRP

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

,Q WKLV ZD\ EDUJHV RU UDLOFDUV FDQ EH

'DQLHO )ORZ 3URGXFWV



6WRS %DWFK 5HPRWH 6723 )K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int batchseqnum; /* Batch sequence number. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 1R EDWFK LQ SURJUHVV


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

7KH EDWFK LQ SURJUHVV LV VWRSSHG


EHLQJ SUHVVHG

7KLV VLPXODWHV WKH 6723 NH\

7KH PDQQHU LQ ZKLFK WKH EDWFK LV VWRSSHG LV

GHWHUPLQHG E\ WKH SURJUDPPHG 6723 NH\ DFWLRQ


7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW WKH EDWFK KDV VWRSSHG
DQG LV UHVWDUWDEOH RU WKDW WKH EDWFK KDV HQGHG

,I WKH EDWFK KDV

VWRSSHG DQG LV UHVWDUWDEOH WKH 'DQ/RDG  GLVSOD\V 3UHVV


67$57 ZKHQ UHDG\ RU 6723 WR FDQFHO
7KH 'DQ/RDG  GLVSOD\V 3OHDVH ZDLW

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



%DWFK 'DWD E\ &RPSRQHQW K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int batchseqnum; /* Batch sequence number. */
int transeqnum; /* Transaction sequence number. */
int recipenumber; /* Recipe number. */
unsigned char side; /* Swing-arm side. */
struct Ba_start_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} start;
struct Ba_end_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} end;
int nummtrs; /* Configured number of meters. */
int numcomps; /* Configured number of components. */
int numadds; /* Number of additives. */
unsigned char numdataprompts; /* 0->5 */
struct Totalizer {
long grstotstrt; /* Gross meter totalizer at start of batch. */
long nettotstrt; /* Net volume or mass/weight meter totalizer at
start of batch. */
long grstotend; /* Gross meter totalizer at start of batch. */
long nettotend; /* Net volume or mass/weight meter totalizer at
end of batch. */
} totalizer[nummtrs];
struct {
long grs; /* Gross batch whole units. */
long net; /* Net volume or mass/weight batch whole units. */
int avetemp; /* Average temperature. */
long avedens; /* Average density. */
long avepres; /* Average pressure XXXX.XX. */
int pct100; /* Actual % in batch, e.g. 60.03. */
} comp[numcomps];
struct {
long grs100; /* Additive batch volume. Implied scaling depends
on additive units. */
} add[numadds];
long dataitem[numdataprompts]; /* Data items. */

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ


K 1R EDWFK HQGHG

'HVFULSWLRQ

7KH 'DQ/RDG  VHWV D IODJ WR LQGLFDWH WKDW D EDWFK KDV HQGHG DQG
FDQQRW EH UHVWDUWHG 7KH DXWRPDWLRQ V\VWHP FDQ UHTXHVW GDWD IRU WKH
EDWFK
7KH 'DQ/RDG 
V UHVSRQVH LQFOXGH WKH FRQILJXUHG QXPEHU RI
FRPSRQHQWV QXPFRPSV SURJUDP FRGH  DQG WKH FRQILJXUHG
QXPEHU RI DGGLWLYHV QXPDGGV SURJUDP FRGH  
$ FRPSRQHQW
V EDWFK QHW HTXDOV LWV EDWFK JURVV DQG LWV WHPSHUDWXUH
DQG GHQVLW\ DUH QRW GHILQHG LH WKH\ DUH JDUEDJH LI D &WO PHWKRG
WHPSHUDWXUH RSWLRQ LV QRW VSHFLILHG IRU WKH FRPSRQHQW

3URJUDP

FRGH  HWF

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



$GGLWLYH 7RWDOL]HUV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int numadds; /* Number of additives. */
struct {
long grstot100; /* Gross totalizer. Implied scaling depends on
additive units. */
} add[numadds];
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KH 'DQ/RDG 


V UHVSRQVH LQFOXGH WKH FRQILJXUHG QXPEHU RI
DGGLWLYHV QXPDGGV SURJUDP FRGH   8S WR VL[ DGGLWLYHV FDQ EH
FRQILJXUHG
7KH 'DQ/RDG 
V UHVSRQVH LQFOXGHV WKH DGGLWLYH WRWDOL]HUV RI DOO
FRQILJXUHG

DGGLWLYHV

LQGHSHQGHQW

VHOHFWHG GXULQJ WKH ODVW EDWFK

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

RI

ZKHWKHU

WKH

DGGLWLYH

ZDV

'DQLHO )ORZ 3URGXFWV



5HTXHVW 6WDWXV K Y DQG DERYH


1RWH
6HH DOVR (QKDQFHG 5HTXHVW 6WDWXV &K Y DQG
DERYH 

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned long status; /* Status bits 31 thru 0. Re. 8.1. */
unsigned char side; /* Swing-arm side (0->2). */
long grsvol; /* Batch gross volume whole units. */
long netvol; /* Batch net volume or mass/weight whole units. */
unsigned char safety; /* Safety circuits status, including those with
alarm action "Off" for DanLoad 6000 v5.11 and above. */
unsigned char almcd; /* Alarm code of oldest active primary alarm.
See 8.3. */
unsigned char alarm_byte_9; /* Alarm bits 79 thru 72. Re. 8.3. */
unsigned char alarm_byte_8; /* Alarm bits 71 thru 64. */
unsigned char alarm_byte_7; /* Alarm bits 63 thru 56. */
unsigned char alarm_byte_6; /* Alarm bits 55 thru 48. */
unsigned char alarm_byte_5; /* Alarm bits 47 thru 40. */
unsigned char alarm_byte_4; /* Alarm bits 39 thru 32. */
unsigned char alarm_byte_3; /* Alarm bits 31 thru 24. */
unsigned char alarm_byte_2; /* Alarm bits 23 thru 16. */
unsigned char alarm_byte_1; /* Alarm bits 15 thru 8. */
unsigned char alarm_byte_0; /* Alarm bits 7 thru 0. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

VWDWXV LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH 'DQ/RDG 


V  VWDWXV
IODJV

VDIHW\ LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH FXUUHQW ORJLFDO VWDWH RSHQ


RU FORVHG RI WKH 'DQ/RDG 
V HLJKW JHQHUDOSXUSRVH VDIHW\

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

FLUFXLWV SURJUDP FRGHV  WKURXJK   7KH OHDVW VLJQLILFDQW ELW LV
VDIHW\ FLUFXLW  HWF

6DIHW\ FLUFXLWV WKDW DUH QRW FRQILJXUHG RQ WKH

'DQ/RDG  DUH LQGLFDWHG WR EH RSHQ LH WKH FRUUHVSRQGLQJ ELW


LV 

DODUPBE\WHB WKURXJK DODUPBE\WHB LQGLFDWH DFWLYH UDLVHG DQG QRW


UHVHW SULPDU\ DODUPV 7KH DXWRPDWLRQ V\VWHP FDQ PDLQWDLQ D FRS\
RI WKH DODUP E\WHV VR WKDW LW FDQ GHWHUPLQH ZKHQ SULPDU\ DODUPV DUH
UDLVHG DQG FOHDUHG IRU ORJJLQJ SXUSRVHV

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



&OHDU 6WDWXV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned long status; /* Status bits mask. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
9DULRXV

([FHSWLRQV

K 6WDWXV QRW VHW RU FDQQRW EH UHVHW


K 2SHUDWLQJ PRGH LV PDQXDO

'HVFULSWLRQ

7KLV FRPPDQG DOORZV WKH DXWRPDWLRQ V\VWHP WR FOHDU FHUWDLQ VWDWXV

 WKDW FDQ EH FOHDUHG

IODJV 6HH  IRU WKH VWDWXV IODJV PDUNHG 


XVLQJ WKH &OHDU 6WDWXV FRPPDQG

VWDWXVLV D ELQDU\ UHSUHVHQWDWLRQ RI WKH 'DQ/RDG 


V VWDWXV IODJV
$  LQ DQ\ ELW LQGLFDWHV D UHTXHVW WR FOHDU WKH FRUUHVSRQGLQJ VWDWXV
IODJ RQ WKH 'DQ/RDG 

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HVHW 3ULPDU\ $ODUPV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
};

dfl; /* Data field length. */


cmdcode;
alarm_byte_9; /* Alarm bits 79 thru 72. Re. 8.3. */
alarm_byte_8; /* Alarm bits 71 thru 64. */
alarm_byte_7; /* Alarm bits 63 thru 56. */
alarm_byte_6; /* Alarm bits 55 thru 48. */
alarm_byte_5; /* Alarm bits 47 thru 40. */
alarm_byte_4; /* Alarm bits 39 thru 32. */
alarm_byte_3; /* Alarm bits 31 thru 24. */
alarm_byte_2; /* Alarm bits 23 thru 16. */
alarm_byte_1; /* Alarm bits 15 thru 8. */
alarm_byte_0; /* Alarm bits 7 thru 0. */

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

7KLV FRPPDQG DOORZV PXOWLSOH DFWLYH SULPDU\ DODUPV WR EH UHVHW ,I


WKH FKURQRORJLFDOO\ ROGHVW DFWLYH SULPDU\ DODUP LV UHVHW WKLV FRPPDQG
KDV WKH VDPH HIIHFW DV D SULPDU\ DODUP UHVHW YLD WKH DODUP UHVHW
VFUHHQ RU WKH DODUP UHVHW VZLWFK SURJUDP FRGH  

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



0HWHU 7RWDOL]HUV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int nummtrs; /* Configured number of meters. */
struct {
long grstot; /* Gross totalizer rolls 999999999 to 0. */
long nettot; /* Net volume or mass/weight totalizer rolls
999999999 to 0. */
} meter[nummtrs];
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

,Q D EOHQGLQJ FRQILJXUDWLRQ LW LV QRW DOZD\V SRVVLEOH WR LGHQWLI\ ZKLFK


FRPSRQHQW JHQHUDWHV XQDXWKRUL]HG IORZ 0RUH WKDQ RQH FRPSRQHQW
PD\ IORZ WKURXJK D PHWHU

7KH 'DQ/RDG  PDLQWDLQV UXQQLQJ

PHWHU WRWDOL]HUV ZKLFK LQFOXGH XQDXWKRUL]HG IORZ DQG UXQQLQJ


FRPSRQHQW WRWDOL]HUV ZKLFK H[FOXGH XQDXWKRUL]HG IORZ 
7\SLFDOO\ WKH 5HTXHVW 0HWHU 7RWDOL]HUV FRPPDQG ZRXOG EH XVHG DW
WKH HQG RI HDFK VKLIW RU EXVLQHVV GD\ WR UHDG DOO PHWHUV 7KXV WRWDO
PHWHU WKURXJKSXW IRU WKH SHULRG FDQ EH GHWHUPLQHG DQG UHFRQFLOHG
6HH WKH 0DQXDO RI 3HWUROHXP 0HDVXUHPHQW 6WDQGDUGV &KDSWHU 
&DOFXODWLRQ RI 3HWUROHXP 4XDQWLWLHV :KHQ D ORDG WLFNHW LV UHTXLUHG
WKH ORDGHG YROXPH VKRXOG EH FDOFXODWHG DV WKH WUXQFDWHG VWRS UHDGLQJ
PLQXV WKH WUXQFDWHG VWDUW UHDGLQJ IURP D QRQUHVHWWDEOH WRWDOL]HU
6KRZ PHWHU UHDGLQJV IURP WKH QRQUHVHWWDEOH UHDGRXW DQG WUXQFDWH
WKDW LV GLVUHJDUG DOO YDOXHV OHVV WKDQ D ZKROH EDUUHO RU JDOORQ

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



&RPSRQHQW 7RWDOL]HUV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int numcomps; /* Configured number of components. */
struct {
long grstot; /* Gross totalizer rolls 999999999 to 0. */
long nettot; /* Net volume or mass/weight totalizer rolls
999999999 to 0. */
} comp[numcomps];
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

,Q D EOHQGLQJ FRQILJXUDWLRQ LW LV QRW DOZD\V SRVVLEOH WR LGHQWLI\ ZKLFK


FRPSRQHQW JHQHUDWHV XQDXWKRUL]HG IORZ 0RUH WKDQ RQH FRPSRQHQW
PD\ IORZ WKURXJK D PHWHU

7KH 'DQ/RDG  PDLQWDLQV UXQQLQJ

PHWHU WRWDOL]HUV ZKLFK LQFOXGH XQDXWKRUL]HG IORZ DQG UXQQLQJ


FRPSRQHQW WRWDOL]HUV ZKLFK H[FOXGH XQDXWKRUL]HG IORZ 
6HH WKH 0DQXDO RI 3HWUROHXP 0HDVXUHPHQW 6WDQGDUGV &KDSWHU 
&DOFXODWLRQ RI 3HWUROHXP 4XDQWLWLHV :KHQ D ORDG WLFNHW LV UHTXLUHG
WKH ORDGHG YROXPH VKRXOG EH FDOFXODWHG DV WKH WUXQFDWHG VWRS UHDGLQJ
PLQXV WKH WUXQFDWHG VWDUW UHDGLQJ IURP D QRQUHVHWWDEOH WRWDOL]HU
6KRZ PHWHU UHDGLQJV IURP WKH QRQUHVHWWDEOH UHDGRXW DQG WUXQFDWH
WKDW LV GLVUHJDUG DOO YDOXHV OHVV WKDQ D ZKROH EDUUHO RU JDOORQ

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



8QDXWKRUL]HG )ORZ K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int nummtrs; /* Configure number of meters. */
struct {
long ufgtot10; /* Gross unauthorized flow 10ths rolls 999999.9 to
0.0. */
long ufntot10; /* Net volume or mass/weight unauthorized flow
10ths rolls 999999.9 to 0.0. */
} meter[nummtrs];
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

8QDXWKRUL]HG IORZ LH IORZ ZKHQ WKH IORZ FRQWURO YDOYH KDV QRW EHHQ
FRPPDQGHG

WR

EH

RSHQ

LV

DFFXPXODWHG

IRU

HDFK

PHWHU

8QDXWKRUL]HG IORZ LV LQFOXGHG LQ WKH LQGLYLGXDO PHWHU WRWDOL]HUV


8QDXWKRUL]HG IORZ LV QRW LQFOXGHG LQ WKH LQGLYLGXDO FRPSRQHQW
WRWDOL]HUV
7KH DXWRPDWLRQ V\VWHP PD\ ZLVK WR UHTXHVW XQDXWKRUL]HG IORZ
EHWZHHQ EDWFKHV LH MXVW EHIRUH DXWKRUL]LQJ D EDWFK DQG GXULQJ
HQG RI GD\ SURFHVVLQJ 5HTXHVWLQJ XQDXWKRUL]HG IORZ GRHV QRW ]HUR
WKH XQDXWKRUL]HG IORZ FRXQWHUV RU UHVHW DQ XQDXWKRUL]HG IORZ DODUP
$Q XQDXWKRUL]HG IORZ DODUP FDQ EH UHVHW DW WKH 'DQ/RDG  RU E\
XVLQJ WKH $ODUP 5HVHW FRPPDQG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



'DWD &RGH 9DOXH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int dc; /* Data code. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int dc; /* Data code. */
unsigned char dcvl; /* Data code value length. */
unsigned char dcv[dcvl]; /* Data code value. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K ,QYDOLG GDWD FRGH

'HVFULSWLRQ

6HH WKH OLVW RI GDWD FRGHV LQ WKH 'DQ/RDG  5HIHUHQFH 0DQXDO

GFYO LV WKH QXPEHU RI FKDUDFWHUV UHTXLUHG WR VWRUH WKH GDWD FRGH


YDOXH

GFY LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH GDWD FRGH YDOXH


9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 0HWHU 9DOXHV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int mtrnum; /* Meter number (1->4). */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int mtrnum; /* Meter number. */
long grstot; /* Gross totalizer rolls 999999999 to 0. */
long nettot; /* Net volume or mass/weight totalizer rolls 999999999
to 0. */
long grs; /* Batch gross whole units. */
long net; /* Batch net volume or mass/weight whole units. */
long rate3; /* Average over one second flow rate. */
long rate5; /* Average batch flow rate. Not implemented. */
long rate4; /* Maximum average over one second flow rate. */
long mtrfac; /* Current meter factor. */
unsigned int plscnt; /* Current pulse count rolls 65535 to 0. */
int numfacs; /* Number of factors or flow rates. */
struct {
unsigned long pls; /* Number of pulses at flow rate. */
} pls[numfacs];
long ufg10; /* Gross unauthorized flow 10ths since start of last
batch. */
long ufn10;
/* Net volume or mass/weight unauthorized flow
10ths since start of last batch. Net = gross for
unauth. flow volume. */
int temp10; /* Current temperature. */
long dens; /* Current density. */
long pres; /* Current pressure XXXX.XX. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K ,QYDOLG PHWHU QXPEHU

'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV ZLWK WKH FXUUHQW YDOXHV RI YDULRXV GDWD

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HTXHVW &RPSRQHQW 9DOXHV $K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int compnum; /* Component number. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int compnum; /* Component number. */
long grstot; /* Gross totalizer rolls 999999999 to 0. */
long nettot; /* Net volume or mass/weight totalizer rolls 999999999
to 0. */
long grs; /* Batch gross whole units. */
long net; /* Batch net volume or mass/weight whole units. */
int avetemp; /* Average batch temperature. */
long avedens; /* Average density/gravity. */
long avepres; /* Average pressure XXXX.XX. */
int avecls5; /* Average valve closure pulses. */
int percent; /* Component batch percentage. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K ,QYDOLG FRPSRQHQW QXPEHU

'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV ZLWK WKH FXUUHQW YDOXHV RI YDULRXV GDWD

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 3RZHU )DLO 'DWH DQG 7LPH %K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
struct Power_fail_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} pwrfail;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

SZUIDLO LV WKH GDWH DQG WLPH DW ZKLFK WKH 'DQ/RDG  ODVW ORVW
SRZHU
7KH DXWRPDWLRQ V\VWHP PD\ ZLVK WR ORJ WKLV LQIRUPDWLRQ HDFK WLPH D
'DQ/RDG  LV EURXJKW RQ OLQH

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



'LVSOD\ 0HVVDJH &K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
char msgtxt[129]; /* Null terminated message text. */
int pmptfw; /* Prompt field width (0->8). pmptfw < 0 => 0.
> 8 => 8. */
unsigned char inpctl; /* Input control. */
int timout; /* Time-out # seconds. */
};

pmptfw

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K .H\SDG DQG GLVSOD\ ORFNHG RXW

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


K 2SHUDWLRQ WLPHG RXW
K .H\SDG GDWD DYDLODEOH

([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


K %DWFK LQ SURJUHVV
$K 3ULPDU\ DODUP LV DFWLYH
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K .H\SDG DQG GLVSOD\ ORFNHG RXW

'HVFULSWLRQ

7KH 'DQ/RDG  GLVSOD\V PVJW[W RQ WKH ERWWRP OLQH RI WKH GLVSOD\
,QYDOLG FKDUDFWHUV LQ PVJW[W DUH UHSODFHG E\ DQ DVWHULVN ,I SPSWIZ LV
]HUR DOO IRUW\ FROXPQV DUH XVHG ,I SPSWIZ LV QRQ]HUR WKH ILUVW WKLUW\
WZR FROXPQV DUH XVHG

,I QHFHVVDU\ WKH PHVVDJH WH[W LV VFUROOHG

ZLWKLQ WKH DSSURSULDWH QXPEHU RI FROXPQV 2QH VSDFH LV LQVHUWHG DW


WKH HQG RI WKH PHVVDJH IRU VFUROOLQJ SXUSRVHV
,I SPSWIZ LV OHVV WKDQ ]HUR WKHQ ]HUR LV DVVXPHG ,I SPSWIZ LV JUHDWHU
WKDQ HLJKW WKHQ HLJKW LV DVVXPHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

,I SPSWIZ LV QRQ]HUR WKH 'DQ/RDG  SURPSWV IRU SPSWIZ LQSXW


FKDUDFWHUV VWDUWLQJ DW FROXPQ WKLUW\ WKUHH 7KH &/($5 NH\ FOHDUV
WKH LQSXW ILHOG DQG UHVWDUWV LQSXW HQWU\ 7KH (17(5 NH\ WHUPLQDWHV
LQSXW HQWU\ ,I (17(5 LV SUHVVHG ZKHQ WKH LQSXW ILHOG LV EODQN WKH
NH\SDG GDWD DYDLODEOH WR WKH DXWRPDWLRQ V\VWHP KDV D YDOXH RI ]HUR
9DOLG LQSXW FRQWURO LQSFWO YDOXHV DUH

(FKR QXPHULF NH\V RQ WKH GLVSOD\

'LVSOD\ DQ DVWHULVN   IRU HDFK


QXPHULF NH\ SUHVVHG

,I SPSWIZ LV JUHDWHU WKDQ ]HUR WKH WLPHRXW VSHFLILHG E\ WLPRXW LV UHVHW


ZKHQHYHU D NH\ LV SUHVVHG ,I SPSWIZ LV ]HUR D WLPHRXW RFFXUV DIWHU
WKH VSHFLILHG WLPRXW WKLV DOORZ WKH DXWRPDWLRQ V\VWHP WR GLVSOD\ D
PHVVDJH IRU D IHZ VHFRQGV ,I WLPRXW LV ]HUR WKH DXWRPDWLRQ V\VWHP
FDQ WHUPLQDWH WKH RSHUDWLRQ ZLWK D 7LPH2XW 2SHUDWLRQ FRPPDQG ,I
D WLPHRXW RFFXUV WKH NH\SDG GDWD VHH 5HTXHVW .H\SDG 'DWD
FRPPDQG LV QRW DYDLODEOH WR WKH DXWRPDWLRQ V\VWHP VLQFH WKH WLPHG
RXW VWDWXV IODJ LV VHW DQG WKH NH\SDG GDWD DYDLODEOH VWDWXV IODJ LV
FOHDU
9DOLG WLPHRXW WLPRXW YDOXHV DUH



8VH WKH FRQILJXUHG WLPHRXW LH WKH


QXPEHU RI VHFRQGV VSHFLILHG E\
SURJUDP FRGH 

1R WLPHRXW LH GLVSOD\SURPSW XQWLO D


7LPH2XW 2SHUDWLRQ FRPPDQG

! 

8VH WKH VXSSOLHG WLPHRXW LH WKH


QXPEHU RI VHFRQGV VSHFLILHG LQ WKH
PHVVDJH

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HTXHVW .H\SDG 'DWD 'K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
long keypad_data;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K %DWFK LQ SURJUHVV


$K 3ULPDU\ DODUP DFWLYH
(K 1R NH\SDG GDWD DYDLODEOH
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

7KLV FRPPDQG LV XVHG WR UHWULHYH LQSXW UHTXHVWHG YLD WKH 'LVSOD\


0HVVDJH FRPPDQG :KHQ NH\SDG LQSXW LV WHUPLQDWHG WKH 'DQ/RDG
 VHWV D IODJ LQGLFDWLQJ WKDW NH\SDG GDWD LV DYDLODEOH
7KH NH\SDGBGDWD LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH QXPEHU HQWHUHG E\
WKH RSHUDWRU DW WKH 'DQ/RDG 

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 7UDQVDFWLRQ 6WRUDJH 6WDWXV (K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int oldest_trseq; /* Oldest transaction seq # stored (0-9999). */
int numtr; /* Number of transactions stored (0-10,000). */
int maxnumtr; /* Maximum number of transactions that can be stored.
*/
unsigned char trcfgerr; /* Transaction configuration error. */
int oldest_baseq; /* Oldest batch seq # stored (0-9999). */
int numba; /* Number of batches stored (0->10,000). */
int maxnumba; /* Maximum number of batches that can be stored. */
unsigned char bacfgerr; /* Batch configuration error. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

$ WUDQVDFWLRQEDWFK LV QRW FRQVLGHUHG VWRUHG RQ ILOH XQWLO LW KDV


HQGHG 7KXV WKHUH PD\ EH EDWFKHV RQ ILOH IRU D WUDQVDFWLRQ ZKLFK
LV QRW \HW RQ ILOH
7KH WUDQVDFWLRQEDWFK ILOH LV FRQVLGHUHG HPSW\ LI DQG RQO\ LI WKH
QXPEHU RI WUDQVDFWLRQVEDWFKHV RQ ILOH LV ]HUR
7KH WUDQVDFWLRQEDWFK FRQILJXUDWLRQ IODJ LV FOHDUHG RQ D ZDUP VWDUW
SRZHUXS DQG LV VHW LI D WUDQVDFWLRQEDWFK VWRUDJH FRGH
V RIIVHW LV
FRQILJXUHG VXFK WKDW WKH DVVRFLDWHG YDOXH GRHV QRW ILW LQ WKH
FRQILJXUHG WUDQVDFWLRQEDWFK UHFRUG OHQJWK
7KH WUDQVDFWLRQEDWFK VHTXHQFH QXPEHUV DUH QRQUHVHWDEOH GLJLW
QXPEHUV

WKDW

UROO

3DJH   'DQ/RDG  &RPPV 6SHF

IURP



WR



)HZHU

WKDQ



'DQLHO )ORZ 3URGXFWV

WUDQVDFWLRQVEDWFKHV PD\ EH VWRUHG GHSHQGLQJ RQ WKH FRQILJXUDWLRQ


WKH WUDQVDFWLRQEDWFK VHTXHQFH QXPEHUV VWLOO UROO IURP  WR 
7KH VHTXHQFH QXPEHU RI WKH QHZHVW WUDQVDFWLRQ VWRUHG RQ ILOH FDQ
EH FRPSXWHG DV

ROGHVWBWUVHT  QXPWU    


7KH VHTXHQFH QXPEHU RI WKH QHZHVW EDWFK VWRUHG RQ ILOH FDQ EH
FRPSXWHG DV

ROGHVWBEDVHT  QXPED    


ZKHUH  LV WKH & ODQJXDJH PRGXOXV RSHUDWRU

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



7UDQVDFWLRQ 'DWD E\ &RPSRQHQW )K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int transeqnum; /* Transaction sequence number. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int transeqnum; /* Transaction sequence number. */
int recipenumber; /* Recipe number. */
unsigned char side; /* Swing-arm side. */
long gross; /* Transaction gross volume. */
long net; /* Transaction net volume or mass/weight. */
struct Tr_start_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} start; /* Transaction start date and time. */
struct Tr_end_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} end; /* Transaction end date and time. */
int nummtrs; /* Configured number of meters. */
unsigned char numdataprompts; /* 0->5 */
struct Totalizer {
long grstotstrt; /* Gross meter totalizer at start of batch. */
long nettotstrt; /* Net volume or mass/weight meter totalizer at
start of batch. */
long grstotend; /* Gross meter totalizer at end of batch. */
long nettotend; /* Net volume or mass/weight totalizer at end of
batch. */
} totalizer[nummtrs];
long dataitem[numdataprompts]; /* Data items entered by operator in
manual or
downloaded by automation
system in automatic. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 1R WUDQVDFWLRQ HQGHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

K ,QYDOLG WUDQVDFWLRQ VHTXHQFH QXPEHU

'HVFULSWLRQ

:KHQ D WUDQVDFWLRQ HQGV WKH 'DQ/RDG  VHWV D IODJ LQGLFDWLQJ


WKDW WKH WUDQVDFWLRQ KDV HQGHG

7KLV FRPPDQG LV XVHG WR UHTXHVW

WUDQVDFWLRQ GDWD IURP WKH 'DQ/RDG  ZKHQ D WUDQVDFWLRQ HQGV


,Q PDQXDO D WUDQVDFWLRQ LV HQGHG E\ SUHVVLQJ WKH 6723 NH\ ZKHQ
WKHUH LV D WUDQVDFWLRQ LQ SURJUHVV DQG QR EDWFK LQ SURJUHVV

,Q

DXWRPDWLF D WUDQVDFWLRQ LV HQGHG E\ WKH DXWRPDWLRQ V\VWHP YLD WKH


(QG 7UDQVDFWLRQ FRPPDQG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



,QLWLDOL]H 7UDQVDFWLRQ 6WRUDJH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 7UDQVDFWLRQ LQ SURJUHVV

'HVFULSWLRQ

7KH

'DQ/RDG



UHVSRQGV

LPPHGLDWHO\

DQG

WKHQ

LQLWLDOL]HV

WUDQVDFWLRQ VWRUDJH WKH WUDQVDFWLRQ ILOH DQG WKH EDWFK ILOH XVLQJ WKH
FRQILJXUHG VWDUW SDJHV QXPEHUV RI SDJHV DQG UHFRUG OHQJWKV
7UDQVDFWLRQ DQG EDWFK UHFRUGV RQ ILOH DUH GHOHWHG

7KH ROGHVW

UHFRUG RQ ILOH IRU HDFK ILOH LV LQGHWHUPLQDWH XQWLO DQRWKHU UHFRUG LV SXW
RQ ILOH
7UDQVDFWLRQ VWRUDJH LQLWLDOL]DWLRQ WDNHV VHYHUDO VHFRQGV WR FRPSOHWH
7KH UROOLQJ GLJLW WUDQVDFWLRQ DQG EDWFK VHTXHQFH QXPEHUV DUH QRW
PRGLILHG E\ WKLV FRPPDQG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6WDUW &RPPXQLFDWLRQV K Y DQG DERYH


1RWH
6HH DOVR (QKDQFHG 6WDUW &RPPXQLFDWLRQV %K Y DQG
DERYH 

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int nummtrs; /* Configured number of meters. */
int numcomps; /* Configured number of components. */
int numvalves; /* Configured number of valves. */
int numfacs; /* Configured number of factors/component. */
int numrecipes; /* Number of recipes configured. */
int numadds; /* Number of additives configured. */
unsigned char tempunits; /* 0=Celsius. 1=Fahrenheit. */
struct {
unsigned char temp_option; /* Temperature correction option. */
unsigned char pres_option; /* Pressure correction option. */
} comp[numcomps];
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

:KHQ WKH 'DQ/RDG  LV SRZHUHGXSUHVHW H[LWV SURJUDP PRGH


RU KDV GHWHFWHG DQ DXWRPDWLRQ V\VWHP FRPPXQLFDWLRQV IDLOXUH
FRPPXQLFDWLRQV FDQ EH VWDUWHG ZLWK WKLV FRPPDQG
7KH 'DQ/RDG  ZLOO QRW UHVSRQG WR DQ\ FRPPDQG IURP WKH
DXWRPDWLRQ V\VWHP XQWLO FRPPXQLFDWLRQV KDYH EHHQ VWDUWHG
,I FRPPXQLFDWLRQV DUH DOUHDG\ VWDUWHG ZKHQ WKLV FRPPDQG LV UHFHLYHG
WKHQ WKH FRPPXQLFDWLRQV OLQN LV UHLQLWLDOL]HG EXW RSHUDWLRQV DW WKH
'DQ/RDG  DUH XQDIIHFWHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

:KHQ D FRPPXQLFDWLRQV IDLOXUH RFFXUV RQ D FRPPXQLFDWLRQV FKDQQHO


WKHQ FRPPXQLFDWLRQV RQ WKDW FKDQQHO FDQ EH VWDUWHG XVLQJ WKLV
FRPPDQG
7KH DOWHUQDWLQJ IXQFWLRQ FRGH VHTXHQFH LV UHVHW (LWKHU IXQFWLRQ FRGH
K RU K FDQ EH XVHG IRU WKLV TXHU\ 7KH QH[W QRQUHWU\ TXHU\
IURP WKH DXWRPDWLRQ V\VWHP VKRXOG XVH WKH RWKHU IXQFWLRQ FRGH
7KH TXHU\ LV VL[ FKDUDFWHUV ORQJ DGGUHVV RQH FKDUDFWHU  IXQFWLRQ
FRGH RQH FKDUDFWHU  GDWD ILHOG OHQJWK RQH FKDUDFWHU  FRPPDQG
FRGH RQH FKDUDFWHU DQG FKHFNVXP WZR FKDUDFWHUV 
&RPPXQLFDWLRQV

FRPPDQGV

IRU

'DQ/RDG

9DOLG 6WDUW


ZLWK

FRPPXQLFDWLRQV DGGUHVV K DUH


     %
DQG
     %
7KH WHPSHUDWXUH FRUUHFWLRQ RSWLRQV SHU FRPSRQHQW IROORZ SURJUDP
FRGHV   HWF ZLWK ]HUR EHLQJ 2II 5HIHU WR WKH 'DQ/RDG
 5HIHUHQFH 0DQXDO
7KH SUHVVXUH FRUUHFWLRQ RSWLRQV SHU FRPSRQHQW IROORZ SURJUDP FRGH
  HWF ZLWK ]HUR EHLQJ 2II
5HIHUHQFH 0DQXDO

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

5HIHU WR WKH 'DQ/RDG 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 3URJUDP &RGH 9DOXHV DQG $WWULEXWHV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int pc1;
int pcN;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
...
unsigned char
unsigned char
unsigned char
};

dfl; /* Data field length. */


cmdcode;
pcv1l; /* Program code value 1 length. */
pcv1[sizeof(pcv1)];
pca1; /* Re. 8.6. */
pcvNl; /* Program code value N length. */
pcvN[sizeof(pcvN)];
pcaN; /* Re. 8.6. */

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 5HVSRQVH
V GDWD ILHOG WRR ORQJ
K ,QYDOLG SURJUDP FRGH QXPEHU

'HVFULSWLRQ

7KHUH DUH PDQ\ SURJUDP FRGHV

$ SURJUDP FRGH LV D QXPEHU

SURJUDP FRGH LGHQWLILHV D YDULDEOH SDUDPHWHU LQ WKH 'DQ/RDG 


$ SURJUDP FRGH YDOXH LV WKH YDOXH RI WKH YDULDEOH LGHQWLILHG E\ WKH
SURJUDP FRGH $ SURJUDP FRGH YDOXH FDQ EH D QXPEHU D FKDUDFWHU
RU D VWULQJ RI FKDUDFWHUV $ SURJUDP FRGH
V DWWULEXWHV DUH SURSHUWLHV
DVVRFLDWHG ZLWK WKDW SURJUDP FRGH
6LQFH WKH DXWRPDWLRQ V\VWHP FDQ UHTXHVW D UDQJH RI SURJUDP FRGH
YDOXHV DQG DWWULEXWHV WKH UHVSRQVH
V GDWD ILHOG LV YDULDEOHOHQJWK 7KH
PD[LPXP UHVSRQVH PHVVDJH OHQJWK IRU 0RGEXV 578 LV  E\WHV
LQFOXGLQJ FKHFN FKDUDFWHUV 

,I WKH DXWRPDWLRQ V\VWHP UHTXHVWV D

UDQJH RI SURJUDP FRGH YDOXHV DQG DWWULEXWHV ZKRVH FRPELQHG OHQJWK


LV WRR ODUJH WR ILW LQ D VLQJOH UHVSRQVH WKH 'DQ/RDG  UHVSRQGV
ZLWK DQ H[FHSWLRQ

7KH DXWRPDWLRQ V\VWHP VKRXOG UHTXHVW WKH

UHTXLUHG SURJUDP FRGH YDOXHV DQG DWWULEXWHV E\ PDNLQJ PXOWLSOH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

UHTXHVWV IRU VPDOOHU UDQJHV RI SURJUDP FRGH YDOXHV DQG DWWULEXWHV


HJ WHQ DW D WLPH RU FRPSXWH WKH UHVSRQVH
V OHQJWK
7KLV FDQ EH XVHG WR ILQG RXW LI D SURJUDP FRGH YDOXH LV VWRUHG LQ
WUDQVDFWLRQ VWRUDJH PHPRU\
:KHQ D SURJUDP FRGH YDOXH LV FKDQJHG LQ 6HWXS  WKH SURJUDP
FRGH
V DWWULEXWH YDOXH FKDQJHG LV VHW DQG WKH 'DQ/RDG 
V
PDVWHU YDOXH FKDQJHG IODJ LV VHW

7KLV FDQ EH XVHG E\ DQ

DXWRPDWLRQ V\VWHP WR ILQG RXW LI D SURJUDP FRGH YDOXH KDV EHHQ


PRGLILHG ZKLOH WKH 'DQ/RDG  ZDV RIIOLQH RU LQ 6HWXS
DXWRPDWLRQ V\VWHP FDQ GHWHFW H[LW IURP 6HWXS

7KH

$Q DXWRPDWLRQ

V\VWHP FDQ UHVHW WKH YDOXH FKDQJHG IODJ DQG FKHFN YDOXH FKDQJHG
ELWV WR GHWHUPLQH ZKLFK SURJUDP FRGH YDOXHV KDYH FKDQJHG

$Q

DXWRPDWLRQ V\VWHP FDQ XVH WKH 0RGLI\ 3URJUDP &RGH $WWULEXWH


FRPPDQG WR UHVHW WKH YDOXH FKDQJHG ELW 7KXV LW LV QRW SRVVLEOH WR
FKDQJH WKH 'DQ/RDG 
V VHWXS SDUDPHWHU ZLWKRXW WKH DXWRPDWLRQ
V\VWHP EHLQJ DZDUH RI LW
7KH UHVSRQVH FRQWDLQV D ELQDU\ UHSUHVHQWDWLRQ RI WKH SURJUDP FRGH
V
DWWULEXWH E\WH 7KLV FDQ EH XVHG WR GHWHUPLQH D SURJUDP FRGH YDOXH
KDV EHHQ FKDQJHG E\ DQ RSHUDWRU
7KLV FRPPDQG FDQ EH XVHG WR UHTXHVW DOO UHFLSH FRQILJXUDWLRQ YDOXHV
DOO DGGLWLYH FRQILJXUDWLRQ YDOXHV HWF

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6HW 3URJUDP &RGH 9DOXH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int pc; /* Program code. */
unsigned char pcv[sizeof(pcv)]; /* Program code value. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K 3URJUDP FRGH YDOXH V FKDQJHG

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


([FHSWLRQV

K 3URJUDP FRGH YDOXH LV :HLJKWV DQG 0HDVXUHV


K 7UDQVDFWLRQ LQ SURJUHVV
$K 3ULPDU\ DODUP DFWLYH
K 3URJUDP FRGH YDOXH LV UHDG RQO\
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K ,QYDOLG SURJUDP FRGH
K ,QYDOLG SURJUDP FRGH YDOXH

'HVFULSWLRQ

7KH TXHU\
V GDWD ILHOG LV YDULDEOHOHQJWK
7KLV FRPPDQG FDQ EH XVHG WR FRQILJXUH WKH 'DQ/RDG  IURP DQ
DXWRPDWLRQ V\VWHP 7KH 'DQ/RDG  YDOLGDWHV WKH SURJUDP FRGH
YDOXH EHLQJ VHW DQG UHVSRQGV ZLWK H[FHSWLRQ FRGH K LI LW LV QRW
YDOLG ,I WKH SURJUDP FRGH YDOXH LV YDOLG WKH SURJUDP FRGH
V YDOXH
FKDQJHG DWWULEXWH DQG WKH JOREDO SURJUDP FRGH YDOXH V FKDQJHG
VWDWXV IODJ DUH VHW

7KH SURJUDP FRGH YDOXH


V VL]H FDQ EH IRXQG

XVLQJ WKH 5HTXHVW 3URJUDP &RGH 9DOXHV DQG $WWULEXWHV K


FRPPDQG
7KH &RQILJXUH 5HFLSH FRPPDQG K SURYLGHV D TXLFN FRQYHQLHQW
ZD\ WR FRQILJXUH UHFLSHV G\QDPLFDOO\

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

1RWH
6RPH SURJUDP FRGH YDOXHV WDNH HIIHFW LPPHGLDWHO\ 2WKHU
SURJUDP FRGH YDOXHV GR QRW WDNH HIIHFW XQWLO WKH 'DQ/RDG
 LV UHVHW 7KH 'DQ/RDG  VKRXOG EH UHVHW DIWHU
SURJUDP FRGH YDOXHV KDYH EHHQ PRGLILHG 7KH 5HVHW 8QLW
K FRPPDQG FDQ EH XVHG
1RWH
3URJUDP FRGH YDOXHV FDQ EH PRGLILHG RQO\ RQH DW D WLPH
XVLQJ FRPPDQG FRGH K
:KHQ GRZQORDGLQJ D
FRPSOHWH FRQILJXUDWLRQ LH DOO SURJUDP FRGHV WR D
'DQ/RDG  LV LV XVXDOO\ TXLFNHVW WR UHTXHVW DOO SURJUDP
YDOXHV XVLQJ FRPPDQG FRGH K DQG WR GRZQORDG RQO\
WKRVH WKDW GLIIHU
9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



0RGLI\ 3URJUDP &RGH $WWULEXWH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int pc; /* Program code. */
unsigned char bit; /* Attribute bit (0->7). */
unsigned char state; /* TRUE to set, FALSE to clear. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 3URJUDP FRGH YDOXH LV :HLJKWV DQG 0HDVXUHV


K 7UDQVDFWLRQ LQ SURJUHVV
$K 3ULPDU\ DODUP DFWLYH
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K ,QYDOLG SURJUDP FRGH
K ,QYDOLG ELW 

'HVFULSWLRQ

7KLV FRPPDQG FDQ EH XVHG WR PRGLI\ D SURJUDP FRGH


V DWWULEXWHV LH
UHDG RQO\ :HLJKWV DQG 0HDVXUHV GDWD ORJJLQJ DQG YDOXH FKDQJHG
2QO\ RQH DWWULEXWH ELW FDQ EH VHW RU FOHDUHG DW D WLPH LH ELW HTXDO WR
 PHDQV FKDQJH ELW  ZKLFK LV WKH 9DOXH &KDQJHG DWWULEXWH 
7KH :HLJKWV DQG 0HDVXUHV DWWULEXWH FDQ EH FKDQJHG RQO\ LI WKH
:HLJKWV DQG 0HDVXUHV VZLWFK LV RSHQ

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 9DOXH &KDQJHG $WWULEXWHV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char valchg[104]; /* Sufficient for MAXPC bits. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

&K 7UDQVDFWLRQ DXWKRUL]HG


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

7KLV FRPPDQG FDQ EH XVHG WR ILQG RXW ZKLFK SURJUDP FRGH YDOXHV
KDYH EHHQ PRGLILHG VLQFH WKHLU YDOXH FKDQJHG DWWULEXWHV ZHUH ODVW
FOHDUHG YDOFKJ>@ LV WKH YDOXH FKDQJHG DWWULEXWH RI SURJUDP FRGH
 HWF 7KH DXWRPDWLRQ V\VWHP QHHG RQO\ ORRN DW SURJUDP FRGHV LQ
ZKLFK LW LV LQWHUHVWHG

9DOLG PRGHV

$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



&OHDU 9DOXH &KDQJHG $WWULEXWHV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
K 3URJUDP FRGH YDOXH V FKDQJHG

([FHSWLRQV

&K 7UDQVDFWLRQ DXWKRUL]HG


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ

'HVFULSWLRQ

7KLV FRPPDQG FDQ EH XVHG WR FOHDU HYHU\ SURJUDP FRGH


V YDOXH
FKDQJHG DWWULEXWH

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



&RQILJXUH 5HFLSH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int recipenumber; /* Recipe number (1->30). */
int numcomps; /* Configured number of components. */
char name[17]; /* Null terminated recipe name of length 16. */
int cmppct[numcomps]; /* Component percentages in hundredths. */
int cmpseq[numcomps]; /* Component sequence or low/high proportion.
*/
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K 3URJUDP FRGH YDOXH V FKDQJHG

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


([FHSWLRQV

$K 3ULPDU\ DODUP DFWLYH


&K 7UDQVDFWLRQ DXWKRUL]HG
K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K ,QYDOLG UHFLSH QXPEHU
K ,QYDOLG QXPEHU RI FRPSRQHQWV

'HVFULSWLRQ

7KH LV D VKRUWFXW IRU FRQILJXULQJ UHFLSHV LQVWHDG RI VHWWLQJ WKH


LQGLYLGXDO SURJUDP FRGH YDOXHV 
,Q WKH FDVH RI DQ LQOLQH EOHQGHU XQLW W\SH WKHUH DUH VRPH RWKHU
FRQVLGHUDWLRQV 7KH ORZKLJK SURSRUWLRQ IODJV VKRXOG EH FRQILJXUHG
FDUHIXOO\ LW LV SRVVLEOH WKDW D SDUWLFXODU FRPSRQHQW LV KLJK SURSRUWLRQ
IODJ

 IRU VRPH UHFLSHV DQG ORZ SURSRUWLRQ IODJ

 IRU GLIIHUHQW

UHFLSHV RQ WKH VDPH 'DQ/RDG  7KLV LV D IXQFWLRQ RI WKH VL]H RI


WKH PHWHU DQG WKXV WKH XVDEOH UDQJH RI IORZ UDWHV WKURXJK ZKLFK WKH
FRPSRQHQW IORZV 7KH RYHUDOO UHFLSH IORZ UDWHV SURJUDP FRGHV 
 HWF PD\ QHHG WR EH PRGLILHG LI FRPSRQHQW SHUFHQWDJHV DUH
PRGLILHG YLD FRPPXQLFDWLRQV

3DJH   'DQ/RDG  &RPPV 6SHF

7KH FRPSRQHQW VWRS UDWHV DQG

'DQLHO )ORZ 3URGXFWV

FDOLEUDWHG PHWHU IDFWRU IORZ UDWHV VKRXOG QRW QRUPDOO\ EH PRGLILHG


G\QDPLFDOO\
7KH

FRQILJXUHG QXPEHU RI UHFLSHV SURJUDP FRGH  LV QRW

DXWRPDWLFDOO\ LQFUHDVHG RU GHFUHDVHG E\ WKH &RQILJXUH 5HFLSH


FRPPDQG

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



*HW 'DWH DQG 7LPH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
struct Op_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} op_date_time;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KH 'DQ/RDG  KDV D EDWWHU\EDFNHG UHDOWLPH FORFN ZKLFK


PDLQWDLQV WKH GDWH DQG WLPH HYHQ ZKHQ WKH 'DQ/RDG  LV SRZHUHG
GRZQ
7KH 'DQ/RDG  UHVSRQGV ZLWK WKH \HDU PRQWK GD\ KRXUV PLQV
DQG VHFV IURP LWV EDWWHU\EDFNHG UHDOWLPH FORFN

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6HW 'DWH DQG 7LPH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
struct Set_date_time {
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hours;
unsigned char mins;
unsigned char secs;
} set_date_time;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

&K 7UDQVDFWLRQ DXWKRUL]HG


K ,QYDOLG GDWH
K ,QYDOLG WLPH

'HVFULSWLRQ

7KH 'DQ/RDG  YDOLGDWHV WKH GDWH DQG WLPH IURP WKH DXWRPDWLRQ
V\VWHP
,I ERWK WKH GDWH DQG WLPH DUH YDOLG WKH 'DQ/RDG  VHWV LWV EDWWHU\
EDFNHG UHDOWLPH FORFN

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW )LUPZDUH 9HUVLRQV $K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field
unsigned char cmdcode;
char cp1fwver[strlen(cp1fwver)
terminated. */
char cp2fwver[strlen(cp2fwver)
terminated. */
char msgver[strlen(msgver) +
terminated. */
};

length. */
+ 1]; /* CPU-1 program EPROM null
+ 1]; /* CPU-2 program EPROM null
1]; /* CPU-1 message EPROM null

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KLV FDQ EH XVHG WR YHULI\ WKH LQVWDOOHG ILUPZDUH YHUVLRQ

7KH

ILUPZDUH YHUVLRQV DUH LQ WKH IRUPDW  7KH DXWRPDWLRQ V\VWHP


PD\ ZLVK WR SUHIL[ D ORZHUFDVH Y LH Y WR PDWFK WKH IRUPDW
GLVSOD\HG E\ WKH 'DQ/RDG 
7KH DXWRPDWLRQ V\VWHP VKRXOG HQVXUH WKDW WKH OHQJWK RI HDFK YHUVLRQ
QXPEHU VWULQJ GRHV QRW H[FHHG LWV DYDLODEOH VWRUDJH VSDFH

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HDG ,QSXW %K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int ioptp; /* I/O point type. */
int ioptnum; /* I/O point number. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char val; /* Discrete input value. */
};
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned int val; /* Meter, RTD or current loop value. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

$K ,QYDOLG ,2 SRLQW W\SH


%K ,QYDOLG ,2 SRLQW QXPEHU

'HVFULSWLRQ

9DOLG ,2 SRLQW W\SHV LRSWS DUH

0HWHU LQSXW

57' LQSXW

&XUUHQW ORRS LQSXW

'LVFUHWH LQSXW 127( 7KH


DXWRPDWLRQ V\VWHP VKRXOG VSHFLI\ WKH
DFWXDO GLVFUHWH LQSXW UDWKHU WKDQ WKH
LQYHUWHG GLVFUHWH LQSXW  DQG
DERYH IRU WKH ,2 SRLQW QXPEHU

7KH IRUPDW RI WKH UHVSRQVH GHSHQGV RQ LRSWS

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



:ULWH 2XWSXW &K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int ioptp; /* I/O point type. */
int ioptnum; /* I/O point number. */
unsigned int val; /* Value. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

$K ,QYDOLG ,2 SRLQW W\SH


%K ,QYDOLG ,2 SRLQW QXPEHU
&K ,QYDOLG RXWSXW YDOXH

'HVFULSWLRQ

9DOLG ,2 SRLQW W\SHV LRSWS DUH

9DOLG PRGHV

'LVFUHWH RXWSXW

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



'8$57 'LDJQRVWLF 'K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char instruction; /* 0=start diagnostic, 1=request results.
*/
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char busy_status; /* 0x10=Ch B busy, 0x01=Ch A busy. */
struct {
int locerr;
int exterr;
int bauderr;
unsigned char fmterr;
unsigned char interr;
} results;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

&K 7UDQVDFWLRQ DXWKRUL]HG


%K 'LDJQRVWLF QRW VWDUWHG
&K 'LDJQRVWLF UXQQLQJ

'HVFULSWLRQ

7KLV FRPPDQG LV IRU FKDPEHU WHVWLQJ RU RWKHU GLDJQRVWLF SXUSRVHV


RQO\
$W OHDVW RQH FKDQQHO WKH ZKLFK UHFHLYHV WKLV FRPPDQG LV EXV\ VR
DW PRVW RQH FKDQQHO WKH FKDQQHO WKDW LV QRW EXV\ FDQ EH WHVWHG
7KLV FRPPDQG FDQ EH XVHG WR VWDUW D '8$57 GLDJQRVWLF DQG
VXEVHTXHQWO\ WR UHTXHVW WKH UHVXOWV RI WKH GLDJQRVWLF ,I WKH UHVXOWV RI
WKH GLDJQRVWLF DUH UHTXHVWHG EHIRUH WKH GLDJQRVWLF LV FRPSOHWH RU LI
WKH UHVXOWV RI WKH GLDJQRVWLF DUH UHTXHVWHG ZLWKRXW WKH GLDJQRVWLF
KDYLQJ EHHQ VWDUWHG DQ H[FHSWLRQ UHVSRQVH LV JLYHQ

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

:KHQ WKH '8$57 GLDJQRVWLF KDV FRPSOHWHG WKH UHVSRQVH VKRXOG EH


LQWHUSUHWHG DV IROORZV

ORFHUU LV WKH QXPEHU RI IDLOXUHV RXW RI  FKDUDFWHUV


WUDQVPLWWHG GXULQJ WKH ORFDO ORRSEDFN WHVW 7KXV ORFHUU

PHDQV SDVVHG DQG ORFHUU !  PHDQV IDLOHG

H[WHUU LV WKH QXPEHU RI IDLOXUHV RXW RI  FKDUDFWHUV


WUDQVPLWWHG GXULQJ DQ H[WHUQDO ORRSEDFN WHVW 7KXV H[WHUU

 PHDQV SDVVHG DQG H[WHUU !  PHDQV IDLOHG


EDXGHUULV WKH EDXG UDWH HUURU PDVN IRU HLJKW FRQILJXUDEOH EDXG
UDWHV IURP  WKUX  FRUUHVSRQGLQJ WR ELWV  OHDVW
VLJQLILFDQW WKUX ELW  RI EDXGHUU $ ELW EHLQJ VHW  PHDQV WKDW
WKH '8$57 IDLOHG DW WKH FRUUHVSRQGLQJ EDXG UDWH

$ ELW

EHLQJ FOHDU  PHDQV WKDW WKH '8$57 SDVVHG DW WKH


FRUUHVSRQGLQJ EDXG UDWH HJ EDXGHUU [

[ PHDQV

WKDW WKH '8$57 IDLOHG WKH  ESV WHVW

IPWHUU LV WKH GDWD IRUPDW HUURU PDVN IRU WKH SDULW\ VWRS ELW
DQG GDWD ELW WHVWV FRUUHVSRQGLQJ WR ELWV  OHDVW VLJQLILFDQW
WKUX ELW  RI IPWHUU $ ELW EHLQJ VHW  PHDQV WKDW WKH '8$57
IDLOHG WKH FRUUHVSRQGLQJ WHVW $ ELW EHLQJ FOHDU  PHDQV WKDW
WKH '8$57 SDVVHG WKH FRUUHVSRQGLQJ WHVW HJ IPWHUU [

 PHDQV WKDW DOO WHVWV SDVVHG


LQWHUULV WKH LQWHUUXSW HUURU PDVN IRU WKH UHFHLYH UHDG\ ),)2 IXOO
DQG WUDQVPLW UHDG\ LQWHUUXSWV

7KLV LV QRW LPSOHPHQWHG YLD

DXWRPDWLRQ V\VWHP FRPPXQLFDWLRQV

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



$5&1(7 'LDJQRVWLF (K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char
unsigned char
unsigned char
unsigned char

dfl; /* Data field length. */


cmdcode;
dsreg; /* COM20020's Diagnostic Status Register. */
cfgreg; /* COM20020's Configuration Register. */

};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 7UDQVDFWLRQ LQ SURJUHVV

'HVFULSWLRQ

7KLV FRPPDQG LV IRU FKDPEHU WHVWLQJ RU RWKHU GLDJQRVWLF SXUSRVHV


RQO\ WKH 'DQ/RDG  UHVSRQGV RQO\ DIWHU VHYHUDO VHFRQGV
7+,6 &200$1' :,// %( $9$,/$%/( ,1 $ )8785( 5(/($6(

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HTXHVW &UDVK 'DWD )K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int cpu; /* 1 or 2. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned int stack_pointer;
unsigned int program_counter;
unsigned int interrupt_mask;
unsigned int interrupt_mask1;
unsigned int win_sel_reg;
unsigned int cur_task;
int val; /* Error code. */
void *task_adr;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 7UDQVDFWLRQ LQ SURJUHVV


K ,QYDOLG &38 QXPEHU

'HVFULSWLRQ

7KH FUDVK GDWD FDQ DVVLVW 'DQLHO ,QGXVWULHV HQJLQHHUV LQ WKH DQDO\VLV
RI IDWDO HUURUV FDXVHG E\ KDUGZDUH RU VRIWZDUH PDOIXQFWLRQ
7KH FUDVK GDWD FRQWDLQV LQ RUGHU  VWDFN SRLQWHU DW WLPH RI IDLOXUH
SURJUDP FRXQWHU DW WLPH RI IDLOXUH LQWHUUXSW PDVN DW WLPH RI IDLOXUH
LQWHUUXSW PDVN  DW WLPH RI IDLOXUH :LQGRZ 6HOHFW 5HJLVWHU DW WLPH RI
IDLOXUH 26 WDVN QXPEHU DW WLPH RI IDLOXUH HUURU FRGH DQG 26 WDVN
DGGUHVV WDVN HQWU\ SRLQW DW WLPH RI IDLOXUH

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HVHW 8QLW K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 7UDQVDFWLRQ LQ SURJUHVV

'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV WR WKH DXWRPDWLRQ V\VWHP DQG WKHQ


UHVHWV VLPLODU WR SRZHU XS 
7KH 'DQ/RDG 
V &38 LVVXHV D UHVHW LQVWUXFWLRQ ZKLFK UHVHWV
ERWK &38 DQG &38

9DOLG PRGHV

0DQXDO
$XWRPDWLF

1RWH
3UHYLRXO\ GRFXPHQWHG DV EHLQJ YDOLG RQO\ LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH DQG JLYLQJ DQ H[FHSWLRQ LQ WKH PDQXDO
RSHUDWLQJ PRGH 5HIHU WR VWDQGDUG 'DQ/RDG  IDXOW


3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



/DVW .H\ 3UHVVHG K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char keycode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

$K 1R NH\ SUHVVHG LH QR NH\ FRGH DYDLODEOH


7KH 'DQ/RDG  UHVSRQGV ZLWK WKH NH\ FRGH RI WKH NH\SDG NH\
PRVW UHFHQWO\ SUHVVHG
,Q 'DQ/RDG  Y DQG DERYH WKH .H\ 3UHVVHG %K VWDWXV IODJ
LQ WKH UHVSRQVH WR WKH 5HTXHVW 6WDWXV K DQG (QKDQFHG 5HTXHVW
6WDWXV &K FRPPDQGV LQGLFDWHV LI D NH\ FRGH LV DYDLODEOH

7KH

.H\ 3UHVVHG VWDWXV IODJ FDQ EH FOHDUHG E\ WKH DXWRPDWLRQ V\VWHP


XVLQJ WKH &OHDU 6WDWXV K FRPPDQG LI D QHZ NH\ FRGH LV
UHTXLUHG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5$0 7HVWV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int cpu; /* 1 or 2. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char
unsigned char
unsigned char
unsigned char
unsigned char
};

dfl; /* Data field length. */


cmdcode;
ok; /* 0 <=> failed */
*addr; /* Address of first failure. */
pg; /* Data page. */

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 7UDQVDFWLRQ LQ SURJUHVV


K ,QYDOLG &38 QXPEHU

'HVFULSWLRQ

7KLV FRPPDQG LV IRU FKDPEHU WHVWLQJ RU RWKHU GLDJQRVWLF SXUSRVHV


RQO\ WKH 'DQ/RDG  UHVSRQGV ZLWK WKH UHVXOWV RI WKH ODVW 5$0 WHVW
WKDW UDQ LH RQ SRZHUXS RU YLD GLDJQRVWLFV RQ WKH VSHFLILHG &38
,Q RUGHU WR IRUFH 5$0 WHVWV WR EH SHUIRUPHG WKURXJK FRPPXQLFDWLRQV
ILUVW VHQG D 5HVHW 8QLW FRPPDQG ZDLW XQWLO WKH 'DQ/RDG 
UHVSRQGV WR D 6WDUW &RPPXQLFDWLRQV FRPPDQG DQG WKHQ VHQG WKH
5$0 7HVWV FRPPDQG IRU RQH RU ERWK &38
V

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



6ZLQJDUP 6LGH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char side; /* Swing-arm side (0->2). */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV ZLWK WKH VZLQJDUP VLGH   RU  DV


GHWHUPLQHG E\ WKH VZLQJDUP VZLWFKHV RQ WKH &38 ERDUG DQG WKH
FRQILJXUHG 6LGH GHWHFW PHWKRG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



,QVWDOOHG %RDUGV K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char btp[7]; /* I/O slot array. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV ZLWK WKH FXUUHQWO\ LQVWDOOHG ,2 ERDUG
W\SHV GHWHFWHG DW UHVHW
7KH ERDUG W\SHV DUH

1R ERDUG LQVWDOOHG

'& ,2

$& ,2

&KDQQHO $QDORJ ,QSXWV

&KDQQHO 0HWHU 3XOVH

(QKDQFHG ,2

&KDQQHO $QDORJ ,QSXWV

&KDQQHO 0HWHU 3XOVH

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

9DOLG PRGHV

EWS>@

7\SH RI ERDUG LQ VORW -

EWS>@

7\SH RI ERDUG LQ VORW -

EWS>@

7\SH RI ERDUG LQ VORW -

EWS>@

7\SH RI ERDUG LQ VORW -

EWS>@

7\SH RI ERDUG LQ VORW -

EWS>@

7\SH RI ERDUG LQ VORW -

EWS>@

7\SH RI ERDUG LQ VORW -

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



&RQILJXUH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char btp[7]; /* I/O slot array. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


K 3URJUDP FRGH YDOXH V FKDQJHG

6WDWXV IODJV LPPHGLDWHO\ FOHDUHG


([FHSWLRQV

&K 7UDQVDFWLRQ DXWKRUL]HG


K ,QYDOLG ERDUG W\SH

'HVFULSWLRQ

7KLV FRPPDQG LV IRU FKDPEHU WHVWLQJ RU RWKHU GLDJQRVWLF SXUSRVHV


RQO\ DQG LV QRW LQWHQGHG IRU XVH E\ DQ DXWRPDWLRQ V\VWHP
7KH

'DQ/RDG 
V GDWDEDVH LV XSGDWHG DQG ,2 SRLQWV DUH

FRQILJXUHG XVLQJ WKH ,2 ERDUG W\SHV IURP WKH DXWRPDWLRQ V\VWHP

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



:HLJKWV DQG 0HDVXUHV 6ZLWFK K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char wm; /* Weights and measures switch. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KH 'DQ/RDG  UHVSRQGV ZLWK WKH FXUUHQW VWDWH RI WKH :HLJKWV
DQG 0HDVXUHV VZLWFK  2SHQ  &ORVHG  3URJUDP FRGHV GHILQHG
DV :HLJKWV DQG 0HDVXUHV FDQQRW EH PRGLILHG ZKHQ WKH :HLJKWV
DQG 0HDVXUHV VZLWFK LV FORVHG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



&KDQJH 2SHUDWLQJ 0RGH K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char opmode; /* Operating mode. 0=Auto, 1=Manual. */
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 2SHUDWLQJ PRGH FDQQRW EH FKDQJHG


'K ,QYDOLG RSHUDWLQJ PRGH

'HVFULSWLRQ

7KH &KDQJH 2SHUDWLQJ 0RGH FRPPDQG DOORZV WKH DXWRPDWLRQ V\VWHP


WR FKDQJH WKH 'DQ/RDG 
V RSHUDWLQJ PRGH LI WKH DXWRPDQXDO
FKDQJHRYHU LQSXW LV QRW FRQILJXUHG 7KH &KDQJH 2SHUDWLQJ 0RGH
FRPPDQG LV WKH FRPPXQLFDWLRQV HTXLYDOHQW RI WKH DXWRPDQXDO
FKDQJHRYHU LQSXW
,I

WKH

'DQ/RDG


V

RSHUDWLQJ

PRGH

LV

FRQWUROOHG

E\

WKH

DXWRPDQXDO FKDQJHRYHU LQSXW DQ H[FHSWLRQ UHVSRQVH LV JHQHUDWHG


,I WKH 'DQ/RDG  LV DOUHDG\ LQ WKH GHVLUHG RSHUDWLQJ PRGH WKHQ
WKH FRPPDQG LV VLPSO\ DFNQRZOHGJHG
7KH RSHUDWLQJ PRGH GRHV QRW FKDQJH XQWLO WKH WUDQVDFWLRQ KDV HQGHG
6WDWXV IODJ K 2SHUDWLQJ PRGH LV PDQXDO LV VHW RU FOHDUHG
VXEVHTXHQWO\

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



&OHDU 'LVSOD\ K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K 3DVVFRGH HQWU\ LQ SURJUHVV


K 2SHUDWLQJ PRGH LV PDQXDO ORZ SULRULW\ PD\ QRW EH VHHQ
K .H\SDG DQG GLVSOD\ ORFNHG RXW

'HVFULSWLRQ

7KLV FRPPDQG FOHDUV WKH 'DQ/RDG 


V PXOWLOLQH GLVSOD\

7KH

'DQ/RDG  GLVSOD\V WKH GDWH DQG WLPH LQ WKH XSSHU ULJKW KDQG
FRUQHU DQG 3OHDVH ZDLW RQ WKH ERWWRP OLQH
7KLV FRPPDQG LV FRPPDQG FDQ EH XVHG WR HUDVH WKH UHFLSH PHQX
DIWHU D 3URPSW 5HFLSH FRPPDQG WKH DGGLWLYH PHQX DIWHU D 3URPSW
$GGLWLYH

FRPPDQG

RU

WKH

ORDGLQJ

VFUHHQ

DIWHU

DQ

$XWKRUL]H

7UDQVDFWLRQ FRPPDQG D 3URPSW 3UHVHW 9ROXPH FRPPDQG RU DQ


$XWKRUL]HG %DWFK FRPPDQG

9DOLG PRGHV

$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HTXHVW 6WRUHG 7UDQVDFWLRQ K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int trseq;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char transaction_record[trrecl]; /* trrecl
};

 [0, 250] */

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

'K 7UDQVDFWLRQ QRW RQ ILOH WUDQVDFWLRQ VWRUDJH

'HVFULSWLRQ

7KLV FRPPDQG LV XVHG WR UHTXHVW D WUDQVDFWLRQ UHFRUG IURP WKH


WUDQVDFWLRQ VWRUDJH WUDQVDFWLRQ ILOH 7KH IRUPDW RI WKH WUDQVDFWLRQ
UHFRUG LV FRQILJXUDEOH
9DOLG WUDQVDFWLRQ VHTXHQFH QXPEHUV DUH  WKURXJK  ,Q SUDFWLFH
IHZHU WKDQ  WUDQVDFWLRQV PD\ DFWXDOO\ EH VWRUHG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HTXHVW 6WRUHG %DWFK $K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int baseq;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char batch_record[barecl]; /* barecl
};

 [0, 250] */

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

(K %DWFK QRW RQ ILOH WUDQVDFWLRQ VWRUDJH

'HVFULSWLRQ

7KLV FRPPDQG LV XVHG WR UHTXHVW D EDWFK UHFRUG IURP WKH WUDQVDFWLRQ


VWRUDJH EDWFK ILOH 7KH IRUPDW RI WKH EDWFK UHFRUG LV FRQILJXUDEOH
9DOLG EDWFK VHTXHQFH QXPEHUV DUH  WKURXJK  ,Q SUDFWLFH IHZHU
WKDQ  EDWFKHV PD\ DFWXDOO\ EH VWRUHG

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



(QKDQFHG 6WDUW &RPPXQLFDWLRQV %K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
int nummtrs; /* Configured number of meters. */
int numcomps; /* Configured number of components. */
int numvalves; /* Configured number of valves. */
int numfacs; /* Configured number of factors/component. */
int numrecipes; /* Number of recipes configured. */
int numadds; /* Number of additives configured. */
unsigned char tempunits; /* 0=Celsius. 1=Fahrenheit. */
/* NOTE: Same as command code 21h as far as here. */
unsigned char numdataitems; /* Number of data items, 0 to 5. */
unsigned char language; /* Language. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV
'HVFULSWLRQ

7KLV LV DQ DOWHUQDWLYH WR WKH 6WDUW &RPPXQLFDWLRQV K FRPPDQG


7KLV

FRPPDQG

KDV

WKH

IROORZLQJ

DGYDQWDJHV

RYHU

WKH

6WDUW

&RPPXQLFDWLRQV K FRPPDQG


 ,W KDV D IL[HG OHQJWK UHVSRQVH
 ,WV UHVSRQVH FRQWDLQV DOO YDOXHV QHFHVVDU\ IRU DQ DXWRPDWLRQ
V\VWHP WR SUHGLFW WKH OHQJWKV RI DOO RWKHU UHVSRQVHV IURP WKH
'DQ/RDG 
 ,WV UHVSRQVH LQIRUPV WKH DXWRPDWLRQ V\VWHP RI WKH FRQILJXUHG
ODQJXDJH
7KLV FRPPDQG KDV WKH IROORZLQJ GLVDGYDQWDJHV RYHU WKH 6WDUW
&RPPXQLFDWLRQV K FRPPDQG
 ,W LV DYDLODEOH RQO\ RQ 'DQ/RDG  Y DQG DERYH LWV
XVH GRHV QRW DOORZ DQ DXWRPDWLRQ V\VWHP WR EH EDFNZDUG
FRPSDWLEOH ZLWK HDUOLHU 'DQ/RDG  YHUVLRQV

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

:KHQ WKH 'DQ/RDG  LV SRZHUHGXSUHVHW H[LWV SURJUDP PRGH


RU KDV GHWHFWHG DQ DXWRPDWLRQ V\VWHP FRPPXQLFDWLRQV IDLOXUH
FRPPXQLFDWLRQV FDQ EH VWDUWHG ZLWK WKLV FRPPDQG
7KH 'DQ/RDG  ZLOO QRW UHVSRQG WR DQ\ FRPPDQG IURP WKH
DXWRPDWLRQ V\VWHP XQWLO FRPPXQLFDWLRQV KDYH EHHQ VWDUWHG
,I FRPPXQLFDWLRQV DUH DOUHDG\ VWDUWHG ZKHQ WKLV FRPPDQG LV UHFHLYHG
WKHQ WKH FRPPXQLFDWLRQV OLQN LV UHLQLWLDOL]HG EXW RSHUDWLRQV DW WKH
'DQ/RDG  DUH XQDIIHFWHG
:KHQ D FRPPXQLFDWLRQV IDLOXUH RFFXUV RQ D FRPPXQLFDWLRQV FKDQQHO
WKHQ FRPPXQLFDWLRQV RQ WKDW FKDQQHO FDQ EH VWDUWHG XVLQJ WKLV
FRPPDQG
7KH DOWHUQDWLQJ IXQFWLRQ FRGH VHTXHQFH LV UHVHW (LWKHU IXQFWLRQ FRGH
K RU K FDQ EH XVHG IRU WKLV TXHU\ 7KH QH[W QRQUHWU\ TXHU\
IURP WKH DXWRPDWLRQ V\VWHP VKRXOG XVH WKH RWKHU IXQFWLRQ FRGH
7KH TXHU\ LV VL[ FKDUDFWHUV ORQJ DGGUHVV RQH FKDUDFWHU  IXQFWLRQ
FRGH RQH FKDUDFWHU  GDWD ILHOG OHQJWK RQH FKDUDFWHU  FRPPDQG
FRGH

RQH

FKDUDFWHU

DQG

FKHFNVXP

WZR

FKDUDFWHUV 

9DOLG

(QKDQFHG 6WDUW &RPPXQLFDWLRQV FRPPDQGV IRU D 'DQ/RDG  ZLWK


FRPPXQLFDWLRQV DGGUHVV K DUH
   %  )
DQG
   % ( )
7KH ODQJXDJH FDQ EH XVHG E\ WKH DXWRPDWLRQ V\VWHP WR VHOHFW DQ
DSSURSULDWH PHVVDJH ILOH IRU VHQGLQJ WH[W WR WKH 'DQ/RDG 
127( 7KH ODQJXDJH FDQ EH PRGLILHG E\ WKH DXWRPDWLRQ V\VWHP
SULRU WR DXWKRUL]LQJ D WUDQVDFWLRQ RQ WKH 'DQ/RDG 

9DOLG PRGHV

0DQXDO
$XWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



(QKDQFHG 5HTXHVW 6WDWXV &K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned long status; /* Status bits 31 thru 0. */
unsigned char side; /* Swing-arm side (0->2). */
long grsvol; /* Gross batch volume whole units. */
long netvol; /* Net batch volume whole units. */
unsigned char safety; /* Safety circuits status, including those with
alarm action "Off" for DanLoad 6000 v5.11 and above. */
unsigned char almcd; /* Alarm code of oldest active primary alarm.
See 8.3. */
unsigned char alarm_byte_9; /* Alarm bits 79 thru 72. */
unsigned char alarm_byte_8; /* Alarm bits 71 thru 64. */
unsigned char alarm_byte_7; /* Alarm bits 63 thru 56. */
unsigned char alarm_byte_6; /* Alarm bits 55 thru 48. */
unsigned char alarm_byte_5; /* Alarm bits 47 thru 40. */
unsigned char alarm_byte_4; /* Alarm bits 39 thru 32. */
unsigned char alarm_byte_3; /* Alarm bits 31 thru 24. */
unsigned char alarm_byte_2; /* Alarm bits 23 thru 16. */
unsigned char alarm_byte_1; /* Alarm bits 15 thru 8. */
unsigned char alarm_byte_0; /* Alarm bits 7 thru 0. */
/* NOTE: Same as command code 21h as far as here. */
int recipenumber; /* Recipe number (1 to 30) entered or authorized.
*/
unsigned char addsel; /* Additive selection bit map. Re. 8.5. */
long preset; /* Preset volume entered or authorized. */
unsigned char spare[8]; /* Not used yet! */
/* NOTE: Same as command code 1Eh from here on. */
int oldest_trseq; /* Oldest transaction seq # stored (0-9999). */
int numtr; /* Number of transactions stored (0-10,000). */
int maxnumtr; /* Maximum number of transactions that can be stored.
*/
unsigned char trcfgerr; /* Transaction configuration error. */
int oldest_baseq; /* Oldest batch seq # stored (0-9999). */
int numba; /* Number of batches stored (0->10,000). */
int maxnumba; /* Maximum number of batches that can be stored. */
unsigned char bacfgerr; /* Batch configuration error. */
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

'HVFULSWLRQ

7KLV LV DQ DOWHUQDWLYH WR WKH 5HTXHVW 6WDWXV K FRPPDQG

7KLV

FRPPDQG KDV WKH IROORZLQJ DGYDQWDJHV RYHU WKH 5HTXHVW 6WDWXV


K FRPPDQG
 ,WV UHVSRQVH FRQWDLQV WKH UHFLSH QXPEHU DGGLWLYH VHOHFWLRQ
DQG SUHVHW YROXPH

5HTXHVW 6HOHFWHG 5HFLSH 5HTXHVW

6HOHFWHG $GGLWLYHV DQG 5HTXHVW 3UHVHW 9ROXPH FRPPDQGV


PD\ QR ORQJHU EH UHTXLUHG WKH UHOHYDQW GDWD DUH DYDLODEOH WR
WKH DXWRPDWLRQ V\VWHP LPPHGLDWHO\ ZKHQ WKH FRUUHVSRQGLQJ
VWDWXV ELWV FKDQJH 5HVSRQVH WLPHV DUH LPSURYHG


,WV

UHVSRQVH

FRQWDLQV

WKH

WUDQVDFWLRQ

VWRUDJH

VWDWXV

5HTXHVW 7UDQVDFWLRQ 6WRUDJH 6WDWXV FRPPDQGV PD\ QR ORQJHU


EH UHTXLUHG

7KLV LV SDUWLFXODU\ XVHIXO IRU WLFNHW SULQWLQJ

V\VWHPV WKDW XSORDG EDWFK DQG WUDQVDFWLRQ GDWD E\ ZDWFKLQJ


IRU QHZ UHFRUGV EHLQJ ZULWWHQ LQWR WKH ILOHV
7KLV FRPPDQG KDV WKH IROORZLQJ GLVDGYDQWDJHV RYHU WKH 5HTXHVW
6WDWXV K FRPPDQG
 ,WV UHVSRQVH WLPH LV VOLJKWO\ VORZHU EXW QRW VLJQLILFDQWO\
 6LQFH WKHUH DUH QR H[FHSWLRQV LW GRHV QRW SURWHFW WKH
DXWRPDWLRQ V\VWHP IURP PDNLQJ PLVWDNHV HJ XVLQJ WKH UHFLSH
QXPEHU ZKHQ QR UHFLSH LV VHOHFWHG DQG QR WUDQVDFWLRQ LV
DXWKRUL]HG
 ,W LV DYDLODEOH RQO\ RQ 'DQ/RDG  Y DQG DERYH LWV
XVH GRHV QRW DOORZ DQ DXWRPDWLRQ V\VWHP WR EH EDFNZDUG
FRPSDWLEOH ZLWK HDUOLHU 'DQ/RDG  YHUVLRQV

VWDWXV LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH 'DQ/RDG 


V  VWDWXV
IODJV

VDIHW\ LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH FXUUHQW ORJLFDO VWDWH RSHQ


RU FORVHG RI WKH 'DQ/RDG 
V HLJKW JHQHUDOSXUSRVH VDIHW\
FLUFXLWV SURJUDP FRGHV  WKURXJK   7KH OHDVW VLJQLILFDQW ELW LV
VDIHW\ FLUFXLW  HWF

6DIHW\ FLUFXLWV WKDW DUH QRW FRQILJXUHG RQ WKH

'DQ/RDG  DUH LQGLFDWHG WR EH RSHQ LH WKH FRUUHVSRQGLQJ ELW


LV 

DODUPBE\WHB WKURXJK DODUPBE\WHB LQGLFDWH DFWLYH UDLVHG DQG QRW


UHVHW SULPDU\ DODUPV 7KH DXWRPDWLRQ V\VWHP FDQ PDLQWDLQ D FRS\

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

RI WKH DODUP E\WHV VR WKDW LW FDQ GHWHUPLQH ZKHQ SULPDU\ DODUPV DUH
UDLVHG DQG FOHDUHG IRU ORJJLQJ SXUSRVHV
7KH

UHFLSH QXPEHU LV YDOLG ZKLOH WKH UHFLSH VHOHFWHG RU WKH

WUDQVDFWLRQ DXWKRUL]HG VWDWXV ELWV DUH VHW

7KH UHFLSH QXPEHU

DXWKRUL]HG IRU WKH WUDQVDFWLRQ QHHG QRW EH WKH VDPH DV WKH UHFLSH
QXPEHU VHOHFWHG E\ WKH RSHUDWRU
7KH DGGLWLYH VHOHFWLRQ LV YDOLG ZKLOH WKH DGGLWLYHV VHOHFWHG VWDWXV ELW
LV VHW
7KH SUHVHW YROXPH LV YDOLG ZKLOH WKH SUHVHW YROXPH HQWHUHG RU EDWFK
DXWKRUL]HG VWDWXV ELWV DUH VHW )RU WKH IRUPHU LW LV WKH SUHVHW YROXPH
HQWHUHG E\ WKH RSHUDWRU

)RU WKH ODWWHU LW LV WKH SUHVHW YROXPH

DXWKRUL]HG IRU WKH EDWFK 7KH SUHVHW YROXPH DXWKRUL]HG IRU WKH EDWFK
QHHG QRW EH WKH VDPH DV WKH SUHVHW YROXPH HQWHUHG E\ WKH RSHUDWRU

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HSRUW $ODUP 'K Y DQG DERYH

4XHU\ GDWD
struct Tasq {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
unsigned char almcd; /* Alarm code of alarm to be raised.
*/
};

See 8.3.

5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};

6WDWXV IODJV LPPHGLDWHO\ VHW


6WDWXV IODJV LPPHGLDWHO\ FOHDUHG
([FHSWLRQV

K ,QYDOLG ELW  LH WKH DODUP FRGH LQ WKH TXHU\ LV LQYDOLG

'HVFULSWLRQ

7KLV FRPPDQG LV XVHG WR UDLVH D 'DQ/RDG  DODUP W\SLFDOO\ ZLWK


D SULPDUO\ DODUP DFWLRQ YLD FRPPXQLFDWLRQV

7KH WHUP UHSRUW

DODUP LV XVHG VLQFH LQWHUQDO WR WKH 'DQ/RDG  DQ DODUP PXVW EH


UHSRUWHG LQ RUGHU WR EH UDLVHG
3RVVLEOH XVHV RI WKH 5HSRUW $ODUP FRPPDQG LQFOXGH
 5DLVLQJ DQ DODUP EDVHG RQ FRQGLWLRQV WKDW DUH HLWKHU QRW
LQSXW WR RU GHWHFWDEOH E\ WKH 'DQ/RDG  HJ D ILUH
GHWHFWLRQ V\VWHP RU D 3/& EHLQJ XVHG WR D PRQLWRU D UDLO FDU
V
SRVLWLRQ
 6WRSSLQJ D EDWFK SRVVLEO\ WHPSRUDULO\ ZLWK D VLWXDWLRQ
VSHFLILF PHVVDJH ,Q WKLV FDVH WKH DXWRPDWLRQ V\VWHP PLJKW
FRQILJXUH D VDIHW\ FLUFXLW DODUP PHVVDJH YLD FRPPXQLFDWLRQV
DQG WKHQ UDLVH WKH FRUUHVSRQGLQJ VDIHW\ FLUFXLW DODUP

7KH

DXWRPDWLRQ V\VWHP FDQ UHVHW WKH DODUP XVLQJ WKH 5HVHW


3ULPDU\ $ODUPV FRPPDQG

,W LV HPSKDVL]HG WKDW DQ DXWRPDWLRQ V\VWHP VKRXOG QRW GHSHQG RQ


'DQ/RDG  DODUPV WR SUHYHQW RU FRQWURO KD]DUGRXV RU OLIH
WKUHDWHQLQJ FRQGLWLRQV
'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

9DOLG PRGHV

0DQXDO
$XWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

&RGHV DQG )ODJV

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



6WDWXV )ODJV

7KH 5HTXHVW 6WDWXV FRPPDQG UHTXHVWV WKH 'DQ/RDG 


V  VWDWXV IODJV DV DQ
XQVLJQHG ORQJ LH ELQDU\ GDWD
'DQ/RDG 

7KH VWDWXV IODJV LQGLFDWH WKH RSHUDWLRQDO VWDWH RI WKH

:KHQ WKH 'DQ/RDG  LV LQ DXWRPDWLF WKH DXWRPDWLRQ V\VWHP

LQIOXHQFHV WKH RSHUDWLRQDO VWDWH RI WKH 'DQ/RDG  +RZHYHU VWDWXV IODJV DUH XSGDWHG
E\ WKH 'DQ/RDG  LQ ERWK DXWRPDWLF DQG PDQXDO
%LWV PDUNHG   DUH FOHDUHG RQ SRZHUXSUHVHW
&RPPXQLFDWLRQV FRPPDQG



%LWV PDUNHG 

%LWV PDUNHG  DUH FOHDUHG E\ D 6WDUW


FDQ EH FOHDUHG XVLQJ WKH &OHDU 6WDWXV

FRPPDQG %LWV PDUNHG  LQGLFDWHG VWDWXVHV ZKLFK SUHYHQW WKH DXWRPDWLRQ V\VWHP IURP
GLVSOD\LQJ PHVVDJHV RQ WKH 'DQ/RDG  $OO IODJV DUH FOHDUHG RQ D FROG VWDUW
%LW KH[

,QWHUSUHWDWLRQ

K

2SHUDWLQJ PRGH LV PDQXDO

K

3ULPDU\ DODUP

K

3DVVFRGH HQWU\ LQ SURJUHVV

K 

2SHUDWLRQ WLPHG RXW


K 
K 
K 
K 
K

5HFLSH VHOHFWHG
$GGLWLYHV VHOHFWHG LH DGGLWLYH VHOHFWLRQ FRPSOHWH
3UHVHW YROXPH HQWHUHG
.H\SDG GDWD DYDLODEOH
3URJUDP FRGH YDOXH V FKDQJHG

K

7UDQVDFWLRQ LQ SURJUHVV

$K

%DWFK LQ SURJUHVV GRHVQ


W QHFHVVDULO\ LPSO\ GHOLYHU\ LQ SURJUHVV



'K
(K 
)K 
%K

.H\ SUHVVHG 'DQ/RDG  Y DQG DERYH

&K

7UDQVDFWLRQ HQGHG
%DWFK HQGHG
%DWFK DERUWHG QRW VWDUWHG
,QWHUPHGLDWH OHYHO LQSXW DODUP VWRSSHG EDWFK Y DQG DERYH

K

5(6(59('

K

%DWFK DXWKRUL]HG

K

7UDQVDFWLRQ DXWKRUL]HG

K

7UDQVDFWLRQ HQG UHTXHVWHG 6723 NH\ LQ DXWR

K

.H\SDG DQG GLVSOD\ ORFNHG RXW WR DXWRPDWLRQ V\VWHP

K

%DWFK VWRSSHG UHVXPDEOH

K

3URJUDP PRGH

K

)ORZLQJ LH EDWFK LQ SURJUHVV DQG QRW VWRSSHG

K

5(6(59('

K

5(6(59('

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

$K

5(6(59('

%K

5(6(59('

&K

5(6(59('

'K

5(6(59('

(K

5(6(59('

)K

5(6(59('

7KH 'DQ/RDG 


V VWDWXV IODJV DUH VHW DQG FOHDUHG DV IROORZV

1RWH
5HFHLSW RI D 7$6 FRPPDQG DVVXPHV WKDW D YDOLG 7$6
FRPPDQG ZDV UHFHLYHG LH WKH 'DQ/RDG  GLG 127
UHVSRQG ZLWK DQ H[FHSWLRQ FRGH
1RWH

LQGLFDWHV WKDW WKH VWDWXV IODJ LV VHW RU FOHDUHG DIWHU


SURFHVVLQJ RFFXUV WKDW LV FDXVHG E\ WKH OLVWHG FRQGLWLRQ
LH WKHUH PD\ EH D GHOD\ EHWZHHQ WKH RFFXUUHQFH RI WKH
FRQGLWLRQ DQG WKH VWDWXV IODJ FKDQJLQJ
K 2SHUDWLQJ PRGH LV PDQXDO
6(7
2Q SRZHUXS ZKHQ WKH RSHUDWLQJ PRGH SURJUDP FRGH  LV 0DQXDO

'DQ/RDG  VZLWFKHV WR PDQXDO PRGH YLD XVHU FRPPDQG DW NH\SDG RU


YLD FRQILJXUHG $XWRPDQXDO FKDQJHRYHU LQSXW ZKHQ QR ORDG LV LQ
SURJUHVV RU YLD 7$6 6HW 3URJUDP &RGH 9DOXH FRPPDQG

&/($5('
2Q SRZHUXS ZKHQ WKH RSHUDWLQJ PRGH SURJUDP FRGH  LV $XWRPDWLF

'DQ/RDG  VZLWFKHV WR DXWRPDWLF PRGH RU WR VWDQGDORQH PRGH DW


NH\SDG RU YLD FRQILJXUHG $XWRPDQXDO FKDQJHRYHU LQSXW RU YLD 7$6
6HW 3URJUDP &RGH 9DOXH FRPPDQG

K 3ULPDU\ DODUP


6(7

3ULPDU\ DODUP RFFXUV RQ WKH 'DQ/RDG 

&/($5('

5HFHLSW RI D 5HVHW 3ULPDU\ $ODUPV FRPPDQG ZKLFK FOHDUV WKH RQO\ DFWLYH
SULPDU\ DODUP

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

WKH RQO\ DFWLYH SULPDU\ DODUP LV FOHDUHG E\ XVHU YLD NH\SDG RU YLD
FRQILJXUHG SULPDU\ DODUP UHVHW VZLWFK

K 3DVVFRGH HQWU\ LQ SURJUHVV


6(7
$/7(17(5 SUHVVHG DW NH\SDG IURP ORDG PRGH

&/($5('
8VHU FRPSOHWHV SDVVFRGH HQWU\ IURP WKH NH\SDG
3RZHUXS RI XQLW

K 2SHUDWLRQ WLPHG RXW


6(7
LQ DXWRPDWLF PRGH XVHU WLPHVRXW DIWHU UHFHLSW RI D 3URPSW 5HFLSH 3URPSW
$GGLWLYHV 3URPSW 3UHVHW 9ROXPH RU 'LVSOD\ 0HVVDJH FRPPDQG
LQ PDQXDO PRGH XVHU WLPHVRXW DW WKH 5HFLSH $GGLWLYHV 3UHVHW 9ROXPH RU
GDWD LWHP SURPSWV

IROORZLQJ UHFHLSW RI 7LPH2XW 2SHUDWLRQ FRPPDQG ZKLOH 'DQ/RDG 


LV SURPSWLQJ IRU D UHFLSH DGGLWLYHV D SUHVHW YROXPH RU 'LVSOD\
0HVVDJH QRW QHFHVVDULO\ LPPHGLDWHO\ RU $XWKRUL]H %DWFK

&/($5('
UHFHLSW RI 3URPSW 5HFLSH 3URPSW $GGLWLYHV 3URPSW 3UHVHW 9ROXPH RU
'LVSOD\ 0HVVDJH RU $XWKRUL]H %DWFK FRPPDQG LQ DXWRPDWLF
ZKHQ WKH 'DQ/RDG  LQLWLDWHV DQ\ SURPSWLQJ RSHUDWLRQ LQ PDQXDO
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
FKDQJH RI RSHUDWLRQ PRGH EHWZHHQ PDQXDO DQG DXWRPDWLF
SRZHUXS RI 'DQ/RDG 
UHFHLSW RI 6WDUW &RPPXQLFDWLRQV FRPPDQG

K 5HFLSH VHOHFWHG


6(7
XVHU VHOHFWV D UHFLSH YLD WKH NH\SDG

&/($5('
UHFHLSW RI $XWKRUL]H 7UDQVDFWLRQ FRPPDQG LQ DXWRPDWLF
ZKHQ D WUDQVDFWLRQ LV DXWKRUL]HG LQ PDQXDO
UHFHLSW RI 3URPSW 5HFLSH FRPPDQG LQ DXWRPDWLF RU ZKHQ D UHFLSH LV
SURPSWHG IRU LQ PDQXDO
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
FKDQJH RI RSHUDWLRQ PRGH EHWZHHQ PDQXDO DQG DXWRPDWLF

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

SRZHUXS RI 'DQ/RDG 


UHFHLSW RI 6WDUW &RPPXQLFDWLRQV FRPPDQG

K $GGLWLYHV VHOHFWHG


6(7
XVHU VHOHFWV DGGLWLYHV YLD WKH NH\SDG

&/($5('
UHFHLSW

RI $XWKRUL]H

7UDQVDFWLRQ

FRPPDQG

LQ

DXWRPDWLF

RU

ZKHQ

WUDQVDFWLRQ LV DXWKRUL]HG LQ PDQXDO


UHFHLSW RI 3URPSW $GGLWLYHV FRPPDQG LQ DXWRPDWLF RU ZKHQ DQ DGGLWLYH
VHOHFWLRQ LV SURPSWHG IRU LQ PDQXDO
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
FKDQJH RI RSHUDWLRQ PRGH EHWZHHQ PDQXDO DQG DXWRPDWLF
SRZHUXS RI 'DQ/RDG 
UHFHLSW RI 6WDUW &RPPXQLFDWLRQV FRPPDQG

K 3UHVHW YROXPH HQWHUHG


6(7
XVHU SUHVVHV (17(5 NH\ DIWHU HQWHULQJ YDOLG SUHVHW YROXPH

&/($5('
UHFHLSW RI 3URPSW 3UHVHW 9ROXPH FRPPDQG LQ DXWRPDWLF RU ZKHQ D SUHVHW
YROXPH LV SURPSWHG IRU LQ PDQXDO
UHFHLSW RI $XWKRUL]H %DWFK FRPPDQG LQ DXWRPDWLF RU ZKHQ D EDWFK LV
DXWKRUL]HG LQ PDQXDO
UHFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
FKDQJH RI RSHUDWLRQ PRGH EHWZHHQ PDQXDO DQG DXWRPDWLF
SRZHUXS RI 'DQ/RDG 
UHFHLSW RI 6WDUW &RPPXQLFDWLRQV FRPPDQG

K .H\SDG GDWD DYDLODEOH


6(7
XVHU SUHVVHV (17(5 NH\ DIWHU HQWHULQJ GDWD IROORZLQJ UHFHLSW RI D 'LVSOD\
0HVVDJH FRPPDQG ZLWK SPSWIZ ! 

&/($5('
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
UHFHLSW RI D 'LVSOD\ 0HVVDJH FRPPDQG
FKDQJH RI RSHUDWLRQ PRGH EHWZHHQ PDQXDO DQG DXWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

SRZHUXS RI 'DQ/RDG 


UHFHLSW RI 6WDUW &RPPXQLFDWLRQV FRPPDQG

K 3URJUDP FRGH YDOXHV FKDQJHG


6(7
'DQ/RDG  VZLWFKHV EHWZHHQ DXWRPDWLF DQG PDQXDO YLD WKH &KDQJH
2SHUDWLQJ 0RGH FRPPDQG RU WKH DXWRPDQXDO FKDQJHRYHU VZLWFK
ZLWK WKH RSHUDWLQJ PRGH SURJUDP FRGH  QRW UHDGRQO\
UHFHLSW RI D 6HW 3URJUDP &RGH 9DOXH FRPPDQG ZKLFK FKDQJHV D SURJUDP
FRGH YDOXH
UHFHLSW RI D &RQILJXUH 5HFLSH FRPPDQG
UHFHLSW RI D &RQILJXUH FRPPDQG
XVHU FKDQJHV D SURJUDP FRGH YDOXH LQ 6HWXS PRGH YLD WKH NH\SDG
ZKHQ D QHZ WUDQVDFWLRQ RU D QHZ EDWFK LV VWDUWHG DQG WKH WUDQVDFWLRQ
VHTXHQFH QXPEHU RI EDWFK VHTXHQFH QXPEHU DUH QRW UHDGRQO\

&/($5('
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
UHFHLSW RI D &OHDU 9DOXH &KDQJHG $WWULEXWHV FRPPDQG

K 7UDQVDFWLRQ LQ SURJUHVV


6(7
ILUVW EDWFK LV VWDUWHG YLD 67$57 NH\ RU 6WDUW %DWFK FRPPDQG DIWHU D
WUDQVDFWLRQ KDV EHHQ DXWKRUL]HG

&/($5('
ZKHQ WKH WUDQVDFWLRQ HQGHG VWDWXV IODJ &K LV VHW
SRZHUXS RI 'DQ/RDG 

$K %DWFK LQ SURJUHVV


6(7
UHFHLSW RI 6WDUW %DWFK FRPPDQG
XVHU SUHVVHV 67$57 NH\ DIWHU EDWFK KDV EHHQ DXWKRUL]HG

&/($5('
%DWFK HQGHG ELW LV VHW
SRZHUXS RI 'DQ/RDG 
WKH RSHUDWLQJ PRGH FKDQJH WRIURP PDQXDODXWRPDWLF

%K .H\ 3UHVVHG 'DQ/RDG  Y DQG DERYH


6(7
ZKHQ D NH\ H[FHSW WKH $/7 NH\ E\ LWVHOI LV SUHVVHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

&/($5('
SRZHUXSUHVHW RI 'DQ/RDG 
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW %K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH

&K 7UDQVDFWLRQ HQGHG


6(7
ZKHQ DQ RSHUDWLQJ PRGH FKDQJH WRIURP DXWRPDWLFPDQXDO IRUFHV D
WUDQVDFWLRQ WR HQG
ZKHQ WKH 'DQ/RDG  LV SRZHUHGXS DQG D WUDQVDFWLRQ ZDV LQ SURJUHVV
ZKHQ WKH 'DQ/RDG  ZDV SRZHUHGGRZQ

IROORZLQJ UHFHLSW RI (QG 7UDQVDFWLRQ FRPPDQG DQG FRPSOHWLRQ RI HQG


WUDQVDFWLRQ SURFHVVLQJ

LQ PDQXDO PRGH DQ\ DFWLRQ ZKLFK HQGV D WUDQVDFWLRQ

&/($5('


UHFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW &K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
RQ UHFHLSW RI $XWKRUL]HG 7UDQVDFWLRQ FRPPDQG LQ DXWRPDWLF RU ZKHQ D
WUDQVDFWLRQ LV DXWKRUL]HG LQ PDQXDO

'K %DWFK HQGHG


6(7

UHFHLSW RI (QG %DWFK FRPPDQG ZKHQ D EDWFK LV LQ SURJUHVV DQG WKH EDWFK
LV VWRSSHG

SUHVHW YROXPH KDV EHHQ GHOLYHUHG XQGHU QRUPDO FLUFXPVWDQFHV


UHFHLSW RI 6WRS %DWFK FRPPDQG RU XVHU SUHVVHV 6723 NH\ ZKHQ D EDWFK
LV LQ SURJUHVV DQG WKH EDWFK EHFRPHV QRQUHVWDUWDEOH

SULPDU\ RU VHFRQGDU\ DODUP RFFXUV ZKLOH D EDWFK LV LQ SURJUHVV DQG WKH


EDWFK LV VWRSSHG DQG EHFRPHV QRQUHVWDUWDEOH

ZKHQ DQ RSHUDWLQJ PRGH FKDQJH WRIURP PDQXDODXWRPDWLF IRUFHV D EDWFK


WR HQG
ZKHQ WKH 'DQ/RDG  LV SRZHUHGXS DQG D EDWFK ZDV LQ SURJUHVV ZKHQ
WKH 'DQ/RDG  ZDV SRZHUHGGRZQ

7LPHRXW RI D VHFRQGDU\ DODUP ZKHQ D EDWFK LV LQ SURJUHVV


6723 NH\ SUHVVHG ZKHQ WKHUH LV D VWRSSHG EDWFK LQ SURJUHVV

&/($5('
UHFHLSW RI $XWKRUL]H %DWFK FRPPDQG LQ DXWRPDWLF RU ZKHQ D EDWFK LV
DXWKRUL]HG LQ PDQXDO
UHFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW 'K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

(K %DWFK DERUWHG QRW VWDUWHG


6(7
LQ DXWRPDWLF PRGH XVHU SUHVVHV 6723 NH\ DIWHU DQ $XWKRUL]H %DWFK
FRPPDQG LQVWHDG RI WKH 67$57 NH\ RU 6WDUW %DWFK FRPPDQG
LQ PDQXDO PRGH XVHU SUHVVHV 6723 NH\ DIWHU HQWHULQJ D SUHVHW YROXPH
LQVWHDG RI WKH 67$57 NH\
ZKHQ WKH 'DQ/RDG  LV SRZHUHGGRZQXS ZKLOH D EDWFK LV DXWKRUL]HG
EXW QRW LQ SURJUHVV

&/($5('
UHFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW (K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
UHFHLSW RI $XWKRUL]H %DWFK FRPPDQG LQ DXWRPDWLF RU ZKHQ D EDWFK LV
DXWKRUL]HG LQ PDQXDO
ZKHQ WKH 'DQ/RDG  LV SRZHUHGXS XQOHVV WKHUH ZDV D EDWFK
DXWKRUL]HG EXW QRW LQ SURJUHVV ZKHQ WKH 'DQ/RDG  ZDV SRZHUHG
GRZQ

)K ,QWHUPHGLDWH OHYHO LQSXW DODUP VWRSSHG EDWFK


6(7
 :KHQ D EDWFK LV VWRSSHG GXH WR DQ LQWHUPHGLDWH OHYHO LQSXW DODUP 7KH
EDWFK PD\ DOVR EH HQGHG

&/($5('
 3RZHUXSUHVHW RI 'DQ/RDG 
 %DWFK VWDUWHG RU UHVWDUWHG
 5HFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW )K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH

K 5(6(59('
K %DWFK DXWKRUL]HG
6(7
UHFHLSW RI $XWKRUL]H %DWFK FRPPDQG LQ DXWRPDWLF RU ZKHQ D EDWFK LV
DXWKRUL]HG LQ PDQXDO

&/($5('
%DWFK HQGHG ELW LV VHW
ZKHQ WKH EDWFK DERUWHG VWDWXV IODJ LV VHW
SRZHU XS RI 'DQ/RDG 

K 7UDQVDFWLRQ DXWKRUL]HG


3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

6(7

IROORZLQJ

UHFHLSW RI $XWKRUL]H 7UDQVDFWLRQ FRPPDQG QRW QHFHVVDULO\

LPPHGLDWHO\

&/($5('
SRZHU XS RI 'DQ/RDG 
ZKHQ WKH WUDQVDFWLRQ HQGHG VWDWXV IODJ LV VHW
ZKHQ WKHUH LV DQ RSHUDWLQJ PRGH FKDQJH ZKHQ WKH WUDQVDFWLRQ DXWKRUL]HG
VWDWXV IODJ LV VHW

ZKHQ DQ (QG 7UDQVDFWLRQ FRPPDQG LV UHFHLYHG ZKLOH WKH WUDQVDFWLRQ


DXWKRUL]HG VWDWXV IODJ LV VHW EXW WKHUH LV QRW D WUDQVDFWLRQ LQ SURJUHVV
LQ DXWRPDWLF
ZKHQ

WKH

RSHUDWRU

SUHVVHV

WKH

6723

NH\

ZKHQ

WUDQVDFWLRQ

LV

DXWKRUL]HG EXW WKHUH LV QR WUDQVDFWLRQ LQ SURJUHVV LQ PDQXDO

K 7UDQVDFWLRQ HQG UHTXHVWHG VWRS NH\ LQ DXWR


6(7
LQ DXWRPDWLF PRGH 6723 NH\ SUHVVHG E\ XVHU ZKHQ D WUDQVDFWLRQ LV
DXWKRUL]HG DQG WKHUH LV QR EDWFK LQ SURJUHVV RU D EDWFK LV VWRSSHG

&/($5('
UHFHLSW RI $XWKRUL]H 7UDQVDFWLRQ FRPPDQG
UHFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH

K .H\SDG DQG GLVSOD\ ORFNHG RXW WR WKH DXWRPDWLRQ V\VWHP


6(7
UHFHLSW RI 3URPSW 5HFLSH 3URPSW $GGLWLYHV 3URPSW 3UHVHW 9ROXPH RU
'LVSOD\ 0HVVDJH FRPPDQG LQ DXWRPDWLF
UHFHLSW RI $XWKRUL]H %DWFK FRPPDQG
ZKLOH DQ $XWKRUL]H 7UDQVDFWLRQ FRPPDQG LV EHLQJ SURFHVVHG FOHDUHG DW
HQG RI SURFHVVLQJ

&/($5('
XVHU VHOHFWV UHFLSH IROORZLQJ UHFHLSW RI 3URPSW 5HFLSH FRPPDQG
XVHU VHOHFWV DGGLWLYHV IROORZLQJ UHFHLSW RI 3URPSW $GGLWLYHV FRPPDQG
XVHU VHOHFWV SUHVHW YROXPH IROORZLQJ UHFHLSW RI 3URPSW 3UHVHW 9ROXPH
FRPPDQG
XVHU LQSXWV UHVSRQVH IROORZLQJ UHFHLSW RI D 'LVSOD\ 0HVVDJH FRPPDQG
ZKHQ WKH %DWFK HQGHG RU %DWFK DERUWHG IODJ V DUH VHW
ZKHQ WKH 2SHUDWLRQ 7LPHG RXW ELW LV VHW ZKLOH WKH NH\SDGGLVSOD\ LV ORFNHG
RXW

ZKHQ

D SULPDU\ DODUP RFFXUV ZKLFK HQGV D 3URPSW 5HFLSH 3URPSW

$GGLWLYH 3URPSW 3UHVHW 9ROXPH RU 'LVSOD\ 0HVVDJH LQ DXWRPDWLF

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

ZKHQ WKH 'DQ/RDG  LV SRZHUHGXS

K %DWFK VWRSSHG UHVXPDEOH


6(7

UHFHLSW RI 6WRS %DWFK FRPPDQG ZKHQ D EDWFK LV LQ SURJUHVV DQG WKH EDWFK
EHFRPHV UHVWDUWDEOH

XVHU

SUHVVHV 6723 NH\ ZKHQ D EDWFK LV LQ SURJUHVV DQG WKH EDWFK

EHFRPHV UHVWDUWDEOH

SULPDU\ RU VHFRQGDU\ DODUP RFFXUV ZKHQ D EDWFK LV LQ SURJUHVV DQG WKH


EDWFK EHFRPHV UHVWDUWDEOH
 7KLV IODJ LV VHW RQO\ LI EDWFK LQ SURJUHVV LV VHW

&/($5('
UHFHLSW RI 6WDUW %DWFK FRPPDQG RU ZKHQ WKH RSHUDWRU SUHVVHV 67$57
DIWHU DQ $XWKRUL]H %DWFK FRPPDQG
ZKHQ WKH RSHUDWRU SUHVVHV WKH 67$57 NH\ WR UHVWDUW D VWRSSHG EDWFK
ZKHQ WKH EDWFK HQGHG VWDWXV IODJ LV VHW
SRZHU XS RI 'DQ/RDG 

K 3URJUDP 0RGH


6(7
ZKHQ WKH RSHUDWRU SUHVVHV (17(5 DIWHU W\SLQJ D YDOLG SDVVFRGH ZKHQ
DWWHPSWLQJ WR HQWHU SURJUDP PRGH

&/($5('
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH

K )ORZLQJ
6(7
ZKHQ D EDWFK GHOLYHU\ EHJLQV LH IORZ FRQWURO YDOYH LV RSHQHG

&/($5('
RQ UHFHLSW RI DQ $XWKRUL]HG 7UDQVDFWLRQ FRPPDQG LQ DXWRPDWLF RU ZKHQ D
WUDQVDFWLRQ LV DXWKRUL]HG LQ PDQXDO
ZKHQ WKH EDWFK VWRSSHG RU EDWFK HQGHG VWDWXV IODJV DUH VHW
ZKHQ WKH 'DQ/RDG  LV SRZHUHGXS

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

K 5(6(59('
K 5(6(59('
$K 5(6(59('
%K 5(6(59('
&K 5(6(59('
'K 5(6(59('
(K 5(6(59('
)K 5(6(59('

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



'DQ/RDG  ([FHSWLRQ 5HVSRQVH &RGHV

7KH 0RGEXV IXQFWLRQ FRGH IRU QRUPDO TXHULHV DQG UHVSRQVHV DUH K DQG K

7KH

0RGEXV SURWRFRO UHVHUYHV IXQFWLRQ FRGHV  WKURXJK  IRU XVHUGHILQHG FXVWRP


IXQFWLRQV

7KH 'DQ/RDG  XVHV IXQFWLRQ FRGHV &K DQG &K WR LQGLFDWH DQ

H[FHSWLRQ UHVSRQVH LH LQYDOLG GDWD ILHOG LQ ZKLFK FDVH WKH UHVSRQVH
V GDWD ILHOG
FRQWDLQV D 'DQ/RDG  ([FHSWLRQ 5HVSRQVH &RGH

7KHVH DUH QRW WKH VWDQGDUG

0RGEXV H[FHSWLRQ UHVSRQVH FRGHV


&RGH KH[

,QWHUSUHWDWLRQ

K

,QYDOLG FRPPDQG FRGH

K

3DVVFRGH HQWU\ LQ SURJUHVV

K

1R WUDQVDFWLRQ HQGHG

K

5HVSRQVH
V GDWD ILHOG WRR ORQJ

K

3URJUDP FRGH YDOXH LV :HLJKWV DQG 0HDVXUHV

K

5(6(59('

K

1R EDWFK LQ SURJUHVV

K

1R WUDQVDFWLRQ LQ SURJUHVV

K

%DWFK LQ SURJUHVV

K

7UDQVDFWLRQ LQ SURJUHVV

$K

3ULPDU\ DODUP DFWLYH

%K

%DWFK DXWKRUL]HG

&K

7UDQVDFWLRQ DXWKRUL]HG

'K

5(6(59('

(K

1R NH\SDG GDWD DYDLODEOH

)K

&RPSRQHQW QRW DYDLODEOH

K

$GGLWLYH QRW DYDLODEOH

K

3URJUDP FRGH YDOXH LV UHDG RQO\

K

6WDWXV QRW VHW RU FDQQRW EH UHVHW

K

1R DGGLWLYHV FRQILJXUHG

K

1R EDWFK DXWKRUL]HG

K

2SHUDWLQJ PRGH LV PDQXDO

K

1R SUHVHW YROXPH HQWHUHG

K

1R UHFLSH VHOHFWHG

K

1R DGGLWLYH VHOHFWLRQ PDGH

K

'DWD LWHPV QRW HQWHUHG

$K

1R NH\ SUHVVHG

%K

'LDJQRVWLF QRW VWDUWHG

&K

'LDJQRVWLF UXQQLQJ

'K

7UDQVDFWLRQ QRW RQ ILOH WUDQVDFWLRQ VWRUDJH

(K

%DWFK QRW RQ ILOH WUDQVDFWLRQ VWRUDJH

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

)K

5(6(59('

K

1XPEHU RI UHFLSHV  

K

5(6(59('

K

1R WUDQVDFWLRQ DXWKRUL]HG

K

5(6(59('

K

.H\SDG DQG GLVSOD\ ORFNHG RXW

K

1R EDWFK VWRSSHG

K

1R EDWFK HQGHG

K

2SHUDWLQJ PRGH FDQQRW EH FKDQJHG

K

5(6(59('

K

5(6(59('

$K

5(6(59('

%K

5(6(59('

&K

5(6(59('

'K

5(6(59('

(K

5(6(59('

)K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

K

5(6(59('

$K

5(6(59('

%K

5(6(59('

&K

5(6(59('

'K

5(6(59('

(K

5(6(59('

)K

5(6(59('

K

,QYDOLG UHFLSH QXPEHU

K

,QYDOLG PHWHU QXPEHU

K

,QYDOLG FRPSRQHQW QXPEHU

K

,QYDOLG WUDQVDFWLRQ VHTXHQFH QXPEHU

K

,QYDOLG SURJUDP FRGH

K

,QYDOLG SURJUDP FRGH YDOXH

K

,QYDOLG &38 QXPEHU

K

,QYDOLG QXPEHU RI FRPSRQHQWV

1RW 'DQ/RDG  Y DQG DERYH

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

K

,QYDOLG QXPEHU RI GDWD LWHPV

K

,QYDOLG VZLQJDUP VLGH

$K

,QYDOLG ,2 SRLQW W\SH

%K

,QYDOLG ,2 SRLQW QXPEHU

&K

,QYDOLG RXWSXW YDOXH

'K

,QYDOLG RSHUDWLQJ PRGH

(K

,QYDOLG DGGLWLYH VHOHFWLRQ PHWKRG

)K

,QYDOLG SUHVHW YROXPH

K

,QYDOLG GDWH

K

,QYDOLG WLPH

K

,QYDOLG GDWD FRGH

K

,QYDOLG RYHUULGH PD[LPXP SUHVHW YROXPH

K

,QYDOLG ERDUG W\SH

K

,QYDOLG ELW 

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



$ODUP )ODJV

7KH DODUP FRGH LV WKH DODUP ELW SOXV RQH

Bit
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

Interpretation
Action
Primary display failure
Primary
Secondary display failure
Comms failure channel A
Configurable
Comms failure channel B
Unable to maintain blend
Primary
Flow rate too low meter 1
Configurable
Flow rate too low meter 2
Flow rate too low meter 3
Flow rate too low meter 4
Flow rate too high meter 1
Configurable
Flow rate too high meter 2
Flow rate too high meter 3
Flow rate too high meter 4
Valve closed early meter 1
Configurable
Valve closed early meter 2
Valve closed early meter 3
Valve closed early meter 4
Time-out - no flow detected meter 1
Configurable
Time-out - no flow detected meter 2
Time-out - no flow detected meter 3
Time-out - no flow detected meter 4
Unauthorized flow exceeds limit meter 1
Primary
Unauthorized flow exceeds limit meter 2
Unauthorized flow exceeds limit meter 3
Unauthorized flow exceeds limit meter 4
Pulse security error meter 1
Primary
Pulse security error meter 2
Pulse security error meter 3
Pulse security error meter 4
Temperature failure meter 1
Configurable
Temperature failure meter 2
Temperature failure meter 3
Temperature failure meter 4
Pressure failure meter 1
Primary
Pressure failure meter 2
Pressure failure meter 3
Pressure failure meter 4
Unable to close valve meter 1
Primary
Unable to close valve meter 2
Unable to close valve meter 3
Unable to close valve meter 4
Density failure component 1
Configurable
Density failure component 2
Density failure component 3
Density failure component 4
Component 1 block valve not closed Primary
Component 2 block valve not closed
Component 3 block valve not closed
Component 4 block valve not closed
Additive 1 failure
Primary
Additive 2 failure
Additive 3 failure
Additive 4 failure
Additive 5 failure
Additive 6 failure

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

Safety circuit 1
Safety circuit 2
Safety circuit 3
Safety circuit 4
Safety circuit 5
Safety circuit 6
Safety circuit 7
Safety circuit 8
Data logging memory full
Memory check failure
Storage memory full
Power failure
Unable to ramp down
MPMC 1 failure
MPMC 2 failure
Calibration failure meter
Calibration failure meter
Calibration failure meter
Calibration failure meter
Intermediate level input
RESERVED
RESERVED
RESERVED
RESERVED
RESERVED

1
2
3
4

3DJH   'DQ/RDG  &RPPV 6SHF

Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Primary
Configurable
Configurable
Configurable
Primary
Primary
Primary
Primary
Primary
Primary
Secondary

'DQLHO )ORZ 3URGXFWV



.H\ &RGHV

7KHUH LV D NH\ FRGH IRU HDFK RI WKH WKLUW\ IRXU NH\V LH VHYHQWHHQ NH\V HDFK ZLWK DQ $/7
IXQFWLRQ 6HH WDEOH EHORZ 7KH NH\ FRGHV FRUUHVSRQG WR WKH VL[ OHDVW VLJQLILFDQW ELWV ELWV
 WKURXJK  RI WKH 'DQ/RDG 
V LQWHUQDO NH\ FRGHV DQG WKHUHIRUH GR QRW LQGLFDWH LI
WKH NH\ ZDV SUHVVHG DW WKH SULPDU\ RU DW WKH VHFRQGDU\ NH\SDG









 Not














 Key code (LS bit)

















 Key code (MS bit)

 "ALT" key pressed (active low)
 Secondary keypad (active low)
used DOZD\V 

1RWH
6HYHQ ELWV  PRVW VLJQLILFDQW WR  OHDVW VLJQLILFDQW DUH
XVHG %LWV  WR  LQGLFDWH ZKLFK NH\ %LW  LQGLFDWHV $/7
NH\ DFWLYH DFWLYH ORZ  %LW  LQGLFDWHV VHFRQGDU\ NH\SDG
DFWLYH ORZ 
.H\ FRGH KH[

.H\









































$

&/($5

%

6(/(&7

'




(

(17(5

)

6723



67$57

&

 

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



$/7



$/7



$/7



$/7



$/7



$/7



$/7



$/7



$/7



$/7

$

$/7&/($5

%

$/76(/(&7

&

$/7 

'


$/7

(

$/7(17(5

)

$/76723



$/767$57

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



$GGLWLYH 6HOHFWLRQ &RGHV

7KH DGGLWLYH VHOHFWLRQ FRGH LV D ELQDU\ UHSUHVHQWDWLRQ RI WKH 'DQ/RDG 


V DGGLWLYH
VHOHFWLRQ E\WH









 Not
&RGH KH[








 Not












 Additive 1 on/off




 Additive 2 on/off



 Additive 3 on/off


 Additive 4 on/off

 Additive 5 on/off
 Additive 6 on/off

used, always 0
used, always 0
,QWHUSUHWDWLRQ

Additive #

00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22

Off
On
Off
On
Off
On
Off
On
Off
On
Off
On
Off
On
Off
On

Off Off
Off Off
On Off
On Off
Off On
Off On
On On
On On
Off Off
Off Off
On Off
On Off
Off On
Off On
On On
On On

Off Off Off


Off Off Off
Off Off Off
Off Off Off
Off Off Off
Off Off Off
Off Off Off
Off Off Off
On Off Off
On Off Off
On Off Off
On Off Off
On Off Off
On Off Off
On Off Off
On Off Off

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
.
.
.
3E
3F

Off On
On On

On
On

On
On

On
On

On
On

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



3URJUDP &RGH $WWULEXWHV &RGH

7KH SURJUDP FRGH DWWULEXWHV FRGH LV D UHSUHVHQWDWLRQ RI WKH 'DQ/RDG 


V SURJUDP
FRGH DWWULEXWHV E\WH ZKLFK LV H[SODLQHG LQ GHWDLO LQ WKH VHFWLRQ RQ 3URJUDP &RGH
$WWULEXWHV









 Not








 Not







 Not






 Not








 Read only


 Weights & Measures

 Data logging
 Value changed

used, always 0
used, always 0
used, always 0
used, always 0

&RGH KH[

,QWHUSUHWDWLRQ



1R DWWULEXWHV VHW



5HDG RQO\



:HLJKWV DQG 0HDVXUHV



:HLJKWV DQG 0HDVXUHV DQG 5HDG RQO\



'DWD ORJJLQJ



'DWD ORJJLQJ DQG 5HDG RQO\




)

9DOXH FKDQJHG 'DWD ORJJLQJ :HLJKWV DQG 0HDVXUHV DQG 5HDG RQO\

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



9DOLG &KDUDFWHUV LQ $OSKDQXPHULF 6WULQJV

7KH XQVKDGHG FKDUDFWHUV LQ WKH IROORZLQJ WDEOH FDQ EH GLVSOD\HG RQ WKH 'DQ/RDG 
V
GLVSOD\ XVLQJ WKH 'LVSOD\ 0HVVDJH &K FRPPDQG &HUWDLQ VSHFLDO FKDUDFWHUV FDQQRW
EH UHSUHVHQWHG LQ :RUG3HUIHFW  VR

 D FKDUDFWHU IROORZHG E\  LV XVHG WR UHSUHVHQW WKDW FKDUDFWHU ZLWK D OLQH WKURXJK LW HJ
FKDUDFWHU FRGH (' 2 

 D FKDUDFWHU IROORZHG E\  LV XVHG WR UHSUHVHQW WKDW FKDUDFWHU ZLWK DQ DFXWH DFFHQW HJ
FKDUDFWHU FRGH ) F 

 D FKDUDFWHU IROORZHG E\   VXSHUVFULSW 9 LV XVHG WR UHSUHVHQW WKDW FKDUDFWHU ZLWK DQ


9

XSVLGH GRZQ FLUFXPIOH[ HJ FKDUDFWHU FRGH ) F 

 D FKDUDFWHU IROORZHG E\   VXSHUVFULSW  LV XVHG WR UHSUHVHQW WKDW FKDUDFWHU ZLWK D




KRUQ DQG

 D FKDUDFWHU IROORZHG E\   VXEVFULSW R LV XVHG WR UHSUHVHQW WKDW FKDUDFWHU ZLWK D GRW
R

EHORZ LW
$Q\ LQYDOLG FKDUDFWHUV LQ D PHVVDJH WR EH GLVSOD\HG DUH ILOWHUHG RXW DQG GLVSOD\HG DV
DVWHULVNV E\ WKH 'DQ/RDG 
&KDUDFWHUV FRGHV $ $ $ DQG $ DUH WKH ZDYHIRUP GUDZLQJ FKDUDFWHUV ORZ ORZ
WR KLJK KLJK WR ORZ DQG KLJK LH

&KDUDFWHUV FRGHV && WR &) DUH UHVHUYHG IRU D ODUJH FKDUDFWHU


GRXEOHVL]HG VSDFH

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

+,

&

'

/
2


/

F

&

G

'

'

<

DR

>

&

R

'

2

O

)(

"

V

))


R

,Q 'DQ/RDG  Y DQG DERYH FKDUDFWHUV FRGHV ( WR )' DUH GHILQHG DV IROORZV
ZKHQ WKH FRQILJXUHG ODQJXDJH SURJUDP FRGH  LV *UHHN

&KDUDFWHU

*UHHN

FRGH KH[

FKDUDFWHU

(

$OSKD

(

*DPPD

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

&KDUDFWHU

*UHHN

FRGH KH[

FKDUDFWHU

(

'HOWD

('

7KHWD

)

/DPEGD

)

;L

)

3L

)

6LJPD

)$

3KL

)&

3VL

)'

2PHJD

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

7KH FRPSOHWH *UHHN DOSKDEHW LV GHILQHG E\ WKH IROORZLQJ FKDUDFWHU FRGHV

*UHHN

&KDUDFWHU

FKDUDFWHU

FRGH KH[

$OSKD

(

%HWD



*DPPD

(

'HOWD

(

(SVLORQ



=HWD

$

(WD



7KHWD

('

,RWD



.DSSD

%

/DPEGD

)

0X

'

1X

(

;L

)

2PLFURQ

)

3L

)

5KR



6LJPD

)

7DX



8SVLORQ



3KL

)$

&KL



'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

*UHHN

&KDUDFWHU

FKDUDFWHU

FRGH KH[

3VL

)&

2PHJD

)'

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

:KHQ WKH ODQJXDJH LV 5XVVLDQ WKH FRPSOHWH 5XVVLDQ &\ULOOLF DOSKDEHW LV GHILQHG E\
WKH IROORZLQJ FKDUDFWHUV FRGHV

7UDQVFULEHG QDPH RI
5XVVLDQ FKDUDFWHU

5XVVLDQ FKDUDFWHU

ORRNV OLNH

&KDUDFWHU
FRGH KH[

WKH XVXDO 5RPDQ


DOSKDEHWLF
FKDUDFWHU LV XVHG

DK

$



EHK

E SRLQWLQJ ULJKW

(

YHK

%



JHK

*UHHN JDPPD

(

GHK

%R[ ZLWK OHJV

(

\HK

(



\RK

( XPODXW

(

]KHK

; ZLWK YHUWLFDO

($

OLQH WKURXJK LW
]HK

6SHFLDO 

(%

HH

%DFNZDUGV 1

(&

HH .5$+7NXK\XK

%DFNZDUGV 1

('

ZLWK OLQH DERYH


NDK

.

%

HKO

*UHHN SL ZLWK IRRW

((

WDS GDQFHU

HKP

0

HKQ

+

RK

2

)

SHK

*UHHN SL

)

HKU

3

'




'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7UDQVFULEHG QDPH RI

5XVVLDQ FKDUDFWHU

5XVVLDQ FKDUDFWHU

ORRNV OLNH

&KDUDFWHU
FRGH KH[

WKH XVXDO 5RPDQ


DOSKDEHWLF
FKDUDFWHU LV XVHG

HKV

&

WHK

7



RR

6SHFLDO <

()

HKI

*UHHN SKL

)$

NKDK

;



WVHK

6TXDUH 8 ZLWK

)



WDLO
FKHK

%DFNZDUGV *UHHN

)

PX
VKDK

6TXDUH :

)

VKKDK

6TXDUH : ZLWK

)

WDLO
\

79 2+5GwHH ]QDNK

E SRLQWLQJ OHIW

)

\LK5,(

EO

)

0 $+.+N HH ]QDNK

6SHFLDO E

)

HK DKEDK52+7QXK\XK

%DFNZDUGV

)

HSVLORQ
\RR

,2

)

\DD

%DFNZDUGV 5

)%

,Q WKH 7KDL 'DQ/RDG  FKDUDFWHU FRGHV )( DQG )) DUH UHVHUYHG IRU VFULSW RQ DQG
VFULSW RII FRQWURO UHVSHFWLYHO\ VR WKDW 5RPDQ DOSKDEHWLF FKDUDFWHUV DQG 7KDL VFULSW
FKDUDFWHUV FDQ EH PL[HG LQ D PHVVDJH

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

&RQQHFWLRQ WR DQ $XWRPDWLRQ 6\VWHP

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



'8$57 3LQ2XWV

7KH 'DQ/RDG  LV FRQQHFWHG WR DQ DXWRPDWLRQ V\VWHP YLD LWV '8$57 7KH '8$57 LV
PDQXIDFWXUHG ZLWK HLWKHU D RQH 56 DQG RQH 56 SRUWV RU E WZR 56 SRUWV
)RU WKH Y &38 ERDUG WKH '8$57 LV D GDXJKWHU ERDUG LQVWDOOHG RQ WRS RI WKH &38
ERDUG )RU WKH Y &38 ERDUG WKH '8$57 LV EXLOWLQ LH LQWHJUDO WR WKH &38 ERDUG )RU
'DQ/RDG  Y DQG DERYH SURJUDP FRGH  PXVW EH XVHG WR FRQILJXUH WKH XQLW
V
FRPPXQLFDWLRQV DGGUHVV WKH '8$57
V DGGUHVV VZLWFK LV QR ORQJHU XVHG 7KH '8$57
ERDUG
V DGGUHVV VZLWFKHV VKRXOG EH VHW WR VRPHWKLQJ RWKHU WKDQ ]HUR 127( )RU 56
LQWHUIDFHV VRPH YHQGRUV XVH WKH V\PERO % LQVWHDG RI  DQG $ LQVWHDG RI 

RS-485/RS-232 DUART
Channel A (RS-485)

Channel B (RS-232)

Pin

Usage

Pin

Usage

RXD+/B

RXD

RXD-/A

CTS

TXD+/B

TXD

TXD-/A

10

SGND

1RWH
7R SHUIRUP WKH H[WHUQDO ORRSEDFN GLDJQRVWLF RQ FKDQQHO
$ SLQ  VKRXOG EH ORRSHG WR SLQ  DQG SLQ  VKRXOG EH
ORRSHG WR SLQ 
&76 RQ FKDQQHO % LV XVHG RQO\ ZKHQ WKH FKDQQHO LV FRQILJXUHG IRU GDWD ORJJLQJ

RS-485/RS-485 DUART
Channel A (RS-485)

Channel B (RS-485)

Pin

Usage

Pin

Usage

RXD+/B

RXD+/B

RXD-/A

RXD-/A

TXD+/B

TXD+/B

TXD-/A

TXD-/A

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

'DQ/RDG  &KDQQHO $ 56 0XOWLGURS &RQQHFWLRQ

127(

)25 /21* &$%/( 5816 29(5  )((7  


5(6,67256 6+28/' %( 3/$&(' $&5266 7;'% $1'
7;'$ $1' $&5266 5;'% $1' 5;'$ 21 7+(
0$67(5 67$7,21 $1' 21 7+( /$67 6/$9( 67$7,21
$6 ,1',&$7(' $%29(

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HGXQGDQW &RPPXQLFDWLRQV /LQN

,Q VRPH LQVWDOODWLRQV LW LV GHVLUDEOH WR KDYH D UHGXQGDQW FRPPXQLFDWLRQV OLQN WR WKH


'DQ/RDG  PHDQLQJ WKDW ORDGLQJ VKRXOG FRQWLQXH HYHQ LI WKH FRPPXQLFDWLRQV
PXOWLGURS LV EURNHQ VQDSSHG FRUURGHG GXJ XS RU D 'DQ/RDG  FRPPXQLFDWLRQV SRUW
IDLOV OLJKWQLQJ VWULNH HOHFWURQLFV FRPSRQHQW IDLOXUH 
$ UHGXQGDQW FRPPXQLFDWLRQV OLQN FDQ EH LPSOHPHQWHG E\ GRLQJ DOO RI WKH IROORZLQJ
 &RQILJXUH ERWK 'DQ/RDG 
V FRPPXQLFDWLRQV SRUWV IRU DXWRPDWLRQ V\VWHP
FRPPXQLFDWLRQV

127(

7KLV

SUHYHQWV

WKH

XVH

RI

GDWD

ORJJLQJ

RU

EDFNXSSDUDOOHO WLFNHW SULQWLQJ V\VWHP VLQFH WKH 'DQ/RDG  KDV RQO\ WZR VHULDO
SRUWV
 'RXEOHXS WKH PXOWLGURS OLQNV IURP WKH DXWRPDWLRQ V\VWHP WR WKH 'DQ/RDG 
V
LH XVH WZR VHULDO SRUWV RQ WKH DXWRPDWLRQ V\VWHP DQG WZR PXOWLGURS FDEOHV IRU HDFK
JURXS RI 'DQ/RDG 
V
 3URJUDP WKH DXWRPDWLRQ V\VWHP DXWRPDWLFDOO\ WR FKDQJH IURP FRPPXQLFDWLRQV RQ
D EDG PXOWLGURS GHWHFWHG DV QR UHVSRQVH IURP WKH 'DQ/RDG  WR WKH RWKHU
PXOWLGURS 7KLV LV H[SODLQHG LQ PRUH GHWDLO EHORZ
7KH 'DQ/RDG  LV TXLWH KDSS\ WR UHFHLYH DXWRPDWLRQ V\VWHP TXHULHV RQ ERWK
FRPPXQLFDWLRQV SRUWV LW LV VLPSO\ XQZLVH WR WU\ WR FRQWURO DXWKRUL]DWLRQ YLD ERWK SRUWV
VLPXOWDQHRXVO\ 7KH 6WDUW &RPPXQLFDWLRQV FRPPDQG GRHV QRW LQWHUIHUH ZLWK WKH 'DQ/RDG

V RSHUDWLRQ LW LV SULPDULO\ D PHWKRG IRU V\QFKURQL]LQJ WKH DOWHUQDWLQJ IXQFWLRQ FRGHV
K DQG K 
$ ZRUNDEOH DXWRPDWLRQ V\VWHP UHGXQGDQW FRPPXQLFDWLRQV OLQN LPSOHPHQWDWLRQ ZRXOG EH
DV IROORZV

7KH DXWRPDWLRQ V\VWHP ZRXOG LQLWLDOO\ 6WDUW &RPPXQLFDWLRQV ZLWK ERWK

'DQ/RDG  SRUWV FKDQQHO $ DQG FKDQQHO %  DQG ZRXOG WKHQ SURFHHG WR FRQWURO WKH
'DQ/RDG  YLD RQH SRUW ZKLOH VHQGLQJ DQ RFFDVLRQDO SROO FRPPDQG VXFK DV 5HTXHVW
6WDWXV RQ WKH RWKHU SRUW WR OHW WKH DXWRPDWLRQ V\VWHP NQRZ WKDW WKH PXOWLGURS OLQN DQG
'DQ/RDG  SRUW DUH RSHUDWLRQDO DQG WR OHW WKH 'DQ/RDG  NQRZ WKDW WKH DXWRPDWLRQ
V\VWHP LV DOLYH 

,I WKH DXWRPDWLRQ V\VWHP GHWHFWV D FRPPXQLFDWLRQV IDLOXUH RQ WKH

FRQWURO PXOWLGURS LW FDQ VLPSO\ VZLWFK FRQWURO WR WKH RWKHU PXOWLGURS DQG VHQG WKH FRPPDQG
ZLWK WKH DSSURSULDWH V\QFKURQL]DWLRQ IXQFWLRQ FRGH K RU K WR WKH 'DQ/RDG 
7KLV PXOWLGURS FKDQJHRYHU ZRXOG EH HQWLUHO\ WUDQVSDUHQW WR DQ RSHUDWRU DW WKH 'DQ/RDG
 2EYLRXVO\ WKH DXWRPDWLRQ V\VWHP VKRXOG UHSRUW WKH IDLOHG PXOWLGURS OLQN RU 'DQ/RDG

 SRUW VR WKDW WKH IDXOW FDQ EH GLDJQRVHG DQG FRUUHFWHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

$XWRPDWLRQ V\VWHP LPSOHPHQWRUV PD\ DOVR ZLVK WR QRWH WKDW ZKLOH ERWK PXOWLGURSV DUH
DYDLODEOH SHUIRUPDQFH LPSURYHPHQWV FDQ EH DFKLHYHG E\ PDNLQJ RQH PXOWLGURS WKH
SULPDU\ FRQWURO PXOWLGURS IRU VRPH RI WKH 'DQ/RDG 
V DQG PDNLQJ WKH RWKHU PXOWLGURS
WKH SULPDU\ FRQWURO PXOWLGURS IRU WKH RWKHU 'DQ/RDG 
V

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

7KLV SDJH LQWHQWLRQDOO\ OHIW EODQN

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ ,QIRUPDWLRQ



5HYLVLRQ   0D\ 

0DQ\ PRGLILFDWLRQV IROORZLQJ LQKRXVH UHYLHZ 7KH GRFXPHQW VKRXOG EH UHUHDG FDUHIXOO\
7KH FRPPDQG UHTXLUHG WR UHTXHVW VWRUHG WUDQVDFWLRQ GDWD LV QRW GHILQHG

7UDQVDFWLRQ

VWRUDJH LV QRW GHILQHG



5HYLVLRQ   -XQH 

9DULRXV PRGLILFDWLRQV DQG FODULILFDWLRQV IROORZLQJ UHYLHZ

7KH GDWD ILHOGV RI VRPH

FRPPDQGV KDYH FKDQJHG 7KH GRFXPHQW VKRXOG EH UHUHDG FDUHIXOO\


7KH &5& DFFXPXODWRU VKRXOG EH LQLWLDOO\ IOXVKHG ZLWK 
V
7KHUH DUH DGGLWLRQDO H[FHSWLRQ UHVSRQVH FRGHV VWDUWLQJ IURP K IRU LQYDOLG YDOXHV LQ WKH
GDWD ILHOG
7KH QXPFRPSV QXPPWUV HWF LQ WKH GDWD ILHOGV DUH WKH FRQILJXUHG QXPEHU RI FRPSRQHQWV
WKH FRQILJXUHG QXPEHU RI PHWHUV HWF
7KH 'DQ/RDG  GRHV QRW GLVSOD\ DQ\ SDUWLFXODU VFUHHQ E\ GHIDXOW LQ DXWRPDWLF 7KH
'DQ/RDG  GLVSOD\V WKH ORDGLQJ VFUHHQ ZKHQ LW UHFHLYHV WKH $XWKRUL]HG 7UDQVDFWLRQ
FRPPDQG
7KH 'DQ/RDG 
V NH\SDG DQG GLVSOD\ DUH ORFNHG RXW WR WKH DXWRPDWLRQ V\VWHP GXULQJ
FHUWDLQ RSHUDWLRQV
7KH 3URPSW $GGLWLYH FRPPDQG LQFOXGH D VXJJHVWHG DGGLWLYH VHOHFWLRQ
7KH $XWKRUL]H %DWFK FRPPDQG DQG WKH 6HW 'HQVLWLHV*UDYLWLHV FRPPDQG LQFOXGH IODJV
LQGLFDWLQJ ZKHWKHU RU QRW WKH EDFNXS GHQVLW\ RU JUDYLW\ VKRXOG EH XSGDWHG E\ WKH 'DQ/RDG


'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   6HSWHPEHU 

7KH JURVV DQG QHW EDWFK YROXPHV LQ WKH 5HTXHVW 6WDWXV UHVSRQVH DUH LQ ZKROH XQLWV
3URPSW 5HFLSH K 

([FHSWLRQ K 7UDQVDFWLRQ LQ SURJUHVV KDV EHHQ UHSODFHG E\

H[FHSWLRQ &K 7UDQVDFWLRQ DXWKRUL]HG 


7LPH2XW 2SHUDWLRQ K  6WDWXV IODJ K 2SHUDWLRQ WLPHG RXW LV QRW VHW LPPHGLDWHO\
$XWKRUL]H 7UDQVDFWLRQ K 

6WDWXV IODJ K 7UDQVDFWLRQ DXWKRUL]HG LV QRW VHW

LPPHGLDWHO\
(QG 7UDQVDFWLRQ K  6WDWXV IODJV K &K DQG K DUH QRW VHWFOHDUHG LPPHGLDWHO\
$XWKRUL]H %DWFK $K 

6WDWXV IODJ K %DWFK DXWKRUL]HG LV QRW VHW LPPHGLDWHO\

([FHSWLRQ K SURJUDP FRGH YDOXH LV :HLJKWV DQG 0HDVXUHV KDV EHHQ DGGHG
(QG %DWFK 'K  6WDWXV IODJV $K 'K DQG K DUH QRW VHWFOHDUHG LPPHGLDWHO\
%DWFK 'DWD E\ &RPSRQHQW K 

$YHUDJH WHPSHUDWXUH DQG DYHUDJH GHQVLW\ DUH ORQJ

$GGHG DFWXDO DJH SHU FRPSRQHQW SFW 


6HW 'DWH DQG 7LPH K  ([FHSWLRQ $K 3ULPDU\ DODUP DFWLYH KDV EHHQ UHPRYHG
$GGHG H[FHSWLRQ FRGH K
$GGHG H[FHSWLRQ FRGH K
$GGHG H[FHSWLRQ FRGH K
$GGHG H[FHSWLRQ FRGH K
'HOHWHG H[FHSWLRQ FRGH K 8VH H[FHSWLRQ FRGH K
([FHSWLRQ FRGH K LV ,QYDOLG SURJUDP FRGH ([FHSWLRQ FRGH K LV ,QYDOLG SURJUDP
FRGH YDOXH

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   -DQXDU\ 

7KH PD[LPXP TXHU\UHVSRQVH PHVVDJH OHQJWK IRU 0RGEXV 578 LV  E\WHV LQFOXGLQJ
FKHFN FKDUDFWHUV
%DWFK 'DWD E\ &RPSRQHQW K  5HTXHVW 0HWHU 9DOXHV K DQG 5HTXHVW &RPSRQHQW
9DOXHV $K  7KH 'DQ/RDG  UHVSRQGV ZLWK FRPSRQHQW EDWFK DQG PHWHU ORDG JURVV
DQG QHW YROXPHV LQ ZKROH XQLWV
&OHDU 'LVSOD\ K  7KLV LV D QHZ FRPPDQG
&RUUHFWLRQV PDGH LQ GRFXPHQWDWLRQ WKDW GHVFULEHV ZKHQ VWDWXV IODJV DUH 6(7 DQG
&/($5('
$GGHG D VLPSOH VFKHPDWLF VKRZLQJ W\SLFDO 56 PXOWLGURS FRQQHFWLRQ ZLWK WHUPLQDWLQJ
UHVLVWRUV

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   0D\ 

1HZPRGLILHG FRPPDQGV WR VXSSRUW WUDQVDFWLRQ VWRUDJH 5HTXHVW 7UDQVDFWLRQ 6WRUDJH


6WDWXV (K  ,QLWLDOL]H 7UDQVDFWLRQ 6WRUDJH K  5HTXHVW 6WRUHG 7UDQVDFWLRQ K DQG
5HTXHVW 6WRUHG %DWFK $K 
1HZ &WO RSWLRQV 2OG  DQG 2OG 
1HZ DODUPV 0HPRU\ FKHFN IDLOXUH 6WRUDJH PHPRU\ IXOO DQG 3RZHU IDLOXUH 7KHUH LV
DQ DODUP ELW IRU HDFK RQH
7KH ODUJH QXPEHU SUHVHW YROXPH RQ WKH ORDGLQJ GLVSOD\ LV FOHDUHG LI LW LV SUHVHQW ZKHQ
D WUDQVDFWLRQ LV DXWKRUL]HG
,QFOXGHG H[DPSOH 6WDUW &RPPXQLFDWLRQV FRPPDQG PHVVDJHV IRU D 'DQ/RDG  ZLWK
FRPPXQLFDWLRQV DGGUHVV K
&RUUHFWHG WKH &5& PDFUR H[DPSOH WR VKRZ WKDW WKH DFFXPXODWRU VKRXOG EH IOXVKHG ZLWK
VL[WHHQ RQHV LH DFF

[IIII UDWKHU WKDQ HLJKW RQHV LH DFF

[II

7KH $GGLWLYH ,2 ERDUG LV QRZ FDOOHG WKH (QKDQFHG ,2 ERDUG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   2FWREHU 

7KH 'DQ/RDG  VRIWZDUH YHUVLRQ QXPEHU V LQ ZKLFK HDFK FRPPDQG LV DYDLODEOH DUH
VKRZQ LQ  DQG LQ WKH 7DEOH RI &RQWHQWV
)RUPDW RI SUHVVXUH YDOXHV FKDQJHG IURP ;;;;; WR ;;;;;; WKURXJKRXW LH DOORZ IURP
 WR  SVL N3D HWF 6L]H RI GDWD LV XQFKDQJHG LH ORQJ
1HZ 8QDEOH WR UDPS GRZQ DODUP ZLWK DODUP FRGH  DODUP ELW  
3LQRXWV IRU FKDQQHO $ 56 H[WHUQDO ORRSEDFN GLDJQRVWLF
7KH 3ULPDU\ LQWHUQDO WHPSHUDWXUH DQG 6HFRQGDU\ LQWHUQDO WHPSHUDWXUH DODUPV ELWV 
DQG  DUH QRZ FDOOHG WKH 3ULPDU\ GLVSOD\ IDLOXUH DQG 6HFRQGDU\ GLVSOD\ IDLOXUH DODUPV
/RJLF KDV EHHQ DGGHG WR GHWHFW ZKHQ D NH\SDGGLVSOD\ SDQHO KDV EHHQ GLVFRQQHFWHG
,QVWDOOHG %RDUGV K 

$ QHZ ERDUG W\SH LH FKDQQHO PHWHU SXOVH ERDUG FDQ EH

GHWHFWHG 7KH H[LVWLQJ PHWHU SXOVH ERDUG LV QRZ FDOOHG WKH FKDQQHO PHWHU SXOVH ERDUG
7KH WUDQVDFWLRQ VWRUDJH SURJUDP FRGH DWWULEXWH LV QR ORQJHU XVHG 7KH YDOXHV WR VWRUH
LQ WUDQVDFWLRQ VWRUDJH PHPRU\ DUH FRQILJXUHG YLD WUDQVDFWLRQ VWRUDJH FRGHV 76&
V DQG
EDWFK VWRUDJH FRGH %6&
V 
7KH & ODQJXDJH GDWDEDVH GHILQLWLRQV IRU 'DQ/RDG  Y KDYH EHHQ LQFOXGHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   1RYHPEHU 

([FHSWLRQ FRGH K 2SHUDWLQJ PRGH LV PDQXDO LV ORZ SULRULW\ DQG PD\ QRW EH VHHQ LI
RWKHU KLJKHU SULRULW\ VWDWXV ELWV EHLQJ HLWKHU VHW RU FOHDU JHQHUDWH DQ H[FHSWLRQ IRU D
JLYHQ FRPPDQG HJ FRPPDQG FRGH K $XWKRUL]H 7UDQVDFWLRQ W\SLFDOO\ JHQHUDWHV
H[FHSWLRQ FRGH K .H\SDG DQG GLVSOD\ ORFNHG RXW LQ WKH PDQXDO RSHUDWLQJ PRGH
)RU 'DQ/RDG  Y DQG DERYH WKH 3URPSW 5HFLSH K FRPPDQG QR ORQJHU JLYHV
WKH QXPEHU RI UHFLSHV   K H[FHSWLRQ
1HZ DODUP ELWV IRU 030& IDLOXUH DODUPV 7KH 030& LV WKH VPDUW GDXJKWHU ERDUG IRU
WKH FKDQQHO PHWHU SXOVH ERDUG 1HZ DODUP ELWV IRU FDOLEUDWLRQ IDLOXUH DODUPV 6XSSRUW
IRU IXWXUH 030& Y

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   -XO\ 

7KH (QKDQFHG 6WDUW &RPPXQLFDWLRQV %K DQG (QKDQFHG 5HTXHVW 6WDWXV &K
FRPPDQGV 'DQ/RDG  Y DQG DERYH DUH GHVFULEHG
7KH .H\ 3UHVVHG %K VWDWXV IODJ 'DQ/RDG  Y DQG DERYH  ZKLFK VLPSOLILHV WKH
SURFHVV RI GHWHFWLQJ D NH\ SUHVVHG IRU WKH DXWRPDWLRQ V\VWHP LV GHVFULEHG
7KH 5XVVLDQ &\ULOOLF FKDUDFWHU FRGHV DUH GRFXPHQWHG
9DULRXV FODULILFDWLRQV KDYH EHHQ PDGH EDVHG RQ FRPPHQWV IURP DXWRPDWLRQ V\VWHP
SURJUDPPHUV HJ FURVVUHIHUHQFH ELW PDSV WR  TXHU\ DQG UHVSRQVH VWUXFWXUHV PXVW
EH SDFNHG HWF

&RPPHQWV KDYH EHHQ DGGHG WR LQGLFDWH WKDW QHW YROXPHV PD\ EH

LQWHUSUHWHG DV PDVVZHLJKW VWDQGDUG 'DQ/RDG  Y XSJUDGH  LH WKH 'DQ/RDG
 XVHV WKH VDPH VWRUDJH IRU HLWKHU RQH RU WKH RWKHU 6XEVHFWLRQ QXPEHULQJ KDV EHHQ
FRUUHFWHG

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV



5HYLVLRQ   'HF 

7KH 5HSRUW $ODUP 'K DQG FRPPDQG LV GHVFULEHG


&RUUHFWHG DQG FODULILHG XVH RI 5$0 7HVWV FRPPDQG &ODULILHG XVH RI &RQILJXUH 5HFLSH
FRPPDQG
&ODULILHG WKDW TXHU\ DQG UHVSRQVH VWUXFW
V LQ  DUH RQO\ TXDVL & ODQJXDJH
,QFOXGHG 'DQ/RDG  Y GDWDEDVH ZKLFK KDV VXSSRUW IRU WKH Y &38 ERDUG

)RU

'DQ/RDG  Y DQG DERYH SURJUDP FRGH  PXVW EH XVHG WR FRQILJXUH WKH XQLW
V
FRPPXQLFDWLRQV DGGUHVV WKH '8$57
V DGGUHVV VZLWFK LV QR ORQJHU XVHG
,QFOXGHG 'DQ/RDG  Y GDWDEDVH
$GGHG LQIRUPDWLRQ DERXW LQYHUWHG GLVFUHWH LQSXWV Y DQG DERYH IHDWXUH 
$GGHG LQIRUPDWLRQ DERXW UHGXQGDQW FRPPXQLFDWLRQV OLQN LPSOHPHQWDWLRQ
,QFOXGHG ,QWHUPHGLDWH OHYHO LQSXW DODUP Y DQG DERYH  7KH LQWHUPHGLDWH OHYHO LQSXW
DODUP VWRSSHG EDWFK )K VWDWXV IODJ 'DQ/RDG  Y DQG DERYH  ZKLFK VLPSOLILHV
SURFHVVLQJ DQ LQWHUPHGLDWH OHYHO LQSXW DODUP IRU WKH DXWRPDWLRQ V\VWHP LV GHVFULEHG

3DJH   'DQ/RDG  &RPPV 6SHF

'DQLHO )ORZ 3URGXFWV

 5HYLVLRQ   0DU 


'HVFULEHG 'DQ/RDG  LQWHUQDO SURFHVVLQJ LQ WKH FDVH ZKHUH WZR DXWRPDWLRQ V\VWHPV
DUH FRQQHFWHG
0RGLILHG WDEOH RI YDOLG FKDUDFWHUV LQ DOSKDQXPHULF VWULQJV WR LQFOXGH FKDUDFWHUV DGGHG
IRU 9LHWQDPHVH VWDQGDUG 'DQ/RDG  Y 
&ODULILHG PHDQLQJ RI WKH LQYDOLG SURJUDP FRGH YDOXH H[FHSWLRQ WR FRPPDQG FRGH K
'RFXPHQWHG SUREOHP ZLWK FRPPDQG FRGH &K LQ Y WKUX Y

'DQ/RDG  &RPPV 6SHF  3DJH 

'DQLHO )ORZ 3URGXFWV

 5HYLVLRQ   6HS 


8SGDWHG IRU VWDQGDUG 'DQ/RDG  Y VRIWZDUH GHYHORSPHQW SURMHFW  ILOH (35
 (&2  
7KH 5HVHW 8QLW FRPPDQG FRPPDQG FRGH K GRHV ZRUN LQ WKH PDQXDO RSHUDWLQJ PRGH
6HH QRWH LQ 

3DJH   'DQ/RDG  &RPPV 6SHF

9#44#06; %.#+/ 4'37+4'/'065

6Q OCMG C YCTTCPV[ ENCKO [QW VJG 2WTEJCUGT OWUV




2TQXKFG &CPKGN YKVJ RTQQH QH VJG &CVG QH 2WTEJCUG CPF RTQQH QH VJG &CVG QH 5JKROGPV QH
VJG RTQFWEV KP SWGUVKQP



4GVWTP VJG RTQFWEV VQ &CPKGN YKVJKP VYGNXG


 OQPVJU QH VJG FCVG QH QTKIKPCN UJKROGPV
QH VJG RTQFWEV QT YKVJKP GKIJVGGP
 OQPVJU QH VJG FCVG QH QTKIKPCN UJKROGPV QH VJG
RTQFWEV VQ FGUVKPCVKQPU QWVUKFG QH VJG 7PKVGF 5VCVGU 6JG 2WTEJCUGT OWUV RTGRC[ CP[
UJKRRKPI EJCTIGU +P CFFKVKQP VJG 2WTEJCUGT KU TGURQPUKDNG HQT KPUWTKPI CP[ RTQFWEV
UJKRRGF HQT TGVWTP CPF CUUWOGU VJG TKUM QH NQUU QH VJG RTQFWEV FWTKPI UJKROGPV



6Q QDVCKP 9CTTCPV[ UGTXKEG QT VQ NQECVG VJG PGCTGUV &CPKGN QHHKEG UCNGU QT UGTXKEG EGPVGT
ECNN
  (CZ
  QT EQPVCEV
&CPKGN /GCUWTGOGPV CPF %QPVTQN
2 1 $QZ 
*QWUVQP 6GZCU 
9JGP EQPVCEVKPI &CPKGN HQT RTQFWEV UGTXKEG VJG RWTEJCUGT KU CUMGF VQ RTQXKFG KPHQTOCVKQP
CU KPFKECVGF QP VJG HQNNQYKPI %WUVQOGT 2TQDNGO 4GRQTV
&CPKGN /GCUWTGOGPV CPF %QPVTQN QHHGTU DQVJ QP ECNN CPF EQPVTCEV OCKPVGPCPEG UGTXKEG
FGUKIPGF VQ CHHQTF UKPING UQWTEG TGURQPUKDKNKV[ HQT CNN KVU RTQFWEVU
&CPKGN +PFWUVTKGU +PE TGUGTXGU VJG TKIJV VQ OCMG EJCPIGU CV CP[ VKOG VQ CP[ RTQFWEV VQ
KORTQXG KVU FGUKIP CPF VQ KPUWTG VJG DGUV CXCKNCDNG RTQFWEV

&#0+'. +0&7564+'5 +0%


%7561/'4 241$.'/ 4'2146

(14 (#56'56 5'48+%' %1/2.'6' 6*+5 (14/ #0& 4'6740 +6 #.10) 9+6* 6*' #(('%6'&
'37+2/'06 61 %7561/'4 5'48+%' #6 6*' #&&4'55 +0&+%#6'& $'.19
%1/2#0; 0#/'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
6'%*0+%#. %106#%6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2*10'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
4'2#+4 2 1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA +( 9#44#06; 70+6 50AAAAAAAAAAAAAAAAAAAAAAAAA
+081+%' #&&4'55AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
5*+22+0) #&&4'55AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
4'6740 5*+22+0) /'6*1&AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
'37+2/'06 /1&'. AAAAAAAAAAAAAAAAAAAA 50AAAAAAAAAAAAAAAAAA(#+.74' &#6'AAAAAAAAAAAAA
&'5%4+26+10 1( 241$.'/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
9*#6 9#5 *#22'0+0) #6 6+/' 1( (#+.74'!AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#&&+6+10#. %1//'065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
4'2146 24'2#4'& $;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 6+6.'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+( ;17 4'37+4' 6'%*0+%#. #55+56#0%' 2.'#5' (#: 14 94+6' 6*' /#+0 %7561/'4 5'48+%'
&'2#46/'06 #6
&#0+'. /'#574'/'06 #0& %10641.
#660 %7561/'4 5'48+%'
 *'/256'#& *+)*9#;
*175610 6':#5 

2*10'
 
(#:
 

6JG UCNGU CPF UGTXKEG QHHKEGU QH &CPKGN +PFWUVTKGU +PE CTG NQECVGF
VJTQWIJQWV VJG 7PKVGF 5VCVGU CPF KP OCLQT EQWPVTKGU QXGTUGCU
2NGCUG EQPVCEV &CPKGN /GCUWTGOGPV CPF %QPVTQN CV
2 1 $QZ  *QWUVQP 6GZCU  QT RJQPG
 
HQT VJG NQECVKQP QH VJG UCNGU QT UGTXKEG QHHKEG PGCTGUV [QW
&CPKGN /GCUWTGOGPV CPF %QPVTQN QHHGTU DQVJ QPECNN CPF EQPVTCEV
OCKPVGPCPEG UGTXKEG FGUKIPGF VQ RTQXKFG UKPINGUQWTEG
TGURQPUKDKNKV[ HQT CNN &CPKGN /GCUWTGOGPV CPF %QPVTQN RTQFWEVU
&CPKGN /GCUWTGOGPV CPF %QPVTQN TGUGTXGU VJG TKIJV VQ OCMG EJCPIGU VQ CP[ QH KVU RTQFWEVU QT UGTXKEGU
CV CP[ VKOG YKVJQWV RTKQT PQVKHKECVKQP KP QTFGT VQ KORTQXG VJCV RTQFWEV QT UGTXKEG CPF VQ UWRRN[
VJG DGUV RTQFWEV QT UGTXKEG RQUUKDNG

Você também pode gostar