ccgx:modbustcp_faq
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
ccgx:modbustcp_faq [2017-10-03 16:48] – [Supported ModbusTCP function codes] mvader | ccgx:modbustcp_faq [2023-10-31 10:32] (current) – jpasop | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | ==== Introduction ==== | + | ==== 1. Introduction ==== |
- | ModbusTCP | + | Modbus-TCP |
- | Besides reading this FAQ, make sure to also read the ModbusTCP section in our [[https:// | + | Modbus-TCP is an industry standard protocol, that can be used to interface PLCs or other third party equipment with Victron products. Through the Modbus-TCP interface you can read and write data to the chargers, battery monitors, inverter/chargers and other products connected to the GX device. |
- | ==== Supported | + | Besides reading this GX Modbus-TCP Manual, make sure to also read the Modbus-TCP section in our [[https:// |
+ | |||
+ | By default, Modbus-TCP is disabled. To enable it, go into the settings menu, scroll down to ' | ||
+ | |||
+ | ==== 2. Addressing, Unit-ID and Registers ==== | ||
+ | |||
+ | === 2.1 Definitions === | ||
+ | The Modbus-TCP protocol has two fields for addressing. There is the Unit-id, also referred to as Address, Station address or Slave-address in some PLC software. And the other field is the Register address. | ||
+ | |||
+ | * The **Unit-ID** is the device-selector: | ||
+ | * The **Register Address** then determines the parameter to read or write: ie. voltage, or current, and so forth. | ||
+ | |||
+ | === 2.2 Unit-IDs === | ||
+ | |||
+ | To see a list of available devices, and their Address, go to Settings -> Services -> Modbus/TCP -> Available services: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Additionally this information is also documented on the ‘Unit ID mapping’ tab in the Modbus-TCP excel sheet. | ||
+ | |||
+ | For the overall system data, look for com.victronenergy.system in the excel sheet, and use Unit-ID 100. | ||
+ | |||
+ | Note that both Unit-ID 0 and Unit-ID 100 map to the same internal address. We recommend to use ID 100, since many Modbus-TCP clients and PLCs do not work with ID 0. | ||
+ | |||
+ | === 2.3 Register addresses === | ||
+ | |||
+ | The list of available registers is in an Excel sheet, available for download on the [[https:// | ||
+ | |||
+ | Besides registers for connected Chargers, Inverters, and other products, there is also a set of registers that represent the entire system: com.victronenergy.system. This service is also where the //System Overview// pages in the GUI, and the VRM Dashboard get their data. | ||
+ | |||
+ | Note that not all list registers are available for each device. For example a BMV Battery Monitor has lots of readings: historical data such as maximum/ | ||
+ | |||
+ | Use this table to map the definition in the ' | ||
+ | |||
+ | ^ Device class ^ Product types ^ Registers | ||
+ | | com.victronenergy.vebus | ||
+ | | com.victronenergy.solarcharger | Solar chargers (both VE.Can and VE.Direct connected) | ||
+ | | com.victronenergy.pvinverter | ||
+ | | com.victronenergy.battery | BMVs, CAN-Bus BMS connected batteries \\ Extra parameter set for Lynx Ion and Lynx BMS product family | 259 to 319 \\ 1282 to 1301 | | ||
+ | | com.victronenergy.charger | ||
+ | | com.victronenergy.inverter | ||
+ | | com.victronenergy.tank | ||
+ | | com.victronenergy.grid | Energy meters configured to measure the grid | 2600 to 2609 | | ||
+ | | com.victronenergy.gps | GPS | 2800 to 2807 | | ||
+ | | com.victronenergy.tank | Tank sensors | 3000 to 3007 | | ||
+ | | com.victronenergy.genset | Generators | ||
+ | | com.victronenergy.temperature | Temperature sensors < | ||
+ | | com.victronenery.meteo | IMT solar irradiation sensors | 3600 to 3603 | | ||
+ | |||
+ | (1): These are the auxiliary temperature sensors built-in to our GX devices, such as the Venus GX. For details, see [[venus-os: | ||
+ | |||
+ | ==== 3. Supported | ||
The supported function codes are: | The supported function codes are: | ||
Line 16: | Line 67: | ||
Note that there is no difference between function code 3 and 4. | Note that there is no difference between function code 3 and 4. | ||
- | ==== Product categories and registers | + | ==== 5. Mapping example |
+ | The purpose of this example is to show how to interpret the information in the worksheets of the | ||
+ | excel sheet containing the Modbus-TCP mapping. This excel sheet is available for download from our website on the [[https:// | ||
- | In the ModbusTCP Registerlist xlsx file, there is a column called ' | + | To request |
- | Note that, besides device specific registers, there is also a set of registers that represent | + | The Modbus-TCP reply will contain 2302. Divide it by 10, as specified in cell E3, and then you have the voltage: 230.2 Volts AC. |
- | * Inverters (with a VE.Bus connection), | + | ==== 6. Error codes and trouble shooting ==== |
- | * Skylla-i and Skylla-IP44: | + | |
- | * Inverters (with a VE.Direct connection): | + | |
- | * Grid-tie PV Inverters: com.victronenergy.pvinverter | + | |
- | * Solar chargers: com.victronenergy.solarcharger | + | |
- | * Tank levels: com.victronenergy.tank | + | |
- | * BMV Battery monitors, Lynx Shunts, Lynx Ions, CAN-Bus BMS connected batteries: com.victronenergy.battery | + | |
- | * Energy meters configured to measure the grid: com.victronenergy.grid | + | |
- | * GPS: com.victronenergy.gps | + | |
- | * Energy meters configured to measure a generator, as well as Fischer Panda generators: com.victronenergy.genset | + | |
- | * Temperature sensors (1): com.victronenergy.temperature | + | |
- | (1): There are only the temperature sensor inputs on the Venus GX! The battery temperature as measured by a sensor connected | + | === 6.1 The common cause: Unit-ID / Register combination === |
+ | |||
+ | In case a certain read or write is not successful, most likely there is an issue in the unitid/ | ||
+ | |||
+ | Besides double checking | ||
+ | |||
+ | === 6.2 Looking up the last Modbus-TCP Error on the GX Device=== | ||
+ | |||
+ | To see why a certain register | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === 6.3 Error codes === | ||
+ | |||
+ | These error codes are returned by our software to the PLC; and most PLC software tools allow seeing them. | ||
- | ==== Error codes ==== | ||
^Code^Name^Description^ | ^Code^Name^Description^ | ||
- | |0x01|IllegalFunction|The requested function is not supported| | + | |0x01|IllegalFunction|The requested function is not supported.| |
- | |0x02|IllegalDataAddress|The | + | |0x02|IllegalDataAddress|The |
- | |0x03|IllegalDataValue|The requested quantity of registers is invalid. See the modbus specs, http:// | + | |0x03|IllegalDataValue|The requested quantity of registers is invalid. See the modbus specs, http:// |
- | |0x0A|GatewayPathUnavailable|Unit | + | |0x0A|GatewayPathUnavailable|The requested |
- | |0x0B|GatewayTargetDeviceFailedToRespond|Requested | + | |0x0B|GatewayTargetDeviceFailedToRespond|Requested |
- | ==== Mapping example ==== | ||
- | The purpose of this example is to show how to interpret the information in the worksheets of the | ||
- | excel sheet containing the modbustcp mapping. This excel sheet is available for download from our website on the [[https:// | ||
- | To request the input voltage of a Multi or Quattro, connected to the VE.Bus sockets on the CCGX, use the following settings: unit-id 246, and set the data address of the first request register to 3. | + | ==== 7. Support ==== |
- | The ModbusTCP reply will contain 2302. Divide it by 10, as specified in cell E3, and then you have the voltage: 230.2 Volts AC. | + | The recommended method for support on Modbus-TCP questions is to use the [[https://community.victronenergy.com/ |
- | ==== Enabling ModbusTCP | + | Direct company support is only offered |
- | By default, ModbusTCP is disabled. To enable it, go into the settings menu, scroll down to ' | + | |
- | ==== What is a unit id and what do I need to set it to? ==== | + | ==== 8. FAQ ==== |
- | The unit id, sometimes called ‘slave address’, specifies what product connected to the CCGX needs to be addressed. See the tab ‘Unit ID mapping’ tab in the Modbus-TCP excel sheet. | + | |
- | ==== Which products can be interfaced via Modbus TCP? ==== | + | === Q1: Which products can be interfaced via Modbus-TCP? === |
All products that can be connected to the [[https:// | All products that can be connected to the [[https:// | ||
- | ==== Can I change a configuration setting in a Multi, for example the absorption voltage? | + | === Q2: Can I change a configuration setting in a Multi - for example: the absorption voltage? === |
No. | No. | ||
- | ==== Can I request multiple registers at the same time? ==== | + | === Q3: Can I request multiple registers at the same time? === |
Yes, you can! Though make sure not to include non existing registers in your query. Querying register 1 to 100 for example will not work, since registers 1 and 2 do not exist. | Yes, you can! Though make sure not to include non existing registers in your query. Querying register 1 to 100 for example will not work, since registers 1 and 2 do not exist. | ||
- | ==== Can I implement more features myself? | + | === Q4: Can I implement more features myself? === |
Yes, you can! We are, slowly, making the Color Control code open source, and the Modbus-TCP sources are already available on https:// | Yes, you can! We are, slowly, making the Color Control code open source, and the Modbus-TCP sources are already available on https:// | ||
- | ==== In a parallel or three phase system, how can I address a single unit? ==== | + | === Q5: In a parallel or three-phase system, how can I address a single unit? === |
- | You cannot interface | + | You cannot interface |
+ | === Q6: Will unit-id' | ||
- | ==== Will unit ids change after a reboot or loss of power? ==== | + | No. |
- | Only for vedirect Devices via USB it can change. But even then our experience is that it only changes in the first reboot. | + | === Q7: Advanced debugging === |
- | Unit ids of products not connected via USB will not change. | ||
- | ==== Advanced debugging ==== | + | If all unit-id' |
- | In case all unit-ids and register addresses have been checked and double checked, and still it doesn' | + | Follow these steps: |
- | + | - [[ccgx: | |
- | Steps: | + | - Login with SSH (use for example Putty in Windows - or simply type //ssh root@[ip address here]// |
- | - Enable SSH | + | |
- | - Login, use for example Putty in windows, | + | |
- List the latest log file:< | - List the latest log file:< | ||
- | cat / | + | cat /var/ |
</ | </ | ||
Line 99: | Line 148: | ||
2016-01-08 16: | 2016-01-08 16: | ||
- | In most cases there is a problem in either unit ids or the register addresses. Double check the numbers shown in the output with the numbers as used in your modbustcp | + | In most cases the problem |
+ | |||
+ | === Q8: Does Modbus-TCP support ESS? === | ||
+ | |||
+ | Yes. See the [[https:// | ||
- | ==== Does Modbus TCP support Hub-4? ==== | ||
- | Yes. See the [[https:// | ||
- | ==== Disqus ==== | ||
- | ~~DISQUS~~ |
ccgx/modbustcp_faq.1507042137.txt.gz · Last modified: 2017-10-03 16:48 by mvader