The proof of concept was written to figure out how to retain values across reboots for a program which will be much larger. If something special has to be done to account for the first time the program runs and the order the inputs to the HMS device will be copied to portal variables then that will add a lot of complexity.
You ask about Modbus - this would be for when the HMS device is a Modbus slave, but for DNP3 when the device is a slave this is actually part of the protocol. If I have a DNP3 input which I can write values to the device, called an output in DNP3 but called an input in the HMS config UI, and I write a value to one of these fields, that value must persist if the device is rebooted. For example, if I have a DNP3 analog output configured on the device at address 3 and I write the value 2000 to it, then I reboot the device, when the device comes back the value both as reported by the HMS device on DNP3 integrity scans and the value actually used by anything in the webPLC which references that value (remember, a DNP3 output is an input to the device) must use the last value I wrote (2000 in this example).
Let me know if you want to get on the phone to discuss this, it is very import for my application that this device supports this behavior.