1

I want to push values from rSet into the variable rAct. That means, if in my HMI change the value, then my rAct should have the same value as rSet.

I have tried everything possible. Would greatly appreciate any help. The variables rAct and rSet have been declared with a loop.

module.exports = { run: function (addressSpace, device, opcua, verbose, serverValues) {

// create ppC_Compound_V3 object

const namespace3=addressSpace.getNamespace('http://mynamespace-3/UA/');


var ppC_Compound_V3 = namespace3.addObject({
    organizedBy: device,
    browseName: "ppC_Compound_V3",
    nodeId: "s=ppC_Compound_V3",
    description: "The PLC instance which supports you with OPC UA functionality" 
})





for (let i = 0; i<14; i++){
    var nr = namespace3.addVariable({
    componentOf: udtEmPz,
    browseName : i.toString(),
    dataType   : opcua.DataType.Double,
    nodeId     : "s=" + "\"ZEEX_3111_Hmi\".\"udtEmPz\""+ "[" + i + "]",
     
    
}
) 

var rPzTemp = namespace3.addVariable({
    componentOf: nr,
    browseName : "rPzTemp",
    dataType   : opcua.DataType.String,
    nodeId     : "s=" + "\"ZEEX_3111_Hmi\".\"udtEmPz\""+ "[" + i + "]." + "\"rPzTemp\""
   
}
) 


var rAct = namespace3.addVariable({
    componentOf: rPzTemp,
    browseName: "rAct",
    dataType: opcua.DataType.Float,
    nodeId: "ns=3;s=" + "\"ZEEX_3111_Hmi\".\"udtEmPz\"" + "[" + i + "]." + "\"rPzTemp\".\"rAct\"",
    value: {
        get: function () {
            const nodeIdValue=[];
            const rSetValue = serverValues["ns=3;s=" + "\"ZEEX_3111_Hmi\".\"udtEmPz\"" + "[" + i + "]." + "\"rPzTemp\".\"rSet\""];
            console.log(`Der Wert von rSet ist: ${rSetValue}`);
            return new opcua.Variant({ dataType: opcua.DataType.Float, value: serverValues[nodeIdValue] })
        },
        set: function (variant) {
            // Do nothing
        }
    }
});

var rSet = namespace3.addVariable({
    componentOf: rPzTemp,
    browseName: "rSet",
    dataType: opcua.DataType.Float,
    nodeId: "ns=3;s=" + "\"ZEEX_3111_Hmi\".\"udtEmPz\"" + "[" + i + "]." + "\"rPzTemp\".\"rSet\"",
    value: {
        get: function () {
            const nodeIdValue = this.nodeId.value;
            return new opcua.Variant({ dataType: opcua.DataType.Float, value: serverValues[nodeIdValue] });
        },
        set: function (variant) {
            const nodeIdValue = this.nodeId.value;
            serverValues[nodeIdValue] = parseFloat(variant.value);
            console.log(`Setter-Funktion aufgerufen für rSet ${i} mit nodeId ${nodeIdValue}: ${serverValues[nodeIdValue]}`);


            return opcua.StatusCodes.Good;
        }
    }
});

I have tried everything possible, unfortunately it does not pass the value to rAct. Would be very happy to get some help. I have posted my solution above

0 Answers0