Part 3 04 Carwashv1.41
Part 3 04 Carwashv1.41
PART [Link]
CAR WASH
The content (content being images, text or any other medium contained within this document
which is eligible of copyright protection) is Copyright © IFSF Ltd 2011. All rights expressly
reserved.
You may print or download to a local hard disk extracts for your own business use.
Any other redistribution or reproduction of part or all of the contents in any form is
prohibited.
You may not, except with our express written permission, distribute to any third party.
You agree to abide by all copyright notices and restrictions attached to the content and not to
remove or alter any such notice or restriction.
Subject to the following paragraph, you may design, develop and offer for sale products which
embody the functionality described in this document.
No part of the content of this document may be claimed as the Intellectual property of any
organisation other than IFSF Ltd, and you specifically agree not to claim patent rights or other
IPR protection that relates to:
any design or part thereof that embodies the content of this document whether in whole or
part.
Document Contents
0 RECORD OF CHANGES.................................................................................................................................. 5
0 RECORD OF CHANGES
November 1.32 Amendments following IFSF Car Wash Work Group Meeting on 8 September 2003.
2003 Published as Final Draft.
- Door Control clarified in 2.1.4 State CUSTOMER ENTRY.
- DataID 12 in calculator database, value 2 added to indicate the CWP is started via a
“start” command generated from a CD.
- Identification DataID‟s (50-61) names changed to be consistent with other IFSF
specifications and IXRetail data dictionary XML tag naming convention.
- Section 5.5 contains example of CED device where a code is used to provide wash
programme authorisation. This is generalised to “authorisation display” to make it
clear the car wash interface is independent of the payment and control mechanisms.
- Section 5.6 State tables and state diagrams enhanced to show all states and values
of StandAloneAuthorisation and CodeVehicleOrder.
- Wherever possible DataID‟s change to be compliant with IXRetail data dictionary
XML tag naming convention (in most cases this means removing any abbreviations
and making camel case labels).
September 1.33 Section 3.10 changed the state column, so the state now refers to the Transaction
2005 Buffer State Diagram and not the Point State Diagram.
Section 3.11 – Error Code Data
Clarification of number of error codes to be returned.
Typo in section 3.9 Data id 40 and section 3.10 Data Id 8, CurrentWashingMode
changed to CurrentWashingCode.
Programme PG The programme is the car wash service that is sold to the
forecourt customer. It consists of a composition of washing
elements. The washing elements are packaged into a program.
An example of the use of programmes would be:
A “Base Programme” may consist of a base wash, rinse and a
single dryer pass.
A “Gold Programme” may consist of all the items in the “Base
Programme” plus an under-vehicle flush and hot wax.
Options OP An option is the car wash service that is sold a-la-carte. It
consists of one or more washing elements but is always added to
a wash programme.
An example:
A customer may purchase the “Base Programme” but may be
able to add the “Sealer Wax” option to the programme. This
allows for a forecourt to determine the marketing strategy most
useful to them.
Washing Mode - The car washing programmes and/or options could be dispensed
in different modes (cash, credit, with fill-up, etc.). This is used
in allowing different types of modes to have different pricing
structures.
An example would be:
A customer who fills up the vehicle with gasoline may get a
different price for a Programme than a customer who simply
enters the forecourt to obtain a car wash.
Stand Alone Mode - The Car Wash has a link to a Controller Device. The CWP
control (release, clear transaction) is done locally at the car wash.
Offline Mode - A Controller Device does not control the Car Wash. There is no
link to a CD.
Online Mode - A Controller Device controls the Car Wash.
CD Off-line Mode - CD is off-line when:
The CD is not in the Communication Layers‟ Recipient Address
Table
The CD is in the Communication Layers‟ Recipient Address
Table, but no heartbeat has been received in the expected time
frame (3 x Heatbeat_Interval)..
CD On-line Mode - A CD is on-line when:
The CD is entered in the Communication Layers‟ Recipient
Address Table.
A heartbeat has been received from the CD within the expected
time frame (3 x Heatbeat_Interval).
Transaction Buffer - The finished washing transaction is stored in a transaction buffer.
Recordable Transaction - A Recordable Transaction is a finished washing transaction that
must be cleared by a Controller Device.
It provides information that allows the CD to track the car wash
sales to insure correct auditing.
Zero Transaction - A Zero Transaction is a finished washing transaction where the
car wash provided no services and the amount has the value of 0.
Aborted Wash - An aborted wash is a wash that has not been completed. For
some reason the wash has been terminated or an error has
occurred.
Major Error - A major error will always lead to the inoperative state.
Minor Error - A minor error is an error that is recorded and does not lead to a
state change.
Logical Node Address LNA The LNA is the address that identifies a device on the IFSF
network. The LNA consists of two bytes (Subnet & Node
Address).
Please reference the IFSF document "PART II,
COMMUNICATION SPECIFICATION", for more details.
STATE DESCRIPTION
EVENT DESCRIPTION
"EVENT-NAME" A short description of the event. Used to describe to which new state the washing
point has moved to, once all the actions are completed.
--> Action: Input action description in terms of control and data flows
between the CD and the CWP.
Action -->: Output action description in terms of control and data flows
between the CWP and the CD.
The data elements that are sent by the control and data flows are described in
chapter 3 "Car Wash Database".
Any change in the "Car Washing Point State" or the "Transaction Buffer State” is
sent as an unsolicited message from the CWP 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").
The arrows between the states are labelled with the event name or names that causes
the CWP to change from one state to another. The arrowhead indicates the direction
of state transfer.
Some car washes have a door which must be first opened. Prior to version 1.30 the
application protocol did not support the case when the door of the car wash bay is
closed when the customer arrives.
StandAloneAuthorisation =0 StandAloneAuthorisation
=1
Mode 1A Mode 1B
CodeVehicleOrder=0 Automatic start Manual start
Vehicle positioned first Vehicle Bositioned first
Mode 2A Mode 2B
CodeVehicleOrder=1 Automatic start Manual start
Authorisation first Authorisation first
1 2 3 4 5 6 7 8 9
State Inoperative Closed Idle Customer Authorised Washing Suspended Done Maint-
Entry Washing Washing enance
Event
Operative 2
Unable 1
Open 3
Close 2
Customer_Present 4
No_Customer 3
Start 5 6
Ready 3
Exit_Maint_Mode 1
Enter_Maint_Mode 9 9
Release 4 5
Self_Auth 5
Auth_Time_Out 4
Block 4
Resume 6
Suspend 7
Washing_Error 7
Finished 8
Wash_Time_Out 8
Terminate 8 8 8 8 3
Minor_Error 1 2 3 4 5 6 7 8 9
Major_Error 1 1 1 1 1 1 1 1 1
Error_Cleared 6
STATE DESCRIPTION
INOPERATIVE The CWP is in the INOPERATIVE state when it is not possible to open the
CWP. The reason for this is that essential configuration data is missing or an
error has been detected.
The CWP will also be in the INOPERATIVE state during the changing of
essential data (e.g. software download).
This is the state that the CWP initially enters upon resetting or power-up.
Note: A recordable transaction may exist. This would happen if a major error
happened in a state where there was an open transaction.
EVENT DESCRIPTION
"OPERATIVE" This event is implemented when the CWP has been configured with the
essential data to operate and no errors have been detected, the CWP goes to
CLOSED.
Action -->: The CWP state change is sent as an unsolicited data array
[CWPStatusMessage].
"ENTER_MAINT_MODE" This event is implemented when it is necessary to perform maintenance of the
system. The CWP goes to MAINTENANCE.
--> Action: The CWP receives the [Enter_Maint_Mode] command.
Action -->: The CWP state change is sent as an unsolicited data array
[CWPStatusMessage].
“MAJOR_ERROR” If a major error event occurs the CWP stays in the INOPERATIVE state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
“MINOR_ERROR” If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
STATE DESCRIPTION
CLOSED The CWP is completely configured and no major error has been detected.
The CWP is waiting to be opened by a CD or manually by the car wash operator.
This state may be used to temporarily shut down the CWP.
The CWP may be taken to MAINTENANCE from this state. This will allow a
maintenance person to perform maintenance without requiring the system to go
INOPERATIVE. This is important if the maintenance person needs the CWP to
be able to communicate to the CD during maintenance.
The CWP must respond to all communications from controller devices.
Note: Recordable transactions may exist.
EVENT DESCRIPTION
"UNABLE" During configuration, changing essential parameter or a data download the CWP
is not able to work. During this time the CWP's state changes to INOPER-
ATIVE.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"ENTER_MAINT_MODE" This event is implemented when it is necessary to perform maintenance of the
system. The CWP goes to MAINTENANCE.
--> Action: The CWP receives the [Enter_Maint_Mode] command.
Action -->: The CWP state change is sent as an unsolicited data array
[CWPStatusMessage].
"OPEN" The CWP will become available to the customer. An open command moves the
CWP into the IDLE state. The open command could be sent by the CD or
optionally manually done at the car wash by the operator (configured by the
contents of the data element AuthorisationStateMode).
--> Action: The CWP receives the [Open] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP moves into the INOPERATIVE state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage]. The CWP state change is send as
an unsolicited data array [CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
STATE DESCRIPTION
"CUSTOMER_PRESENT" A car wash in Mode 1 generates this event internally when a vehicle (customer)
is present at the CWP. A rollover machine determines this by a vehicle being
moved into the washing bay. This event is generated internally by the Car Wash
when both the internal checks and inter-locks of the car wash AND the vehicle
is present and positioned correctly.
Customer_Present 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 NumberOfTransactionBufferNotRecorded.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"RELEASE" This event occurs when the car wash is in Mode 2 and a customer has entered an
authorisation code that has been validated and accepted into the wash machine.
The door is closed and the customer enters his code to open the door and
authorise the subsequent wash transaction.
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
NumberOfTransactionBufferNotRecorded.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"CLOSE" The CWP will be closed down and the CWP moves into the CLOSED state.
The CWP is no longer available to the customer.
The close command could be sent by the CD or optionally manually done at the
car wash by the operator (configured by the contents of the data element
AuthorisationStateMode).
This may be used to temporarily shut down the CWP when business is slack.
--> Action: The CWP receives a [Close] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP moves into the INOPERATIVE state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
STATE DESCRIPTION
CUSTOMER ENTRY The CWP is interfacing with the customer. This may be a single action process or
may be a repeating process involving multiple steps to allow the customer to select
a Programme. This can be:
The system is prompting the customer to enter a code number.
The system is allowing the customer to select options to the wash Programme.
The system is accepting money for upgraded services.
The customer may be identifying that they have a car wash account.
In this state the CWP may require authorisation for upgrading or insuring that a
Programme is not restricted.
The customer may not exit to WASHING without a valid Programme.
NOTE: On entry into CUSTOMER_ENTRY a transaction is initially opened.
EVENT DESCRIPTION
"RELEASE" This event occurs when the car wash is in Mode 1 and a customer has entered an
authorisation code that has been validated and accepted into the wash machine. Note
the vehicle is already positioned correctly and all internal safety checks of the CW
completed.
The CWP receives a release command from an external CD.
--> Action: The CWP receives a [Release] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"START" This event occurs when the car wash is in Mode 2A. The wash has been released
and the customer manoeuvres his vehicle into the bay. This event is generated
internally by the Car Wash when the internal checks and inter-locks of the car wash
AND the vehicle is present and positioned correctly.
In mode 2A this internal event starts the CWP directly. This also may be used in
off-line mode to allow the CWP to continue to function with the CD not on-line.
The CWP moves to state WASHING via state AUTHORISED
--> Action: The CWP internally generates the [Start] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"SELF_AUTH" This event occurs when the car wash is in Mode 2B and a customer has entered an
“authorisation” that has been validated and accepted into the wash machine. When
the door is open (or not present) and the vehicle is already positioned correctly, and
all internal safety checks of the CW completed, the car wash programme is self-
authorised. If a door is present and it is closed, then the CW opens the door and
waits until the vehicle is correctly positioned. In either case the CWP moves to state
AUTHORISED. In the former case the CWP remains in state CUSTOMER
ENTRY for a very short period of time. The CWP is then held in AUTHORISED
state until a separate START button is pressed (or a “start” command from a CD is
received) to start the wash once the customer leaves the vehicle and moves to a
secure location.
This command may also be used in off-line mode to allow the CWP to continue to
function whilst the CD is not on-line.
The CWP internally generates a [self_auth] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"TERMINATE" The CWP is forced to the DONE WASHING state. An example of a terminate
may be the CD instructing the CWP to terminate because there is a problem on the
site.
--> Action: The CWP receives a [Terminate] command.
Action -->: The status change is send as an unsolicited data array
[CWPStatusMessage].
"NO_CUSTOMER" The customer that was using the CWP is no longer there. This is an internal event to
the CWP.
An example would be a customer that pulls into the CWP, enters a code and then
realises that the vehicle‟s window will not go up. The customer must exit the wash
and the CWP recognises the NO_CUSTOMER. Before triggering the event the
current state must send the transaction to the buffer.
If a transaction is in process the CWP must store it to the transaction buffer before
exiting.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP moves into the INOPERATIVE the.
If a transaction is in process the CWP must store it to the transaction buffer before
exiting.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
STATE DESCRIPTION
AUTHORISED The CWP has a vehicle and has been released by the CD or has self-authorised.
This state waits until a customer has pressed a start key. This car wash operating
mode 2B.
The customer has entered a wash code in state CUSTOMER ENTRY, the CD
checks the code and sends that the customer is to obtain wash programme 1. The
CD then sends a release command. The CWP performs a self-authorise,
independently of the CD when the vehicle is correctly positioned and the car wash
is ready. The CWP goes to AUTHORISED.
The CWP then performs all required equipment checks and waits for the customer
to press a Start button. When the button is pressed the start event is performed and
the state goes to WASHING.
NOTE: Coming into this state the timer for the maximum authorisation time is
started if one exists inside the car wash device.
EVENT DESCRIPTION
"START" The customer starts the car wash and the CWP moves into state WASHING. The
CWP will move to WASHING after all internal CWP conditions are correct (e.g.
correct car position, equipment checks, active programme, etc.).
The start event is completely controlled by the CWP.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"BLOCK” A CD sends a block command to block the CWP from starting the wash.
This would be typical of a system where the customer is authorised for programme
#1 but inserts money into a bank note acceptor. The bank note acceptor may block
the CWP until the money is inserted and then it will update the CWP database with
a new authorised amount and then release the CWP again.
--> Action: The CWP receives the [Release] command.
Action -->: The CWP sends the unsolicited data array [CWPStatusMessage].
"AUTH_TIME_OUT" If a Car wash has implemented a maximum authorisation time this event occurs
when Max_Auth_Time expires.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
Action -->: The CWP sends an unsolicited data array
[CWPErrorTypeMessage] with minor error „Auth_Time_Out‟.
"TERMINATE" The CWP is forced to move to the DONE WASHING state.
--> Action: The CWP receives the [Terminate] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP moves into the INOPERATIVE state.
If a transaction is in process the CWP must store it to the transaction buffer before
exiting.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
STATE DESCRIPTION
WASHING This state is when the customer‟s vehicle is being washed. This is activated only
after a valid Programme and the customer has entered programme options.
Coming into this state the timer for the maximum washing time [Max_Wash_Time]
is started if the car wash supports this feature.
EVENT DESCRIPTION
"SUSPEND" This CWP receives a suspend command and the CWP moves to the SUSPENDED
WASHING state.
--> Action: The CWP receives the [Suspend] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"WASHING_ERROR" The CWP internally generates a washing error. This would typically be an event that
is important to flag as an error but that the system believes can be fixed quickly
without causing the customer to do anything.
An example may be that the washing machine safety strip was bumped. The CWP
could go into SUSPENDED WASHING; the system could stop moving and
correct the problem then go back to WASHING.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"WASH_TIME_OUT" The CWP‟s state timer has expired. The CWP then moves to the DONE
WASHING state. This event is generated internally within the CWP itself.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"FINISHED" This event occurs when a CWP has successfully completed washing the customer‟s
vehicle.
Before exiting the open transaction should be marked as successful. This is done by
updating the transaction data element AuthorisationStateMode.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"TERMINATE" The CWP is forced to move to the DONE WASHING state.
--> Action: The CWP receives the [Terminate] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP moves into the INOPERATIVE state.
If a transaction is in process the CWP must store it to the transaction buffer before
exiting.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
STATE DESCRIPTION
December 2011 IFSF - STANDARD FORECOURT PROTOCOL Version 1.41
CAR WASH SPECIFICATION
SUSPENDED The washing of the vehicle has been suspended by the CWP. This state is used for
WASHING short-term suspension until a situation can be cleared.
An example may be that the washing machine safety strip was bumped while in the
WASHING state. The CWP could go into SUSPENDED WASHING, the system
could stop moving and correct the problem then go back to WASHING
EVENT DESCRIPTION
"RESUME" This event can be created by the CWP being able to go back into the WASHING
state and a CD sending a resume command.
When the CWP is resumed the same transaction continues from where it was
paused, the state changes to the WASHING state.
In the case of stand-alone mode devices, an internal event, independent of the CD,
can initiate a RESUME event. This allows for immediate resumption under the
local authority of an attendant without the need for them to return to the kiosk.
--> Action: The CWP receives the [RESUME] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"TERMINATE" The CWP is forced to move to the DONE WASHING state.
--> Action: The CWP receives the [Terminate] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"ERROR_CLEARED" This event can be internally created by the CWP being able to go back into the
WASHING state after it has cleared the WASHING_ERROR..
When the CWP is resumed the same transaction continues from where it was
paused, the state changes to the WASHING state.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP moves to the INOPERATIVE state. If a
transaction is in process the CWP must store it to the transaction buffer before
exiting.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
STATE DESCRIPTION
DONE WASHING This state is used to handle the processing required at the completion of the washing
sequence. Typically this state is entered after a vehicle has been successfully
washed and the transaction must be sent to the transaction buffers.
The state also is used to handle transactions associated with terminate commands
received with a transaction being open.
EVENT DESCRIPTION
"READY" This event is implemented when the CWP has successfully marked a transaction as
recordable and is now ready to allow another customer to begin the wash process.
This also is implemented after the CWP has made sure that all internal equipment
checks are satisfied.
Prior to this event all meters must be updated. The transaction is stored in the
transaction buffer and the CWP moves to the IDLE state.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP state change is send as an unsolicited data array [CWPStatusMessage].
"TERMINATE" The CWP receives a terminate command for whatever reason and the CWP moves
into the IDLE state.
The transaction is stored in the transaction buffer and the CWP moves to the IDLE
state.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
--> Action: The CWP receives the [Terminate] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"SUSPEND" The CWP automatically enters the SUSPENDED WASHING state following
DONE WASHING, to allow the user to insert a further coin or token to obtain extra
wash time. If further coins/tokens are inserted then the WASHING state is entered,
otherwise the DONE WASHING state is returned to after a timeout period.
These actions are handled internally and do not require intervention from the CD.
"MAJOR-ERROR" If a major error event occurs the CWP must store the transaction in the transaction
buffer (it must include the error code that caused the transaction to be terminated).
The CWP moves to the INOPERATIVE state.
If a transaction is in process the CWP must store it to the transaction buffer before
exiting.
If a "zero transaction" is required (dictated by the contents of the data element
ZeroTransactionMode") the transaction with a zero value must be stored in the
transaction buffer.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data [CWPErrorTypeMessage].
STATE DESCRIPTION
MAINTENANCE This state is used by the CWP to perform maintenance to the system. Typically
this is used by the equipment suppliers service technicians to perform service on
the machine.
Note that MAINTENANCE mode is a mode in which the car wash either cannot
be used, for physical reasons, or in which it is unsafe for it to be used. One
solution to this problem is to have a facility for a local request to enter
MAINTENANCE mode. The CD would then put the car wash into the CLOSED
or INOPERATIVE states at the first opportunity and then indicate the state
locally on the car wash. The CD must not change the state of the car wash to
INOPERATIVE (the only state possible after MAINTENANCE) until the local
request for the maintenance mode has been removed (perhaps by the use of a
physical key).
EVENT DESCRIPTION
"EXIT_MAINT_MODE" When the technician is done servicing the machine the CD will send the
exit_maint_mode command. The CWP will then go into state INOPERATIVE.
--> Action: The CWP receives the [EXIT_MAINT_MODE] command.
Action -->: The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MAJOR-ERROR" If a major error event occurs the CWP must store the transaction in the
transaction buffer (it must include the error code). The CWP moves to the
INOPERATIVE state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
The CWP state change is send as an unsolicited data array
[CWPStatusMessage].
"MINOR-ERROR" If a minor error event occurs the CWP does not change the state.
Action -->: The CWP sends the unsolicited data
[CWPErrorTypeMessage].
New
CLEAR Recordable
Transaction
CLEAR
RECORDABLE
TRANSACTION [2]
New
LOCK UNLOCK Locked
Transaction
LOCKED [3]
TRANSACTION
STATE DESCRIPTION
BUFFER EMPTY This particular transaction buffer is available for the next washing transaction.
The CD has access to the previous transaction data (configured by the contents
of the data element NumberOfHistoricTransactions).
EVENT DESCRIPTION
"NEW Transactions can only be stored as “New Transaction” when the car wash is
TRANSACTION" operating in Standalone mode.
The customer has finished the washing. The transaction must be stored in a
cleared transaction buffer. The transaction buffer with the oldest transaction
data is used to store the new recordable washing.
The transaction buffer state moves to state [1] BUFFER EMPTY.
Action -->: The CWP sends the transaction buffer state change as an
unsolicited data array [TransactionBufferStatusMessage].
STATE DESCRIPTION
RECORDABLE The customer has finished the washing and in the particular transaction buffer is
TRANSACTION now a recordable transaction.
EVENT DESCRIPTION
"NEW RECORDABLE The customer has finished the washing. The transaction must be stored in a
TRANSACTION" cleared transaction buffer. The transaction buffer with the oldest transaction
data is used to store the new recordable washing.
The transaction buffer state moves to state [2] RECORDABLE
TRANSACTION.
Action -->: The CWP sends the transaction buffer state change as an
unsolicited data array [TransactionBufferStatusMessage].
"CLEAR" The CWP receives a clear command indicating that the transaction buffer is
available for a new washing and that the transaction details were read. The
transaction buffer state moves to state [1] BUFFER EMPTY.
If the CWP runs in "stand alone" mode the transaction data is totalised and the
buffer is cleared automatically. The transaction buffer state moves to the BUFFER
EMPTY state.
--> Action: The CWP receives a [Clear_Transaction] command.
Action -->: The transaction buffer state change is send as an unsolicited data
array [TransactionBufferStatusMessage].
"LOCK" The CWP receives a command to reserve the recordable transaction in this
particular transaction buffer. Only the “locking” CD can clear the washing
transaction.
The transaction buffer state moves to the LOCKED TRANSACTION state.
--> Action: The CWP receives the data [TransactionBufferControlID].
Action -->: The transaction buffer state change is send as an unsolicited data
array [TransactionBufferStatusMessage].
STATE DESCRIPTION
LOCKED TRANSAC- A CD reserves the recordable transaction. No other CD can clear this transaction
TION data (see exception in the “UNLOCK” description).
EVENT DESCRIPTION
"NEW LOCKED The customer has finished the washing. The transaction must be stored in a
TRANSACTION" cleared transaction buffer. The transaction buffer with the oldest transaction
data is used to store the new recordable washing.
The transaction buffer state moves to state [3] LOCKED TRANSACTION.
Action -->: The CWP sends the transaction buffer state change as an
unsolicited data array [TransactionBufferStatusMessage].
"CLEAR" The CWP receives a clear command indicating that the transaction buffer is
available for a new washing. The transaction buffer state moves to state [1]
BUFFER EMPTY.
--> Action: The CWP receives a [Clear_Transaction] command.
Action -->: The transaction buffer state change is send as an unsolicited data
array [TransactionBufferStatusMessage].
"UNLOCK" If the CD has locked the wrong recordable transaction it is possible to unlock it. The
CD that locked it can only unlock a transaction.
No known use of the following functionality as of 29/1/08. Should not be used in
future implementations.
“A special exception exists, where the CD that locked the transaction is not able to
unlock it or clear it due to a fatal error. In this case any CD that generates a Unlock
command with the Originator Subnet set to 0 and the Originator Node set to 0 may
unlock the transaction”.
The transaction buffer state moves back to the RECORDABLE TRANSACTION
state.
--> Action: The CWP receives the data [TransactionBufferControlID].
Action -->: The transaction buffer state change is send as an unsolicited data
array [TransactionBufferStatusMessage].
DATABASE
DB_Ad =
The DataID is a 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.
The field types in column three are described in IFSF Engineering Bulletin No. 11.
The "Read/Write in State" column indicates if the related data can be Read and/or Written by
any device and in which CWP state (states are indicated between brackets).
The M/O column (Mandatory/Optional) indicates if the data element must be supported /
implemented by the CWP‟s and any CD controlling Washing 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.
CALCULATOR DATABASE
DB_Ad = C_DAT (01H)
CONFIGURATION DATA
2 NumberOfProgrammes bin8 R(1-9) M
(02H) Number of wash programmes defined. (1-15) W(1-2)
0 = not configured
n = number of programmes
Please note that CW’s that do not permit the
NumberOfProgrammes to be changed remotely should:
- Reject any write attempts with a Data_ACK value of 2
(Read Only/Not Writable).
- Must set the NumberOfProgrammes to the value of
products that is hard coded in their program.
When a master reset/cold start occurs on the CW it must
reset this DataID to its default value.
3 NumberOfWashingModes bin8 R(1-9) M
(03H) Number of washing modes defined (Default =1). (1-8) W(1-2)
0 = not configured
n = number of washing modes
Please note that CW’s that do not permit the
NumberOfWashingModes to be changed remotely should:
- Reject any write attempts with a Data_ACK value of 2
(Read Only/Not Writable).
- Must set the NumberOfWashingModes to the value of
washing modes that is hard coded in their program.
When a master reset/cold start occurs on the CW it must
reset this DataID to its default value.
LIMIT DATA
USAGE DATA
31 TotalUsage LONG_VO R(1-9) M
(1F) Non-resettable total of all of the washes for all CWP’s. LUME
This is should equal the totals for all programmes, for all
car washing points.
NOTE: This total should include all aborted washes.
32 AbortedUsage LONG_VO R(1-9) O
(20H) Non-resettable total of all aborted of the washes for all LUME
CWP’s.
33 MaintenanceUsage LONG_VO R(1-9) O
(21H) Non-resettable total of all maintenance washes for all LUME
CWP’s.
34 ElectricalUsage LONG_VO R(1-9) O
(22H) Non-resettable flow total of electrical usage of the car LUME
wash.
NOTE: The unit is kWh and the increment is 0.1kWh.
35 WaterUsage LONG_VO R(1-9) O
(23H) Non-resettable flow total of water usage of the car wash. LUME
3
NOTE: The increment is to be 0.01 m
IDENTIFICATION DATA
CONFIGURATION
1 MeterType bin8 R(1-9) M
(01H) Specifies the meter type e.g. (0-16)
0 = Cash
December 2011 IFSF - STANDARD FORECOURT PROTOCOL Version 1.41
CAR WASH SPECIFICATION
METER DATABASE
Programme Meters DB_Ad = PG_ID (81H – 8FH)
Option Meters DB_Ad = OP_ID (91H – 9FH)
Note.
MeterConfigured is used to determine whether this meter is included when a request to read
all meters is received. When a meter is configured this must be set to 1 (include).
Examples:
Assuming a Car Wash only supports 3 Programme meters (81H, 82H & 83H) and for meters
81H and 83H the MeterConfigured attribute is set to “1” meaning they are to be included
when all meters are read. The remainder are set to “0”.
(a) To read the MeterType for Programme meter 1 (81H), the following must be sent
0A01 0201 00 01 0003 01 81 01
the reply is
0201 0A01 00 21 0005 01 81 01 01 00
(b) To read the MeterType for Programme meter 2 (82H), the following must be sent
0A01 0201 00 01 0003 01 82 01
the reply is
0201 0A01 00 21 0005 01 82 01 01 00
(c) To read the MeterType for all Programme meters, the following must be sent
0A01 0201 00 01 0003 01 80 01
the reply is
0201 0A01 00 21 0005 01 81 01 01 00
0201 0A01 00 21 0005 01 83 01 01 00
0201 0A01 00 E1 0003 01 80 00
The same applies for Option meters.
When the number of meters is in the range of 16 to 255, all the meter data must be put in the
extended meter database. If the number of meters is in the range 1 to 15 either the meter or
extended meter database format can be used.
CONFIGURATION
1 MeterType bin8 R(1-9) M
(01H) (0-16)
Specifies the meter type e.g.
0 = Cash
1 = Timer
2 = Counter
2 MeterConfigured bin8 R(1-9) O
(02H) (0-1) W(1-9)
Specifies whether the meter is included when a request to
read all meters is received:
0 = do not include
1 = do include (default)
Note: If an implementation does not support this DataID then
the meter should be included.
3 MeterName asc32 R(1-9) M
(03H) W(1-2)
Specifies the Name of the meter
e.g. Coin A
Programme 1
Total Water Usage
4 MeterSize bin8 R(1-9) M
(04H) (1-12)
Specifies the number of significant BCD digits in the
MeterTotal DataID.
5 MeterUnits asc8 R(1-9) M
(05H)
Specifies the units of the meter
e.g. £, DM, FF, $, minutes, seconds, litres
TOTAL
20 MeterTotal LONG_AM R(1-9) M
(14H) OUNT
Non-resetable total for a meter. The totals are permanently
updated during the washing transaction.
NOTE: Meters are updated by each CWP at the time of
Note.
MeterConfigured is used to determine whether this meter is included when a request to read
all meters is received. When a meter is configured this must be set to 1 (include).
Examples:
(a) To read the MeterType for extended Programme meter 1 (80H + 01H), the following
must be sent
0A01 0201 00 01 0004 02 80 01 01
the reply is
0201 0A01 00 21 0006 02 80 01 01 01 00
(b) To read the MeterType for all extended Programme meters, the following must be sent
0A01 0201 00 01 0004 02 80 00 01
the reply is
0201 0A01 00 21 0006 02 80 01 01 01 00
0201 0A01 00 21 0006 02 80 02 01 01 00
etc to
0201 0A01 00 21 0006 02 80 FF 01 01 00
0201 0A01 00 E1 0004 02 80 00 00
The same applies for Option meters.
The access to this data is defined by the PG_ID address (programme identifier). This address
key is used for internal links between databases (programme, meters).
The PG_ID = 40H is used to ask for all programmes.
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).
PROGRAMME DATABASE
DB_Ad = PG_ID (41H-4FH)
CONFIGURATION
2 ProgrammeElements bin64 R(1-9) M
(02H) W(1-2)
The ProgrammeElements is assign by the CD during the
system configuration and is used to configure the washing
elements that are to be included for this programme. This
is a 64-bit string applied as a bit mask to enable or disable
various programme elements.
NOTE: Refer to section 6 for a table of all defined
washing elements.
3 ProgrammeDescription asc16 R(1-9) O
(03H) W(1-2)
Specifies the description for the programme.
OPTION DATABASE
DB_Ad = OP_ID (51H-5FH)
CONFIGURATION
2 OptionElements bin64 R(1-9) O
(02H) W(1-2)
The OptionElements is assign by the CD during the system
configuration and is used to configure the wash elements
that are to be included for this option.
NOTE: Refer to section 6 for a table of all defined
washing elements.
3 OptionDescription asc16 R(1-9) O
(03H) W(1-2)
Specifies the product description for the option.
CONFIGURATION
1 WashingModeName asc8 R(1-9) O
(01H) W(1-2)
Specifies the Washing mode name. This eight-character
string can be used to give information to the car wash
user.
CONFIGURATION
1 WashingModeName asc8 R(1-9) O
(01H) W(1-2)
Specifies the Washing mode name.
2 OptionPrice UNIT_PRI R(1-9) O
(02H) CE W(1-9)
Specifies the option/washing mode's Unit Price.
Please note that a write can occur to this DataID in any
state. However, the new value will only become active
when the CWP next goes into states 1 to 3.
CONFIGURATION
1 CarWashPointName asc8 R(1-9) O
(01H) W(1-2)
Allows associating a name or number to the Washing
Point.
2 NumberOfTransactionBufferNotRecorded bin8 R(1-9) M
(02H) (1-4) W(1-2)
Specifies the number of non recorded transactions (not
cleared by the CD) that may be stored by each CWP.
The acceptable range is 1 to 4.
0 = not configured
If a write action occurs to this DataID with a value
greater than can be supported by the car wash, the car
wash should reject the message with a Data_ACK value
of 1 (Invalid value (too big/small)).
3 NumberOfHistoricTransactions bin8 R(1-9) M
(03H) (0-7) W(1-2)
Specifies the number of cleared transactions that can be
stored in the CWP. Always the latest transactions are
available (first in, first out).
0 = no historic transaction data stored
If a write action occurs to this DataID with a value
greater than can be supported by the car wash, the car
wash should reject the message with a Data_ACK value
of 1 (Invalid value (too big/small)).
CONTROL DATA
20 State bin8 R(1-9) M
(14H) (1-9)
Used to indicate the state of the CWP. Please see the
Car Washing Point State Diagram for details of the
individual states (chapter 2.1 of this document).
An unsolicited message (DataID 100) is generated by the
CWP for each change in the CWP state. When a CD
tries to change the state of a CWP when a state change
is not allowed then the CWP should reject the attempt
with MS_ACK 05 and DATA_ACK 03 (command
refused in this state).
21 CWPActiveElements bin64 R(6-7) O
(15H)
Used to indicate element(s) of the CWP are active.
This data field would be updated by the CWP as it is
progressing through the wash elements.
22 AssignControlID bin16 R(1-9) M
(16H) W(2-4)
Used to indicate if and to whom the CWP has been
assigned. Only an authorisation coming from this
controller is accepted.
A Logical Node Address (LNA) is used for the
AssignControlID. The LNA is specified by 2 bytes (S =
Subnet, N = Node). For details see document "Part II,
Communication Specification".
0,0 = not assigned,
X,Y = Controller Device that assigned the CWP (X =
Subnet, Y = Node),
255,255 = CWP running in stand alone mode.
See section 5.7 Handling of Assignment Clearing and
Unlocking.
An unsolicited message (DataID 100) is generated by the
CWP for each change in the CWP’s assignment.
CWP CONTROL
60 Open CMD W(2) M
(3CH)
To open a closed CWP.
Please note that an Unsolicited CWPStatusMessage
(DataID 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.
Please note that an acknowledgement to this command
implies that the CWP State has changed to the open state
(see Chapter 5).
61 Close CMD W(3) M
(3DH)
To close a CWP.
Please note that an Unsolicited CWPStatusMessage
(DataID 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.
62 Release CMD W(3 or 4) M
(3EH)
Authorise or pre-authorise to start a transaction. The
releasing CD identifier is stored separately from this
command in the ReleaseControlID(Data ID 30).
Please note that an Unsolicited CWPStatusMessage
(DataID 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.
Mode 1A & 1B W(4)
Mode 2A, 2B1 & 2B2 W(3)
63 Terminate CMD W(4-8) M
(3FH)
Terminate the running transaction.
Please note that an Unsolicited CWPStatusMessage
(DataID 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.
UNSOLICITED DATA
TRANSACTION DATA
TRANSACTION COMMAND
30 Clear_Transaction CMD W(2,3) M
(1EH)
To clear a recordable washing 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.
UNSOLICITED DATA
100 TransactionBufferStatusMessage bcd4, M
(64H) A TransactionBufferStatusMessage must be sent bin8,
unsolicited (without acknowledge) when ever the status of bin16
a transaction buffer has changed (transaction is created,
locked, unlocked or cleared) or whenever the state cannot
be changed following request by the CD to change state.
ERROR DATA
1 CWPErrorType 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.
A list of all errors is at the end of this table. An
unsolicited message is generated by the CWP when a
major or minor error occurs.
2 CWPErrorDescription asc20 R(1-9) O
(02H) Description of the error. W(1-2)
UNSOLICITED DATA
100 CWPErrorTypeMessage bin8, M
(64H) A CWPErrorTypeMessage message must sent unsolicited bin8
(without acknowledge) when ever a the error occurs.
This message includes the following data:
- CWPErrorType (DataID = 1)
- CWPErrorState (DataID = 5)
For example:
For an CWPErrorType of 03H and CWPErrorState of
01H the following error message would be generated (in
HEX)
0C 03 21 41 03 64 00 01 01 03 05 01 01
The errors have different priorities. In the following table the classification is done. For
details in the behaviour of the CWP see chapter 2 (Washing Point Behaviour Model).
22H-23H Spare
Washing Errors 24H Authorised Time Out
25H Washing Time Out
26H No Progress
27H Limit Reached
28H Other Washing Error
29H-2CH Spare
State Error 2DH State error 1: CWP is in state INOPERATIVE
2EH State error 2: CWP is in state CLOSED
2FH State error 3: CWP is already opened
30H State error 4:
31H State error 5:
32H State error 6:
33H-37H Spare
Manufacturer Specific 38-40H Spare
that does not cause a state change (e.g. read or write of database field). Please see the
diagram/example below showing the required steps.
The four combinations are described below, with resepct to the customer displayed
text messages on the “authorisation” man machine interface (e.g. the CED) and the
state changes of the CWP.
Figure 2.1.1 is overly complicated since it shows all modes of operation on the same
diagram. This diagram can be simplified considerably for any specific mode.
IDLE
CUSTOMER_PRESENT
NO_CUSTOMER
NO_CUSTOMER
CUSTOMER
ENTRY
RELEASE. BLOCK
AUTH_TIME_OUT
AUTHORISED
START
WASHING
IDLE
CUSTOMER_PRESENT
NO_CUSTOMER
CUSTOMER
ENTRY
RELEASE
BLOCK
AUTH_TIME_OUT
AUTHORISED
START
WASHING
IDLE
RELEASE
NO_CUSTOMER
CUSTOMER
ENTRY
START BLOCK
AUTH_TIME_OUT
AUTHORISED
START
WASHING
IDLE
RELEASE
NO_CUSTOMER
CUSTOMER
ENTRY
SELF_AUTH
BLOCK
AUTH_TIME_OUT
AUTHORISED
START
WASHING
Figure 2.1.3 is overly complicated since it shows all modes of operation on the same
table. This table can be simplified considerably for any specific mode.
Mode 1A:
3 4
State Idle Customer Entry
Event
Customer_Present 4
No_Customer 3
Release 6 (via 5)
Mode 1B:
3 4 5
State Idle CustomerEntry Authorised
Event
Customer_Present 4
No_Customer 3
Self_Auth 5
Start 6
Auth_Time_Out 4
Block 4
Mode 2A:
3 4
State Idle CustomerEntry
Event
Release 4
No_Customer 3
Start 6 via 5
Mode 2B:
3 4 5
State Idle CustomerEntry Authorised
Event
Release 4
No_Customer 3
Self_Auth 5
Start 6
Auth_Time_Out 4
Block 4
In cases, where the CD that assigned the CWP 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 Car Wash‟s own application Subnet & Node.
The Car Wash 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 Car Wash 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. TransactionBufferControlID equals 0000 (not locked):
Any CD can set TransactionBufferControlID out of 0000 by sending a Lock
command.
d. TransactionBufferControlID does not equal 0000 (locked to a particular CD):
The CD which owns the lock sends Unlock command. Car Wash sets
TransactionBufferControlID to 0000. Accepted. Normal unlock.
The CD which owns the lock writes Car Wash's own SN address to
TransactionBufferControlID. 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 Car Wash's SN address into the TransactionBufferControlID.
Accepted. Emergency unlock.
The CD which owns the lock is on-line: Any other CD writes the Car Wash's own
SN address into the TransactionBufferControlID. Rejected with NAK (Data_Ack
of 2). Incorrect emergency unlock.
Note 1: The Car Wash has to monitor the heartbeats from the CD(s) owning the lock(s)
independently of the RAT (otherwise, lock “stealing” would be possible).