None of the equipment needs to communicate at all to work.
Any charge controller will just push as much current as it can from the solar power coming in, up until the battery voltage reaches the absorb limit, then it will drop to constant voltage mode. Some charge controllers will also be able to switch to a lower float voltage. But once it is configured for the batteries, it should just do it's thing trying to keep the batteries charged.
The inverter just needs to take the battery voltage in an convert it to the desired AC line voltage. Again, no need to communicate once it has been configured.
The BMS just monitors the battery cells and will shut off charging or discharging if any cell goes too high or too low. This is the only semi dangerous one as the loss of load while charging can cause a voltage spike. The charging source should be se to stop charging far enough below the BMS cut off for the BMS to only activate if something is seriously wrong. Think of it like a fuse blowing from a serious overload.
Rapid shut down and even arc fault protection is another add on. In most areas, they are only required if the DC wiring is over a living space. On a shed or ground mount it is not required. As others have said, the cut off boxes at each solar panel are turned on when they detect the "keep alive" signal which is being sent back up the DC wiring. If this signal is lost for any reason, the switches open to shut off the voltage from the solar panels. A wire break, a manual switch, or an arc noise detector can all shut off the keep alive signal and cause the shut off boxes to turn off the panels.
No data is required for any of this to work. All of the devices could be from different manufacturers, and it will still make power. The electrons don't care if they were coming from a Midnight Solar charge controller and being inverter by an Outback inverter. Where this does cause a small issue is when monitoring the system. If you use all Enphase, or All Schneider, or All Outback, then a single monitoring program will show you everything that is going on. In my system, I need to look at two different monitoring portals. I look at Enphase for my solar production, and then Schneider for my battery inverter operation. In fact, I also have a third program if I want to see what my PLC is doing to adjust the Schneider inverter/charger operation. I can see those changes after they happen in the Schneider software, but I can't see what caused the adjustment to happen. For example, when I am running off of the batteries in the evening, I will see the inverter output power go from just 800 watts up to 4,000 watts. If this was a normal off grid system, that would just mean a large load turned on at the output, but sine I am grid tied, it is a bit more complex than that. When a load turns on back in my main grid panel, the inverter is not aware of it. The PLC measures the load in the main panel, and commands the inverter to export power to the grid input to cover the load so I don't buy the power from the grid.
The charge controllers do not need to know that rapid shut down even exists. If anything causes the RSD boxes to shut off, the charge controller would just stop producing power, the same as if a huge dense cloud just blocked the sun from hitting the panels. If the fault clears an the panels are turned back on, then it is like the cloud cleared and the charge controller will go back to charging from the available power. The only tie between the charge controller and the RSD is that some charge controllers do have the keep alive transmitter installed in them. And some newer ones even have the built in arc fault sensing. This is a good thing as it eliminates another box in the system. If this is the case, then the charge controller should also have terminals to wire in a remote RSD shut off switch.
Another extra box that can be added to a Schneider system is the battery monitor. If you have multiple inverters and/or charge controllers, it is a good idea to have one. It is not required, as all the devices will work on voltage alone, but, when there is a battery monitor, it can measure the complete current going in or out of the battery bank. That allows it to more accurately calculate the battery state of charge. This can become important on a system with an LFP battery bank. Since the voltage changes so little with state of charge, it might not know if the batteries charged at all from 40% to 80%. Functions like grid support and grid sell can be programmed to stop if the battery is too low. But doing that from just voltage might not work very well on LFP cells. I have my system stop running off battery when my grid is up and the cells fall to 45% or so. That give me enough energy to make it through a night if the grid goes down after dark. Without the battery monitor, it might keep running until a cell hits the bottom knee voltage. That would be way too low.
Running completely off grid is actually easier as you know for sure all of the loads are on the output side of the inverter, and there is no grid sell. Even AC coupled, the Schneider works perfectly while off grid, without needing any intervention from the PLC. It is obvious the software was originally written for off grid use as it just plain works.