a FEATURES 3-Phase, 4-Wire Metering IC High Accuracy Support for 50 Hz/60 Hz, IEC1036 Design Accuracy: 0.5% over 5% of Ib to 6% of Ib 0.65% over 2% of Ib to 5% of Ib Measures: kWh kW rms Voltage of Each Phase rms Current of Each Phase Phase and Nonlinearity Compensation for CTs Potentiometer-Free Design SPI Communication for: Data to Microcontroller Calibration Programmable E-Pulse Drive for: Electromechanical Counter 2-Phase Stepper Motor Counter Low Power (50 mW Typ) GENERAL DESCRIPTION ADSST-EM-2030 is a highly accurate and low cost phase energy measurement IC intended to be used in 3-phase, 4-wire systems. When used with an op amp and a multiplexer, the ADSST-EM-2030 surpasses the accuracy requirement of the IEC1036 standard. ADSST-EM-2030 is a MicroConverter® consisting of a microcontroller, 6-channel, 12-bit ADC, SPI port, program memory and Flash for storage of constants. The only analog circuitry used in ADSST-EM-2030 is the ADC. All other signal processing is carried out in digital domain. This provides superior accuracy over extreme environmental conditions and time. ADSST-EM-2030 can drive an electromechanical counter or a 2-phase stepper motor counter, or can be interfaced to a microcontroller to build a feature-rich meter with LCD, maximum demand, time of use, and communication. Three-Phase Energy Meter Chipset ADSST-EM-2030* FUNCTIONAL BLOCK DIAGRAM E-PULSE PT COUNTER LCD DISPLAY RTC PT PT ADSST-EM-2030 µCONTROLLER CT OPTICAL PORT CT OP AMP + MUX CT POLY PHASE ENERGY METER USING THE ADSST-EM-2030 Ratio, phase, and nonlinearity errors of the CTs are compensated for by using software. This reduces the cost of CTs and reduces calibration time caused by unreliable potentiometers. Because the ADSST-EM-2030 is a low power device, it can be powered by a simple R-C power supply, reducing the cost of operation. ADSST-EM-2030 supplies average real power information on the low frequency outputs F1 and F2. These logic outputs can be used to drive an electromechanical counter. The CF logic pin gives the instantaneous real power information. This output is intended to be used for calibration. ADSST-EM-2030 is available in a 28-lead SSOP package. *Protected by U.S.Patent No. 5,969,657; other patents pending. MicroConverter is a registered trademark of Analog Devices. REV. 0 Information furnished by Analog Devices is believed to be accurate and reliable. However, no responsibility is assumed by Analog Devices for its use, nor for any infringements of patents or other rights of third parties that may result from its use. No license is granted by implication or otherwise under any patent or patent rights of Analog Devices. One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S.A. Tel: 781/329-4700 www.analog.com Fax: 781/326-8703 © Analog Devices, Inc., 2002 ADSST-EM-2030 ORDERING GUIDE Model Temperature Range Package Description ADSST-EM-2030 –40°C to +85°C Tiny Shrink Small Outline Package PIN CONFIGURATION Package Option DLOAD DGND DVDD RU–28 GAIN 2 CREF TAMP CPHC CF CPHV GAIN 3 SS PIN FUNCTION DESCRIPTION Pin No. Mnemonic Description 1 2 DGND DLOAD 3 GAIN 1 Digital Ground Used to Enable Serial Download of Program Memory Logic Channels Output for Multiplexer to Switch Gain for A-Phase Current Logic Channels Output for Multiplexer to Switch Gain for B-Phase Current Logic Output Indicating that One More Current Is Reversed Calibration Frequency Logic Output. This gives instantaneous real power information and can be used for calibration. Logic Channels Output for Multiplexer to Switch Gain for C-Phase Current Low Frequency Logic Outputs. F1 and F2 provide average real power information. The logic outputs can be used to drive electromechanical counters and 2-phase stepper motors. System Reset A-Phase Voltage Input A-Phase Current Input Analog Positive Supply Analog Ground Analog Ground Input for External Voltage Reference 4 GAIN 2 5 TAMP 6 CF 7 GAIN 3 8, 9 F1, F2 10 11 12 13 14 15 16 RESET APHV APHC AVDD AGND AGND VREF VREF GAIN 1 BPHC MISO BPHV MOSI APHC SCLK F1 APHV F2 XTAL2 XTAL1 RESET AVDD AGND AGND PIN FUNCTION DESCRIPTION (continued) Pin No. Mnemonic Description 17 18 19 20 21 22 CREF BPHV BPHC CPHV CPHC SS 23 MISO Filter Capacitor for Reference B-Phase Voltage Input B-Phase Current Input C-Phase Voltage Input C-Phase Current Input This Logic Signal conveys to ADSSTEM-2030 that data transfer on SPI is requested. Data Output on SPI from ADSST-EM-2030 24 25 MOSI SCLK 26 27 28 XTAL1 XTAL2 DVDD Clock for SPI. This clock is generated by an external microcontroller when the data transfer to or from ADSSTEM-2030 takes place. Crystal Oscillator Crystal Oscillator Digital Positive Supply CAUTION ESD (electrostatic discharge) sensitive device. Electrostatic charges as high as 4000 V readily accumulate on the human body and test equipment and can discharge without detection. Although the ADSSTEM-2030 features proprietary ESD protection circuitry, permanent damage may occur on devices subjected to high energy electrostatic discharges. Therefore, proper ESD precautions are recommended to avoid performance degradation or loss of functionality. –2– REV. 0 ADSST-EM-2030 SERIAL PERIPHERAL INTERFACE (SPI) Timing Notes The SPI bus available on the ADSST-EM-2030 is useful to communicate to an external microcontroller as shown in Figure 1. Switching characteristics specify how the processor changes its signals. Designers have no control on this timing—circuitry external to the processor must be designed for compatibility with these signal characteristics. These characteristics can be used to ensure that any timing requirement of a microcontroller connected to the chipset is satisfied. SLAVE MASTER ADSST-EM-2030 MICROCONTROLLER Timing requirements apply to signals that are controlled by circuitry external to the chipset, such as the data input for a read operation. Timing requirements guarantee that the chipset operates correctly with the external microcontroller. Figure 1. SPI Communication between ADSST-EM-2030 and Microcontroller Data Access Here, the microcontroller functions as master and the ADSSTEM-2030 is a slave for this protocol. Using this communication port, the microcontroller will be able to read and write to the ADSST-EM-2030 to perform the following functions: Data can be written or read to the ADSST-EM-2030 chipset only when the SS pin is low. Since the chipset is a slave, the external controller must bring the SS pin low, the SCLK clock should be sent to clock in or clock out the data. For sending the data to the chipset, data should be sent on MOSI pin; for receiving the data from the chipset, data should be collected on MISO pin. • Calibrate the meter • Configure the ADSST-EM-2030 chipset • Read measured parameters from the ADSST-EM-2030 chipset With the external microcontroller as the master for the SPI communication, the microcontroller should send eight successive clocks to the ADSST-EM-2030 every 5 ms. At this instant, the microcontroller may either send a command or data or may receive an acknowledgment followed by data from the chipset. The ADSST-EM-2030 maintains a time gap of 5 ms between transmission of two successive bytes to or from the microcontroller. This helps in avoiding clashing of interrupts while the chipset and the microcontroller are executing their respective tasks. Four pins are used on the ADSST-EM-2030 chipset for the communication, and are shown Table I. Table I. Pin Description for SPI Communication Port Pin No. Mnemonic Description 22 23 24 25 SS MISO MOSI SCLK Select Output Input SPI Clock Table II. SPI Pin Timings Timing Parameter TIMING SPECIFICATIONS This section contains timing information for the ADSST-EM2030 chipset. tSS tSC General Notes tSH Use the exact timing information given. Do not attempt to derive parameters from the addition or subtraction of others. While addition or subtraction would yield meaningful results for an individual device, the values given in this data sheet reflect statistical variations and worst cases. Consequently, parameters cannot be added up meaningfully to derive longer times. tDAV tDSU tDHD tDF tDR tSR tSF tSFS REV. 0 –3– SS to SCLOCK Edge SCLOCK Low Pulsewidth SCLOCK High Pulsewidth Data Output Valid after SCLOCK Edge Data Input Setup Time before SCLOCK Edge Data Input Hold Time before SCLOCK Edge Data Output Fall Time Data Output Rise Time SCLOCK Rise Time SCLOCK Fall Time SS High after SCLOCK Edge Min Typ Max Unit 0 ns 300 ns 300 ns 50 100 ns 100 10 10 10 10 0 ns 25 25 25 25 ns ns ns ns ns ns ADSST-EM-2030 SS tSS tDF tSFS SCLK tSC tSH tDF MISO tSR tDR tSF BITS6–1 MSB LSB tDAV MOSI MSB tDSU LSB BITS 6–1 tDHD Figure 2. SPI Communication Port Timing SCLOCK SS SAMPLE INPUT DATA OUTPUT MSB BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 LSB ? SPI INTERRUPT FOR 8712S Figure 3. SPI Timing for Data Transmission Byte SPI FUNCTIONS Data Read Three specific functions can be performed on the SPI communication port on the ADSST-EM-2030 chipset: The microcontroller being the master for the SPI communication, has to send the desired commands for getting data from ADSSTEM-2030. For the data transfer to take place, the following sequence of operations must take place: Data Read—The external microcontroller can read the data from the ADSST-EM-2030 by sending specific commands; this includes metering data, constants, and so on. 1. The microcontroller should send the specific command to the ADSST-EM-2030 chipset to read the desired data. 2. The ADSST-EM-2030 will first respond with an acknowledgment to the microcontroller within 5 ms that it has received the command. To send the acknowledgment, the ADSST-EM-2030 adds 0x30 to the received command, and which is then sent back to the microcontroller. Data Write—The external microcontroller can send data to the ADSST-EM-2030 to be stored in its internal nonvolatile memory; this includes calibration and configuration constants, and so on. Special Commands—The external microcontroller can send special commands to the ADSST-EM-2030 for performing specific functions. These commands do not have any data. –4– REV. 0 ADSST-EM-2030 every second. The remaining time may be used by the microcontroller to perform other housekeeping functions. 3. If the microcontroller does not get this acknowledgment from the ADSST-EM-2030 within 5 ms then the microcontroller may transmit this command to read the same data again. 4. After being sensed by the microcontroller, the ADSST-EM-2030 sends an acknowledgment to the microcontroller, the chipset then prepares a packet of 10 bytes of requested data and starts transmitting the bytes one by one at intervals of 5 ms. This packet of 10 bytes also includes a header as the first byte of the packet and checksum as the last byte. 5. The microcontroller can strip the data from this packet, compute the checksum, and compare it with the last byte in the packet. If the checksum does not match, the microcontroller should then send the command again to ADSST-EM-2030 chipset. For example, if the command sent by the microcontroller is 0x01, the ADSST-EM-2030 adds 0x30 to it, making it 0x31, and sends this to the microcontroller as an acknowledgment. The data packet structure created by the ADSST-EM-2030 has 10 bytes. The first byte is a packet start byte (0xEE) and the last byte is a checksum byte. < START of Packet (0xEE) >< 8 Bytes of Data> < CHECKSUM > The checksum is calculated by adding the first nine bytes, including the packet start byte. CHECKSUM = 1st + 2nd + ...... ...... + 9th Byte The complete process of reading a packet of data should take 60 ms. The next command from the microcontroller to the ADSST-EM-2030 can be sent immediately after receipt of data or wait for the desired amount of time. The amount of time the microcontroller should wait for the next command to be sent to the ADSST-EM-2030 is purely dependent on the execution of other functions on the microcontroller. It may be sufficient for the microcontroller to collect data from the chipset after Table III shows various commands that can be sent to the ADSSTEM-2030 chipset by the microcontroller on the SPI communication port. The chipset returns a specific number of bytes for each data parameter specified, in the data column of the table. The data that can be read from the chipset could be calibration constants or instantaneous data. Table III. Read Commands to ADSST-EM-2030 on SPI Command to ADSST-EM-2030 from C Function Number of Data Bytes from ADSST-EM-2030 CONSTANTS GAIN CALIBRATION CONSTANTS Read Voltage Gain Constants Read Low Gain Current Constants Read High Gain Current Constants 0x01 0x02 0x03 6 6 6 POWER CALIBRATION CONSTANTS AT HIGH CURRENT RANGE A-Phase Power Constant at High Current (Including E-Pulse and Counter Pulse Constant) 0x07 B-Phase Power Constant at High Current 0x09 C-Phase Power Constant at High Current 0x0B 4 2 2 POWER CALIBRATION CONSTANTS AT LOW CURRENT RANGE A-Phase Power Constant at Low Current 0x06 B-Phase Power Constant at Low Current 0x08 C-Phase Power Constant at Low Current 0x0A 2 2 2 PHASE COMPENSATION COEFFICIENTS Read A-, B-, and C-Phase Coefficients 0x15 6 DC OFFSET CONSTANTS Read DC Offset Constants 0x0E 6 INSTANTANEOUS PARAMETERS Read Voltages for Phase A, B, and C Read Currents for Phase A, B, and C Read Energy and Power for Phase A, B, and C REV. 0 0x0F 0x10 0x11 –5– 6 6 8 ADSST-EM-2030 Data Structure in the Packet The ADSST-EM-2030 sends out eight bytes of data for every command. The last bytes of a parameter with a 6-byte structure are kept at zero and should be neglected. Table IV. Byte Wise Packet Data Structure for Voltage Gain Constants Command to ADSST-EM-2030: 0x01 Acknowledgment from ADSST-EM-2030: 0x31 1 2 3 SPB AVMS AVLS 4 5 6 7 BVMS BVLS CVMS CVLS 8 9 10 NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB AVMS AVLS BVMS BVLS CVMS CVLS NLV NLV CSUM Start Packet Byte (0xEE) Voltage Constant for A-Phase – MSB Voltage Constant for A-Phase – LSB Voltage Constant for B-Phase – MSB Voltage Constant for B-Phase – LSB Voltage Constant for C-Phase – MSB Voltage Constant for C-Phase – LSB No Legal Value (0x00) No Legal Value (0x00) Checksum Table V. Byte Wise Packet Data Structure for Low Gain Current Constants Command to ADSST-EM-2030: 0x02 Acknowledgment from ADSST-EM-2030: 0x32 1 2 3 4 5 6 7 8 9 10 SPB AILM AILL BILM BILL CILM CILL NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB AILM AILL BILM BILL CILM CILL NLV NLV CSUM Start Packet Byte (0xEE) Current Constant for A-Phase – Low Gain – MSB Current Constant for A-Phase – Low Gain – LSB Current Constant for B-Phase – Low Gain – MSB Current Constant for B-Phase – Low Gain – LSB Current Constant for C-Phase – Low Gain – MSB Current Constant for C-Phase – Low Gain – LSB No Legal Value (0x00) No Legal Value (0x00) Checksum Table VI. Byte Wise Packet Data Structure for High Gain Current Constants Command to ADSST-EM-2030: 0x03 Acknowledgment from ADSST-EM-2030: 0x33 1 2 3 4 5 6 7 8 9 10 SPB AIHM AIHL BIHM BIHL CIHM CIHL NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB AIHM AIHL BIHM BIHL CIHM CIHL NLV NLV CSUM Start Packet Byte (0xEE) Current Constant for A-Phase – High Gain – MSB Current Constant for A-Phase – High Gain – LSB Current Constant for B-Phase – High Gain – MSB Current Constant for B-Phase – High Gain – LSB Current Constant for C-Phase – High Gain – MSB Current Constant for C-Phase – High Gain – LSB No Legal Value (0x00) No Legal Value (0x00) Checksum –6– REV. 0 ADSST-EM-2030 Table VII. Byte Wise Packet Data Structure for Power Constants at High Current for Phase A Command to ADSST-EM-2030: 0x07 Acknowledgment from ADSST-EM-2030: 0x37 1 SPB 2 3 PAHM PAHL 4 5 6 7 8 9 10 EPC CPC NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 3 4 SPB PAHM PAHL EPC 5 CPC 6 7 8 9 10 NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Power Constant for A-Phase, High Current – MSB Power Constant for A-Phase, High Current – LSB E-Pulse Constant in Pulses per kWh (1 = 1600, 2 = 800, 3 = 400, and 4 = 200), Default Value = 1 Counter Pulse Constant in Pulses per kWh (1 = 200 and 2 = 400), Default Value = 1 No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table VIII. Byte Wise Packet Data Structure for Power Constants at High Current for Phase B Command to ADSST-EM-2030: 0x09 Acknowledgment from ADSST-EM-2030: 0x39 1 SPB 2 3 PBHM PBHL 4 5 6 7 8 9 10 NLV NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PBHM PBHL NLV NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Power Constant for B-Phase, High Current – MSB Power Constant for B-Phase, High Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table IX. Byte Wise Packet Data Structure for Power Constants at High Current for Phase C Command to ADSST-EM-2030: 0x0B Acknowledgment from ADSST-EM-2030: 0x3B 1 SPB REV. 0 2 3 PCHM PCHL 4 5 6 7 8 9 10 NLV NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PCHM PCHL NLV NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Power Constant for C-Phase, High Current – MSB Power Constant for C-Phase, High Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum –7– ADSST-EM-2030 Table X. Byte Wise Packet Data Structure for Power Constants at Low Current for Phase A Command to ADSST-EM-2030: 0x06 Acknowledgment from ADSST-EM-2030: 0x36 1 2 3 4 5 6 7 8 9 10 SPB PALM PALL NLV NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PALM PALL NLV NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Power Constant for A-Phase, Low Current – MSB Power Constant for A-Phase, Low Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table XI. Byte Wise Packet Data Structure for Power Constants at Low Current for Phase B Command to ADSST-EM-2030: 0x08 Acknowledgment from ADSST-EM-2030: 0x38 1 SPB 2 3 PBLM PBLL 4 5 6 7 8 9 10 NLV NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PBLM PBLL NLV NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Power Constant for B-Phase, Low Current – MSB Power Constant for B-Phase, Low Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table XII. Byte Wise Packet Data Structure for Power Constants at Low Current for Phase C Command to ADSST-EM-2030: 0x0A Acknowledgment from ADSST-EM-2030: 0x3A 1 SPB 2 3 PCLM PCLL 4 5 6 7 8 9 10 NLV NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PCLM PCLL NLV NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Power Constant for C-Phase, Low Current – MSB Power Constant for C-Phase, Low Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum –8– REV. 0 ADSST-EM-2030 Table XIII. Byte Wise Packet Data Structure for Phase Compensation Coefficients Command to ADSST-EM-2030: 0x15 Acknowledgment from ADSST-EM-2030: 0x45 1 2 3 4 5 6 7 8 9 10 SPB PGA PSA PGB PSB PGC PSC NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PGA PSA PGB PSB PGC PSC NLV NLV CSUM Start Packet Byte (0xEE) Phase Constant for Low Current – Phase A Phase Constant for High Current – Phase A Phase Constant for Low Current – Phase B Phase Constant for High Current – Phase B Phase Constant for Low Current – Phase C Phase Constant for High Current – Phase C No Legal Value (0x00) No Legal Value (0x00) Checksum Table XIV. Byte Wise Packet Data Structure for DC Offset Constants Command to ADSST-EM-2030: 0x0E Acknowledgment from ADSST-EM-2030: 0x3E 1 2 3 4 5 6 7 8 9 10 SPB DAM DAL DBM DBL DCM DCL NLV NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB DAM DAL DBM DBL DCM DCL NLV NLV CSUM Start Packet Byte (0xEE) DC Offset for Phase A - MSB DC Offset for Phase A – LSB DC Offset for Phase B – MSB DC Offset for Phase B – LSB DC Offset for Phase C – MSB DC Offset for Phase C – LSB No Legal Value (0x00) No Legal Value (0x00) Checksum Table XV. Byte Wise Packet Data Structure while Reading Instantaneous Voltages in Volts Command to ADSST-EM-2030: 0x0F Acknowledgment from ADSST-EM-2030: 0x3F Voltage Value Resolution: Two Decimal Points 1 SPB REV. 0 2 3 VAM VAL 4 5 VBM 6 VBL VCM 7 8 9 10 VCL Tamper Info Not used CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 SPB VAM VAL VBM VBL VCM VCL Tamper Info Start Packet Byte (0xEE) Voltage for Phase A – MSB Voltage for Phase A – LSB Voltage for Phase B – MSB Voltage for Phase B – LSB Voltage for Phase C – MSB Voltage for Phase C – LSB 0 bit: A – CT Reversal First Bit: B – CT Reversal Second Bit: C – CT Reversal Third Bit: Phase Sequence Error 9 10 Not used CSUM Checksum –9– ADSST-EM-2030 Table XVI. Byte Wise Packet Data Structure While Reading Instantaneous Current in Amperes Command to ADSST-EM-2030: 0x10 Acknowledgment from ADSST-EM-2030: 0x40 Current value resolution: Three Decimal Points 1 2 3 4 5 6 7 SPB IAM IAL IBM IBL ICM ICL Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB IAM IAL IBM IBL ICM ICL ACTR ACTR CSUM Start Packet Byte (0xEE) Current for Phase A – MSB Current for Phase A – LSB Current for Phase B – MSB Current for Phase B – LSB Current for Phase C – MSB Current for Phase C – LSB Freq (MSB) Freq (LSB) Checksum 8 9 10 ACTR ACTR CSUM Table XVII. Byte Wise Packet Data Structure While Reading Instantaneous Power and Energy Command to ADSST-EM-2030: 0x11 Acknowledgment from ADSST-EM-2030: 0x41 Power Value (in kW) Resolution: Five Decimal Points Energy Value (in kWh) Resolution: Four Decimal Points 1 2 3 4 5 6 7 8 9 10 SPB PT1 PT2 PT3 PT4 ET1 ET2 ET3 ET4 CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB PT1 PT2 PT3 PT4 ET1 ET2 ET3 ET4 CSUM Start Packet Byte (0xEE) Total Power First Byte – MSB Total Power Second Byte Total Power Third Byte Total Power Fourth Byte – LSB Total Energy First Byte – MSB Total Energy Second Byte Total Energy Third Byte Total Energy Fourth Byte – LSB Checksum –10– REV. 0 ADSST-EM-2030 Data Interpretation The data sent by ADSST-EM-2030 is in Hex, and the microcontroller has to convert this and place the decimal point at the correct place for display. Table XVIII. Interpretation of the Voltage Data The data sent for Voltage has a resolution up to two decimal places. Each Phase Voltage Data Hex Value (2 Byte) Decimal Value Voltage 5A10h 23056 230.56 V Table XIX. Interpretation of the Current Data The data sent for Current has a resolution up to three decimal places. Each Phase Current Data Hex Value (2 Byte) Decimal Value Current 278Bh 10123 10.123 A Table XX. Interpretation of the Power Data The data sent for Power has a resolution up to five decimal places. Each Phase Power Data Hex Value (4 Byte) Decimal Value Power 0D1C4Ah 859210 8.59210 kW Table XXI. Interpretation of the Energy Data The data sent for Energy has a resolution up to four decimal places. Each Phase Energy Data Hex Value (4 Byte) Decimal Value Energy 0D1C4Ah 859210 85.9210 kWh Data Write Because microcontroller is the master for the SPI communication, it has to send the desired commands for sending the data to the ADSST-EM-2030. For the data transfer to take place, the following sequence of operation has to occur: 1. The microcontroller should send the packet of 10 bytes including the specific command to the ADSST-EM-2030 chipset to write the desired data. Thus, the packet of 10 bytes includes a header as the first byte of the packet, a specific command for write data, and checksum as the last byte. 2. The ADSST-EM-2030 will receive the bytes one by one in intervals of 5 ms. 3. The ADSST-EM-2030 strips the data from this packet, computes the checksum and compares it with the last byte in the packet. If the checksum does not match, the microcontroller should send the command to the ADSST-EM-2030 chipset again, else the ADSST-EM-2030 sends the acknowledgment of receipt of all the bytes to be written. 4. To send the acknowledgment, the ADSST-EM-2030 adds 0x30 to the received command, which is then sent back to the microcontroller. 5. If the microcontroller does not get this acknowledgment from the ADSST-EM-2030 by 5 ms, then the microcontroller may transmit this command to write the same data again. REV. 0 The complete process of writing a packet of data should take 60 ms. The next command from the microcontroller to the ADSST-EM2030 can be sent immediately after receipt of data or wait for the desired amount of time. The amount of time the microcontroller waits for the next command to be sent to ADSST-EM-2030 is purely dependent on the execution of other functions on the microcontroller. It may be sufficient for the microcontroller to collect data from the chipset after every one second. The remaining time may be used by the microcontroller to perform other housekeeping functions. For example, if the command sent by the microcontroller is 0x01; the ADSST-EM-2030 adds 0x30 to it, making it 0x31, and sends this to the microcontroller as an acknowledgment. The data packet structure created by the ADSST-EM-2030 has 10 bytes. The first byte is a packet start byte (0xEE), and the last byte is a checksum byte. < START of Packet (0xEE) ><Command of 1 Byte> < 7 Bytes of Data><CHECKSUM > The checksum is calculated by adding the first nine bytes including the Packet start byte. CHECKSUM = 1st + 2nd + ...... ...... + 9th Byte –11– ADSST-EM-2030 Table XXII shows various commands that can be sent to the ADSST-EM-2030 chipset by the microcontroller on the SPI communication port. The chipset writes the specific number of bytes for each data parameter specified in the data column of the table. The data that can be written to the chipset could be calibration constants. Table XXII. Interpretation of the Energy Data Data Command to ADSST-EM-2030 Data Bytes GAIN CALIBRATION Voltage Coefficient Current Low Gain Coefficient Current High Gain Coefficient 0x81 0x82 0x83 6 6 6 POWER CALIBRATION CONSTANTS AT HIGH CURRENT RANGE A-Phase Power Constant at High Current (with E-Pulse and Counter Pulse) 0x87 B-Phase Power Constant at High Current 0x89 C-Phase Power Constant at High Current 0x8B 4 2 2 POWER CALIBRATION CONSTANTS AT LOW CURRENT RANGE A-Phase Power Constant at Low Current 0x86 B-Phase Power Constant at Low Current 0x88 C-Phase Power Constant at Low Current 0x8A 2 2 2 PHASE COMPENSATION COEFFICIENTS A-, B-, C-Phase Coefficient 0x95 6 Data Structure in the Packet The ADSST-EM-2030 sends out seven bytes of data for every command. The last bytes of a 6-byte structure are kept at zero and should be neglected. Table XXIII. Byte Wise Packet Data Structure for Voltage Gain Constants Command to ADSST-EM-2030: 0x81 Acknowledgment from ADSST-EM-2030: 0xB1 1 2 3 SPB CWV WAVM 4 5 6 7 8 WAVL WBVM WBVL WCVM WCVL Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB CWV WAVM WAVL WBVM WBVL WCVM WCVL NLV CSUM Start Packet Byte (0xEE) Command to Write Voltage Constant Voltage Constant for A-Phase – MSB Voltage Constant for A-Phase – LSB Voltage Constant for B-Phase – MSB Voltage Constant for B-Phase – LSB Voltage Constant for C-Phase – MSB Voltage Constant for C-Phase – LSB No Legal Value (0x00) Checksum –12– 9 10 NLV CSUM REV. 0 ADSST-EM-2030 Table XXIV. Byte Wise Packet Data Structure for Low Gain Current Constants Command to ADSST-EM-2030: 0x82 Acknowledgment from ADSST-EM-2030: 0xB2 1 2 SPB CWI 3 4 5 6 7 8 9 10 WAIM WAIL WBIM WBIL WCIM WCIL NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB CWI WAIM WAIL WBIM WBIL WCIM WCIL NLV CSUM Start Packet Byte (0xEE) Command to Write Low Gain Current Constant Current Constant for A-Phase – Low Gain – MSB Current Constant for A-Phase – Low Gain – LSB Current Constant for B-Phase – Low Gain – MSB Current Constant for B-Phase – Low Gain – LSB Current Constant for C-Phase – Low Gain – MSB Current Constant for C-Phase – Low Gain – LSB No Legal Value (0x00) Checksum Table XXV. Byte Wise Packet Data Structure for High Gain Current Constants Command to ADSST-EM-2030: 0x83 Acknowledgment from ADSST-EM-2030: 0xB3 1 2 3 4 5 6 7 8 9 10 SPB CWHI WAHIM WAHIL WBHIM WBHIL WCHIM WCHIL NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB CWHI WAHIM WAHIL WBHIM WBHIL WCHIM WCHIL NLV CSUM Start Packet Byte (0xEE) Command to Write High Gain Current Constant Current Constant for A-Phase – High Gain – MSB Current Constant for A-Phase – High Gain – LSB Current Constant for B-Phase – High Gain – MSB Current Constant for A-Phase – High Gain – LSB Current Constant for A-Phase – High Gain – MSB Current Constant for A-Phase – High Gain – LSB No Legal Value (0x00) Checksum Table XXVI. Byte Wise Packet Data Structure for Power Constants at High Current for Phase A Command to ADSST-EM-2030: 0x87 Acknowledgment from ADSST-EM-2030: 0xB7 1 2 3 4 SPB CWAPH WPAHN WPAHL REV. 0 5 6 7 8 EPC CPC NLV NLV 9 10 NLV CSUM Byte No. Name Description 1 2 3 4 5 SPB CWAPH WPAHM WPAHL EPC 6 CPC 7 8 9 10 NLV NLV NLV CSUM Start Packet Byte (0xEE) Command to Write Power Constant for A-Phase at High Current Power Constant for A-Phase, High Current – MSB Power Constant for A-Phase, High Current – LSB E-Pulse Constant in Pulses per kWh (1 = 1600, 2 = 800, 3 = 400, and 4 = 200), Default Value = 1 Counter Pulse Constant in Pulses per kWh (1 = 200 and 2 = 400), Default Value = 1 No Legal Value (0x00) No Legal Lalue (0x00) No Legal Value (0x00) Checksum –13– ADSST-EM-2030 Table XXVII. Byte Wise Packet Data Structure for Power Constants at High Current for Phase B Command to ADSST-EM-2030: 0x89 Acknowledgment from ADSST-EM-2030: 0xB9 1 2 3 4 5 SPB CWBPH WPBHM WPBHL EPC 6 7 8 9 10 CPC NLV NLV NLV CSUM Byte No. Name Description 1 2 SPB CWBPH 3 4 5 6 7 8 9 10 WPBHM WPBHL EPC CPC NLV NLV NLV CSUM Start Packet Byte (0xEE) Command to Write Power Constant for B-Phase at High Current Power Constant for B-Phase, High Current – MSB Power Constant for B-Phase, High Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table XXVIII. Byte Wise Packet Data Structure for Power Constants at High Current Phase C Command to ADSST-EM-2030: 0x8B Acknowledgment from ADSST-EM-2030: 0xBB 1 2 3 4 5 SPB CWCPH WPCHM WPCHL EPC 6 7 8 9 10 CPC NLV NLV NLV CSUM Byte No. Name Description 1 2 SPB CWCPH 3 4 5 6 7 8 9 10 WPCHM WPCHL EPC CPC NLV NLV NLV CSUM Start Packet Byte (0xEE) Command to Write Power Constant for C Phase at High Current Power Constant for C-Phase, High Current – MSB Power Constant for C-Phase, High Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table XXIX. Byte Wise Packet Data Structure for Power Constants at Low Current for Phase A Command to ADSST-EM-2030: 0x86 Acknowledgment from ADSST-EM-2030: 0xB6 1 2 3 4 5 6 7 8 9 10 SPB CWAPL WPALM WPALL NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 SPB CWAPL 3 4 5 6 7 8 9 10 WPALM WPALL NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Command to Write Power Constant for A-Phase at Low Current Power Constant for A-Phase, Low Current – MSB Power Constant for A-Phase, Low Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum –14– REV. 0 ADSST-EM-2030 Table XXX. Byte Wise Packet Data Structure for Power Constants at Low Current for Phase B Command to ADSST-EM-2030: 0x88 Acknowledgment from ADSST-EM-2030: 0xB8 1 2 3 4 SPB CWBPL WPBLM WPBLL 5 6 7 8 9 10 NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 SPB CWBPL 3 4 5 6 7 8 9 10 WPBLM WPBLL NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Command to Write Power Constant for B-Phase at Low Current Power Constant for B-Phase, Low Current – MSB Power Constant for B-Phase, Low Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table XXXI. Byte Wise Packet Data Structure for Power Constants at Low Current for Phase C Command to ADSST-EM-2030: 0x8A Acknowledgment from ADSST-EM-2030: 0xBA 1 2 3 SPB CWCPL WPCLM 4 5 6 7 8 9 10 10 WPCLL NLV NLV NLV NLV NLV CSUM Byte No. Name Description 1 2 SPB CWCPL 3 4 5 6 7 8 9 10 WPCLM WPCLL NLV NLV NLV NLV NLV CSUM Start Packet Byte (0xEE) Command to Write Power Constant for C-Phase at Low Current Power Constant for C-Phase, Low Current – MSB Power Constant for C-Phase, Low Current – LSB No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) No Legal Value (0x00) Checksum Table XXXII. Byte Wise Packet Data Structure for Phase Compensation Coefficients Command to ADSST-EM-2030: 0x95 Acknowledgment from ADSST-EM-2030: 0xC5 1 2 3 4 5 6 7 8 SPB CWPC WPGA WPSA WPGB WPSB WPGC WPSC REV. 0 9 10 NLV CSUM Byte No. Name Description 1 2 3 4 5 6 7 8 9 10 SPB CWPC WPGA WPSA WPGB WPSB WPGC WPSC NLV CSUM Start Packet Byte (0xEE) Command to Write Phase Compensation Coefficients Phase Constant for Low Current – Phase A Phase Constant for High Current – Phase A Phase Constant for Low Current – Phase B Phase Constant for High Current – Phase B Phase Constant for Low Current – Phase C Phase Constant for High Current – Phase C No Legal Value (0x00) Checksum –15– ADSST-EM-2030 Special Data The microcontroller sends some special commands to ADSST-EM-2030 for the special functions like dc offset calculation, initializing the energies, and resetting the calibration constants. The packet sent by the microcontroller to the ADSST-EM-2030 contains only the command byte and no data bytes. On receiving the packet of command, the ADSST-EM-2030 sends back the acknowledgment to the microcontroller by adding 0x30 to the command value. If the microcontroller does not get this acknowledgment from the ADSST-EM-2030 by 5 ms, then the microcontroller may transmit this command to write the same data again. Table XXXIII shows special commands that can be sent to the ADSST-EM-2030 chipset by the microcontroller on the SPI communication port. The chipset sends back the acknowledgment for each command to the microcontroller. The functions that are done by the chipset are dc offset calibration, initialization of energies, and resetting the calibration constants. Table XXXIII. Special Commands to the ADSST-EM-2030 on SPI Function Command to ADSST-EM-2030 Acknowledgment to the Microcontroller Comment DC OFFSET Calculate DC Offset 0x0D 0x3D Calculates DC Offset Constants INITIALIZATION Energy Initialize 0x16 0x46 Initializes the Energy Values to Zero RESET Reset Calibration 0x18 0x48 Reset the Calibration Constants to the Default Values Reset Calibration To calibrate the meter using the ADSST-EM-2030, first reset the calibration. By sending a command 0x18 on the SPI to the ADSST-EM-2030, the chipset automatically resets the calibration. Procedure 1. Power up the meter with standard voltage without any current on the current channels. 2. Send 0x18 on the SPI. 2. Send 0x01 command on the SPI to the chipset for reading the voltage constants as CVA, CVB, and CVC. 3. The ADSST-EM-2030 will return back six bytes of voltage values for the three phases (VA, VB, and VC). 4. Compute the new constants on a PC or a calculator in Hex as: CVA ′ = VR × CVA VA CVB ′ = VR × CVB VB DC Offset Calibration for Voltage and Current The dc offset calibration takes care of the dc offset that may be there in the signal path introduced by any of the front-end elements. By sending 0x0D command on the SPI communication port to the ADSST-EM-2030, the chipset performs calculation of dc offsets on the voltage and current channels and stores the coefficients in its flash memory. While the calibration is in progress, communication on SPI will not be accepted by the chipset. Procedure 1. Power up the meter with standard voltage of all phases without any current on the current channels. 2. Send 0x0D on the SPI to perform DC offset calibration. 3. Read back the coefficients on SPI by sending 0x0E to the chipset. Voltage Gain Calibration The ADSST-EM-2030 enables software calibration of the voltage channels to take care of tolerances for the passive components used in the signal path. Procedure 1. Power up the meter by setting the voltage source at 230 V on all the three phases (say VR). VR × CVC VC 5. These coefficients can then be written by sending the 0x81 command to the chipset on the SPI. Refer to Table XXIII for the Write Data sequence. The coefficients are sent in the same sequence as in the Table XXIII. This automatically stores the voltage constants in the chipset’s internal nonvolatile memory. 6. To verify the coefficients, send 0x01 to the chipset to receive the six bytes of data as voltage coefficients. 7. The default constants in the chipset for all the voltage channels is 0x709C. CVC ′ = Current Calibration The ADSST-EM-2030 enables software calibration of the current channels to take care of tolerances for the passive components used in the signal path. Low Gain Current Calibration 1. Power up the meter by setting the current source at 60 amps on all three phases (IR). 2. Send 0x02 command on the SPI to the chipset for reading the current constants as: CIA, CIB, and CIC. –16– REV. 0 ADSST-EM-2030 3. The ADSST-EM-2030 will return back six bytes of current values for the three phases: IA, IB, and IC. 4. Compute the new constants on a PC or a calculator in Hex as: I CIA ′ = R × CIA IA C IB ′ = IR × C IC IC 5. These coefficients can then be written by sending the 0x82 command to the chipset on the SPI. Refer to Table XXIV for the Write Data sequence. The coefficients are sent in the same sequence as in the Table XXIV. This automatically stores the current constants in the chipsets’ internal nonvolatile memory. 6. To verify the coefficients, send 0x02 to the chipset to receive the six bytes of data as current coefficients. 7. The default constants in the chipset for all the low gain current channels is 0x7000. C IC ′ = High Gain Current Calibration 1. Power up the meter by setting the current source at 5 amps on all three phases (iR). 2. Send 0x03 command on the SPI to the chipset for reading the current constants as: CiA, CiB, and CiC . 3. The ADSST-EM-2030 will return back six bytes of current values for the three phases (iA, iB, iC). 4. Compute the new constants on a PC or a calculator in Hex as: i CiA ′ = R × CiA iA iR × C iB iB C iC ′ = iR × C iC iC 5. These coefficients can then be written by sending the 0x83 command to the chipset on the SPI. Refer to Table XXV for the Write Data sequence. The coefficients are sent in the same sequence as in Table XXV. This automatically stores the current constants in the chipset’s internal nonvolatile memory. 6. To verify the coefficients, send 0x03 to the chipset to receive the six bytes of data as current coefficients. 7. The default constants in the chipset for all the high gain current channels is 0x2300. Power Calibration The meter can now be calibrated for power for each phase. The calculation requires the default constants that are stored in the internal nonvolatile memory. Due to the chipset’s in-built feature of performing automatic gain switching for the current channels, the power needs to be calibrated at low gain (i.e., high currents) and high gain (i.e., low currents). It is recommended that low gain calibration is performed at IMAX and high gain calibration is performed at INOMINAL /2. In the present example, the meter is specified for 230 V operation with IMAX at 60 amps. REV. 0 The default power constant for all three phases at low gain is 0x3EE4. By sending commands such as 0x07, 0x09, and 0x0B on the SPI, the chipset will send six bytes each, corresponding to Phases A, B, and C. Procedure IR × C IB IB C iB ′ = Low Gain Power Calibration 1. Power up the meter after setting the voltage at 230 V, current at 60 amps and power factor at unity. 2. Read the default power constants for Phase A by sending 0x07 command on the SPI. The chipset will return six bytes, giving the default constants PCA for power constants for Phase A. 3. Read the default constants for Phase B by sending 0x09 command on the SPI. The chipset will return six bytes, giving the default constants PCB for power constants for Phase B. 4. Read the default power constants for Phase C by sending 0x0B command on the SPI. The chipset will return six bytes, giving the default constants PCC for power constants for Phase C. 5. Read the value of power as shown by the reference meter for the three phases, say PA, PB, and PC. 6. If the voltage and current on the source have been set at 230 V and high current (60 amps), then the reference meter should display for each phase a value of PREF . Using this, calculate new constants as: P PCA ′ = PCA × REF PA PREF PCB ′ = PCB × PB PCC ′ = PCC × PREF PC 7. Send command 0x87 followed by P'CA value on the SPI. The chipset will accept the values and store these as power constants for Phase A. Send command 0x89 followed by P'CB value and then command 0xB9 followed by P'CC value. The chipset will store these power constants for Phase B and Phase C respectively. High Gain Power Calibration The default power constants for all three phases at high gain is 0xAA0. By sending commands such as 0x06, 0x08 and 0x0A on SPI, the chipset will send six bytes each, corresponding to Phase A, B, and C. Procedure 1. Power up the meter after setting the voltage at 230 V, current at 5 amps and power factor at unity. 2. Read the default power constants for Phase A by sending 0x06 command on the SPI. The chipset will return six bytes, giving the default constants PCA for Power constants for Phase A. 3. Read the default constants for Phase B by sending 0x08 command on the SPI. The chipset will return six bytes, giving the default constants PCB for Power constants for Phase B. 4. Read the default power constants for Phase C by sending 0x0A command on the SPI. The chipset will return six bytes, giving the default constants PCC for Power constants for Phase C. 5. Read the value of power as shown by the reference meter for the three phases, say PA, PB, and PC. –17– ADSST-EM-2030 Or set the current source at INOMINAL/2 , voltage source at VNOMINAL, and the Phase Lag for the current (cos∆) at 0.5. Energize the meter using the ADSST-EM-2030 chipset (MUT) and measure the error from the reference meter. Round off the error from the reference meter to the first decimal place and multiply by 10. The value thus attained may be added to guard value read from the ADSST-EM-2030 chipset. So if the error is negative, then the guard value will get subtracted and if it is positive, then the guard value will get added. For example: 6. If the voltage and current on the source have been set at 230 V and low current (5 amps), then the reference meter should display for each phase a value, say PREF. Calculate new constants as: P PCA ′ = PCA × REF PA PREF PCB ′ = PCB × PB PCC ′ = PCC × PREF PC 1. Let the measured start value for Phase A be GA 2. Percentage Error noted in the G Value be –0.27% 7. Send command 0x86 followed by P'CA value on the SPI. Send command 0x88 followed by P'CB value and then command 0x8A followed by P'CC to save the power constants for high gain. 3. Error rounded off to the first decimal place = –0.3 4. Correction Value: EP = –0.3 ⫻ 10 = –3 Hence the correction start value will be: G'A = GA + EP Phase Compensation The ADSST-EM-2030 uses a phase compensation technique* to take care of the nonlinearities in current transformers. These are two constants, Start value (S) and Guard value (G). The start value corresponds to the phase shift that is exhibited at high current, and the guard value corresponds to the phase shift at lower currents. The default value for S is 0x08 and for G is 0x20. These constants can be read by sending command 0x15 to the chipset on the SPI. The six bytes of data from the chipset will correspond to GA, SA, GB, SB, GC, and SC , in the same sequence as shown in the Table XIII. Set the current source at IMAX , voltage source at VNOMINAL, and the Phase Lag for the current (cos∆) at 0.5. Energize the meter using the ADSST-EM-2030 chipset (MUT) and measure the error from the reference meter. Round off the error from the reference meter to the first decimal place and multiply by 10. The value thus attained may be added to start value read from the ADSST-EM-2030 chipset. So if the error is negative, then the start value will get subtracted, and if it is positive, then the start value will get added. For example: Procedure 1. Power up the meter after setting the source at 230 V and 60 amps, and power factor at 0.5. 2. Read the error shown by the reference meter. Round off the error value to the first decimal place and multiply by 10. If the error is negative, then decrease the S value (SA, SB, and SC for Phase A, B, and C respectively). If the error is positive, then increase the S value. 3. Set the power source at 230 V and 5 amp. Read the error shown by the reference meter. Round off the error value to the first decimal place and multiply by 10. If the error is negative then decrease the G value (GA, GB, and GC for phase A, B, and C respectively). If the error is positive, then increase the G value. 4. Send command 0x95 to the ADSST-EM-2030 chipset followed by the new sequence G'A, S'A, G'B, S'B, G'C, and S'C. 1. Let the measured start value for Phase A be SA 2. Percentage Error noted in the S Value be 0.22% 3. Error rounded off to the first decimal place = 0.2 4. Correction Value: EP = 0.2 ⫻ 10 = 2 Hence the correction start value will be: S'A = SA + EP *Patent Pending. –18– REV. 0 ADSST-EM-2030 OUTLINE DIMENSIONS 28-Lead Thin Shrink Small Outline Package [TSSOP] (RU-28) Dimensions shown in millimeters 9.80 9.70 9.60 28 15 4.50 4.40 4.30 1 6.40 BSC 14 PIN 1 0.65 BSC 0.15 0.05 COPLANARITY 0.10 0.30 0.19 1.20 MAX SEATING PLANE 0.20 0.09 COMPLIANT TO JEDEC STANDARDS MO-153AE REV. 0 –19– 8ⴗ 0ⴗ 0.75 0.60 0.45 –20– PRINTED IN U.S.A. C02811–0–11/02(0)