Purpose: make the PQube3 (Modbus slave) IP address settable over USB with one command, no HMIDesigner in the field. For the Powerside HMI070 project. Last updated: 2026-09-18 15:12 PDT.
IP_SLAVE is a String define (also compile-time). The change: create a string register for the slave IP, bind the Modbus master's slave address to that register, and add two tiny macros so the value survives power cycles via a flash file. After one rebuild and one deploy, every panel accepts a new IP over USB with #VSS, forever.plcN(typ, adress) calculation documents slaves addressed by "MDNS (Stringregister Id)", so the master can resolve a slave from a string register. That's why I lean yes, roughly two chances in three. If Step 1 shows a literal-only field, no runtime path exists on this firmware and the answer is Goal 2 (rebuild + push), plus one email to DISPLAY VISIONS asking for register-bound slave addresses.S:/R: prefix, or a right-click "bind to register". Also check whether the slave is defined once (a named slave that the register rows reference) or per row.S_SLAVE_IP. Default value: the bench PQube3, 10.0.0.22. Write down its numeric ID (shown in brackets, like S_temp0 [0]). That number is what the USB command uses. Pick an unused ID, e.g. [10].S_SLAVE_IP.S_SLAVE_IP. Leave port 502, unit ID 1, timeouts as they are.#FRO </slave_ip.txt>,0 #FRA 10 #FRCSave macro (the USB utility triggers the same thing by sending these commands itself, so this macro is optional but handy behind a touch button):
#FWO </slave_ip.txt>,0,1,64 #FWS 10 #FWCReplace
10 with your real ID from Step 2. #FRA reads up to a newline, so the file is written with a trailing newline. If the Register editor offers a "retain / persistent" flag for registers, use that instead and skip the file macros.M_ProjUpdateStart. It opens the interface settings so the panel accepts a project upload without touching the boot menu. Needed for uploads over Modbus/LAN; over USB it may be unnecessary, but it costs nothing..eup once per panel at the factory. From then on, field updates ship as .eus files, which contain no project source. The .eup never leaves Powerside..eup to Duma to push over USB with eup_push.py.#VSS 10,"10.0.0.22"; set the register #FWO </slave_ip.txt>,0,1,64 persist it #FWA "10.0.0.22\n" #FWC #QSR 2000,3 reconnect the master to the new slave
Already staged as tools/set_slave_ip.py --reg 10 --ip 10.0.0.22 --reconnect. Same code becomes the Windows .exe button.
#VRI to set, persisted the same way). Check this during Step 1 while you're in the dialog. If they're literal-only, they stay compile-time and change only via Goal 2.| Check | Expected |
|---|---|
Send #VSS 10,"10.0.0.22"; then #QSR over USB | Panel's Voltage screen shows the PQube3 reading (~123 V on the bench unit); Duma reads the same value from the PQube3 directly with pymodbus |
| Send a wrong IP, then the right one | Screen loses data, then recovers |
| Power-cycle the panel | IP survives (file macro worked) |
#QSR, #QCH): HMIsystemcommands.html#VSS, #VRI): VariablesRegistersArrays.html#FWO/#FWA/#FWS/#FRO/#FRA): FilesMemory.htmlplcN slave-by-string-register hint: FunctionsandCalculations.htmlM_ProjUpdateStart: Modbus1.html.eup vs .eus: Projectencryption.htmlUnlisted page. Prepared by Duma for Sahir Mathur, 2026-09-18.