Escolar Documentos
Profissional Documentos
Cultura Documentos
&20081,&$7,216
63(&,),&$7,21
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
�+'. /'#574'/'06 #0& %10641.
*175610 6':#5
&CP.QCF
%1//70+%#6+105
52'%+(+%#6+10
5GRVGODGT
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
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
016+%'
�+'. +0&7564+'5 +0% #0& �+'. /'#574'/'06 #0& %10641.
�+'. 5*#.. 016 $' .+#$.' (14 6'%*0+%#. 14 '&+614+#. '44145 +0 6*+5
/#07#. 14 1/+55+105 (41/ 6*+5 /#07#. �+'. /#-'5 01 9#44#06+'5
':24'55
14
+/2.+'&
+0%.7&+0)
6*'
+/2.+'&
9#44#06+'5
1(
%12;4+)*6 l
$; �+'. /'#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 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
&5& &DOFXODWLRQ
([DPSOH 3URJUDP
&RPPXQLFDWLRQV &RPPDQGV
5HTXHVW 3RZHU )DLO 'DWH DQG 7LPH %K Y DQG DERYH
5HTXHVW 3URJUDP &RGH 9DOXHV DQG $WWULEXWHV K Y DQG DERYH
6WDWXV )ODJV
$ODUP )ODJV
.H\ &RGHV
'8$57 3LQ2XWV
5HYLVLRQ ,QIRUPDWLRQ
7KLV
3UHIDFH
GRFXPHQW
GHVFULEHV
WKH
PDVWHUVODYH
FRPPXQLFDWLRQV
SURWRFRO
EHWZHHQ
DQ
*ORVVDU\
DODUP
DGGLWLYH
DXWRPDWLRQ
EDWFK
EOHQG
EURDGFDVW
FRPPXQLFDWLRQV
FRPPDQG
WUDQVPLWWHG
WR
PRUH
WKDQ
RQH
UHFHLYHU
VLPXOWDQHRXVO\
FRPPDQG
FRPSRQHQW
7KH 'DQ/RDG
&5&
'8$57
ERDUG
WKDW
FDQ
WUDQVPLW
DQG
UHFHLYH
$ GHYLFH RU SULQWHG
GDWD
RQ
WZR
FKDQQHOV
VLPXOWDQHRXVO\
NH\SDG
ORDG
0RGEXV
RSHUDWRU
2QH ZKR RSHUDWHV WKH 'DQ/RDG YLD LWV NH\SDG HJ D WUXFN GULYHU D
WDQNHU WHUPLQDO HPSOR\HH RU D VHUYLFH WHFKQLFLDQ
338
3XOVH SHU XQLW HJ RQH SXOVH SHU JDOORQ RU RQH SXOVH SHU OLWHU
WUDQVDFWLRQ
7KH FRQVHFXWLYH GHOLYHU\ RI RQH RU PRUH EDWFKHV KDYLQJ WKH VDPH UHFLSH
DGGLWLYHV DQG VZLQJDUP VLGH
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
,Q
SUDFWLFH GXH WR FDEOH OHQJWKV DQG GDWD UDWHV D VPDOOHU QXPEHU RI VODYHV PD\
EH QHFHVVDU\
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
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
$ EURDGFDVW PHVVDJH
V
7KH
'DQ/RDG
LJQRUHV
WKURZV
DZD\
DQ\
FKDUDFWHUV
WKDW
DUH
7KH
'DQ/RDG
LV
QRW
UHDG\
WR
UHFHLYH
FKDUDFWHUV
XQWLO
IHZ
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
7KH 'DQ/RDG KDV WZR RSHUDWLQJ PRGHV WKDW OLPLW WKH FRPPDQG FRGHV WKDW DUH
DFFHSWHG
$XWRPDWLF
0DQXDO 2QO\ FHUWDLQ FRPPDQG FRGHV FDQ EH XVHG VWDWXV LQIRUPDWLRQ FDQ
EH UHTXHVWHG EXW WKH 'DQ/RDG
V RSHUDWLRQ FDQQRW EH FRQWUROOHG
0HVVDJH )UDPLQJ
!! 0RGEXV 578
ADR
FN
D1
...
DN
BCC1
BCC2
:KHUH
$'5
)1
'
'1
%&&
%&&
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
&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
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
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
$XWR0DQXDO &KDQJH2YHU
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
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
: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
'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
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
7KH DXWRPDWLRQ
V\VWHP FDQ FRPPDQG WKH 'DQ/RDG WR SURPSW IRU DQ DGGLWLYH VHOHFWLRQ XVLQJ WKH
3URPSW $GGLWLYHV FRPPDQG
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 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
(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
:KHQ LW
UHFHLYHV DQ (QG 7UDQVDFWLRQ FRPPDQG WKH 'DQ/RDG VHWV D IODJ WR LQGLFDWH WKDW WKH
WUDQVDFWLRQ KDV HQGHG
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
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
*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
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
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
////
/* 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. */
codes. */
/* v2.00 */
/* v3.00 */
/* v4.00 */
/* v5.00 */
/* v5.11 */
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 */
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;
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;
/* 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;
int bvout;
} addinp[MAXADDS];
batch;
trans;
almlog;
pflog;
progmode;
wmsw;
pcchnglog;
provelog;
crash;
totlog;
trtkauto;
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
****************
*/
////
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. */
*/
} 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.
*/
*/
*/
*/
*/
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. */
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. */
/*
**
** Database
****************
*/
////
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 {
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. */
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.
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
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 {
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. */
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.
/* 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
****************
*/
////
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 {
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. */
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.
/* 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
****************
*/
////
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 {
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. */
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.
/* 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
****************
*/
////
////
/*
**
** 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];
/* 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
*/
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.
int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc.
} recipe[MAXRECIPES];
int numaddcalibcycles; /* PC 662.
/* 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.
/* 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
*/
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];
/* 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
*/
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.
int cmpno;
} cmpseq[MAXCOMPS]; /* PC 486, etc.
} recipe[MAXRECIPES];
int numaddcalibcycles; /* PC 662.
/* 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.
/* 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.
*/
////
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.
byte
byte
byte
long
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 {
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];
Alarm output X. */
/* 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.
*/
////
&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,
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,
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
/****************************************************************************
**
** 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];
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+/
6+5
;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 ]
&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
LH 6WDUW &RPPXQLFDWLRQV FRPPDQG ZLWK IXQFWLRQ FRGH WR 'DQ/RDG ZLWK
FRPPXQLFDWLRQV DGGUHVV
D
)))) 6+/
))
)))) 6+5
))
)) ;25
)(
FUFWDE>)(@
(
( 6+/
( 6+5
(
( ;25
&
& 6+/
& 6+5
&
& ;25
&
FUFWDE>&@
;25
D
)
FUFWDE>)@
D
6+/
6+5
;25
%
FUFWDE>%@
% 7KLV LV WKH ODVW GDWD E\WH 7KH &5& FKHFNVXP VKRXOG EH
WUDQVPLWWHG DV % LH WKH FRPSOHWH PHVVDJH ZLWK &5& FKHFNVXP LV
%
([DPSOH 3URJUDP
////
/* "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,
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
** 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() */
/***************************************************************************/
/* 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 {
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. */
////
&RPPXQLFDWLRQV &RPPDQGV
7KH FRPPDQGV DUH OLVWHG E\ FRPPDQG FRGH 7KH FRPPDQG FRGH LQ KH[ DQG YHUVLRQ
QXPEHUV 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
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
([FHSWLRQV
'HVFULSWLRQ
9DOLG PRGHV
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;
};
([FHSWLRQV
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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 */
};
'HVFULSWLRQ
7KH 'DQ/RDG VHWV D IODJ WR LQGLFDWH WKDW D UHFLSH KDV EHHQ
VHOHFWHG E\ WKH RSHUDWRU
DXWRPDWLRQ
V\VWHP
7UDQVDFWLRQ FRPPDQG
RSHUDWRU
RU
FDQ
EH
VSHFLILHV
UHFLSH
LQ
WKH
$XWKRUL]H
E\
WKH
DXWRPDWLRQ
V\VWHP
LQGHSHQGHQWO\
9DOLG PRGHV
$XWRPDWLF
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;
};
([FHSWLRQV
'HVFULSWLRQ
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
9DOLG PRGHV
$XWRPDWLF
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. */
'HVFULSWLRQ
DXWRPDWLRQ
V\VWHP
VSHFLILHV
DQ
DGGLWLYH
VHOHFWLRQ
LQ
WKH
9DOLG PRGHV
$XWRPDWLF
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;
};
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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. */
};
([FHSWLRQV
'HVFULSWLRQ
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
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
RSHUDWRU
IRU
WKHVH
GDWD
LWHPV
DQG
VWRUH
WKHP
LQ
9DOLG PRGHV
$XWRPDWLF
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. */
};
'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\
,Q DXWRPDWLF
9DOLG PRGHV
$XWRPDWLF
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;
};
([FHSWLRQV
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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. */
};
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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
([FHSWLRQV
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
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
9DOLG PRGHV
$XWRPDWLF
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
'HVFULSWLRQ
+RZHYHU LI GHQVLWLHV RU
9DOLG PRGHV
$XWRPDWLF
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
'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
9DOLG PRGHV
$XWRPDWLF
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. */
};
'HVFULSWLRQ
8VH WKH 7LPH2XW 2SHUDWLRQ FRPPDQG WR DERUW D EDWFK WKDW KDV EHHQ
DXWKRUL]HG EXW QRW \HW VWDUWHG
9DOLG PRGHV
$XWRPDWLF
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. */
};
([FHSWLRQV
'HVFULSWLRQ
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
9DOLG PRGHV
$XWRPDWLF
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. */
};
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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. */
};
'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
9DOLG PRGHV
$XWRPDWLF
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];
};
DGGLWLYHV
LQGHSHQGHQW
9DOLG PRGHV
0DQXDO
$XWRPDWLF
RI
ZKHWKHU
WKH
DGGLWLYH
ZDV
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. */
};
FLUFXLWV SURJUDP FRGHV WKURXJK 7KH OHDVW VLJQLILFDQW ELW LV
VDIHW\ FLUFXLW HWF
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
([FHSWLRQV
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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
};
5HVSRQVH GDWD
struct Tasr {
unsigned char dfl; /* Data field length. */
unsigned char cmdcode;
};
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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];
};
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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];
};
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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];
};
8QDXWKRUL]HG IORZ LH IORZ ZKHQ WKH IORZ FRQWURO YDOYH KDV QRW EHHQ
FRPPDQGHG
WR
EH
RSHQ
LV
DFFXPXODWHG
IRU
HDFK
PHWHU
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
'HVFULSWLRQ
6HH WKH OLVW RI GDWD FRGHV LQ WKH 'DQ/RDG 5HIHUHQFH 0DQXDO
0DQXDO
$XWRPDWLF
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. */
};
'HVFULSWLRQ
7KH 'DQ/RDG UHVSRQGV ZLWK WKH FXUUHQW YDOXHV RI YDULRXV GDWD
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
'HVFULSWLRQ
7KH 'DQ/RDG UHVSRQGV ZLWK WKH FXUUHQW YDOXHV RI YDULRXV GDWD
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
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
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;
};
([FHSWLRQV
'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
!
9DOLG PRGHV
$XWRPDWLF
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;
};
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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. */
};
WKDW
UROO
IURP
WR
)HZHU
WKDQ
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
'HVFULSWLRQ
,Q
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
'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
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];
};
FRPPDQGV
IRU
'DQ/RDG
9DOLG 6WDUW
ZLWK
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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
};
K 5HVSRQVH
V GDWD ILHOG WRR ORQJ
K ,QYDOLG SURJUDP FRGH QXPEHU
'HVFULSWLRQ
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
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
'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 YDOXHV FKDQJHG
VWDWXV IODJ DUH VHW
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
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;
};
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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. */
};
'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
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;
};
([FHSWLRQV
'HVFULSWLRQ
9DOLG PRGHV
$XWRPDWLF
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;
};
'HVFULSWLRQ
IRU GLIIHUHQW
9DOLG PRGHV
$XWRPDWLF
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;
};
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
'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
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
7KH
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
'HVFULSWLRQ
0HWHU LQSXW
57' LQSXW
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
'HVFULSWLRQ
9DOLG PRGHV
'LVFUHWH RXWSXW
0DQXDO
$XWRPDWLF
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;
};
'HVFULSWLRQ
$ ELW
[ PHDQV
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 [
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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
};
'HVFULSWLRQ
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
'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
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;
};
'HVFULSWLRQ
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
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;
};
7KH
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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
};
'HVFULSWLRQ
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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). */
};
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
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
(QKDQFHG ,2
9DOLG PRGHV
EWS>@
EWS>@
EWS>@
EWS>@
EWS>@
EWS>@
EWS>@
0DQXDO
$XWRPDWLF
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;
};
'HVFULSWLRQ
'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
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. */
};
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
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;
};
'HVFULSWLRQ
WKH
'DQ/RDG
V
RSHUDWLQJ
PRGH
LV
FRQWUROOHG
E\
WKH
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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;
};
'HVFULSWLRQ
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
9DOLG PRGHV
$XWRPDWLF
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] */
'HVFULSWLRQ
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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] */
'HVFULSWLRQ
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
FRPPDQG
KDV
WKH
IROORZLQJ
DGYDQWDJHV
RYHU
WKH
6WDUW
RQH
FKDUDFWHU
DQG
FKHFNVXP
WZR
FKDUDFWHUV
9DOLG
9DOLG PRGHV
0DQXDO
$XWRPDWLF
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. */
};
'HVFULSWLRQ
7KLV
,WV
UHVSRQVH
FRQWDLQV
WKH
WUDQVDFWLRQ
VWRUDJH
VWDWXV
RI WKH DODUP E\WHV VR WKDW LW FDQ GHWHUPLQH ZKHQ SULPDU\ DODUPV DUH
UDLVHG DQG FOHDUHG IRU ORJJLQJ SXUSRVHV
7KH
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
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
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;
};
K ,QYDOLG ELW LH WKH DODUP FRGH LQ WKH TXHU\ LV LQYDOLG
'HVFULSWLRQ
7KH
9DOLG PRGHV
0DQXDO
$XWRPDWLF
6WDWXV )ODJV
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
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
K
3ULPDU\ DODUP
K
K
K
K
K
K
K
5HFLSH VHOHFWHG
$GGLWLYHV VHOHFWHG LH DGGLWLYH VHOHFWLRQ FRPSOHWH
3UHVHW YROXPH HQWHUHG
.H\SDG GDWD DYDLODEOH
3URJUDP FRGH YDOXHV FKDQJHG
K
7UDQVDFWLRQ LQ SURJUHVV
$K
'K
(K
)K
%K
&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
K
K
K
3URJUDP PRGH
K
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('
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
&/($5('
2Q SRZHUXS ZKHQ WKH RSHUDWLQJ PRGH SURJUDP FRGH LV $XWRPDWLF
&/($5('
5HFHLSW RI D 5HVHW 3ULPDU\ $ODUPV FRPPDQG ZKLFK FOHDUV WKH RQO\ DFWLYH
SULPDU\ DODUP
WKH RQO\ DFWLYH SULPDU\ DODUP LV FOHDUHG E\ XVHU YLD NH\SDG RU YLD
FRQILJXUHG SULPDU\ DODUP UHVHW VZLWFK
&/($5('
8VHU FRPSOHWHV SDVVFRGH HQWU\ IURP WKH NH\SDG
3RZHUXS RI XQLW
&/($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
&/($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
&/($5('
UHFHLSW
RI $XWKRUL]H
7UDQVDFWLRQ
FRPPDQG
LQ
DXWRPDWLF
RU
ZKHQ
&/($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
&/($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
&/($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
&/($5('
ZKHQ WKH WUDQVDFWLRQ HQGHG VWDWXV IODJ &K LV VHW
SRZHUXS RI 'DQ/RDG
&/($5('
%DWFK HQGHG ELW LV VHW
SRZHUXS RI 'DQ/RDG
WKH RSHUDWLQJ PRGH FKDQJH WRIURP PDQXDODXWRPDWLF
&/($5('
SRZHUXSUHVHW RI 'DQ/RDG
UHFHLSW RI D &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW %K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
&/($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
UHFHLSW RI (QG %DWFK FRPPDQG ZKHQ D EDWFK LV LQ SURJUHVV DQG WKH EDWFK
LV VWRSSHG
&/($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
&/($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
&/($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
6(7
IROORZLQJ
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
WKH
RSHUDWRU
SUHVVHV
WKH
6723
NH\
ZKHQ
WUDQVDFWLRQ
LV
&/($5('
UHFHLSW RI $XWKRUL]H 7UDQVDFWLRQ FRPPDQG
UHFHLSW RI &OHDU 6WDWXV FRPPDQG ZLWK GDWD ELW K VHW LQ WKH DXWRPDWLF
RSHUDWLQJ PRGH
&/($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 IODJV DUH VHW
ZKHQ WKH 2SHUDWLRQ 7LPHG RXW ELW LV VHW ZKLOH WKH NH\SDGGLVSOD\ LV ORFNHG
RXW
ZKHQ
UHFHLSW RI 6WRS %DWFK FRPPDQG ZKHQ D EDWFK LV LQ SURJUHVV DQG WKH EDWFK
EHFRPHV UHVWDUWDEOH
XVHU
EHFRPHV UHVWDUWDEOH
&/($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
&/($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
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('
7KH 0RGEXV IXQFWLRQ FRGH IRU QRUPDO TXHULHV DQG UHVSRQVHV DUH K DQG K
7KH
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
,QWHUSUHWDWLRQ
K
K
K
1R WUDQVDFWLRQ HQGHG
K
5HVSRQVH
V GDWD ILHOG WRR ORQJ
K
K
5(6(59('
K
1R EDWFK LQ SURJUHVV
K
1R WUDQVDFWLRQ LQ SURJUHVV
K
%DWFK LQ SURJUHVV
K
7UDQVDFWLRQ LQ SURJUHVV
$K
%K
%DWFK DXWKRUL]HG
&K
7UDQVDFWLRQ DXWKRUL]HG
'K
5(6(59('
(K
)K
K
K
K
K
1R DGGLWLYHV FRQILJXUHG
K
1R EDWFK DXWKRUL]HG
K
K
K
1R UHFLSH VHOHFWHG
K
K
$K
1R NH\ SUHVVHG
%K
&K
'LDJQRVWLF UXQQLQJ
'K
(K
)K
5(6(59('
K
1XPEHU RI UHFLSHV
K
5(6(59('
K
1R WUDQVDFWLRQ DXWKRUL]HG
K
5(6(59('
K
K
1R EDWFK VWRSSHG
K
1R EDWFK HQGHG
K
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
K
K
K
K
K
K
K
K
K
$K
%K
&K
'K
(K
)K
K
,QYDOLG GDWH
K
,QYDOLG WLPH
K
K
K
K
,QYDOLG ELW
$ODUP )ODJV
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
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
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Configurable
Primary
Configurable
Configurable
Configurable
Primary
Primary
Primary
Primary
Primary
Primary
Secondary
.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
&
$/7
$/7
$/7
$/7
$/7
$/7
$/7
$/7
$/7
$/7
$
$/7&/($5
%
$/76(/(&7
&
$/7
'
$/7
(
$/7(17(5
)
$/76723
$/767$57
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
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
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\
'DWD ORJJLQJ
)
9DOXH FKDQJHG 'DWD ORJJLQJ :HLJKWV DQG 0HDVXUHV DQG 5HDG RQO\
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
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
+,
&
'
/
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
&KDUDFWHU
*UHHN
FRGH KH[
FKDUDFWHU
(
'HOWD
('
7KHWD
)
/DPEGD
)
;L
)
3L
)
6LJPD
)$
3KL
)&
3VL
)'
2PHJD
*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
*UHHN
&KDUDFWHU
FKDUDFWHU
FRGH KH[
3VL
)&
2PHJD
)'
: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[
DK
$
EHK
(
YHK
%
JHK
*UHHN JDPPD
(
GHK
(
\HK
(
\RK
( XPODXW
(
]KHK
($
OLQH WKURXJK LW
]HK
6SHFLDO
(%
HH
%DFNZDUGV 1
(&
HH .5$+7NXK\XK
%DFNZDUGV 1
('
NDK
.
%
HKO
((
WDS GDQFHU
HKP
0
HKQ
+
RK
2
)
SHK
*UHHN SL
)
HKU
3
'
7UDQVFULEHG QDPH RI
5XVVLDQ FKDUDFWHU
5XVVLDQ FKDUDFWHU
ORRNV OLNH
&KDUDFWHU
FRGH KH[
HKV
&
WHK
7
RR
6SHFLDO <
()
HKI
*UHHN SKL
)$
NKDK
;
WVHK
)
WDLO
FKHK
%DFNZDUGV *UHHN
)
PX
VKDK
6TXDUH :
)
VKKDK
)
WDLO
\
79 2+5GwHH ]QDNK
)
\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
'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
127(
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
'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
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
$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
5HYLVLRQ ,QIRUPDWLRQ
0DQ\ PRGLILFDWLRQV IROORZLQJ LQKRXVH UHYLHZ 7KH GRFXPHQW VKRXOG EH UHUHDG FDUHIXOO\
7KH FRPPDQG UHTXLUHG WR UHTXHVW VWRUHG WUDQVDFWLRQ GDWD LV QRW GHILQHG
7UDQVDFWLRQ
7KH JURVV DQG QHW EDWFK YROXPHV LQ WKH 5HTXHVW 6WDWXV UHVSRQVH DUH LQ ZKROH XQLWV
3URPSW 5HFLSH K
LPPHGLDWHO\
(QG 7UDQVDFWLRQ K 6WDWXV IODJV K &K DQG K DUH QRW VHWFOHDUHG LPPHGLDWHO\
$XWKRUL]H %DWFK $K
([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
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
[II
7KH $GGLWLYH ,2 ERDUG LV QRZ FDOOHG WKH (QKDQFHG ,2 ERDUG
7KH 'DQ/RDG VRIWZDUH YHUVLRQ QXPEHUV 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
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
([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
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
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
)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
2TQXKFG &CPKGN YKVJ RTQQH QH VJG &CVG QH 2WTEJCUG CPF RTQQH QH VJG &CVG QH 5JKROGPV QH
VJG RTQFWEV KP SWGUVKQP
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
(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' '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
�+'. /'#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