vedirect_protocol:faq
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
vedirect_protocol:faq [2018-12-04 09:13] – [Q3: How do I calculate the HEX checksum?] mbosma | vedirect_protocol:faq [2023-03-31 12:04] (current) – mvader | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== VE.Direct Protocol FAQ ====== | ====== VE.Direct Protocol FAQ ====== | ||
+ | ===== 1. Introduction ===== | ||
More information on the VE.Direct protocol is available here: | More information on the VE.Direct protocol is available here: | ||
* [[https:// | * [[https:// | ||
Line 6: | Line 7: | ||
* [[open_source: | * [[open_source: | ||
- | Note that, besides | + | Note that, besides |
- | ===== 1. FAQ ===== | + | From a hardware point of view, our VE.Direct ports have four pins: positive, TX, RX and GND. The TX and RX go (almost) directly into the UART of the microcontroller of the product. |
+ | |||
+ | To connect directly to such port, we advise to use either our VE.Direct to USB interface, or our VE.Direct to RS232 interface. Both include galvanic isolation circuitry. Having such isolation is important, as in the product itself (ie. in the solar charger, bmv battery monitor, inverter and so forth) there is very little protection. | ||
+ | |||
+ | More information, | ||
+ | |||
+ | |||
+ | ===== 2. FAQ ===== | ||
==== Q1: Can I use RS232 instead of USB? ==== | ==== Q1: Can I use RS232 instead of USB? ==== | ||
Yes, use the //VE.Direct to RS232 interface//, | Yes, use the //VE.Direct to RS232 interface//, | ||
Line 54: | Line 62: | ||
</ | </ | ||
==== Q4: Is the VE.Direct interface 3.3 or 5V ? ==== | ==== Q4: Is the VE.Direct interface 3.3 or 5V ? ==== | ||
- | It depends on the product: some are 5v, others | + | It depends on the product: some are 5v, others |
The circuits in our panels and USB interfaces work on both voltages. And they automatically adapt their TX voltage to the voltage level coming from the VE.Direct product (bmv/ | The circuits in our panels and USB interfaces work on both voltages. And they automatically adapt their TX voltage to the voltage level coming from the VE.Direct product (bmv/ | ||
Line 62: | Line 70: | ||
* BMV-700: 3v3 | * BMV-700: 3v3 | ||
* MPPT all models: 5v | * MPPT all models: 5v | ||
- | * Newer MPPTs (as now under development) will remain | + | * Newer MPPTs (as now under development) will be 5V. |
+ | * MPPT RS, Multi RS, any other RS: 3v3 | ||
+ | * VE.Direct Inverters 250…500VA - 3V3 | ||
+ | * VE.Direct Inverters 800VA & 1200VA 3V3 | ||
+ | * Smart Inverters 1600VA...5000VA - 3V3 | ||
==== Q5: How much current can I draw from the power pin in the VE.Direct port? ==== | ==== Q5: How much current can I draw from the power pin in the VE.Direct port? ==== | ||
Max 10mA average, with max 20mA/5ms bursts. | Max 10mA average, with max 20mA/5ms bursts. | ||
- | ===== 2. Framehandler reference implementation ===== | + | ==== Q6: What is the end of line character when sending a HEX message? |
- | This the main data receival routine | + | This question concerns |
+ | As also documented in the HEX protocol documents, the end of line character is '' | ||
+ | |||
+ | ==== Q7: How about frequency of transmitting HEX messages ==== | ||
+ | |||
+ | How often you send a HEX message doesn' | ||
+ | |||
+ | ==== Q8: How do I calculate the TEXT checksum? ==== | ||
+ | |||
+ | I need to get data from a BMV, but how do I check the data integrity? The [[https:// | ||
+ | |||
+ | **Answer: | ||
+ | Consider the following output: | ||
< | < | ||
+ | PID 0x203 | ||
+ | V 26201 | ||
+ | I 0 | ||
+ | P 0 | ||
+ | CE 0 | ||
+ | SOC 1000 | ||
+ | TTG -1 | ||
+ | Alarm OFF | ||
+ | Relay OFF | ||
+ | AR 0 | ||
+ | BMV 700 | ||
+ | FW 0307 | ||
+ | Checksum � | ||
+ | </ | ||
+ | And as a raw data dump: | ||
+ | < | ||
+ | 00000000 | ||
+ | 00000010 | ||
+ | 00000020 | ||
+ | 00000030 | ||
+ | 00000040 | ||
+ | 00000050 | ||
+ | 00000060 | ||
+ | </ | ||
+ | The checksum needs to be calculated from the start (0d) till the end of the frame, including the checksum value from the frame (d8). | ||
+ | |||
+ | In code you can loop through the message as in the following pseudo code: | ||
+ | <code c> | ||
+ | int checksum = 0; | ||
+ | char message[] = { ... }; | ||
+ | for (int i = 0; i < message.length; | ||
+ | | ||
+ | } | ||
+ | |||
+ | if (checksum == 0) { | ||
+ | /* Checksum is valid => process message */ | ||
+ | | ||
+ | } else { | ||
+ | /* Invalid checksum => reject message */ | ||
+ | } | ||
+ | </ | ||
+ | ===== 2. Framehandler reference implementation ===== | ||
+ | |||
+ | This the main data receival routine of our consumer stack that both handles TEXT and HEX messages. | ||
+ | |||
+ | <code cpp> | ||
#include " | #include " | ||
Line 180: | Line 250: | ||
} | } | ||
</ | </ | ||
+ | |||
===== DISQUS ===== | ===== DISQUS ===== | ||
~~DISQUS~~ | ~~DISQUS~~ | ||
+ |
vedirect_protocol/faq.1543911229.txt.gz · Last modified: 2018-12-04 09:13 by mbosma