This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Problem with function 16 in Spacelynk modbus
#1
Hello,

I'm trying to control a Hidew DOS dehumidifier via Modbus, I made this profile:

Code:
{

"product_code": "DOS",

"manufacturer": "HIDEW",

"description": "Deumidificatore DOS",

    "mapping":
    
        [
                
        {    "name": "Unità On/Off",
            "bus_datatype":    "bool",
            "address": 0,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Forzatura Deumidifica",
            "bus_datatype":    "bool",
            "address": 1,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Abilititazione Forzatura Deumidifica",
            "bus_datatype":    "bool",
            "address": 2,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Forzatura Riscaldamento",
            "bus_datatype":    "bool",
            "address": 3,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Abilitazione Forzatura Riscaldamento",
            "bus_datatype":    "bool",
            "address": 4,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Reset Allarmi",
            "bus_datatype":    "bool",
            "address": 5,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Reset pulizia filtri",
            "bus_datatype":    "bool",
            "address": 6,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Forzatura Raffreddamento",
            "bus_datatype":    "bool",
            "address": 7,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Abilitazione Forzatura Raffreddamento",
            "bus_datatype":    "bool",
            "address": 8,
            "type": "coil",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Stato compressore",
            "bus_datatype":    "bool",
            "address": 0,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Stato valvola acqua",
            "bus_datatype":    "bool",
            "address": 1,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Stato resistenza elettrica",
            "bus_datatype":    "bool",
            "address": 2,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza valvola acqua",
            "bus_datatype":    "bool",
            "address": 3,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza resistenza elettrica",
            "bus_datatype":    "bool",
            "address": 4,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza allarme",
            "bus_datatype":    "bool",
            "address": 5,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Filtri da pulire",
            "bus_datatype":    "bool",
            "address": 6,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza ventilatori elettronici",
            "bus_datatype":    "bool",
            "address": 7,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza opzione sbrinamento gas caldo",
            "bus_datatype":    "bool",
            "address": 8,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme sonda",
            "bus_datatype":    "bool",
            "address": 9,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme alta pressione",
            "bus_datatype":    "bool",
            "address": 10,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme bassa pressione",
            "bus_datatype":    "bool",
            "address": 11,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme macchina scarica",
            "bus_datatype":    "bool",
            "address": 12,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme bassa temperatura per ON compressore",
            "bus_datatype":    "bool",
            "address": 13,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme sovratemperatura resistenza elettrica",
            "bus_datatype":    "bool",
            "address": 14,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Allarme ventilatore",
            "bus_datatype":    "bool",
            "address": 15,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Sbrinamento attivo",
            "bus_datatype":    "bool",
            "address": 16,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Richiesta deumidifica",
            "bus_datatype":    "bool",
            "address": 17,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Richiesta riscaldamento",
            "bus_datatype":    "bool",
            "address": 18,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Richiesta raffreddamento",
            "bus_datatype":    "bool",
            "address": 19,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza controllo riscaldamento",
            "bus_datatype":    "bool",
            "address": 20,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza controllo raffreddamento",
            "bus_datatype":    "bool",
            "address": 21,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza funzione deumidificazione ad aria neutra",
            "bus_datatype":    "bool",
            "address": 22,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Presenza opzione raffreddamento con condensatore remoto",
            "bus_datatype":    "bool",
            "address": 23,
            "type": "discreteinput",
            "writable": false
            },
            
        {    "name": "Stato condensatore remoto",
            "bus_datatype":    "bool",
            "address": 24,
            "type": "discreteinput",
            "writable": false
            },
        
        {    "name": "Set umidità relativa",
            "bus_datatype":    "int16",
            "address": 0,
            "type": "register",
            "write_multiple" : true,
            "writable": true,
            "units": " %"
            },
            
        {    "name": "Set temperatura",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 1,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
        
        {    "name": "Ore di attesa promemoria pulizia filtri",
            "bus_datatype":    "int16",
            "address": 2,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " h"
            },
            
        {    "name": "Velocità ventilatore in ricircolo",
            "value_custom":    
                                {
                                    "1" : "Minima",
                                    "2" : "Media",
                                    "3" : "Massima"
                                },
            "bus_datatype":    "int16",
            "address": 3,
            "type": "register",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Velocità ventilatore in deumidifica",
            "value_custom":    
                                {
                                    "2" : "Media",
                                    "3" : "Massima"
                                },
            "bus_datatype":    "int16",
            "address": 4,
            "type": "register",
            "write_multiple" : true,
            "writable": true
            },
            
        {    "name": "Set sbrinamento statico",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 5,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Differenziale sbrinamento statico",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 6,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Set sbrinamento gas caldo",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 7,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Fine sbrinamento gas caldo",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 8,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Offset temperatura ambiente",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 9,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
        
        {    "name": "Offset umidità ambiente",
            "bus_datatype":    "int16",
            "address": 10,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " %"
            },
            
        {    "name": "Differenziale on riscaldamento",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 11,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Differenziale off riscaldamento",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 12,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
        
        {    "name": "Differenziale on deumidifica",
            "bus_datatype":    "int16",
            "address": 13,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " %"
            },
        
        {    "name": "Differenziale off deumidifica",
            "bus_datatype":    "int16",
            "address": 14,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " %"
            },
            
        {    "name": "Differenziale on raffreddamento",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 15,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Differenziale off raffreddamento",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 16,
            "type": "register",
            "write_multiple": true,
            "writable": true,
            "units": " °C"
            },
            
        {    "name": "Stagione",
            "value_custom":    
                                {
                                    "0" : "Inverno",
                                    "1" : "Estate",
                                    "2" : "Solo Deumidifica"
                                },
            "bus_datatype":    "int16",
            "address": 17,
            "type": "register",
            "write_multiple" : true,
            "writable": true
            },
        
        {    "name": "Set umidità relativa effettivo",
            "bus_datatype":    "int16",
            "address": 0,
            "type": "inputregister",
            "writable": false,
            "units": " %"
            },
            
        {    "name": "Set temperatura effettivo",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 1,
            "type": "inputregister",
            "writable": false,
            "units": " °C"
            },
            
        {    "name": "Velocità effettiva ventilatore",
            "value_custom":    
                                {
                                    "0" : "Off",
                                    "1" : "Minima",
                                    "2" : "Media",
                                    "3" : "Massima"
                                },
            "bus_datatype":    "int16",
            "address": 2,
            "type": "inputregister",
            "writable": false
            },
        
        {    "name": "Umidità relativa ambiente",
            "bus_datatype":    "int16",
            "address": 3,
            "type": "inputregister",
            "writable": false,
            "units": " %"
            },
            
        {    "name": "Temperatura ambiente",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 4,
            "type": "inputregister",
            "writable": false,
            "units": " °C"
            },
            
        {    "name": "Temperatura acqua",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 5,
            "type": "inputregister",
            "writable": false,
            "units": " °C"
            },
            
        {    "name": "Temperatura evaporazione",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 6,
            "type": "inputregister",
            "writable": false,
            "units": " °C"
            },
            
        {    "name": "Temperatura sbrinamento",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 7,
            "type": "inputregister",
            "writable": false,
            "units": " °C"
            },
            
        {    "name": "Matricola valore 1",
            "bus_datatype":    "int16",
            "address": 8,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 2",
            "bus_datatype":    "int16",
            "address": 9,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 3",
            "bus_datatype":    "int16",
            "address": 10,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 4",
            "bus_datatype":    "int16",
            "address": 11,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 5",
            "bus_datatype":    "int16",
            "address": 12,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 6",
            "bus_datatype":    "int16",
            "address": 13,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 7",
            "bus_datatype":    "int16",
            "address": 14,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 8",
            "bus_datatype":    "int16",
            "address": 15,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 9",
            "bus_datatype":    "int16",
            "address": 16,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Matricola valore 10",
            "bus_datatype":    "int16",
            "address": 17,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Tipo Macchina",
            "value_custom":    
                                {
                                    "0" : "DDS",
                                    "1" : "DCS",
                                    "2" : "DVS",
                                    "3" : "DOS"
                                },
            "bus_datatype":    "int16",
            "address": 18,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Taglia Macchina",
            "bus_datatype":    "int16",
            "address": 19,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Ore funzionamento macchina",
            "bus_datatype":    "int16",
            "address": 20,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Minuti rimanenti per standby",
            "bus_datatype":    "int16",
            "address": 21,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Stato accensione macchina",
            "value_custom":    
                                {
                                    "0" : "Off",
                                    "1" : "Standby",
                                    "2" : "On"
                                },
            "bus_datatype":    "int16",
            "address": 22,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Comando Unità",
            "value_custom":    
                                {
                                    "0" : "da display",
                                    "1" : "da fasce orarie",
                                    "2" : "da remoto",
                                    "3" : "da seriale"
                                },
            "bus_datatype":    "int16",
            "address": 23,
            "type": "inputregister",
            "writable": false
            },
            
        {    "name": "Taratura ventilatore elettronico",
            "bus_datatype":    "int16",
            "address": 24,
            "type": "inputregister",
            "writable": false,
            "units": " %"
            },
            
        {    "name": "Stagione effettiva",
            "value_custom":    
                                {
                                    "0" : "Inverno",
                                    "1" : "Estate",
                                    "2" : "Solo deumidifica"
                                },
            "bus_datatype":    "int16",
            "address": 25,
            "type": "inputregister",
            "writable": false
            },
        
        {    "name": "Pressione di evaporazione",
            "bus_datatype":    "float16",
            "value_multiplier": 0.1,                        
            "address": 26,
            "type": "inputregister",
            "writable": false,
            "units": " bar"
            }
            
    ]
    
}

Something strange is happening:

I have a Modbus TCP bridge (Z-KEY by Seneca) and 3 modbus devices, everything is working fine but when I try to write a holding register (with write_multiple set to true as the manufacturer recommend) it doesn't work. For example, I can read this register, but I can't write it.

Code:
{    "name": "Set umidità relativa",
            "bus_datatype":    "int16",
            "address": 0,
            "type": "register",
            "write_multiple" : true,
            "writable": true,
            "units": " %"
            },


I tried with Modscan and everything works fine, also all the coils are managed correctly from Spacelynk...only write holding registers function seems broken.

Any ideas?
Reply
#2
Try adding "datatype": "int16" to the mapping entry.
Reply
#3
thanks, it works!
Reply


Forum Jump: