KROHNE UFC500 User Manual

5 (1)
System Technology
TM
HART
UFC500 Ultrasonic Flowmeter
Transmitter-Specific Command Specification
Communication Instructions for UFC 500
Revision #2
INITIAL RELEASE: April, 2, 1997
CURRENT RELEASE: July, 9, 2001
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
CONTENTS
CONTENTS 2
1. REFERENCED DOCUMENTS 5
2. EXPANDED DEVICE TYPE CODE 5
3. UFC500 CONFORMANCE AND COMMAND CLASS SUMMARY 6
4. ADDITIONAL RESPONSE CODE INFORMATION 8
4.1 Busy 8
4.2 Transmitter-Specific Command Error 8
4.3 Configuration Changed 8
4.4 More Status Available 8
4.5 Primary Variable Analog Output Fixed 8
4.6 Primary Variable Analog Output Saturated 8
4.7 Primary Variable Out Of Li mits 9
5. GENERAL TRANSMITTER INFORMATION 10
5.1 Inputs/Outputs And Dynamic/Transmitter Variables 10
5.2 Damping Implementation 10
5.3 Nonvolatile Memory Data Storage 10
5.4 Multidrop Mode 10
5.5 Burst Mode 10
6. ADDITIONAL UNIVERSAL COMMAND SPECIFICATIONS 11
6.1 Command #0 Read Unique Identifier 11
6.2 Command #2 Read P.V. Current And Percent Of Range 11
6.3 Command #6 Write Polling Address 11
6.4 Command #14 Read Primary Variable Sensor Information 11
6.5 Command #15 Read Primary Variable Output Information 11
7. ADDITIONAL COMMON-PRACTICE COMMAND SPECIFICATIONS 12
7.1 Command #33 Read Transmitter Variables 12
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 2
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
7.2 Command #34 Write Primary Variable Damping Value 12
7.3 Command #35 Write Primary Variable Range Values 12
7.4 Command #44 Write Primary Variable Units 12
7.5 Command #48 Read Additional Transmitter Status 13
7.6 Command #50 Read Dynamic Variables Assignments 13
7.7 Command #53 Write Transmitter Variable Units 13
7.8 Command #60 Read Analog Output And Percent Of Range 14
7.9 Command #66 Enter/Exit Fixed Analog Output Mode 14
8. TRANSMITTER-SPECIFIC COMMANDS 15
8.1 Command #130 Read Meter Size 15
8.2 Command #131 Write Meter Size 16
8.3 Command #132 Read Frequency/Pulse Output Damping Control 17
8.4 Command #133 Write Frequency/Pulse Output Damping Control 18
8.5 Command #134 Read Analog Output Low Flow Cutoff Control And Values 19
8.6 Command #135 Write Analog Output Low Flow Cutoff Control And Values 20
8.7 Command #137 Reset Totalizers 21
8.8 Command #138 Read Analog Output Function 22
8.9 Command #139 Write Analog Output Function 23
8.10 Command #140 Read Current Output Parameters 25
8.11 Command #141 Write Current Output Parameters 26
8.12 Command #142 Read Frequency/Pulse Output Parameters 27
8.13 Command #143 Write Frequency/Pulse Output Parameters 28
8.14 Command #146 Read Flow Direction And Primary Head Constant 30
8.15 Command #147 Write Flow Direction And Primary Head Constant 31
8.16 Command #148 Read User Data 32
8.17 Command #149 Write User Data 34
8.18 Command #150 Enable/Disable Password Protection 36
8.19 Command #151 Control Zero Calibration 38
8.20 Command #152 Quit Errors 39
8.21 Command #153 Read Error List 40
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 3
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
8.22 Command #156 Read Device-Specific Units And Enumerators 41
8.23 Command #157 Write Device-Specific Units And Enumerators 43
8.24 Command #158 Read Transmitter Variable Range Values 45
8.25 Command #159 Write Transmitter Variable Range Values 47
9. TRANSMITTER-SPECIFIC TABLES 49
9.1 Primary Variable Uni t Codes 49
9.2 Totalizer Unit Codes 49
9.3 Pulse/Volume Unit Codes 49
9.4 Pulse/Time Unit Codes 50
10. RELEASE NOTES 51
10.1 Changes from Rev.1 to Rev.2 51
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 4
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
1. Referenced Documents
HART Physical Layer Specification - Revision 8.0 HCF_SPEC-54 HART Data Link Layer Speci fication - Revision 7.1 HCF_SPEC-81 HART Command Summary Information - Revision 7.1 HCF_SPEC-99 HART Universal Command Specification - Revision 5.2 HCF_SPEC-127 HART Common-Practice Command Specification - Revision 7.1 HCF_SPEC-151 HART Common Tables - Revision 9.0 HCF_SPEC-183
2. Expanded Device Type Code
Manufacturer Identification Code = 69 (0x45) Manufacturer¥s Device Type Code = 245 (0xF5)
The merger of these two 8-bit codes forms the 16-bit Expanded Device Type Code.
Expanded Device Type Code = 17909
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 5
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
3. UFC500 Conformance And Command Class Summary
Command Description Number
CONFORMANCE CLASS #1
- UNIVERSAL 0 Read Unique Identifier 1 Read Primary Variable
CONFORMANCE CLASS #1A
- UNIVERSAL 0 Read Unique Identifier 2 Read Primary Variable Current and Percent of Range
CONFORMANCE CLASS #2
- UNIVERSAL 11 Read Unique Identifier Associated with Tag 12 Read Message 13 Read Tag, Descriptor, Date 14 Read Primary Variable Sensor Information 15 Read Primary Variable Output Information 16 Read Final Assembly Number
CONFORMANCE CLASS #3
- UNIVERSAL 3 Read All Dynamic Variables and Current
- COMMON-PRACTICE 33 Read Transmitter Variables 48 Read Additional Transmitter Status 50 Read Dynamic Variable Assignments 60 Read Analog Output and Percent of Range
- TRANSMITTER-SPECIFIC 130 Read Meter Size 132 Read Frequency/Pulse Output Damping Value 134 Read Analog Output Low Flow Cutoff Control and Values 138 Read Analog Output Function 140 Read Current Output Parameters 142 Read Frequency/Pulse Output Parameters 146 Read Flow Direction and Primary Head Constant 148 Read User Data 153 Read Error List 156 Read Device-Specific Units and Enumerators 158 Read Transmitter Variable Range Values
CONFORMANCE CLASS #4
- COMMON-PRACTICE 34 Write Primary Variable Damping Value 35 Write Primary Variable Range Values 36 Set Primary Variable Upper Range Value 38 Reset Configura t i on Changed Flag 66 Enter/Exit Fixed Analog Output Mode
- TRANSMITTER-SPECIFIC 133 Write Frequency/Pulse Output Damping Value 137 Reset Totalizers 150 Enable/Disable Password Protection 152 Quit Errors 159 Write Transmitter Variable Range Values
CONFORMANCE CLASS #5
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 6
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
-UNIVERSAL 6 Write Polling Address 17 Write Message 18 Write Tag, Descriptor, Date 19 Write Final Assembly Number
- COMMON-PRACTICE 44 Write Primary Variable Units 53 Write Transmitter Variable Units 59 Write Number of Response Preambles
- TRANSMITTER-SPECIFIC 131 Write Meter Size 135 Write Analog Output Low Flow Cutoff Control and Values 139 Write Analog Output Function 141 Write Current Output Parameters 143 Write Frequency/Pulse Output Parameters 147 Write Flow Direction and Primary Head Parameters 149 Write User Data 151 Control Zero Calibration 157 Write Device-Specific Units and Enumerators
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 7
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
4. Additional Response Code Information
FIRST BYTE
4.1 Busy
Bit #5
The Busy Response Code is implemented for reported if an EEPROM-burning operation was activated (by some preceeding command of Write or Command type), that is not yet concluded. The burning time cannot exceed 700 msec (the worst case), though normally is carried out within TT0 interval (256 ms). A confirming response is made before the execution begins (but after validation of a request data).
every
command despite of its type (Read, Write or Command) and is
4.2 Transmitter-Specific Command Error
Response code value 6 for UFC500 implies that device is controllled directly via its keypad and is reserved for further transmitter revisions. For the present revision this response is overriden by the Busy Response Code: when the instrument is operated manually, HART application layer doesnít get control.
SECOND BYTE
All the flags that are implemented by transmitter, are listed below.
4.3 Configuration Changed
Bit #6
This flag is set whenever any configuration parameter is changed either via bus request or by direct instrument control via keypad.
4.4 More Status Available
Bit #4
The instrument status can be masked while handling this flag. The mask depends of the value of variable
ErrorMessageControl
Note, that the bytes responded on Command #48, are not masked.
(refer to Command #156). Bit #4 is set when the logical ìorî of the status and mask is nonzero.
4.5 Primary Variable Analog Output Fixed
Bit #3
This flag is set under two conditions: when the function of current output is switched ìOffî or when fixed current mode is entered via bus request (Command #66).
4.6 Primary Variable Analog Output Saturated
Bit #2
Handled as specified.
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 8
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
4.7 Primary Variable Out Of Limits
Bit #0
This flag is set whenever the
FlowRate
Transmitter Variable (refer to section 5.1) exceeds the Sensor Limits returned
with Command #14, Read Primary Variable Sensor Information.
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 9
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
5. General Transmitter Information
5.1 Inputs/Outputs And Dynamic/Transmitter Variables
The UFC500 instrument has one current output and one frequency/pulse output.
The UFC500 transmitter handles seven measurement-related variables, hence Transmitter Variablesí set is composed from variables with indices:
FlowRate
0 -
PositiveTotalizer
1 -
NegativeTotalizer
2 -
Totalizersí Sum
3 -
TransitTime
4 -
Direction/ErrorIndication
5 -
Off.
6 -
Any variable except totalizer-related ones (with indices 1..3) can be mapped onto any of the two outputs. To keep Primary Variable always meaningful/informative it is set to ìOffî. Therefore the Primary Variable codes belong to subset {0, 4, 5}, whilst Secondary Variable codes - to subset {0, 4, 5, 6}. Tertiary and Fourth Variables are mapped onto logical slots (no more outputs) and are fixed to
PositiveTotalizer
NegativeTotalizer
and
correspondingly.
FlowRate
in case the function of current output is switched
5.2 Damping Implementation
The UFC500 transmitter implements the following scheme of analog/digital damping:
When the handled via Command #34, Write Primary Variable Damping Value.
When the current output is not related to flowrate measurements, it has no damping. Still the Command #34 immediately affects the be damped with the same damping as digital variable.
TransitTime
Totalizer-related Transmitted Variables have all only digital presentation and one and the same damping: either 40 msec or the damping value of Command #132).
When the flowrate measurements damped with 40 msec, or
FreqPulseDampingControl
FlowRate
Transmitter Variable has no damping. When it is mapped onto any output, the latter is not damped.
FlowRate
Transmitter Variable is a Primary one, both digital/analog dampings are the same and are
FlowRate
variable is a Secondary one (i.e. is mapped onto frequency/pulse output), the output uses either
damping. After the
FlowRate.
variable (refer to Command #132).
It depends on the value of
FlowRate
FlowRate
becomes a Primary variable, the current output will
FreqPulseDampingControl
damping value. It depends on the value of
variable (refer to
5.3 Nonvolatile Memory Data Storage
The Flags Byte of Command #0 will have Bit #1 (Command #39, EEPROM Control) set to 0, indicating that all data sent to the transmitter will be saved automatically in the device EEPROM upon receipt of the Write command or Command-type command #36. Command #39, EEPROM Control, is not implemented.
5.4 Multidrop Mode
This revision of the UFC500 does not support Multidrop Mode.
5.5 Burst Mode
This revision of the UFC500 does not support Burst Mode.
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 10
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
6. Additional Universal Command Specifications
This section contains information pertaining to those commands that require clarification.
6.1 Command #0 Read Unique Identifier
Device Identification Number (Data bytes #9..#11 of response packet) is preserved in the instrument as a 10-bytes ASCII number (Service Fct. 5.1.4, ìSerial Nmbî). Hence only three (low significant) bytes of this number (after it is transferred to digital value) are ìvisibleî to HARTÆ-requester.
6.2 Command #2 Read P.V. Current And Percent Of Range
If the Primary Variable is assigned to
Direction
variable, the Percent of Range value is replied as Not-a-Number
.
6.3 Command #6 Write Polling Address
This revision of the transmitter has an active current output and is not conformant with multidrop mode hardware requirements. Still the command can be used in point-to-point communication. The multidrop software support will not be changed when the further firmware release meets all specification restrictions.
On entering of multidrop mode shutdown of device current is performed: a fixed range of 4-20 mA is set and the function of Primary Variable current output is switched ìOffî. Refer to Commands #50, Read Dynamic Variable Assignments, #138, Read Analog Output Function, and #140, Read Current Output Parameters.
When multidrop mode is exited, all the parameters of the current output are restored.
6.4 Command #14 Read Primary Variable Sensor Information
Sensor serial number is not stored within device and therefore is responded as Ñnot applicable to deviceì (zero value). Sensor parameters depend on the meter diameter and should be reread if the latter is changed.
6.5 Command #15 Read Primary Variable Output Information
Upper Range Value depends on the meter diameter. When the latter is changed, Upper Range Value for be automatically corrected if needed. In the last case bus master will be prompted about compulsory changes in correlated parameters via Warning-type Response Codes (refer to Command #131, Write Meter Diameter). No such correction is done when Primary Variable is set to should be assigned via Command #159, Write Transmitter Variable Range Values.
Write Protect Code variable (Data byte #15 of response packet) depends on the setting made for device variable Entry Code, Menu 3.5.2. It can be altered via Command #150, Enable/Disable Password Protection.
© 2001 KROHNE Metechnik D-47058 Duisburg
TransitTime
. In the latter case meter-conformant Range Values
FlowRate
Page 11
will
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
7. Additional Common-Practice Command Specifications
The UFC500 implements a subset of the Common-Practice Commands. This section contains information pertaining to those commands that require clarification.
7.1 Command #33 Read Transmitter Variables
Multiple transactions are supported: bus master can request from 1 to 4 Transmitter Variables (with codes 0..7) in arbitrary set.
7.2 Command #34 Write Primary Variable Damping Value
The UFC500 will accept any IEEE value in the range 0.04 to 3600 seconds for the damping value.
7.3 Command #35 Write Primary Variable Range Values
Despite of the actual Primary Variable assignment (
only
controlled via Commands #158/#159, Read/Write Transmitter Variable Range Values.
Upper Range Value is rejected if it exceeds the Upper Sensor Limit or is below the Lower Sensor Limit (both Limits are available via Command #14). Rejection reason in these two cases is reported via predefined response codes, namely by code 11, Upper Range Value too High, or by code 12, Upper Range Value too Lo w. However, it might happe n that a correct Upper Range Value for a given sensor causes the necessity to update the that plays the role of Upper Range Value for frequency/pulse output. reverse flow can be scaled with its own Upper Range, though it cannot exceed the Primary Variable Upper Range. T o handle correctly these situations, the predefined set of response codes for Command #35 was augmented by the following multi-definable warnings:
113, Pulse Value Surpassed Min and Was Corrected
115, Reverse Range Surpassed Min and Was Corrected
Note, that each subsequent correction carried out overrides the reported response code. At first Reverse Range is checked. Therefore if response codes 114/115 are registered then only the updated Reverse Range should be reread from device. For response codes 112/113 both Pulse Value and Reverse Range should be reread though the last variable could remain unchanged.
For additional information refer to Command #142, Read Pulse Output Parameters.
FlowRate
the
112, Pulse Value Exceeded Max and Was Corrected
114, Reverse Range Exceeded Max and Was Corrected
range specifiers for
PulseValue
forward
upper limit is based on the value of Primary Variable Upper Range. Besides, the
FlowRate, TransitTime, Direction
flow. Similar parameters for
PulseValue
FlowRate
measurements, when the latter are mapped onto the
), this command
TransitTime
variable of the instrument
always
and reverse flow are
handles
Lower Range Value is always assumed to be zero for UFC500. Therefore this parameter in request packet is ignored. Transmitter returns zero value in response telegram without prompting master via special response code.
7.4 Command #44 Write Primary Variable Units
Despite of the actual Primary Variable assignment ( command
The Primary Variable Unit Codes accepted by transmitter include all the HCF units for volumetric flow except the ones for gaseous media, and are listed in Table 9.1. As soon as transmitter supports incomparably enlarged unitsí set as opposed to the instrumentís display module, the impact on the device remote/direct control is straightforward and as follows: transmitter units are made completely
© 2001 KROHNE Metechnik D-47058 Duisburg
always
handles
only
FlowRate
the
units:
FlowRate, TransitTime, Direction/ErrorIndication
TransitTime
variable has a fixed unit and the rest have none.
or
Off
), this
Page 12
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
independent from the display units and hence are stored separately in the device EEPROM. Hence it is worth noting that remote user externally (from the HARTÆ bus). It must be also noted that PV units are shared with configuration parameters having volumetric flow units ( sensor limits, etc.).
mustnët expect
any changes in data presentation on the device local screen when any units are changed
Full Scale
7.5 Command #48 Read Additional Transmitter Status
Reads 2 bytes of status data from the transmitter. Unlike Command #153, Read Error List, this command returns a combined error list: some of them are actual at response time while the others are no more active but were not still presented to master since the last ìQuitî action (Command #152).
In designations used Bit #0 corresponds to LSBit, Bit #7 - to MSBit.
Data byte #0:
Bit #7 Fuse error Bit #6 Data error in EEPROM 2 (totalizer) Bit #5 Current calibration values in EEPROM 1+2 are different Bit #4 Current output overranged Bit #3 Frequency/p ul s e output overranged Bit #2 US path 2 faulted Bit #1 Empty pipe Bit #0 US path 1 faulted
,
Data byte #1:
Bit #7 Checksum error in ROM Bit #6 Checksum error in RAM Bit #5 NVRAM error Bit #4 Calibration data lost Bit #3 Data error in EEPROM 1 (parameters) Bit #2 Irregular flow Bit #1 Counts lost or totalizer overflow Bit #0 Power failure
7.6 Command #50 Read Dynamic Variables Assignments
The possible mappings of Transmitter Variables into array of Dynamic Variables are already discussed in section 5.1, Inputs/Outputs and Dynamic/Transmitter Variables. On startup Dynamic Variables are configured as follows:
Primary Variable Code - depends on the function of the current output and is either of {0, 4, 5}; variable setting. In
case current output is switched ìOffî (on startup or during normal instrument operation), PV is set to
Secondary Variable Code - depends on the function of the frequency/pulse output and is either of {0, 4, 5, 6}; variable
setting. Tertiary Variable Code = 1, Fourth Variable Code = 2,
Output functions are available via Command #138, Read Analog Output Function.
PositiveTotalizer NegativeTotalizer
FlowRate.
; permanent setting.
; permanent setting.
NOTE: Command #51, Write Dynamic Variables Assignment, is not implemented. Primary/Secondary Variable Codes are affected by Command #139, Write Analog Output Function. Therefore to provide consistency in device-master data sets, Command #50
must
be reissued after Command #139 is processed.
7.7 Command #53 Write Transmitter Variable Units
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 13
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
If Transmitter Variable Code equals to ì0î, flowrate units are changed (refer to Command #44). If Transmitter Variable Code corresponds to any totalizer (refer to section 5.1), the requested unit will affect all of them. The list of valid for this transmitter totalizersí unit codes is placed into Table 9.2.
Note that for totalizer measurements transmitter supports all the HCF units for volume except the ones for gaseous media. The device display can make use only of some small subset of corresponding HCF/transmitter units. The impact of these on the instrument remote/direct control is detailed in section 7.4, ìWrite Primary Variable Unitsî.
7.8 Command #60 Read Analog Output And Percent Of Range
If the requested output currently deals with Number
.
Direction
Off
or
variable, the Percent of Range value is replied as Not-a-
The output value for the pulse output is responded either in manufacturer specific units ì249î, ìpulses per secondî - for
FlowRate
TransitTime
or
variables, or in ìVoltsî (58) - for
Direction
or
Off
variables.
7.9 Command #66 Enter/Exit Fixed Analog Output Mode
If this command is used to deal with current output, then Analog Output Number Code must be set to ì1î and Analog Output Units - to ì39î, mA. The instrument will accept any IEEE value in the range 0.0 to 22.0 as a desirable fixed current level .
While testing pulse output, set Analog Output Number Code to ì2î and Analog Output Units - to ì249î, ìpulses per secondî. The instrument will accept any IEEE value in the range 0.0 to 10000.0 as a desirable fixed output level.
Without external stimulus the instrument will leave HART-activated fixed output mode in 2 minutes.
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 14
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
8. Transmitter-Specific Commands
8.1 Command #130 Read Meter Size
Returns the meter size of the converter (Menu 3.1.5).
REQUEST DATA BYTES
NONE
RESPONSE DATA BYTES
#0 #1 #2 #3
METER MET ER
SIZE SIZE
MSB LSB
Data Byte #0-#3 Meter size, IEEE 754, in meters.
COMMAND-SPECIFIC RESPONSE CODES
0 No Command-Specific Errors 1-5 Undefined 6 Local Device User 7-127 Undefined
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 15
HARTô Smart Communications Protocol UFC500 Command Specification Rev: 2.0 Release Date: 9 Jun 2001
8.2 Command #131 Write Meter Size
Changes of the converter meter size
will force
the updating of sensor characteristics (returned by Command #14) and
therefore might cause the automatic correction of the Primary Variable Upper Range Value (Menus 1.1.1, 3.1.1) and
PulseValue
(Menu 3.4.3). Master is prompted about corrections carried out via warning responses and
must
reread the
updated data. For additional information refer to Command #35.
REQUEST DATA BYTES
#0 #1 #2 #3
METER MET ER
SIZE SIZE
MSB LSB
RESPONSE DATA BYTES
#0 #1 #2 #3
METER MET ER
SIZE SIZE
MSB LSB
Data Byte #0-#3 Meter size, IEEE 754, in meters. Allowed settings: 0.025 to 4 meters (0.98 to 157.48 inches).
COMMAND-SPECIFIC RESPONSE CODES
0 No Command-Specific Errors 1-2 Undefined 3 Passed Parameter too Large 4 Passed Parameter too Small 5 Too Few Data Bytes Received 6 Local Device User 7 In Write Protect Mode 8-113 Undefined 114 Range Exceeded Max and Was Corrected 115 Range Surpassed Min and Was Corrected 116 Both Range and Pulse Value Corrected 117-127 Undefined
© 2001 KROHNE Metechnik D-47058 Duisburg
Page 16
Loading...
+ 35 hidden pages