Part301 DispenserApplicationV2.32
Part301 DispenserApplicationV2.32
PART III.I
DISPENSER APPLICATION
Document Contents
0 RECORD OF CHANGES ......................................................................................................................... 5
0 Record Of Changes
April 93 1.01 The changes from version 1.00 to 1.01 are very significant and therefore a listing of
the changes is not necessary.
May 93 1.02 - Consistency of the document reviewed (characters type and size,
paragraphs, table of content,...)
- Calculator message definition transformed in database definition have
generated a lot of update which cannot be listed here (duplicate definitions
suppressed, field renaming for consistency across the document, ...).
- The field numbering was reviewed to provide an unique number per
database.
- Mandatory/Optional (M/O) column was suppressed (application
dependent).
- Read/Write (R/W) column was suppressed (application dependent).
- Error codes were reviewed for simplicity.
- Chapter 3.3:
- Additional information to use the CALCULATOR database
- Data_Id 1: deleted, specified by the subnet (S) in the Logical Node
Address (LNA)
- Data_Id 10: Additional explanation to the clearing of a FP's display
- Data_Id 25: deleted, no need
- Data_Id 27: deleted, no need
- Data_Id 29: deleted, no need
- Data_Id 30: deleted, the heartbeat on communication level is used
- Data_Id 61: deleted, no real time clock in the dispenser
- Data_Id 62: deleted, no real time clock in the dispenser
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.4:
- Additional information to use the METER database
- The M_ID = 80H is used to have access to all meters
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.5:
- Additional information to use the PRODUCT database
- The PR_ID = 40H is used to have access to all products
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.6:
- Additional information to use the PRODUCT PER FUELLING MODE
database
- The FM_ID = 10H is used to have access to all fuelling modes at a
product
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.7:
- Additional information to use the FUELLING POINT database
- The FP_ID = 20H is used to have access to all fuelling points
- Data_Id 2: Renamed to Nb_Tran_Buffer_Not_Paid, description changed
- Data_Id 3: Renamed to Nb_Of_Historic_Trans, description changed
- Data_Id 5: deleted, no need
- Data_Id 21: Numbering description changed
- Data_Id 22: Description changed, field type is bin16
- Data_Id 25: Numbering description changed
- Data_Id 41: Data element Transaction_Sequence_Nb created
- Data_Id 29: Description changed
- Data_Id 30: Description changed, field type is bin16
- Data_Id 31: Description changed, field type is bin16
- Data_Id 62: Description changed, field type is a CMD
- Data_Id 64: Description changed, field type is a CMD
- Data_Id 65: Description changed, field type is a CMD
- Data_Id 100: The unsolicited message is without acknowledge
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.8:
- Additional information to use the LOGICAL NOZZLE database
- The LN_ID = 10H is used to have access to all logical nozzle data at a
fuelling point
- The range for the LN_ID is 11H-18H
- Data_Id 5: Numbering description changed
- Data_Id 7: Numbering description changed
- Data_Id 8: Field type changed to bin8, the value is 0-100
- Data_Id 9: Numbering description changed
- Data_Id 12: deleted, no need
- Data_Id 13: deleted, no need
- Data_Id 14: deleted, no need
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.9:
- Additional information to use the FUELLING TRANSACTION database
- The TR_DAT = 20H is used to have access to all non paid transaction
data
- Data_Id 1: Description changed
- Data_Id 2: Description changed, field type is bin16
- Data_Id 21: Data element Trans_State created
- Data_Id 20: Description changed
- Data_Id 30: Description changed, field type is CMD
- Data_Id 32: deleted, no need
- Data_Id 100: The unsolicited message is without acknowledge, the
Tr_Buff_Status_Message array consist of TR_Seq_Nb, Trans_State,
TR_Buff_Contr_Id
- Data_Id 200-255: free to manufacturer / oil company
- Chapter 3.10:
- the previous chapter 3.10 "Transaction Audit Data" is completely deleted,
historic transaction data are accessible by the Fuelling Transaction database
- The previous chapter 3.11 "Error Code Data" is now 3.10
- Additional information to use the ERROR CODE database
- The ER_DAT = 10H is used to have access to all error code data
- Data_Id 3: decription changed
- Data_Id 4: deleted, no real time clock in the dispenser
- Data_Id 5: date element FP_Error_State created
- Major error 0AH "Download error" added
- Major error 0BH "Checksum error" added
- Chapter 3.11:
- The previous chapter 3.12 "Data Download" is now 3.11
- Data_Id 1: deleted
March 95 1.50
General Changes
- Document converted to Word 6 format.
- Changes made based on comments from CECOD and individual suppliers.
Chapter 2
- In chapter 2.1.1 details of behaviour when a major & minor error occurs
have been added to the state description.
- In chapter 2.1.3 minor change to wording.
- In chapter 2.2.3 extra comments regarding control device access for
‘unlocking’.
Chapter 3
- In chapter 3.1 additional comments have been made about the
TR_Seq_Nb address format (i.e. bcd4)
- In chapter 3.1 additional comments have been made about the Prod_Nb
address format (i.e. bcd8).
- In chapter 3.3 Data_Id 2 (Nb_Products) field range changed from 1-15 to
1-8 and Data_Id made mandotary.
- In chapter 3.3 Data_Id 3,4 & 5 made mandatory Data_Id.
- In chapter 3.3 new Data_Id 61 (SW_Checksum) used to allow the CD to
interrogate the software checksum.
- In chapter 3.3 additional comments have been made about the handling of
Data_Id 70 (Calc_Illumination) when the calculator can not support
illumination.
- In chapter 3.6 the Data_Id’s 2,3,4,5 can now be written in all states.
- In chapter 3.7 the Data_Id 23 (Release_Mode) has some additional
explanation.
- In chapter 3.7 the Data_Id 30 (Release_Contrl_Id) has some additional
explanation regarding the resetting of the value when the IDLE state is
entered.
- In chapter 3.7 the Data_Id 38 has had its field format changed from asc8
to bcd8.
- In chapter 3.7 the Data_Id 100 has additional details of how the
unsolicited data structure is set up (i.e. the individual data elements have
their Data_Id and Data_Lg included in the message & the Data_Lg of
Data_Id 100 = 0 ).
- In chapter 3.8 the Data base address has been corrected.
- In chapter 3.8 the Data_Id 8 & 9 have been changed to optional and have
some additional explanation regarding their implementation.
- In chapter 3.9 the Data_Id 2 (TR_Contr_Id) has had its field format
changed from bin8 to bin16 and an explanation on the field details has
been added.
- In chapter 3.9 the Data_Id 10 (TR_Prod_Nb) has had its field format
changed from asc8 to bcd8.
- In chapter 3.9 the Data_Id 11 (TR_Prod_Description) has been changed
from mandatory to optional.
- In chapter 3.9 Data_Id 31 (Lock_Transaction) command has been added.
- In chapter 3.9 Data_Id 32 (Unlock_Transaction) command has been
added.
- In chapter 3.9 the Data_Id 100 has additional details of how the
unsolicited data structure is set up (i.e. the individual data elements have
their Data_Id and Data_Lg included in the message & the data_Lg of
Data_Id 100 = 0 ).
- In chapter 3.10 the state error 80H has been changed from ‘FP state
OPERATIVE’ to ‘FP state INOPERATIVE’.
- In chapter 3.11 Data_Id’s 2,5,3,6,10 & 11 have all been changed from
mandatory to optional.
January 96 1.51
General Changes
- Changes made based on comments from CECOD and individual suppliers.
- Many Data_Id’s descriptions have been changed to explain their usage in
situations where the Dispenser for technical reasons (W&M
requirements or a fixed relationship between the meters & nozzles, etc.)
can not allow a mandatory Data_Id value to be written to or changed.
Please check all Data_Id’s for details.
June 97 2.00
General Changes
- Changes made based on comments from CECOD and individual suppliers.
- Many Data_Id’s descriptions have been changed to explain their usage in
situations where the Dispenser for technical reasons (W&M
requirements or a fixed relationship between the meters & nozzles, etc.)
can not allow a mandatory Data_Id value to be written to or changed.
Please check all Data_Id’s for details.
Chapter 5
- Chapter 5.4 added. This chapter gives implementation details in regard to
the correct handling when dispensers or site controllers recognise that a
device has gone off-line or come (back) on-line.
- Chapter 5.5 added. This chapter gives implementation details in regard to
the correct handling when switching a dispensers into stand alone mode.
- Chapter 5.6 added. This chapter gives implementation details in regard to
the handling of units of measure.
February 2.01
1999
Chapter 2
2.1.6 Additional text added to explain actions resulting from a LIMIT
REACHED event. [IR019]
2.1.7 The state description for “Fill-Time-Out” is in conflict with the state
diagram. It now reads: “........moves the FP to the state IDLE.” [IR020]
2.1.8 Additional text added to explain actions resulting from a LIMIT
REACHED event. [IR019]
Chapter 3
January 2.10
2000
This chapter describes in detail each state, event and required actions of a fuelling point.
In the following description STATES are shown in bold text and “EVENTS” are given in
double quotes. [Control flows] and [Data flows] are contained in square brackets.
The table below is used. Its content has the following definition.
STATE DESCRIPTION
EVENT DESCRIPTION
“EVENT-NAME” A short description of the event. Used to describe to which new state the fuelling
point has moved to, once all the actions are completed.
PCD Comment:
A short description giving extra information needed for PCD implementations.
The data elements which are sent by the control and data flows are described in chapter 3
“Dispenser Database”.
Any change in the “Fuelling Point State”, the “Transaction Buffer State”, the “Logical Nozzle
State” or the “FP Assign Control” is sent as an unsolicited message from the FP to the
Controller Device.
The CD recipient addresses for the unsolicited messages are contained in the “Recipient
Address Table” in the Communication Service Database (for further information see chapter 4.5
in the document “Part II, Communication Specification, Release 1.51”).
The fuelling point state diagram describes in detail the behaviour of the fuelling point in a
dispenser.
States are represented on Figure 1 (FUELLING POINT STATE DIAGRAM) and Figure 2
(FUELLING POINT STATE DIAGRAM, ERROR CONDITIONS) by rectangles. The states
are sequential numbered.
The arrows between the states are labelled with the event name or names that causes the FP to
change from one state to another. The direction of state transfer is indicated by the arrowhead.
INOPERATIVE
[1]
OPERATIVE UNABLE
CLOSE_FP
CLOSED [2]
NOZZLE-DOWN
TERMINATE_FP
FILL-TIME-OUT
IDLE [3]
TERMINATE_FP
-DOWN
NOZZLE *2
RELEASE_FP
VALID-NOZZLE-UP AUTH-TIME-OUT
INVALID-NOZZLE-UP TERMINATE_FP
CALLING [4]
AUTHORISED
[5]
*1
*2 NOZZLE-DOWN
RELEASE_FP INVALID-NOZZLE-UP
VALID-NOZZLE-UP
NO-PROGRESS
SUSPEND_FP TERMINATE_FP
SUSPENDED STARTED
[7] [6]
STARTED
RESUME_FP
*3 *3
FIRST-VOLUME- FIRST- VOLUME
PULSES LIMIT-REACHED PULSES
NO-PROGRESS NOZZLE -DOWN
SUSPEND_FP TERMINATE_FP
FILL-TIME-OUT
SUSPENDED FUELLING
[9] [8]
FUELLING RESUME_FP
NOZZLE-DOWN
TERMINATE_FP
FILL-TIME-OUT
Figure 1
*1 "NOZZLE-DOWN" moves only to state AUTHORISEDif the stateAUTHORISED is
allowed (by configuration), else it moves to state IDLE
NB. NO-PROGRESS TIME-OUT is less than FILL-TIME-OUT
*2 The event RELEASE_FP is only accepted if a transaction buffer is
available
*3 Defined number of pulses from where a started fuelling is atransaction(the
number of pulses is defined by configuration)
Note.
If more than one nozzle is removed, all nozzles after the first nozzle will be ignored. No nozzle
out messages, etc will be sent.
INOPERATIVE [1]
MAJOR-ERROR
MAJOR-ERROR
MINOR-ERROR
CLOSED
[2]
MINOR-ERROR
MAJOR-ERROR
IDLE [3]
MINOR-ERROR
MINOR-ERROR MINOR-ERROR
SUSPENDED STARTED
[7] [6]
STARTED
MINOR-ERROR MINOR-ERROR
SUSPENDED FUELLING
[9] [8]
FUELLING
MINOR-ERROR MINOR-ERROR
The classification of the errors (major error, minor error) is in the database
FIGURE 2
description (chapter 3.11 ERROR CODE DATABASE
State 1 2 3 4 5 6 7 8 9
Inoperative Closed Idle Calling Authorised Started Suspended started Fuelling Suspended Fuelling
Event
Operative -> 2 - - - - - - - -
Unable 1 -> 1 State error 6 State error 6 State error 6 State error 6 State error 6 State error 6 State error 6
Open_FP State error 1 -> 3 3 State error 3 State error 3 State error 3 State error 3 State error 3 State error 3
Close_FP State error 1 2 -> 2 -> 2 -> 2 -> 2 -> 2 -> 2 -> 2
Invalid-nozzle-up 1 2 -> 4 - 5 - - - -
*
Nozzle-down 1 2 3 -> 3 5 -> 5/3 -> 3 -> 3 -> 3
Release_FP State error 1 State error 2 -> 5 -> 6 5 State error 5 State error 5 State error 5 State error 5
Auth-time-out - - - - -> 3 - - - -
Suspend_FP State error 1 State error 2 State error 4 State error 4 State error 4 -> 7 7 -> 9 9
Resume_FP State error 1 State error 2 State error 4 State error 4 State error 4 6 -> 6 8 -> 8
Terminate_FP State error 1 State error 2 3 -> 3 -> 3 -> 3 -> 3 -> 3 -> 3
Limit-reached - - - - - - 7 -> 9 9
Max_Vol - - - - - - - -> 2 -
Minor-error - 2 3 4 5 6 7 8 9
Description
State error 1 FP is in state INOPERATIVE
State error 2 FP is in state CLOSED
State error 3 FP is already opened
State error 4 Transaction not in progress
State error 5 Transaction already started
State error 6 Parameter / Configuration change not possible
n no state change
n State changes to state n
not applicable
• for details see event in state description
STATE DESCRIPTION
INOPERATIVE The FP is in the INOPERATIVE state when it is not possible to open a FP. The
reason for this is that essential configuration data (e.g. W&M parameter) is missing
or a major error has been detected. The FP will also be in the INOPERATIVE
state during the changing of essential data (e.g. software download).
PCD Comment:
The PCD will indicate that an IFSF FP is inoperative when it can't open a
proprietary pump or when the PCD itself is unable to operate.
EVENT DESCRIPTION
“OPERATIVE” When the FP has been configured with the essential data to operate (W&M
parameters, pump configuration parameters) and no major errors have been detected
(see 3.11 Error Code Data), the FP goes to the CLOSED state.
PCD Comment:
When the PCD detects that the proprietary FP has been configured with the correct
data to operate it should change the IFSF FP state to the CLOSED state.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
leave the IFSF FP status as INOPERATIVE.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as INOPERATIVE and generate the respective IFSF
error message.
STATE DESCRIPTION
CLOSED The FP is completely configured and no major error has been detected.
PCD Comment:
If the proprietary FP does not have the equivalent CLOSED state the PCD will
have to assure that no new transactions can start on the proprietary FP. Where
possible proprietary protocol features that can be used to indicate that a FP is not
available to the customer should be utilized (e.g. switching display lights off).
EVENT DESCRIPTION
“UNABLE” During configuration, changing essential parameter or a data download the FP is not
able to work. During this time the FP’s state changes to INOPERATIVE.
PCD Comment:
The PCD can also change the IFSF FP state to INOPERATIVE when the
proprietary FP or itself is having essential data/parameters changed or receiving a
data download.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as CLOSED and generate the respective IFSF error
message.
STATE DESCRIPTION
On entry to the IDLE state any outstanding transactions have been stored in the
transaction buffer and all fuelling parameters must have been reset to their default
values.
Note: When the IDLE state is entered with a nozzle removed, it is necessary to wait
until the nozzle is returned before allowing the state to change away from the Idle
state. This implies that any attempt to release the pump while the ‘illegal’ nozzle is
removed must be rejected with a Data_ACK of 6 (Command not accepted). After
the nozzle is returned a new transaction is able to start.
EVENT DESCRIPTION
“VALID-NOZZLE-UP” The customer selects any logical nozzle and the FP moves to the CALLING state.
If there are is no unit price available any attempt to release a fuel pump should be
rejected with a Data ACK of 6.
Any fuelling limit must be transmitted to the FP before the Release_FP command is
transmitted. The pre-authorization could be done without any limit, with a volume
limit (preset mode) or an amount limit (prepay mode).
The FP receives a pre-authorization and the FP moves to the AUTHORISED state.
PCD Comment:
As most proprietary FP’s only allow one transaction at a time, the PCD will have
to manage multiple transaction itself (assuming that the PCD supports more than 1
transaction buffer).
As most proprietary FP’s don’t support assignment, the PCD will have to manage
the assignment regulations itself.
As most proprietary FP’s don’t support pre-authorization, the PCD will have to
manage the pre-authorization itself (e.g. be in a state where it will automatically
release the proprietary FP when the customer removes the nozzle).
“CLOSE_FP” The FP will be closed down and the FP moves into the CLOSED state.
This may be used to temporarily shut down one or more FP’s when business is
slack.
PCD Comment:
Where possible the PCD must utilises proprietary FP protocol features that
indicate that the FP is not available to the customer (e.g. switching display lights
off).
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as IDLE and generate the respective IFSF error message.
STATE DESCRIPTION
CALLING A logical nozzle has been selected by a customer and the FP is waiting to be
released.
EVENT DESCRIPTION
“RELEASE_FP” The release can only be accepted if at least one transaction buffer is available. The
number of transaction buffers is configured by the contents of the data element
Nb_Tran_Buffer_Not_Paid.
If a transaction buffer is not available any attempt to release a fuel pump should be
rejected with a Data ACK of 6.
If the FP is assigned to a CD the FP can only be released by the CD that assigned it.
Any fuelling limits and grade masks must be transmitted to the FP before the
Release_FP command is transmitted. The release could be done without any limits,
with a volume limit (preset mode) or an amount limit (prepay mode).
If there are is no unit price available any attempt to release a fuel pump should be
rejected with a Data ACK of 6.
A Release command will be rejected if the customer has removed an invalid nozzle
i.e. one not permitted in the grade mask (FP Data Base Data_Id 25 Log_Noz_Mask).
If this situation occurs, the dispenser will reject the Release command with a
Data_ACK value of 6 (Command not accepted).
PCD Comment:
As most proprietary FP’s only allow one transaction at a time, the PCD will have
to manage multiple transaction itself (assuming that the PCD supports more than 1
transaction buffer).
As most proprietary FP’s don’t support assignment, the PCD will have to manage
the assignment regulations itself.
Where the proprietary FP protocol doesn’t indicate the selected nozzle the PCD
will have no choice but to ignore the Log_Noz_Mask and release the FP.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘terminating’ a CALLING
FP the PCD will have to manage the state transitions from CALLING to IDLE.
This action will involve dealing with the proprietary FP being IDLE but having its
nozzle removed.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘closing’ a CALLING FP
the PCD will have to manage the state transitions from CALLING to CLOSED.
This action will involve dealing with the proprietary FP being CLOSED but having
its nozzle removed.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as CALLING and generate the respective IFSF error
message.
STATE DESCRIPTION
AUTHORISED The FP has been pre-authorised and it is now waiting for the customer to select a
valid logical nozzle (grade selection and physical nozzle).
Coming into this state the timer for the maximum authorization time
Max_Auth_Time is started.
The customer display could be reset in this state (dictated by the contents of the data
element Clear_Display_Mode).
PCD Comment:
As most proprietary FP’s don’t support pre-authorization, the PCD will have to
manage the pre-authorization itself (e.g. be in a state where it will automatically
release the proprietary FP when the customer removes the nozzle).
Note: This state is not allowed in some countries (configured by the contents of the
data element Auth_State_Mode).
EVENT DESCRIPTION
“VALID-NOZZLE-UP” The customer selects a valid logical nozzle (dictated by the product/logical nozzle
restrictions) and the FP moves into the STARTED state.
PCD Comment:
If the proprietary FP protocol doesn’t indicate the nozzle selected then the PCD
will not be able to determine if the selected nozzle is valid or invalid. Hence the
PCD will have to treat all nozzles as being valid (as if the Log_Noz_Mask had been
set to 255/FFH).
PCD Comment:
If the proprietary FP protocol doesn’t indicate the nozzle selected then the PCD
will not be able to determine if the selected nozzle is valid or invalid. Hence the
PCD will have to treat all nozzles as being valid (as if the Log_Noz_Mask had been
set to 255/FFH).
“AUTH-TIME-OUT” A nozzle is not removed during a period of time (configured by the contents of the
data element Max_Auth_Time) and the FP returns to the IDLE state.
PCD Comment:
As most proprietary pump protocols do not support maximum authorization
timeouts the PCD will have to carry out the watchdog timing itself and when the
timer has expired, automatically clear the pre-authorization and move the IFSF FP
status back to IDLE.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘terminating’ an
AUTHORIZED FP the PCD will have to manage the state transitions from
ATHORIZED to IDLE.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘closing’ an AUTHORISED
FP the PCD will have to manage the state transitions from AUTHORISED to
CLOSED.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
“MINOR-ERROR” If a minor error event occurs the FP does not change the state.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as AUTHORISED and generate the respective IFSF
error message.
STATE DESCRIPTION
STARTED This state implies that the FP was released and a valid logical nozzle has been
selected by the customer. This means (explicitly) that the actual fuel transaction
(filling up) has not yet started until a defined minimum volume has been registered
(configured by the contents of the Min_Fuelling_Vol).
Coming into this state the timer for the maximum filling time Max_Fill_Time is
started. The timer for the maximum authorization time is stopped.
PCD Comment:
If the proprietary pump protocol doesn’t have the equivalent STARTED state and
goes straight from CALLING to FUELLING then the PCD should create a dummy
STARTED state that it resides in only for the length of time it takes to inform the
CD that it is in this state. After the state change has been notified to the CD the
PCD can change the state to FUELLING.
The customer display could be reset in this state (configured by the contents of the
data element Clear_Display_Mode).
EVENT DESCRIPTION
“NOZZLE-DOWN” The customer returns the nozzle and the FP moves into the AUTHORISED state.
In this event a very important customer tolerant feature is satisfied; the customer
may have selected the wrong grade (i.e. the wrong nozzle) and, so long as
dispensing has not started (state FUELLING) he is able to select another if he
wishes.
Note: In some countries the AUTHORISED state is not permitted. In this case the
FP returns to state IDLE. The way of going back is defined by configuration in the
contents of the data element Auth_State_Mode.
“NO-PROGRESS” This event occurs when a FP is released and a valid logical nozzle is selected but no
volume pulses are registered within a defined period of time (configured by the
contents of the data element Max_Time_W/O_Prog). The FP moves to the
SUSPENDED STARTED state.
PCD Comment:
If the proprietary pump protocol doesn't indicate that volume pulses have been
generated the PCD will have to ignore this event.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘terminating’ a STARTED
FP the PCD will have to manage the state transitions from STARTED to IDLE.
This action will involve dealing with the proprietary FP being IDLE but having its
nozzle removed.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘closing’ a STARTED FP
the PCD will have to manage the state transitions from STARTED to CLOSED.
This action will involve dealing with the proprietary FP being CLOSED but having
its nozzle removed.
“MAJOR-ERROR” If a major error event occurs the FP moves into the INOPERATIVE state.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as STARTED and generate the respective IFSF error
message.
STATE DESCRIPTION
EVENT DESCRIPTION
“RESUME_FP” When the FP is resumed the same transaction continues from where it was paused,
the state changes to the STARTED state. Only the device that has suspended the
transaction can restart it (for exceptions see data variable Suspend_Contr_Id).
PCD Comment:
If the proprietary pump protocol doesn’t allow a suspended pump to be re-started
then the PCD should NACK the Resume_FP command (with a MS_ACK=5 &
Data_ACK=5) and stay in the SUSPENDED STARTED state.
“FIRST-VOLUME- The suspend command was received during the first pulses and the flow meter
PULSES” registers a preset minimum number of pulses signifying that dispensing has started
just after reaching the SUSPENDED STARTED state. The FP moves into the
SUSPENDED FUELLING state.
PCD Comment:
If the proprietary pump protocol doesn’t support zero transactions the PCD will
have to recognise the zero transaction situation and store the respective transaction
details in the transaction buffer.
“FILL-TIME-OUT” The FP times out when the duration of the fuelling operation exceeds the maximum
time allowed for this product (defined by the contents of the data element
Max_Fill_Time). The FP moves back to the IDLE state.
PCD Comment:
If the proprietary pump protocol doesn’t support zero transactions the PCD will
have to recognise the zero transaction situation and store the respective transaction
details in the transaction buffer.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘terminating’ a
SUSPENDED STARTED FP the PCD will have to manage the state transitions
from SUSPENDED STARTED to IDLE. This action will involve dealing with the
proprietary FP being IDLE but having its nozzle removed. The PCD must stop the
proprietary pump dispensing fuel.
If the proprietary pump protocol doesn’t support zero transactions the PCD will
have to recognise the zero transaction situation and store the respective transaction
details in the transaction buffer.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘closing’ a SUSPENDED
STARTED FP the PCD will have to manage the state transitions from
SUSPENDED STARTED to CLOSED. This action will involve dealing with the
proprietary FP being CLOSED but having its nozzle removed. The PCD must stop
the proprietary pump dispensing fuel.
If the proprietary pump protocol doesn’t support zero transactions the PCD will
have to recognise the zero transaction situation and store the respective transaction
details in the transaction buffer.
“MAJOR-ERROR” If a major error event occurs the FP moves to the INOPERATIVE state.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
If the proprietary pump protocol doesn’t support zero transactions the PCD will
have to recognise the zero transaction situation and store the respective transaction
details in the transaction buffer.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as SUSPENDED STARTED and generate the respective
IFSF error message.
STATE DESCRIPTION
FUELLING The FP has now dispensed at least a minimum quantity of fuel (configured by the
contents of the data element Min_Fuelling_Vol) and is in the FUELLING state.
Observe that the FP can never return directly to the STARTED state from this state.
EVENT DESCRIPTION
“LIMIT-REACHED” When the dispensed volume (as calculated by the DC) equals the maximum
permitted quantity (Remote_Volume_Preset or Remote_Amount_Prepay or
User_Max_Amount) the event “LIMIT REACHED” occurs. The FP moves into the
SUSPENDED FUELLING state. The nozzle at this time is still out.
PCD Comment:
As some proprietary pump protocols don’t indicate when a pump transaction has
reached the supported limits it is impossible for a PCD to always recognize this
event. In the case where this event isn’t recognized the PCD will simply never move
from the FUELLING state into the SUSPENDED FUELLING state.
“MAX_VOL” When the dispensed volume (as calculated by the DC) equals the Max_Vol which is
specified by a W&M limit, the FP moves into a Closed state.
PCD Comment:
As some proprietary pump protocols don’t indicate when a pump transaction has
reached the supported limits it is impossible for a PCD to always recognize this
event. In the case where this event isn’t recognized the PCD will simply never move
from the FUELLING state into the SUSPENDED FUELLING state.
PCD Comment:
If the proprietary pump protocol doesn’t support the Max_Time_W/O_Prog then
the PCD will have to create its own watchdog timer for this purpose and when the
timer has expired must stop the pump dispensing and move into the SUSPENDED
FUELLING state.
PCD Comment:
If the proprietary pump protocol doesn’t support the Max_Fill_Time then the PCD
will have to create its own watchdog timer for this purpose and when the timer has
expired must stop the pump dispensing and move into the IDLE state.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘terminating’ a FUELLING
FP the PCD will have to manage the state transitions FUELLING to IDLE. This
action will involve dealing with the proprietary FP being IDLE but having its
nozzle removed. The PCD must stop the proprietary pump dispensing fuel.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘closing’ a FUELLING FP
the PCD will have to manage the state transitions from FUELLING to CLOSED.
This action will involve dealing with the proprietary FP being CLOSED but having
its nozzle removed. The PCD must stop the proprietary pump dispensing fuel.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as FUELLING and generate the respective IFSF error
message.
STATE DESCRIPTION
SUSPENDED The FP has been suspended while in the FUELLING state. It may be restarted.
FUELLING It is also possible for the FP state to change from SUSPENDED STARTED to this
state (the dispensed volume is greater than defined in the data variable
Min_Fuelling_Vol).
EVENT DESCRIPTION
“RESUME_FP” When the FP is released again by the same device (for exception see data variable
Suspend_Contr_Id) the same transaction continues from where it was paused. The
FP returns to the FUELLING state.
PCD Comment:
If the proprietary pump protocol doesn’t allow a suspended pump to be re-started
then the PCD should NACK the Resume_FP command (MS_ACK=5 Data-ACK=5)
and stay in the SUSPENDED FUELLING state.
PCD Comment:
If the proprietary pump protocol doesn’t support the Max_Fill_Time then the PCD
will have to create its own watchdog timer for this purpose and when the timer has
expired must stop the pump dispensing and move into the IDLE state.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘terminating’ a
SUSPENDED FUELLING FP the PCD will have to manage the state transitions
from SUSPENDED FUELLING to IDLE. This action will involve dealing with the
proprietary FP being IDLE but having its nozzle removed. The PCD must stop the
proprietary pump dispensing fuel.
“CLOSE_FP” The FP will be closed down. The transaction is stored in the transaction buffer and
the FP moves into the CLOSED state.
PCD Comment:
As most proprietary FP’s don’t support the concept of ‘closing’ a SUSPEND
FUELLING FP the PCD will have to manage the state transitions from
SUSPEND FUELLING to CLOSED. This action will involve dealing with the
proprietary FP being CLOSED but having its nozzle removed. The PCD must stop
the proprietary pump dispensing fuel.
PCD Comment:
When the PCD detects a major error with the proprietary FP or with itself it must
change the IFSF FP status to INOPERATIVE.
PCD Comment:
When the PCD detects a minor error with the proprietary FP or with itself it must
leave the IFSF FP status as SUSPENDED FUELLING and generate the
respective IFSF error message.
Every fuelling point has a defined number of transaction buffers (configured by the data element
Nb_Tran_Buffer_Not_Paid) which are used for unpaid fuelling transactions. As long as the
Controller Device has not cleared the fuelling transaction the FP is responsible for the
transaction and the fuelling transaction data must be stored at the dispensers FP.
PCD Comment:
The PCD must be 100% compliant with the Transaction Buffer State Handling.
New
CLEAR Payable
Transaction
CLEAR
PAYABLE
TRANSACTION [2]
New
LOCK UNLOCK Locked
Transaction
LOCKED [3]
TRANSACTION
STATE DESCRIPTION
CLEARED This particular transaction buffer is available for the next fuelling transaction. The
TRANSACTION CD has access to the previous transaction data (configured by the contents of the
data element Nb_Of_Historic_Trans).
EVENT DESCRIPTION
“NEW CLEARED Transactions can only be stored as “New Cleared Transaction” when the
TRANSACTION” dispenser is operating in Standalone mode.
The customer has finished the fuelling. The transaction must be stored in a cleared
transaction buffer. The transaction buffer with the oldest transaction data is used to
store the new cleared fuelling.
The transaction buffer state moves to the CLEARED TRANSACTION state.
STATE DESCRIPTION
PAYABLE TRANS- The customer has finished the fuelling and in the particular transaction buffer is now
ACTION a payable transaction.
EVENT DESCRIPTION
“NEW PAYABLE The customer has finished the fuelling. The transaction must be stored in a cleared
TRANSACTION” transaction buffer. The transaction buffer with the oldest transaction data is used to
store the new payable fuelling.
The transaction buffer state moves to the PAYABLE TRANSACTION state.
If the FP runs in “stand alone” mode the transaction data totalized and the buffer is
cleared automatically. The transaction buffer state moves to the CLEARED
TRANSACTION state.
STATE DESCRIPTION
LOCKED TRANSAC- The payable transaction is reserved by a CD. No other CD can clear the transaction
TION data (see special exception in the “UNLOCK” description).
Please note that a transaction resulting from a assigned FP will be flagged as
‘Locked’ as soon as it is stored.
EVENT DESCRIPTION
“NEW LOCKED The customer has finished the fuelling. The transaction must be stored in a cleared
TRANSACTION” transaction buffer. The transaction buffer with the oldest transaction data is used to
store the new payable fuelling.
The transaction buffer state moves to the LOCKED TRANSACTION state.
The transaction buffer state moves back to the PAYABLE TRANSACTION state.
3 Dispenser Database
This part of the document details the standard data organisation for a Dispenser.
Every data element in the dispenser database is described in this chapter. The access to the data
element is done by a Database Address “DB_Ad” and a Data_Identifier “Data_Id”.
DATABASE
DB_Ad =
Data Data Element Name Field Type Read/Write M/O
_Id Description in State
The Data_Id is an unique identifier for a data element in a database. The database is defined by
the database address “DB_Ad” (for details see document “Part II, Communication
Specification).
In the second column the name of the data element is defined. In this column is also the
description of the data element (Including PCD comments in italic text).
The field types in column three are described in chapter 3.2 of this document.
The “Read/Write in State” column indicates if the related data can be Read and/or Written by
any device and in which Fuelling Point state (states are indicated between brackets).
The M/O column (Mandatory/Optional) indicates if the data element must be supported /
implemented by the Fuelling Points and any Controller Device controlling Fuelling Points. “M”
indicates that the data element must be supported, “O” indicates that the data element is
optional. Note: All mandatory data elements must be supported/implemented for a device to be
IFSF compatible.
Every data element in a device is stored in a database. In some implementation it may be real
database or only a software organisation (object or tasks), for instance if a separate processor
manages each meter.
These database levels are addressed by the Database Address (DB_Ad) using a variable number
of bytes. The number of address bytes to specify a database is 1 to 8.
(For more details are in the document “PART II, COMMUNICATION SPECIFICATION”).
COM_SV
00H
Commun-
cation
Service
Data
C_DAT
01H
Calcul-
ator
Data
FP_ID
21H-24H
Fuelling
Point
Identifier
(1-4)
FP_ID LN_ID
21H-24H 11H-18H
Fuelling Logical
Point Nozzle
Identifier Identifier
(1-4) (1-8)
TR_DAT TR_Seq_Nb
21H 0001-9999
Trans- Transaction
action Sequence
Data Number
(bcd4 format)
ER_DAT ER_ID
41H 01H-FFH
Error Error
Data Identifier
(0-255)
PR_ID
41H-48H
Product
Identifier
(1-8)
M_ID
81H-90H
Meter
Identifier
(1-16)
SW_DAT
A1H
Software
and
Data
Down-
load
IFSF application Field Formats are given in IFSF Engineering Bulletin No. 11. The following
statement is made for fields of type Volume.
CALCULATOR DATABASE
CONFIGURATION DATA
2 Nb_Products Bin8 R(1-9) M
(02H) (1-8) W(1-2)
Number of products defined.
0 = not configured
n = number of products
CALCULATOR DATABASE
CALCULATOR DATABASE
CALCULATOR DATABASE
CALCULATOR DATABASE
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
CALCULATOR DATABASE
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
CALCULATOR DATABASE
Bit 1-2 describing when the data is cleared and Bit 3-7
describing which display fields must be cleared:
Please note that the CD can reset the FP display via the FP
DB Dat_Id 66 (Clear_Display) Command.
CALCULATOR DATABASE
PCD Comment:
Where the proprietary pump connected to the PCD can
not support this timer function directly the PCD will have
to implement its own watchdog timer to recognise when
the timer has expired and then carry out the required
actions.
LIMIT DATA
CALCULATOR DATABASE
0 = no check
PCD Comment:
Where the proprietary pump connected to the PCD can
not support this timer function directly the PCD will have
to implement its own watchdog timer to recognise when
the timer has expired and then carry out the required
actions. If the proprietary pump protocol doesn’t
differentiate between the STARTED pump state and a
FUELLING pump state the PCD will not be able to
recognize if a time out has occurred and hence will not be
able to activate a stop command to the pump. In this case
the PCD will not be able to support this functionality.
However the PCD should still allow the CD to read and
write this Data_Id as if the functionality were supported.
CALCULATOR DATABASE
PCD Comment:
Where the proprietary pump connected to the PCD can
not support this volume limit directly the PCD will have to
try to implement its own mechanism to recognise when the
volume limit has been exceeded and change the states
appropriately. If the PCD can find no mechanism to
support this feature then it should treat this Data_Id as
having a hardcoded and unchangeable value of 0 (See
above for more explanation).
CALCULATOR DATABASE
PCD Comment:
Where the proprietary pump connected to the PCD can
not support this volume limit directly the PCD will have to
try to implement its own mechanism to recognise when the
volume limit has been exceeded and clear the display
appropriately. If the PCD can find no mechanism to
support this feature then it should treat this Data_Id as
having a hardcoded and unchangeable value. (See above
for more explanation).
CALCULATOR DATABASE
0 = no limitation
PCD Comment:
Where the proprietary pump connected to the PCD can
not support this timer directly the PCD will have to try to
implement its own mechanism to recognise when the timer
has expired and allow or restrict the next transaction
respectively. If the PCD can find no mechanism to support
this feature then it should treat this Data_Id as having a
hardcoded and unchangeable value. (See above for more
explanation).
CALCULATOR DATABASE
PCD Comment:
Where the proprietary pump connected to the PCD can
not support this pulser error handling mechanism directly
the PCD will have to treat this Data_Id as having a
hardcoded and unchangeable value. (See above for more
explanation).
28 Time_Display_Product_Name Bin8 R(1-9) O
(1CH) (0-255) W(1-2)
Time in seconds to display the product name on the
Volume/Amount displays.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
CALCULATOR DATABASE
PCD Handling:
Where the proprietary pump connected to the PCD can
not support this display handling mechanism directly the
PCD will have to treat this Data_Id as having a
hardcoded and unchangeable value. (See above for more
explanation).
CALCULATOR DATABASE
PCD Handling:
Where the proprietary pump connected to the PCD can
not support this display handling mechanism directly the
PCD will have to treat this Data_Id as having a
hardcoded and unchangeable value. (See above for more
explanation).
42 Digits_Unit_Price Bcd2 R(1-9) M
(2AH) W(1-2)
Configure displayed layout of the Unit Price field.
PCD Handling:
Where the proprietary pump connected to the PCD can
not support this display handling mechanism directly the
PCD will have to treat this Data_Id as having a
hardcoded and unchangeable value. (See above for more
explanation).
CALCULATOR DATABASE
PCD Handling:
Where the proprietary pump connected to the PCD can
not support this display handling mechanism directly the
PCD will have to treat this Data_Id as having a
hardcoded and unchangeable value. (See above for more
explanation).
Examples:
Amount = 1234.56, ART=0001, Result = 1234.56
'0001' is the default value and as the last four digits '3456'
are a multiplication of 1, no rounding up/down occurs.
PCD Handling:
Where the proprietary pump connected to the PCD can
not support this rounding mechanism directly the PCD
will have to treat this Data_Id as having a hardcoded and
unchangeable value. (See above for more explanation).
PCD Handling:
Where the proprietary pump connected to the PCD can
not support this rounding mechanism directly the PCD
will have to treat this Data_Id as having a hardcoded and
unchangeable value. (See above for more explanation).
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
IDENTIFICATION DATA
50 Manufacturer_Id Asc3 R(1-9) M
(32H)
To allow the CD to interrogate the manufacturer identity.
PCD Comment:
The PCD should set this Data_Id to that of the proprietary
dispenser manufacturer’s Id being controlled.
51 Dispenser_Model Asc3 R(1-9) M
(33H)
To allow the CD to interrogate the dispenser model.
PCD Comment:
The PCD should set this Data_Id to that of the proprietary
dispenser model Id being controlled.
52 Calculator_Type Asc3 R(1-9) M
(34H)
To allow the CD to interrogate the calculator type.
PCD Comment:
The PCD should set this Data_Id to reflect the type of
proprietary dispenser’s calculator being controlled.
PCD Comment:
The PCD should set this Data_Id to reflect the connected
proprietary calculator’s serial number. Where the PCD
can not determine the calculator’s serial number it should
leave this Data_Id set to spaces.
54 Appl_Software_Ver Asc12 R(1-9) M
(36H)
To allow the CD to interrogate the version number of the
application software. The Appl_Software_Ver number
format is ‘9999999999.99’ (the decimal point is implied
and not transmitted).
PCD Comment:
The PCD should set this Data_Id’s 12 ASCII bytes to
supply the following data structure:
“PCDAAABBBBBB”
where: “PCD” is fixed as ASCII “PCD” and used to
indicate that the pumps are controlled via a
PCD)
“AAA” is the 3-character code indicating the PCD
manufacturer’s Id.
“BBBBBB” is the software version number of the
software running in the PCD.
55 W&M_Software_Ver bcd12 R(1-9) M
(37H)
To allow the CD to interrogate the version number of the
software routines related to the direct control of fuel
dispensing. This is of interest to W&M. The
W&M_Software_Ver number format is ‘9999999999.99’
(the decimal point is implied and not transmitted).
PCD Comment:
As this Data_Id is a unique Data_Id to the IFSF
Dispenser application protocol it is very unlikely that a
proprietary pump protocol will support this feature.
Hence, any W&M algorithms will be implemented in the
PCD and not the pump. So this Data_Id will have to be set
by the PCD to reflect the version of the W&M software it
is utilising internally.
PCD Comment:
As this Data_Id is a unique Data_Id to the IFSF
Dispenser application protocol it is very unlikely that a
proprietary pump protocol will support this feature.
Hence, any W&M algorithms will be implemented in the
PCD and not the pump. So this Data_Id will have to set by
the PCD to reflect the creation date of the W&M software
it is utilising internally.
57 W&M_Security_Type Bin8 R(1-9) M
(39H) (0-255)
To allow the CD to specify the type of W&M security
method used in the transaction data.
0 = no security type.
1 = security type as defined in the IFSF Bulletin:
Dispenser CRC Signature Generation.
PCD Comment:
As this Data_Id is a unique Data_Id to the IFSF
Dispenser application protocol it is very unlikely that a
proprietary pump protocol will support this feature.
Hence, any W&M algorithms will be implemented in the
PCD and not the pump. So this Data_Id will have to set by
the PCD to reflect the W&M security type it is utilising
internally.
58 Protocol_Ver bcd12 R(1-9) M
(3AH)
To allow the CD to interrogate the version number of the
protocol being used by the dispenser. The Protocol_Ver
number format is ‘9999999999.99’ (the decimal point is
implied and not transmitted).
PCD Comment:
This Data_Id should be set to the IFSF Dispenser
Application protocol version number being used by the
PCD to communicate with the Site Controller/CD.
59 SW_Change_Date Date R(1-9) M
(3BH) W(1-2)
To allow the CD to interrogate the date of the installation
of the currently installed software.
PCD Comment:
This Data_Id should be set to the date when the PCD’s
software was last changed.
PCD Comment:
This Data_Id should be set to the Id or the service
engineer who last changed the PCD’s software.
61 SW_Checksum Asc4 R(1-9) M
(3DH) W(1-2)
To allow the CD to interrogate the checksum of the
software. The field format is HHHH. Where:
HHHH consists of four hexadecimal digits (ASCII 0-9,A-
F)
Please note that dispensers that do not permit the
SW_Checksum to be changed remotely should:
Reject any write attempts with a Data_ACK value
of 2 (Read Only/Not Writable). This is the preferred
solution.
PCD Comment:
This Data_Id should be set to the Software checksum of
the PCD’s software.
0 = light off
1 = light on
Please note that when the Calculator does not have the
ability to control a light in the Dispenser then this Data_Id
must still be supported at the read & write level
(Obviously, the Calculator will not be able to actually
control a light).
PCD Comment:
Where the proprietary pump protocol or the pump itself
does not allow the display light to be turned on remotely
the PCD should handle the situation as described in the
previous paragraph.
0 = light off
1 = light on
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
72 Display_Intensity Bin8 R(1-9) O
(48H) (0-1) W(1-9)
Allows switching of the display intensity:
0 = normal intensity
1 = high intensity
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
PCD Comment:
The PCD is likely to be solely responsible for the
generation of the W&M checksum so where the W&M
functionality is required the PCD will have to implement it
as described above. The acceptability of a PCD between
the Site Controller/CD in this environment will have to be
checked with the body responsible for giving the W&M
approval.
PCD Comment:
The PCD is likely to be solely responsible for the
generation of the W&M checksum so where the W&M
functionality is required the PCD will have to implement it
as described above. The acceptability of a PCD between
the Site Controller/CD in this environment will have to be
checked with the body responsible for giving the W&M
approval.
Please note that to allow dispensers to operate in ‘stand alone’ mode, the dispenser must have
default settings for some of the Data_Id’s contained in this database, i.e. the dispenser must
configure these Data_Id’s itself after a master reset/cold start.
METER DATABASE
CONFIGURATION
1 Meter_Type Bin8 R(1-9) O
(01H) (0-2) W(1-2)
Specifies the meter type:
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
METER DATABASE
PCD Comment:
It is unlikely that a proprietary pump protocol will allow
the remote changing of this Data_Id. If it doesn’t, then the
PCD should not permit this Data_Id to be changed by the
Site Controller/CD and should respond as described in the
previous paragraph.
3 Meter_Calib_Fact Bcd4 R(1-9) O
(03H) W(1-2)
Specifies the meter calibration factor used by intelligent
pulsers and piston meters. The field format is 0.000 to
9.999 (the decimal point is implied and not transmitted).
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
METER DATABASE
0 = no product assigned
1 = product in Product Database with address 41H
2 = product in Product Database with address 42H
⋅
⋅
8 = product in Product Database with address 48H
PCD Comment:
It’s important that the PCD supports this configuration
Data_Id as it will be critical in calculating totals where the
proprietary pump protocol can not supply the totals
directly.
TOTAL
20 Meter_Total Long_ R(1-9) M
(14H) Volume
Total for the single pulse meter. The total is permanently
updated during the fuelling transaction.
PCD Comment:
Some proprietary protocols will not allow the meter totals
to be read remotely. If this is the case as soon as a
transaction data is received the PCD will have to calculate
this total itself. Obviously, it may not be possible for the
PCD to update the meter totals during the fuelling
transaction. The PCD should also consider that it is
advisable that these totals are stored securely and with
some type of memory backup.
METER DATABASE
This data allows the CD to specify the product data in the calculator. Per Calculator up to 8
different Prod_Nb could be defined.
The access to this data is defined by the PR_ID address (product identifier). This address key
is used for internal links between databases (product, logical nozzle, meters). These links
depend on the way the dispenser is built and are dispenser model dependent.
The PR_ID = 40H is used to ask for all products.
Any attempt to operate on a DB_Ad which has not been implemented should be rejected with
a MS_ACK set to NAK 6 (Message refused, unknown database address).
PRODUCT DATABASE
CONFIGURATION
2 Prod_Nb Bcd8 R(1-9) M
(02H) W(1-2)
The Prod_Nb is assign by the CD during the system
configuration and may be used to send product parameters
(names, prices) by equipment or programs which don’t
need to have the knowledge of each dispenser
configuration. The Prod_Nb must be unique for a
dispenser (this is controlled by the dispenser before
accepting the Prod_Nb to PR_Id link during the
configuration). Therefore the product database should be
declared to have only one record per unique product. A
write action for a address PR_ID with the Prod_Nb
00000000 means that the associated data must be deleted.
PCD Comment:
It’s important that the PCD supports this configuration
Data_Id as it will be critical in calculating totals where
the proprietary pump protocol can not supply the totals
directly.
3 Prod_Description Asc16 R(1-9) O
(03H) W(1-2)
Specifies the product description for the product.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
VAPOUR RECOVERY
PRODUCT DATABASE
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
This data allows the CD to configure the product parameter per fuelling mode.
The access to the product fuelling mode data is done by the database address PR_DAT
(product data) + Prod_Nb (Product Number) + FM_ID (fuelling mode identifier).
The FM_ID = 10H is used to ask for all fuelling modes at a product.
Please note that to allow dispensers to operate in ‘stand alone’ mode, the dispenser must have
default settings for some of the Data_Id’s contained in this database. I.e. the dispenser must
configure these Data_Id’s itself after a master reset/cold start.
CONFIGURATION
1 Fuelling_Mode_Name Asc8 R(1-9) O
(01H) W(1-2)
Specifies the fuelling mode name.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
2 Prod_Price Unit_ R(1-9) M
(02H) Price W(1-9)
Specifies the product/fuelling mode’s Unit Price.
Please note that a write can occur to this Data_Id in any
state. However, the new value will only become active
when the FP next goes into states 1 to 5.
PCD Comment:
The PCD will have to take care that the new price is sent to
the proprietary pump as soon as it can be accomplished.
PCD Comment:
Some proprietary pump protocols don’t allow the
maximum volume to be changed. In this case the PCD will
have to accept a write of this Data_Id and must store the
value just in case a SC/CD tries to read the value. It is also
worth mentioning that this maximum volume must also be
considered with the other preset volumes possible and that
the PCD where possible always makes sure that the
proprietary pump never fills above the lowest of the volume
limits.
4 Max_Fill_Time Bin8 R(1-9) M
(04H) (0-255) W(1-9)
Specifies the product/fuelling mode’s maximum fuelling
time (in 10 second units) allowed.
0 = fuelling time is unlimited
Please note that a write can occur to this Data_Id in any
state. However, the new value will only become active
when the FP next goes into states 1 to 5.
Note 1.
The Max_Auth_Time Data Id 5 in the Product Per Fuelling
mode data base in only in this data base to ensure
backwards compatibility. To determine the time a FP
should stay in the authorised state, Data Id 13 calculator
data base should be used.
PCD Comment:
As many proprietary pump protocols won’t allow a
maximum authorisation timer to be set remotely the PCD
will have to have its own watch dog timer to time the filling
time. If this timer expires the PCD will have to stop the
filling.
6 User_Max_Volume Volume R(1-9) M
(06H) W(1-9)
Specifies the Max Volume the FP will fuel before it will
move into the suspended fuelling state.
PCD Comment:
As many proprietary pump protocols won’t allow a user
maximum volume to be set remotely, the PCD will have to
accept a write of this Data_Id and must store the value just
in case a SC/CD tries to read the value. It is also worth
mentioning that this user maximum volume must also be
considered with the other preset volumes possible and that
the PCD where possible always makes sure that the
proprietary pump never fills above the lowest of the volume
limits.
Please note that to allow dispensers to operate in ‘stand alone’ mode, the dispenser must have
default settings for some of the Data_Ids contained in this database. I.e. the dispenser must
configure these Data_Ids itself after a master reset/cold start.
CONFIGURATION
1 FP_Name Asc8 R(1-9) O
(01H) A name or number associated with a Fuelling Point. W(1-2)
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
2 Nb_Tran_Buffer_Not_Paid Bin8 R(1-9) M
(02H) Specifies the number of non paid transactions (not cleared (1-15) W(1-2)
by the CD) that may be stored by each FP. The acceptable
range is 1 to 15.
If a write action occurs to this Data_Id with a value greater
than can be supported by the dispenser, the dispenser
should reject the message with a Data_ACK value of 1
(Invalid value (too big/small)).
Please note that dispensers that do not permit this Data_Id
to be changed remotely should:
Reject any write attempts with a Data_ACK
value of 2 (Read Only/Not Writable).
- Must set the Data_Id to the hard coded default value.
PCD Comment:
It is desirable that the PCD supports as many transaction
buffers as is allowed by the local W&M and can be stored
in the device.
0 = light off
1 = light on
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
11 OPT_Light_Switch Bin8 R(1-9) O
(0BH) (0-255) W(2-9)
Allows switching of up to four ‘OPT_Lights’ when the
OPT_Light_Mode (Data_Id 9 in Calculator Database) is
in external control each light is controlled by a pair of
adjoining bits were:
00 = light off
01 = light on
10 = SLOW BLINK
11 = FAST BLINK
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
CONTROL DATA
20 FP_State Bin8 R(1-9) M
(14H) Used to indicate the state of the FP. Please see the (1-9)
Fuelling Point State Diagram for details of the individual
states (chapter 2.1 of this document).
An unsolicited message (Data_Id 100) is generated by the
FP for each change in the FP state.
PCD Comment:
Please see the earlier sections dealing with the state
behaviours related to the PCD.
21 Log_Noz_State Bin8 R(1-9) M
(15H) Allows the state of all logical nozzles to be read.
Bit 1 = LogicalNozzle1Flag [Logical nozzle 1] (LN_ID =
1)
bit 2 = LogicalNozzle2Flag [Logical nozzle 2] (LN_ID =
2)
..
bit 8 = LogicalNozzle8Flag [Logical nozzle ]8 (LN_ID =
8)
The numbering of the nozzles is manufacturer model
specific and must be defined separate.
0 = Nozzle not removed
1 = Nozzle removed
An unsolicited message (Data_Id 100) is generated by the
FP for each change in the Logical Nozzle State.
PCD Comment:
Where the proprietary pump protocol indicates which
nozzle has been removed and hence allows the logical
nozzle details to be passed on to the SC/CD the PCD
should generate the respective correct unsolicited
messages. If the proprietary pump protocol doesn’t
indicate the nozzle and the PCD can’t establish which one
it is by cross-referencing the grade Id or the unit price.
Then it should set the Log_Noz_State to a default of 0
when no nozzles have been lifted and to 255/FFH when a
nozzle has been lifted.
PCD Comment:
As the assignment concept is generally not supported in
proprietary pump protocols the PCD will have to manage
this assignment handling locally.
0 = no prepay
PCD Comment:
If the proprietary pump protocols doesn’t support any
prepayment the PCD will have to reject any attempt to
write a value with a MS_ACK=5 and a Data_ACK 2.
0 = no preset
PCD Comment:
If the proprietary pump protocol doesn’t support volume
prepayment but does support an amount preset the PCD
will have to try and find a mechanism to over come this
shortcoming. A method may be to calculate the
corresponding amount and using an amount preset. If the
proprietary pump protocols doesn’t support any
prepayment the PCD will have to reject any attempt to
write a value with a MS_ACK=5 and a Data_ACK 2.
32 Release_Token Bin8 R(1-9) M
(20H) (0-255) W(3-4)
Allows the controller device to assign a token when a
transaction is started.
This token is used by the controller to link a release
command with the resulting transaction.
PCD Comment:
The PCD will need to store the received release token and
then attach it to the resulting transaction.
33 Fuelling_Mode Bin8 R(1-9) M
(21H) (1-8) W(3-4)
Fuelling mode (FM_ID) of the fuelling point. It cannot be
modified when a transaction is started. The acceptable
range is 1 to 8. After the current fuelling transaction is
stored in the transaction buffer the FM is set to the default
FM (specified in Data_Id 7).
PCD Comment:
As most proprietary pump protocols don’t support fuelling
modes the PCD will have to provide this functionality
internally. The main task is to make sure that the
proprietary pump has the correct unit price and limits for
the given fuelling mode.
PCD Comment:
As the transaction sequence number is unlikely to be
provided by the proprietary pump. The PCD will have to
maintain and update the transaction sequence number.
PCD Comment:
During the transaction this Data_Id must be set by the
PCD to the transaction sequence number that the resulting
transaction will have. It is most likely that the PCD will
have to generate this transaction sequence number.
PCD Comment:
During the transaction this Data_Id must be set by the
PCD to the controller Id that released the pump.
31 Suspend_Contr_Id Bin16 R(7,9) M
(1FH) W(6,8)
Specifies which Controller Device has suspended the
running transaction.
PCD Comment:
During the transaction this Data_Id must be set by the
PCD to the controller Id that suspended the pump.
PCD Comment:
During the transaction this Data_Id must be set by the
PCD to the current transaction amount. If the transaction
amount can not be determined from the proprietary pump
the PCD will have to set this value to 0. However, if the
transaction volume is available the PCD should try and
calculate the amount from that and the unit price (if
known).
35 Current_Volume Volume R(6-9) M
(23H)
Indicates the volume of fuel dispensed in the current
fuelling transaction.
PCD Comment:
During the transaction this Data_Id must be set by the
PCD to the current transaction volume. If the transaction
volume can not be determined from the proprietary pump
the PCD will have to set this value to 0. However, if the
transaction amount is available the PCD should try and
calculate the volume from that and the unit price (if
known).
36 Current_Unit_Price Unit_ R(6-9) M
(24H) Price
Indicates the unit price of the current fuelling transaction.
Its value is reset to zero after storing the transaction in the
transaction buffer.
PCD Comment:
During the transaction this Data_Id must be set by the
PCD to the current transaction unit price. If the
transaction’s unit price can not be determined from the
proprietary pump the PCD will have to set this value to 0.
However, if the transaction’s grade is known then the unit
price can be derived from the PC’s internal price tables.
PCD Comment:
Where the proprietary protocol allows the PCD to
establish which logical nozzle is being used it should set
this Data_Id accordingly. If not then this Data_Id must be
set to 255/FFH.
38 Current_Prod_Nb Bcd8 R(6-9) M
(26H)
Selected product number for the current fuelling
transaction. The Prod_Nb is defined in the Product
Database (chapter 3.4).
PCD Comment:
Where the proprietary protocol allows the PCD to
establish which product is being used it should set this
Data_Id accordingly. If not then this Data_Id should be
set to 0.
PCD Comment:
The PCD will only be able to set the error code if the
proprietary pump protocol supplies the error code. If this
is the case then the PCD is responsible to convert the
proprietary error code to the corresponding IFSF
Dispenser error code. If there is an proprietary error code
that can not be mapped to an IFSF Dispenser one then an
error code in the Manufacturer/Oil company specific
should be assigned. These new error codes must be
documented.
40 Current_Average_Temp Temp R(6-9) O
(28H)
Indicates the current temperature of the fuel being
dispensed.
Its value is reset to zero after storing the transaction in the
transaction buffer.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
42 Current_Price_Set_Nb Bcd 4 R(6-9) O
(2AH) Indicates the current Price_Set_Nb in use by this (0-9999)
dispenser.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
CONFIGURATION
43 Multi_Nozzle_Type Bin8 R(1-9) O
(2BH)
This data ID returns the type of physical nozzle associated
with a removed physical nozzle as defined in Data_Id 43.
It is enclosed as follows:
bit 1 = Satallite master nozzle
bit 2 = Satallite slave nozzle No. 1
bit 3 = Satallite slave nozzle No. 2
bit 4 = Satallite slave nozzle No. 3
bit 5 = 2 speed standard flow nozzle
bit 6 = 2 speed high flow nozzle
bit 7 = Multi product through one nozzle (i.e. blender)
Note these bits are valid only when the corresponding
nozzle type corresponds to one of the model types listed
above.
If the nozzle does not correspond to one of the models
listed or if no physical nozzle is removed, this Data_Id has
the value 00.
UNSOLICITED DATA
100 FP_Status_Message Bin8, M
(64H) A FP_Status_Message must be sent unsolicited (without bin8,
acknowledge) by the FP whenever a change has occurred bin16
in the status of the FP_State, Log_Noz_State or the
Assign_Contr_Id or FP_Alarm (Optional), or whenever
the state cannot be changed following request by the CD
to change state.
The FP_Status_Message includes:
- FP_State (Data_Id = 20)
- Log_Noz_State (Data_Id = 21)
- Assign_Contr_Id (Data_Id = 22)
Bin 64
- FP_Alarm (Data_Id = 80) O
Please note that the FP_Status_Message Data_Id is built
up as follows:
100,0,20,01,fps,21,01,ns,22,02,acd
Where:
fps is the Fuelling Point Sate
ns is the logical nozzle status
acd is the Assign Control device
The Data_Lg of the FP_Status_Message is always 0.
PCD Comment:
Obviously this unsolicited Data_Id must be generated by
the PCD when ever a change occurs in the state, logical
nozzle or assignment.
101 FP_Multi_Nozzle_Status_Message Bin8 O
(65H)
A FP_Multi_Nozzle_Status_Message must be sent
unsolicited (without acknowledge) by the FP when ever a
change has occurred in the status of the
Multi_Nozzle_State (Data_Id 44).
The FP_Multi_Nozzle_Status_Message includes
- Multi_Nozzle_State (Data_Id = 44)
Please note that the FP_Multi_Nozzle_Status_Message
Data_Id is built up as follows:
101,0,44,01,mns
Where: mns is the multi nozzle status
The Data_Lg of the FP_Multi_Nozzle_Status_Message is
always 0.
The FP_Running_Transaction_Message
Includes:
- Current_Amount (Data_Id 34)
- Current_Volume (Data_Id 35)
Please note that the FP_Running_Transaction_Message is
built up as follows:
102,0,34,05,amount,35,05,volume
The Data_Lg of the FP_Running_Transaction_Message is
always 0.
N.B.
1) Flow control by nozzle is not to be used as an alternative to suspend/resume. It is specifically used
where product flow selection through two or more nozzles is required.
2) Multi nozzle flow control is actioned dynamically during the course of a transactions and response time
is 1 second.
3) Multi nozzle flow control produces no change in dispenser state.
This data allows the CD to configure and control the logical nozzle at a FP.
The access to the logical nozzle data is done by the database address FP_ID (fuelling point
identification) + LN_ID (logical nozzle identification).
The LN_ID = 10H is used to ask for all logical nozzle at a fuelling point.
Please note that to allow dispensers to operate in ‘stand alone’ mode, the dispenser must have
default settings for some of the Data_Id’s contained in this database. I.e. the dispenser must
configure these Data_Id’s itself after a master reset/cold start.
CONFIGURATION
1 PR_Id Bin8 R(1-9) M
(01H) (1-8) W(1-2)
Identifier of the product dispensed by this logical nozzle.
The PR_Id (value 1-8) specifies the product the product
which is stored in the Product Database PR_ID (address
41H-48H).
PCD Comment:
As with standard IFSF dispensers the PCD may or may
not need product, nozzle & meter configuration from the
SC/CD. However, it will be beneficial if the PCD can
have a hardcoded value for many of these parameters.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
7 Meter_1_Id Bin8 R(1-9) M
(07H) (0-16) W(1-2)
Indicates the meter identifier of the first base product. The
numbering of the meters is manufacturer model specific
and must be defined separate.
0 = not configured
PCD Comment:
As with standard IFSF dispensers the PCD may or may
not need product, nozzle & meter configuration from the
SC/CD. However, it will be beneficial if the PCD can
have a hardcoded value for many of these parameters.
0 = no blending
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
9 Meter_2_Id Bin8 R(1-9) O
(09H) (0-16) W(1-2)
Indicates the meter identifier of the second base product.
The numbering of the meters is manufacturer model
specific and must be defined separate.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
0 = normal
1 = blender
2 = high speed
3 = satellite
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
3 Hose_Expansion_Vol Bin8 R(1-9) O
(03H) (0-255) W(1-2)
Indicates the expansion volume in centilitres of the hose
attached to this logical nozzle.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
4 Slow_Flow_Valve_Activ Bin8 R(1-9) O
(04H) (0-255) W(1-2)
Indicates the number of centilitres when the FP’s slow
flow valve need to be activated. The point when the slow
flow valves need to be activated is determined by the
point when the:
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
11 Preset_Valve_Activation Bin8 R(1-9) O
(0BH) (0-255) W(1-2)
Number of centilitres needed to stop the preset valve.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
PERMANENT TOTALS
PCD Comment:
If the proprietary pump protocol doesn’t supply the
respective nozzle volume total the PCD will have to
calculate the total itself.
21 Log_Noz_Amount_Total Long_ R(1-9) M
(15H) Amount W(1-2)
Amount total of the respective logical nozzle.
PCD Comment:
If the proprietary pump protocol doesn’t supply the
respective nozzle amount total the PCD will have to
calculate the total itself.
22 No_TR_Total Long_ R(1-9) M
(16H) Number W(1-2)
Number of transactions provided by this logical nozzle.
PCD Comment:
The PCD will have to maintain this transaction count
total.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
32 No_TR_SA_Total Long_ R(1-9) O
(20H) Number W(1-4)
Specifies the resetable number of transactions provided in
stand alone mode by this logical nozzle.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
This data allows the CD to handle the transaction data from a FP.
Access to the fuelling transaction data is done by database address FP_ID (fuelling point
identification) + TR_DAT (transaction data) + TR_Seq_Nb (transaction sequence number).
Use TR_DAT = 20H and TR_Seq_Nb = “0000” to ask for all transactions on a fuelling point
that are in the Payable (state 2) or Locked (state 3) state. The resultant database address
(DB_Ad) is 2x200000H - where x takes value 1-4 depending on FP.
In this section (chapter 3.9) only, the “Read/ Write in State” column refers to the Transaction
Buffer State Diagram because the Transaction Buffer State is independent of the Fuelling
Point State.
TRANSACTION DATA
1 TR_Seq_Nb Bcd4 R(1-3) M
(01H) Every transaction has a unique sequence number created (1-9999)
by the FP. This number is the same number as used in the
address of this database.
PCD Comment:
The PCD will have to store in this Data_Id the
transaction numbers that it used when this transaction
was a current transaction.
2 TR_Contr_Id Bin16 R(1-3) M
(02H) Indicates the Controller Device that has released the
transaction.
A Logical Node Address (LNA) is used for the
Release_Contr_Id. The LNA is specified by 2 bytes (S =
Subnet, N = Node). For details see document “Part II,
Communication Specification”.
0,0 = Controller Device is not specified,
X,Y = Controller Device that released the FP (X =
Subnet, Y = Node),
255,255 = FP running in stand alone mode.
At the end of the fuelling transaction the
Release_Contr_Id (Data_Id 30 in FP Database) is stored
here.
PCD Comment:
The PCD will have to store in this Data_Id the controller
Id that it used when this transaction was a current
transaction.
PCD Comment:
The PCD maintains the details of the SC/CD device that
locks a transaction.
TRANSACTION COMMAND
30 Clear_Transaction CMD W(2,3) M
(1EH) To clear a payable fuelling transaction in the transaction
buffer. A transaction does not have to have been locked
before it can be cleared. This command is allowed when
Transaction Buffer is in state 2 or 3.
Please note that an Unsolicited Trans_State (Data_Id
100) must be transmitted as a result of this command. This
action must occur even if the state has not changed as a
result of the command.
Clear all transactions should not be implemented.
PCD Comment:
The PCD must support this transaction command. See
the earlier chapter dealing with transaction states.
31 Lock_Transaction CMD W(2) M
(1FH) To lock an unlocked payable fuelling transaction in the
transaction buffer. Dispenser should write the CD’s
Subnet & Node address to the TR_Buff_Contr_Id. This
command is allowed in state 2 of Transaction Buffer.
Please note that an Unsolicited Trans_State (Data_Id
100) must be transmitted as a result of this command. This
action must occur even if the state has not changed as a
result of the command.
PCD Comment:
The PCD will have to support this transaction command.
See the earlier chapter dealing with transaction states.
UNSOLICITED DATA
100 TR_Buff_Status_Message Bcd4, M
(64H) bin8,
A TR_Buff_Status_Message must be sent unsolicited
bin16,
(without acknowledge) whenever the status of a
Amount,
transaction buffer has changed (transaction is created,
Volume
locked, unlocked or cleared), or whenever the state cannot
be changed following request by the CD to change state.
This message includes the following data:
- TR_Seq_Nb (Data_Id = 1)
- Trans_State (Data_Id = 21)
- TR_Buff_Contr_Id (Data_Id = 20)
- TR_Amount (Data_Id = 5)
- TR_Volume (Data_Id = 6)
Please note that the TR_Buff_Status_Message Data_Id is
built up as follows:
100,0,1,2,trn,21,1,trs,20,2,trcd,5,5,tram,6,5,vol
Where:
trn is the transaction sequence number
trs is the transaction status
trcd is the transaction buffer controller Id
tram is the six bytes used to store the transaction
amount
vol is the six bytes used to store the transaction
volume
The Data_Lg of the TR_Buff_Status_Message is always
0.
PCD Comment:
The PCD will have to generate this unsolicited message
when ever any of the respective embedded Data_Id’s
change.
This data allows the CD to handle the error data from a FP.
The access to the error data is done by the database address FP_ID (fuelling point
identification) + ER_DAT (error data) + ER_ID (error identification).
The ER_DAT = 40H is used to ask for all error code data. Please note the dispenser should
return all defined error codes in the below list (01H to 12H and 20H to 33H), even if the
respective error event has not occurred. It is preferred Manufacturer Specific error codes are
not returned, when all error code data is requested.
ERROR DATA
1 FP_Error_Type Bin8 R(1-9) M
(01H) (1-64)
Every error has a unique error code. This number is the
same number as used in the address ER_ID of this
database.
PCD Comment:
The PCD will have to convert any error codes it receives
from the proprietary pump protocol to an IFSF Dispenser
error code. Where the proprietary error code doesn’t exist
in the IFSF Dispenser error code table the PCD supplier
will have to use the Manufacture/oil company free fields
to reflect the error.
PCD Comment:
As this is an optional data field the PCD can NAK any
write requests to this Data_Id with a Data_ACK code of 4
(Data does not exist in this device) or reply to any read
request with an answer message with the respective
Data_Id’s length set to 0.
3 FP_Error_Total Bin8 R(1-9) M
(03H) (0-255) W(1-2)
The total number of errors having that code.
If more that 255 errors are counted, the value remains 255.
PCD Comment:
The PCD will need to maintain the error total count.
5 FP_Error_State Bin8 R(1-9) M
(05H) (1-9)
Specifies the FP State when the latest error (with the
selected ER_ID) occurred.
The FP state numbering described in the “FP State
Diagram, chapter 2.1” is used.
PCD Comment:
The PCD will need to maintain the FP error state.
UNSOLICITED DATA
100 FP_Error_Type_Mes Bin8, M
(64H) bin8
A FP_Error_Type_Mes message must be sent unsolicited
(without acknowledge) when ever an error occurs.
This message includes the following data:
- FP_Error_Type (Data_Id = 1)
- FP_Error_State (Data_Id = 5)
PCD Comment:
The PCD will have to generate this unsolicited message
whenever an error is logged in this DB.
The errors have different priorities. In the following table the classification is done. For
details in the behaviour of the FP see chapter 2 (Fuelling Point Behaviour Model).
This section gives an example of the configuration of a Multi Product Dispenser (MPD) and a
typical blender dispenser. The purpose is to show the relationship between the Physical
Nozzles, Logical Nozzles and the Meters.
In this example a MPD is configured with 4 grade options. Each grade option has a direct
relationship with its own meter, logical nozzle and physical nozzle. This dispenser does not
support blending.
With this set-up, it is possible to establish the volume of fuel dispensed per logical nozzle and
establish the volume of fuel dispensed through each meter, which usually have a direct
relationship with the tanks that source the fuel.
* = Please note that the Tanks featuring in this diagram are not configured via the Dispenser
Application Protocol.
Physical Nozzle 1
Meter 1 Meter 2
Tank 1 * Tank 2 *
With this set-up, it is possible to establish the volume of fuel dispensed per logical nozzle and
establish the volume of fuel dispensed through each meter, which usually have a direct
relationship with the tanks that source the fuel.
* = Please note that the Tanks featuring in this diagram are not configured via the Dispenser
Application Protocol.
This section gives guidelines & recommendation for implementations of the IFSF Dispenser
Application Protocol.
After a master reset, cold start, initial start-up or discovery that the device’s configuration is
corrupted, the dispenser should:
After a master Reset or Power Off of the dispenser the device should:
• Send a Configuration Needed heartbeat, since it cannot know if it has the correct prices.
• Do not clear the Communication Specification’s Recipient Address Table .
• Do not clear current & historic transactions.
• Do not unlock locked transactions.
• Do not reset Data_Id’s to their default values.
When a dispenser receives a command from the CD (i.e. Open_FP, Close_FP, Release_FP,
etc.) and the dispenser acknowledges the command positively (i.e. with a MS_ACK=0). The
dispenser must change to the new state immediately before sending the Acknowledge reply.
Please see the diagram/example below showing the required steps.
(d) Unsolicited
(a) Open_FP (c) ACK Status
Event
(b) Process Open_FP
Time
The Dispenser recognises that a SC device that has been entered into its recipient table has
gone off-line when it does not receive a heartbeat within the duration of 3 times the heartbeat
interval (normally 3 times 10 seconds = 30 seconds).
DO:
DO NOT:
• If currently fuelling do not stop the transaction. Continue to dispense fuel until the end of
the transaction or a previous defined limit has been reached. Basically the off-line
situation has no affect on the operation of the Dispenser.
• Do not remove the off-line SC device from the Recipient Table.
The Dispenser can recognise that a SC device that has been entered into its recipient table is
back on line when it receives a heartbeat from the SC device.
DO:
• Send the unsolicited status and transaction messages to the SC that has come on-line.
Please note that this event will cause every dispenser to do the same action, so the
network could get ‘busy’.
• Start sending unsolicited messages to the SC device as normal.
The SC recognises that the Dispenser device has gone off-line when it does not receive a
heartbeat within the duration of 3 times the heartbeat interval (normally 3 times 10 seconds =
30 seconds).
DO:
• Indicate to the system operator (cashier) that the Dispenser device has gone off-line.
The SC recognises that the Dispenser device has come back on-line when it receive a
heartbeat from the Dispenser Device.
DO:
When a SC is to be removed from the network or taken off-line the following actions should
be carried out:
The dispenser recognises that a SC device does not answer to a message on the physical level
(no ACKNOWLEDGEMENT on LONTalk level also after the retries).
DO:
Repeat all unanswered and outstanding messages when the Dispenser recognises that the line
is back again (the dispenser recieves a heartbeat from the SC device before heartbeat
timeout).
DO NOT:
Definition - A dispenser is in Stand Alone model when it is not controlled and there is no
reliable read/write activity - this can be for a number of reasons. When a dispenser recovers
out of Stand Alone mode it must be re-configured.
When a Dispenser is put into stand alone mode it must carry out the following actions:
• For all the Fuelling Points controlled by the dispenser it must send out the unsolicited
message FP_Status_Message (Data_Id 100) to all CD’s entered in the Dispenser’s
Recipient_Table. The FP_Status_Message must indicate that the FP has been assigned to
stand alone mode (Assign_Contr_Id=255,255).
• Continue communications (including the sending of Heartbeats) to all devices logged in
the Recipient_Table. This will allow Control Devices i.e. Tank Level Gauges that need to
know what transactions have been occurring on the site to still go and get the transaction
details.
When a Dispenser is removed from stand alone mode it must carry out the following actions:
• For all the Fuelling Points controlled by the dispenser it must send out the unsolicited
message FP_Status_Message (Data_Id 100) to all CD’s entered in the Dispenser’s
Recipient_table. The FP_Status_Message must indicate that the FP is no longer assigned
(Assign_Contr_Id=0,0).
The IFSF Dispenser Application Protocol works on the bases that the units of measurement
are implied. I.E. If the environment where the device is installed works in Litres, then all the
volume fields will also be Litres. Alternatively, If the environment where the device is
installed works in Gallons, then all the volume fields will also be Gallons.
Should an IFSF Dispenser be placed in an environment where both Litres & Gallons are used.
It will be the responsibility of the CD/Site controller to correctly configure the dispenser with
the correct prices for each product and provide transaction & meter details to other
applications (i.e. Pump controller/POS) running at the site in their required unit format.
The standard 8 second time-out for responses to messages can be ignored in the case of a state
transition from Fuelling to Idle. This is due to the need for extra time to take account of
inertia within the fuelling termination process.
In cases, where the CD that assigned the FP has ‘crashed’ and is off-line the assignment can
be cleared by another CD. This is achieved by setting the Assign_Contr_Id (Config_Lock) to
the same as the Dispenser’s own application Subnet & Node.
The Dispenser then resets the Assign_Contr_Id (Config_Lock) to 0,0.
This method of clearing can also be used by the assigning CD.
Note 1: The dispenser has to monitor the heartbeats from the CD(s) owning the lock(s)
independently of the RAT (otherwise, lock “stealing” would be possible).
Unlocking.
c. TR_Buff_Contr_Id equals 0000 (not locked):
• Any CD can set TR_Buff_Contr_Id out of 0000 by sending a Lock command.
d. TR_Buff_Contr_Id does not equal 0000 (locked to a particular CD):
• The CD which owns the lock sends Unlock command. Dispenser sets
TR_Buff_Contr_Id to 0000. Accepted. Normal unlock.
• The CD which owns the lock writes dispenser's own SN address to
TR_Buff_Contr_Id. Accepted. Peculiar emergency unlock (the CD can use Normal
unlock).
• The CD which does NOT own the lock sends Unlock command. Rejected with
NAK (Data_Ack of 6). Incorrect normal unlock.
• The CD which owns the lock is off-line: Any other CD (CD does not need to be in
RAT) writes the dispenser's SN address into the TR_Buff_Contr_Id. Accepted.
Emergency unlock.
• The CD which owns the lock is on-line: Any other CD writes the dispenser's own
SN address into the TR_Buff_Contr_Id. Rejected with NAK (Data_Ack of 2).
Incorrect emergency unlock.
Note 1: The dispenser has to monitor the heartbeats from the CD(s) owning the lock(s)
independently of the RAT (otherwise, lock “stealing” would be possible).
This section gives guidelines & recommendation for implementations of Protocol Converter
Devices (PCD) that control non IFSF Dispenser.
A Protocol Converter Device (PCD) is a hardware device that is located between non IFSF
dispensers/pumps and converts their proprietary pump protocols to the IFSF Dispenser
Application.
Please note that a PCDs may also control devices other than dispensers.
123.4
123.4
Proprietary Pump
Protocols
The PCD may have a one to one relationship with a dispenser/pump or may be capable of
controlling several dispensers. In some circumstances the PCD may actually reside physically
in the dispenser. It is also foreseen that more than one PCD may be connected to the SC/CD.
The task that a PCD has to accomplish is to successfully make the SC/CD believe that it is
communicating directly with a fully IFSF compatible device.
The PCD can not expect to receive configuration from the IFSF SC/CD as the SC/CD will not
have all the required configuration information required for a device controlling different types
of dispenser/pumps. Hence the PCD supplier will have to provide the means of configuring
their device separately.
Some PCD Parameters that will not be known by the IFSF SC/CD are:
Link between Proprietary device address and the IFSF logical (LNA) address.
Proprietary protocol used by the proprietary devices.
Default values for varies IFSF and non IFSF parameters.
Etc.
The PCD may be controlling more than one proprietary dispenser. Hence, there is a requirement
that the PCD is capable of supporting more than one logical device on one physical address.
This intern implies that the IFSF SC/CD devices must be capable of communicating with
devices that have a different physical address (PNA) to the logical address (LNA).
To allow more than one PCD to be active on the site the PCD will have to allow its physical
address (PNA) to be configured. The PCD also needs to allow the logical (LNA) address for
each of the proprietary dispensers/pumps to be set up.
A subnet address for PCDs will need to be defined in the IFSF Communication Subnet table.
The PCD must provide an IFSF communications database for each proprietary device connected
to it. This is important, as the PCD will also have to generate the IFSF heartbeats as if these
devices were native IFSF devices. Hence each device will need to have its own heartbeat
interval and recipient table.
The PCD and the IFSF SC/CD must also be aware that the heartbeat messages can be
transmitted and received from devices where the physical (PNA) and logical (LNA) addresses
may be different.
The PCD must make every effort to implement the fullest IFSF implementation possible.
However, there are some circumstances where 100% compatibility is not possible. In these
cases the PCD will have to indicate clearly to the SC/CD that a command or Data Id read or
write operation could not be carried out. The IFSF protocols have a comprehensive set of
standard reject codes that can be used to indicate why some action was not carried out.
For any command that can not be carried out the PCD can unless otherwise documented reject
the write message with a MS_ACK=5 and a Data_ACK=5 (Command not understood /
implemented) and stay in the same device state.
For any read attempt that can not be supported by the PCD, the PCD will unless documented
otherwise generate an answer message with the respective Data_Id data length set to 0.
Where a proprietary pump protocol doesn’t supply the data needed in the IFSF database the
PCD should make every attempt to generate the missing data.
It needs to be stated that a PCD can translate the proprietary pump protocols to the IFSF
Dispenser Application protocol, but will not be able to:
Change measurement or transaction data received from the proprietary pump. The data
accuracy is the responsibility of the dispenser/pump.
Support some functions when the proprietary dispenser doesn’t have the hardware to
support them i.e. where no slow flow valves are present to allow the dispenser to accurately
stop the delivery on a supplied volume or amount limit.
Where a PCD can not support a function that can be supported by a native IFSF compatible
device the PCD supplier must document this shortcomings so that customers are aware of it.