mmd604

MrPLC Member
  • Content count

    33
  • Joined

  • Last visited

Community Reputation

0 Neutral

About mmd604

  • Rank
    Sparky

Profile Information

  • Country Canada
  1. PLC Keyswitch Default Position

    We have no machines connected to the internet on are process network and we port forward instead of opening ports.  You can protect against script kiddies but a good hacker good luck with that.
  2. Scale Data telnet

    Thank you kindly
  3. I need to get scale data from a mettler toledo scale into a sql server.  The live scale data is hosted at a ip on port 23(telnet) any ideas?
  4. Distributed SE Restore

    If your talk about restoring a mer file to a runtime so you can edit a hmi application in factorytalk SE yes I have ran into that problem.  Try using a different version to restore for instance I was trying version 10 SE then I attempted version 9 SE and it worked. 
  5. DeltaV

    We have the physical I/O we just need more licensing to actual implement the I/O in control studio
  6. Export Data Files to .txt or .csv file?

    Node Red works great for getting data from studio 5000 and populating a excel spread sheet
  7. DeltaV

    I am curious as deltav is the only dcs system I have worked on.  Do most dcs systems charge for use of input and outputs I find this outrageous
  8. I have a opc client(deltav) at one facility and a OPC server(Lighthouse) at another location.  I would like to read and write data to the server via the client over the web has anybody done this ?
  9. Data Collection and Display

    Download and install node red and then install this pallet "node-red-contrib-opcua-server"   
  10. Data Collection and Display

    function constructAlarmAddressSpace(server, addressSpace, eventObjects, done) {   // server = the created node-opcua server   // addressSpace = address space of the node-opcua server   // eventObjects = add event variables here to hold them in memory from this script   // internal sandbox objects are:   // node = the compact server node,   // coreServer = core compact server object for debug and access to NodeOPCUA   // this.sandboxNodeContext = node context node-red   // this.sandboxFlowContext = flow context node-red   // this.sandboxGlobalContext = global context node-red   // this.sandboxEnv = env variables   // timeout and interval functions as expected from nodejs   const opcua = coreServer.choreCompact.opcua;   const LocalizedText = opcua.LocalizedText;   const namespace = addressSpace.getOwnNamespace();   const Variant = opcua.Variant;   const DataType = opcua.DataType;   const DataValue = opcua.DataValue;   var flexServerInternals = this;   this.sandboxFlowContext.set("isoInput1", 0);   this.setInterval(() => {     flexServerInternals.sandboxFlowContext.set(       "isoInput1",       Math.random() + 50.0     );   }, 500);   this.sandboxFlowContext.set("isoInput2", 0);   this.sandboxFlowContext.set("isoInput3", 0);   this.sandboxFlowContext.set("isoInput4", 0);   this.sandboxFlowContext.set("isoInput5", 0);   this.sandboxFlowContext.set("isoInput6", 0);   this.sandboxFlowContext.set("isoInput7", 0);   this.sandboxFlowContext.set("isoInput8", 0);   this.sandboxFlowContext.set("isoInput9", 0);   this.sandboxFlowContext.set("isoOutput1", 0);   this.setInterval(() => {     flexServerInternals.sandboxFlowContext.set(       "isoOutput1",       Math.random() + 10.0     );   }, 500);   this.sandboxFlowContext.set("isoOutput2", 0);   this.sandboxFlowContext.set("isoOutput3", 0);   this.sandboxFlowContext.set("isoOutput4", 0);   this.sandboxFlowContext.set("isoOutput5", 0);   this.sandboxFlowContext.set("isoOutput6", 0);   this.sandboxFlowContext.set("isoOutput7", 0);   this.sandboxFlowContext.set("isoOutput8", 0);   this.sandboxFlowContext.set("isoOutput9", 0);   coreServer.debugLog("init dynamic address space");   const rootFolder = addressSpace.findNode("RootFolder");   node.warn("construct new address space for OPC UA");   const myDevice = namespace.addFolder(rootFolder.objects, {     "browseName": "RaspberryPI-Zero-WLAN"   });   const gpioFolder = namespace.addFolder(myDevice, { "browseName": "GPIO" });   const isoInputs = namespace.addFolder(gpioFolder, {     "browseName": "Inputs"   });   const isoOutputs = namespace.addFolder(gpioFolder, {     "browseName": "Outputs"   });   const gpioDI1 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I1",     "nodeId": "ns=1;s=Isolated_Input1",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput1")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput1",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI2 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I2",     "nodeId": "ns=1;s=Isolated_Input2",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput2")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput2",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI3 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I3",     "nodeId": "ns=1;s=Isolated_Input3",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput3")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput3",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI4 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I4",     "nodeId": "ns=1;s=Isolated_Input4",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput4")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput4",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI5 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I5",     "nodeId": "ns=1;s=Isolated_Input5",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput5")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput5",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI6 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I6",     "nodeId": "ns=1;s=Isolated_Input6",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput6")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput6",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI7 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I7",     "nodeId": "ns=1;s=Isolated_Input7",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput7")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput7",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDI8 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I8",     "nodeId": "ns=1;s=Isolated_Input8",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput8")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput8",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });     const gpioDI9 = namespace.addVariable({     "organizedBy": isoInputs,     "browseName": "I9",     "nodeId": "ns=1;s=Isolated_Input9",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoInput9")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoInput9",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO1 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O1",     "nodeId": "ns=1;s=Isolated_Output1",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput1")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput1",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO2 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O2",     "nodeId": "ns=1;s=Isolated_Output2",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput2")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput2",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO3 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O3",     "nodeId": "ns=1;s=Isolated_Output3",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput3")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput3",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO4 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O4",     "nodeId": "ns=1;s=Isolated_Output4",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput4")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput4",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO5 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O5",     "nodeId": "ns=1;s=Isolated_Output5",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput5")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput5",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO6 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O6",     "nodeId": "ns=1;s=Isolated_Output6",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput6")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput6",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO7 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O7",     "nodeId": "ns=1;s=Isolated_Output7",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput7")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput7",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO8 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O8",     "nodeId": "ns=1;s=Isolated_Output8",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput8")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput8",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   const gpioDO9 = namespace.addVariable({     "organizedBy": isoOutputs,     "browseName": "O9",     "nodeId": "ns=1;s=Isolated_Output9",     "dataType": "Double",     "value": {       "get": function() {         return new Variant({           "dataType": DataType.Double,           "value": flexServerInternals.sandboxFlowContext.get("isoOutput9")         });       },       "set": function(variant) {         flexServerInternals.sandboxFlowContext.set(           "isoOutput9",           parseFloat(variant.value)         );         return opcua.StatusCodes.Good;       }     }   });   //------------------------------------------------------------------------------   // Add a view   //------------------------------------------------------------------------------   const viewDI = namespace.addView({     "organizedBy": rootFolder.views,     "browseName": "RPIW0-Digital-Ins"   });   const viewDO = namespace.addView({     "organizedBy": rootFolder.views,     "browseName": "RPIW0-Digital-Outs"   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI1.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI2.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI3.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI4.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI5.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI6.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI7.nodeId   });   viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI8.nodeId   });          viewDI.addReference({     "referenceType": "Organizes",     "nodeId": gpioDI9.nodeId   });     viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO1.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO2.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO3.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO4.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO5.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO6.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO7.nodeId   });   viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO8.nodeId   });    viewDO.addReference({     "referenceType": "Organizes",     "nodeId": gpioDO9.nodeId   });   coreServer.debugLog("create dynamic address space done");   node.warn("construction of new address space for OPC UA done");   done(); }  
  11. Data Collection and Display

    Boblfoot I sucessfully done this If anybody wants my opc server code let me know.  You could also Cip message into allen bradley from node red
  12. OTE instruction

    I knew it would something simply.  I am confident you are right with clarify tomorrow thanks !
  13. OTE instruction

    yes Armadillo852 I was in remote program
  14. OTE instruction

    1756(5571)  5000 suite.   I have been trying to force a solenoid valve and when I force it from the controller tags nothing happens it say ON and I apply forces but nothing happens.  I go back and look at the controller tags and the force mask says 1 but the value remains 0........ I know its gonna be some thing so simple
  15. OTE instruction

    Can you not force a OTE instuction when you are in remote program mode?