{"id":3628,"date":"2026-10-27T17:00:00","date_gmt":"2026-10-27T09:00:00","guid":{"rendered":"https:\/\/cnbygele.com\/?p=3628"},"modified":"2026-10-26T19:08:57","modified_gmt":"2026-10-26T11:08:57","slug":"power-meter-floating-point-precision","status":"publish","type":"post","link":"https:\/\/cnbygele.com\/ar\/blog\/power-meter-floating-point-precision\/","title":{"rendered":"\u062f\u0642\u0629 \u0627\u0644\u0641\u0627\u0635\u0644\u0629 \u0627\u0644\u0639\u0627\u0626\u0645\u0629 \u0641\u064a \u0639\u062f\u0627\u062f \u0627\u0644\u0637\u0627\u0642\u0629: \u0628\u064a\u0627\u0646\u0627\u062a \u0637\u0627\u0642\u0629 \u0645\u0648\u062b\u0648\u0642\u0629"},"content":{"rendered":"<p>Power meter floating point precision determines how finely a transmitted number can represent a reading at its present magnitude. It is different from the meter&#8217;s measurement accuracy, display resolution and internal energy accumulation method. To assess an energy tag, obtain its documented data type, unit, scale and word order, preserve the raw registers, and calculate the representation step where the counter actually operates. A float that works well for instantaneous power may be unsuitable for preserving tiny differences between very large cumulative energy readings. Never infer the internal accumulator format from the communication format alone.<\/p>\n<p>This guide addresses numerical representation and logging. Use the separate <a href=\"https:\/\/cnbygele.com\/blog\/power-meter-accuracy-verification\/\">meter accuracy verification guide<\/a> for the measurement chain and <a href=\"https:\/\/cnbygele.com\/blog\/power-meter-energy-counter-rollover\/\">energy counter rollover guide<\/a> for resets and counter boundaries.<\/p>\n<h2>Keep four kinds of resolution separate<\/h2>\n<p>Measurement accuracy describes agreement with a reference under specified conditions. Display resolution is the smallest change the front panel shows. Communication resolution describes the transmitted value and its scale. Storage precision describes what survives in the historian or database. These can all differ without indicating a defective meter.<\/p>\n<p>The CNBYG <a href=\"https:\/\/cnbygele.com\/product\/by194-series-multifunctional-power-instruments\/\">BY194 instrument family<\/a> is a relevant product reference for a metering project, with an optional RS485\/MODBUS interface in its published description. That family description does not prove that a particular energy value uses binary32, binary64 or an integer. Request the exact communication manual for the selected variant and firmware. The product exterior illustration below establishes no numerical capability.<\/p>\n<p>A meter might accumulate internally with one representation and export a rounded value in another. Conversely, a monitoring system can damage an adequately precise source by converting it to a smaller type. Evaluate the complete path from instrument register to exported report rather than judging only the digits visible on one screen.<\/p>\n<h2>Understand why spacing grows with magnitude<\/h2>\n<p>A floating point representation stores a significand with an exponent. Within a given exponent interval, representable values have a fixed spacing; that spacing changes when the exponent changes. Large magnitudes therefore have coarser absolute spacing than small magnitudes for the same format. More displayed decimal places cannot recover information absent from the encoded value.<\/p>\n<p>The <a href=\"https:\/\/docs.python.org\/3\/tutorial\/floatingpoint.html\" rel=\"noopener nofollow\" target=\"_blank\">Python documentation on floating point arithmetic<\/a> explains binary approximation, representation error and why formatting is not the same as stored accuracy. Its examples concern Python&#8217;s usual floating point behavior. They explain the principle but do not establish the format of a meter register. Identify the actual format independently before borrowing an example.<\/p>\n<p>For an IEEE-style normal binary32 value, the significand has 24 bits of precision including the leading bit. Between 2 raised to exponent e and the next power of two, adjacent values are separated by 2 raised to (e minus 23). This is a representation calculation, not an instrument accuracy specification. It also does not describe subnormal values or special encodings, which should be handled according to the chosen decoder.<\/p>\n<h2>Calculate a hypothetical energy example<\/h2>\n<p>Assume a hypothetical register is explicitly documented as binary32 in kWh and its cumulative reading lies between 1,048,576 and 2,097,152 kWh. Those limits are powers of two, with e equal to 20. The adjacent-value spacing is therefore 2 raised to minus three kWh, or 0.125 kWh. A small change in underlying accumulated energy may not immediately produce a different exported value.<\/p>\n<p>Now assume an installation reports only about 0.05 kWh of new energy between some samples. Two successive exported readings can be identical, followed later by a larger apparent step. That pattern alone does not demonstrate missing internal accumulation. It can arise when a fine internal counter is rounded for export. Confirmation requires the meter&#8217;s documented architecture or another adequately resolved channel.<\/p>\n<p>At 230 V and 10 A in a hypothetical resistive single-phase example, real power is 2.3 kW, giving about 0.0383 kWh over one minute at constant load. This simplified calculation illustrates the scale of an interval increment; it is not a three-phase formula, a test result or a claim about BY194. Real analysis must use measured real power, actual elapsed time and the system&#8217;s wiring conditions.<\/p>\n<div style=\"overflow-x:auto;max-width:100%\">\n<table style=\"border-collapse:collapse;width:100%;min-width:560px\">\n<thead>\n<tr>\n<th style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Representation decision<\/th>\n<th style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">What can go wrong<\/th>\n<th style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Evidence needed<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Binary32 cumulative energy<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Absolute step grows as the total increases<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Format, units and operating magnitude<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Scaled integer energy<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Wrong multiplier or range handling<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Signedness, scale, width and rollover rule<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Binary64 storage of binary32 input<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Original rounding remains present<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Source format and ingestion conversion<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Decimal report formatting<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Hidden steps or misleading extra digits<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Stored value and display format<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Difference between cumulative samples<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Small increments are obscured by rounding<\/td>\n<td style=\"border:1px solid #d1d5db;padding:10px;text-align:left;vertical-align:top\">Timestamped raw readings and expected interval energy<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The mathematical example is based on the binary representation model. The actual selection must follow the manufacturer&#8217;s register documentation. The <a href=\"https:\/\/docs.python.org\/3\/library\/struct.html\" rel=\"noopener nofollow\" target=\"_blank\">Python struct documentation<\/a> describes supported IEEE binary formats for its encoding operations and is useful when independently reproducing a decoder test.<\/p>\n<p><figure><img decoding=\"async\" alt=\"Disconnected CNBYG BY194 exterior beside numerical data review materials \u2014 inspection\" class=\"wp-image-3623\" height=\"1024\" loading=\"lazy\" src=\"https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026.png\" style=\"max-width:100%;height:auto\" width=\"1536\" srcset=\"https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026.png 1536w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026-300x200.png 300w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026-1024x683.png 1024w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026-768x512.png 768w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026-18x12.png 18w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-inspection-20261026-600x400.png 600w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><figcaption>Product-reference illustration of the disconnected BY194 exterior. Context materials illustrate the review process; this image does not establish interface options, register formats, security capabilities or measurement specifications.<\/figcaption><\/figure>\n<\/p>\n<h2>Decode the value before evaluating precision<\/h2>\n<p>Start with the exact register address, count and function. Save the raw words and reproduce their decoding using an independent method. The <a href=\"https:\/\/cnbygele.com\/blog\/power-meter-modbus-byte-order\/\">Modbus byte order guide<\/a> explains why a byte-order error can produce plausible but incorrect values. A representation-spacing calculation applied to a wrongly decoded value has no practical meaning.<\/p>\n<p>Check the engineering unit at every step. Wh and kWh differ by a factor of one thousand; a scale applied twice can look like an instrument calibration issue. Confirm whether the manual supplies a fixed multiplier, an exponent register or a documented representation with units already included. Do not infer the rule from a single convenient reading.<\/p>\n<p>For a multi-register value, follow the documented grouped-read requirements. Receiving all words in one protocol response does not by itself guarantee that the application captured one coherent internal snapshot. If coherence matters, request the manufacturer&#8217;s latch or snapshot behavior. Keep communication transport guarantees separate from the meter&#8217;s data update implementation.<\/p>\n<h2>Design the logger around useful interval energy<\/h2>\n<p>Estimate the smallest interval energy relevant to the task. A production dashboard may tolerate coarser increments than a short-duration verification experiment. Compare that requirement with representation spacing at both present and expected future counter magnitudes. A system that is adequate at commissioning can become less useful as cumulative totals grow.<\/p>\n<p>If the source provides a documented higher-resolution integer or wider representation, assess it before commissioning. Check that the client and database preserve its full range exactly. Some reporting tools silently convert large integers to floating point; exporting a column as a number is not proof that every integer survived unchanged.<\/p>\n<p>Increasing the polling rate cannot create new representable values in a rounded source counter. It can produce more repeated samples while adding bus load. Select a <a href=\"https:\/\/cnbygele.com\/blog\/power-meter-polling-interval\/\">polling interval<\/a> that meets freshness requirements and respects source update timing. For interval calculations, use actual timestamps and quality flags rather than assuming every request succeeded precisely on schedule.<\/p>\n<h2>Preserve raw evidence and uncertainty<\/h2>\n<p>Store the raw register words, decoded engineering value, unit, data type and decoding configuration for commissioning captures. Keep source timestamps separately from receipt timestamps when both exist. Mark stale, missing and invalid values distinctly; replacing a missing sample with zero can create a false negative energy increment.<\/p>\n<p>Maintain sufficient precision in intermediate calculations. Rounding every sample before subtraction can add avoidable error. Perform the calculation on the best available stored representation and round at the reporting stage according to the task&#8217;s required resolution. Document any conversion to decimal quantities so that later exports remain reproducible.<\/p>\n<p>Do not force a negative difference to zero without investigating. Reset, rollover, import\/export direction, loss of coherence and a changed multiplier are separate possibilities. A numerical representation issue is only one candidate. Preserve the original sequence and configuration history before applying any correction rule.<\/p>\n<p><figure><img decoding=\"async\" alt=\"Disconnected CNBYG BY194 exterior beside numerical data review materials \u2014 records\" class=\"wp-image-3625\" height=\"1024\" loading=\"lazy\" src=\"https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026.png\" style=\"max-width:100%;height:auto\" width=\"1536\" srcset=\"https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026.png 1536w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026-300x200.png 300w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026-1024x683.png 1024w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026-768x512.png 768w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026-18x12.png 18w, https:\/\/cnbygele.com\/wp-content\/uploads\/2026\/10\/power-meter-floating-point-precision-records-20261026-600x400.png 600w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><figcaption>Product-reference illustration of the disconnected BY194 exterior. Context materials illustrate the review process; this image does not establish interface options, register formats, security capabilities or measurement specifications.<\/figcaption><\/figure>\n<\/p>\n<h2>Acceptance tests and purchasing questions<\/h2>\n<p>Use a controlled test covering several operating magnitudes where feasible. Compare decoded values with the documented display or approved reference, then inspect whether the logger preserves small changes. This validates the data path within the test conditions. It is not a replacement for a traceable accuracy test or a claim that every future counter value is adequate.<\/p>\n<p>Ask the supplier which energy representations are available, whether scale changes with magnitude, how resets and rollover are signalled, and whether the internal accumulator differs from the exported value. Request a sample raw reply with its decoded result. Ask the software provider about integer limits, automatic conversions and export behavior before choosing a database field.<\/p>\n<p>Where an existing installation cannot provide the required fine interval energy, record that limitation explicitly. A separate documented pulse or interval channel may be useful if supported, but its scaling, timing and suitability need their own verification. Do not present smoothing, interpolation or extra printed digits as recovered measurements.<\/p>\n<h2>Educational background: floating point arithmetic<\/h2>\n<p>The lesson below explains floating point arithmetic and numerical limitations. It provides background for understanding growing representation steps and rounding. The worked metering decisions still depend on the actual register format, engineering units and acceptance requirements of the installation.<\/p>\n<div style=\"position:relative;padding-bottom:56.25%;height:0;overflow:hidden\"><iframe allowfullscreen=\"\" loading=\"lazy\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/fL8vYG69EhE\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;border:0\" title=\"Floating-point Arithmetic | Week 10 | MIT 18.S191 | Alan Edelman\"><\/iframe><\/div>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=fL8vYG69EhE\" rel=\"noopener nofollow\" target=\"_blank\">Watch the educational lesson<\/a><\/p>\n<h2>Frequently asked questions<\/h2>\n<h3>Does floating point precision describe meter accuracy?<\/h3>\n<p>No. Representation precision concerns the spacing of encoded values. Measurement accuracy concerns the complete measurement chain under specified conditions. An accurately measured quantity can be rounded during export or storage.<\/p>\n<h3>Will converting a binary32 reading to binary64 recover lost digits?<\/h3>\n<p>No. A wider destination can preserve the source value and improve later calculations, but cannot recover information already rounded out of the original binary32 reading. A higher-resolution source channel requires documented meter support.<\/p>\n<h3>Why can cumulative energy stay unchanged and then jump?<\/h3>\n<p>Possible causes include source update timing, rounding, stale data and actual load behavior. Check raw words, timestamps, data quality and the documented representation before attributing the pattern to floating point spacing.<\/p>\n<h3>Should I poll faster to improve cumulative energy precision?<\/h3>\n<p>Faster requests do not reduce the spacing of the source number format. Choose the interval from the required freshness, meter update rate and network capacity, and obtain a more suitable source representation when the application requires finer increments.<\/p>\n<p><script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"Does floating point precision describe meter accuracy?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"No. Representation precision concerns the spacing of encoded values. Measurement accuracy concerns the complete measurement chain under specified conditions. An accurately measured quantity can be rounded during export or storage.\"}}, {\"@type\": \"Question\", \"name\": \"Will converting a binary32 reading to binary64 recover lost digits?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"No. A wider destination can preserve the source value and improve later calculations, but cannot recover information already rounded out of the original binary32 reading. A higher-resolution source channel requires documented meter support.\"}}, {\"@type\": \"Question\", \"name\": \"Why can cumulative energy stay unchanged and then jump?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Possible causes include source update timing, rounding, stale data and actual load behavior. Check raw words, timestamps, data quality and the documented representation before attributing the pattern to floating point spacing.\"}}, {\"@type\": \"Question\", \"name\": \"Should I poll faster to improve cumulative energy precision?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Faster requests do not reduce the spacing of the source number format. Choose the interval from the required freshness, meter update rate and network capacity, and obtain a more suitable source representation when the application requires finer increments.\"}}]}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u062a\u0639\u0631\u0651\u0641 \u0639\u0644\u0649 \u062f\u0642\u0629 \u0627\u0644\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0639\u0634\u0631\u064a\u0629 \u0627\u0644\u0639\u0627\u0626\u0645\u0629 \u0641\u064a \u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0637\u0627\u0642\u0629\u060c \u0648\u062d\u062f\u0648\u062f \u062a\u0645\u062b\u064a\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a\u060c \u0648\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0637\u0627\u0642\u0629\u060c \u062f\u0648\u0646 \u0627\u0644\u062e\u0644\u0637 \u0628\u064a\u0646 \u062f\u0642\u0629 \u0627\u0644\u062a\u0645\u062b\u064a\u0644 \u0648\u062f\u0642\u0629 \u0627\u0644\u0642\u064a\u0627\u0633.<\/p>","protected":false},"author":4,"featured_media":3620,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[1],"tags":[231],"class_list":["post-3628","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-power-factor-correction"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"acf":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/posts\/3628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/comments?post=3628"}],"version-history":[{"count":1,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/posts\/3628\/revisions"}],"predecessor-version":[{"id":3629,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/posts\/3628\/revisions\/3629"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/media\/3620"}],"wp:attachment":[{"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/media?parent=3628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/categories?post=3628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cnbygele.com\/ar\/wp-json\/wp\/v2\/tags?post=3628"}],"curies":[{"name":"\u0644\u0639\u0628 \u062c\u064a\u062f\u0629","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}