i m working to make esp32 modbus rtu to coolmaster/ integrator adapter like intesis basically for vrf vrv system(hvac) im beginner

im doing modbus for first time i have seen attached hitachi like adapter i got its pin mapping successfully but related to one indoor unit i was able to make pin mapping register mapping but when i go to coolmaster there is term called virtual address im struck because i use esp idf freemodbus stack and inside the device parameter descriptor im unsure how shall i implement for 16/32/232 units and if one slave id persists then how shall i control n number of units please if someonehave gone thorugh this please help me im struck near register mapping and because regitser location are fixed if one slave is needed and if more slaves are then how in vrf its manager i need more info about integration (please ignore typo mistakes)
 

Attachments

Hello and welcome to the forum!

If I'm understanding your question correctly, you're confused about CoolMaster's Virtual Address concept. The following pages discuss this topic:
https://support.coolautomation.com/hc/en-us/articles/4415361550737-CoolMaster-Virtual-Addresses
https://support.coolautomation.com/...Master-ModBus-Virtual-addresses-configuration
https://support.coolautomation.com/...Master-BACnet-Virtual-addresses-configuration

After reading the above, I cannot blame you for being confused. From my understanding of those resources, the Virtual Address does not actually matter for Modbus. What does matter is the Base Address associated with each Virtual Address, as the Base Address is the starting Modbus register address for the registers associated with that specific indoor unit (or VRF, VRV, etc.).

In order to have a complete understanding of the Virtual Address (VA) concept, it helps to also read the BACnet Virtual addresses configuration link above, since that shows the VA's are actually used in BACnet to determine each BACnet object's instance number.

So in summary, Virtual Addresses are relevant with CoolMaster devices only when using BACnet. When using Modbus, only the Base Address is used, so the Virtual Address internal to the CoolMaster device is irrelevant.

For example, say you have 3 indoor units connected to a single CoolMaster device. Each indoor unit has 3 Modbus Holding Registers. The Virtual Address table may look something like this:
UIDAssociated VABase Address HEXBaseAddress Decimal
L1.10000010x000000000
L1.10100020x000300003
L1.10200030x000600006

In this example, the registers for device "L1.100" are at register addresses 0 - 2, "L1.101" are at register addresses 3 - 5, and "L1.102" are at register addresses 6 - 8.

Note that with the CoolMaster device, even though it may be connected to several indoor units, it still only presents itself as a single Modbus device on the network (with only a single Modbus device address, or Unit ID in Modbus/TCP). The multiple indoor units are accessible by accessing different registers on the single Modbus device.
 
Yeah, this is a common point of confusion with VRF/CoolMaster setups. The virtual address just means multiple indoor units sit behind a single Modbus slave ID.
You select which unit you want using an address or register offset, then use the same fixed register map. In ESP-IDF FreeModbus, it’s typically done by adding the unit index to a base register, and once that clicks, handling multiple units becomes much easier.
 
Hello and welcome to the forum!

If I'm understanding your question correctly, you're confused about CoolMaster's Virtual Address concept. The following pages discuss this topic:
https://support.coolautomation.com/hc/en-us/articles/4415361550737-CoolMaster-Virtual-Addresses
https://support.coolautomation.com/...Master-ModBus-Virtual-addresses-configuration
https://support.coolautomation.com/...Master-BACnet-Virtual-addresses-configuration

After reading the above, I cannot blame you for being confused. From my understanding of those resources, the Virtual Address does not actually matter for Modbus. What does matter is the Base Address associated with each Virtual Address, as the Base Address is the starting Modbus register address for the registers associated with that specific indoor unit (or VRF, VRV, etc.).

In order to have a complete understanding of the Virtual Address (VA) concept, it helps to also read the BACnet Virtual addresses configuration link above, since that shows the VA's are actually used in BACnet to determine each BACnet object's instance number.

So in summary, Virtual Addresses are relevant with CoolMaster devices only when using BACnet. When using Modbus, only the Base Address is used, so the Virtual Address internal to the CoolMaster device is irrelevant.

For example, say you have 3 indoor units connected to a single CoolMaster device. Each indoor unit has 3 Modbus Holding Registers. The Virtual Address table may look something like this:
UIDAssociated VABase Address HEXBaseAddress Decimal
L1.10000010x000000000
L1.10100020x000300003
L1.10200030x000600006

In this example, the registers for device "L1.100" are at register addresses 0 - 2, "L1.101" are at register addresses 3 - 5, and "L1.102" are at register addresses 6 - 8.

Note that with the CoolMaster device, even though it may be connected to several indoor units, it still only presents itself as a single Modbus device on the network (with only a single Modbus device address, or Unit ID in Modbus/TCP). The multiple indoor units are accessible by accessing different registers on the single Modbus device.
i have understand all your concerns related to va in coolmaster , i have singular doubt now how do i know which va is added from coolmaster device how does my esp32 code will understand its for va=1 for ex then apply this formula Base Address = VA*16 +1 ; i can understand the register map clearly and i can implement that i can make handler in code also like if va=1 handle this use descriptor table or parameter table from register17 base to 32 likewise different va's but at this point how shall i get to know which va is commanded we can do hard coding but thats not effieicient because we engineers might get the outcome but what if non technical person is managing this this is complete caos i do understand about the above table you shared thats totally fine sir but how in code i manipulate such values in reality , thank you sir for atleast telling me bacnet guidleines i will look if i find some clue
 
Yeah, this is a common point of confusion with VRF/CoolMaster setups. The virtual address just means multiple indoor units sit behind a single Modbus slave ID.
You select which unit you want using an address or register offset, then use the same fixed register map. In ESP-IDF FreeModbus, it’s typically done by adding the unit index to a base register, and once that clicks, handling multiple units becomes much easier.
yes of course but how will i know that , which va is going to be used i dont have any sfr or register related to modbus to read that terms because that term belongs to coolmaster and thats a virtual concept i can do hardcoding but that will be to lengthy as there might be n number of units and thank you mam
Hello and welcome to the forum!

If I'm understanding your question correctly, you're confused about CoolMaster's Virtual Address concept. The following pages discuss this topic:
https://support.coolautomation.com/hc/en-us/articles/4415361550737-CoolMaster-Virtual-Addresses
https://support.coolautomation.com/...Master-ModBus-Virtual-addresses-configuration
https://support.coolautomation.com/...Master-BACnet-Virtual-addresses-configuration

After reading the above, I cannot blame you for being confused. From my understanding of those resources, the Virtual Address does not actually matter for Modbus. What does matter is the Base Address associated with each Virtual Address, as the Base Address is the starting Modbus register address for the registers associated with that specific indoor unit (or VRF, VRV, etc.).

In order to have a complete understanding of the Virtual Address (VA) concept, it helps to also read the BACnet Virtual addresses configuration link above, since that shows the VA's are actually used in BACnet to determine each BACnet object's instance number.

So in summary, Virtual Addresses are relevant with CoolMaster devices only when using BACnet. When using Modbus, only the Base Address is used, so the Virtual Address internal to the CoolMaster device is irrelevant.

For example, say you have 3 indoor units connected to a single CoolMaster device. Each indoor unit has 3 Modbus Holding Registers. The Virtual Address table may look something like this:
UIDAssociated VABase Address HEXBaseAddress Decimal
L1.10000010x000000000
L1.10100020x000300003
L1.10200030x000600006

In this example, the registers for device "L1.100" are at register addresses 0 - 2, "L1.101" are at register addresses 3 - 5, and "L1.102" are at register addresses 6 - 8.

Note that with the CoolMaster device, even though it may be connected to several indoor units, it still only presents itself as a single Modbus device on the network (with only a single Modbus device address, or Unit ID in Modbus/TCP). The multiple indoor units are accessible by accessing different registers on the single Modbus device.
sir this are guidelines and the va plays a major role so thats why you given above are secondary things but think of it at now that you are writting a firmware for this
 

Attachments

I'm sorry, but I don't understand what it is you're trying to accomplish and therefore don't understand the problem you're trying to solve.

Can you please provide a high-level description of your project or application? Is this for a one-time integration? Are you designing a new product that interfaces to multiple manufacturers' Modbus VRF gateways? If so, what is the purpose of this product? How is the Modbus data expected to be used?
 
I'm sorry, but I don't understand what it is you're trying to accomplish and therefore don't understand the problem you're trying to solve.

Can you please provide a high-level description of your project or application? Is this for a one-time integration? Are you designing a new product that interfaces to multiple manufacturers' Modbus VRF gateways? If so, what is the purpose of this product? How is the Modbus data expected to be used?
i will try to explain in simpler words i have mobile app that connects with esp32 mcu suppose by wifi and now i have modbus that makes connection for me in coolmaster and esp32 via rs485 lets say my task will be that what a person does manually switching from coolmaster device that must be done via mobile app and for that the va is responsible to enter the specific unit we are tying to access and rest concerned i will do for many vrf's but for now establishing for single type is crucial in short words the missing piece is that va i know va=1 so its register mapping i know but how its accessed as va1 thats logic im trying to get like we had a pcb and clicked a switch we get input and we can start code like its for this device we can acheive someting over it but right now i dont own coolmaster product so im doing blindly so for me va matters so i can access the units we desire for is easy then onwards
 
Thank you for the detailed explanation. I think I understand now.

As mentioned previously, the VA is irrelevant to the Modbus client (ESP32 in your case). What is required by the Modbus client is the Base Address. Therefore, instead of having a user enter the specific type of unit and a VA, they would instead enter the type of unit and its Base Address on the CoolMaster. If you wanted to allow the user to also enter the VA associated with that unit and its Base Address, you could, but this would be strictly for informational purposes and not actually used by your ESP32.

Keep in mind that modern IOT and connected app ecosystems are very different and have different goals compared to the old machine-to-machine operational technology ecosystems like Modbus networks. Modbus is a basic and limited protocol, but it is straightforward, efficient, and in wide use. You cannot force functionality out of a Modbus device that it simply cannot do.

Another recent thread touches on this and may be a good read for you to develop a better understanding of what can be expected from Modbus devices and systems.
https://control.com/forums/threads/late-bloomer-to-modbus-have-lots-of-silly-questions.55592/
 
Top