[{"data":1,"prerenderedAt":48},["ShallowReactive",2],{"integration-node-red-contrib-mcprotocol\u002F":3},{"_id":4,"categories":5,"author":9,"description":11,"npmOwners":12,"npmScope":14,"name":4,"ffCertified":15,"downloads":16,"version":18,"updatedAt":19,"tier":20,"maintainers":21,"homepage":24,"bugs":25,"repository":27,"time":30,"lastUpdated":33,"created":31,"license":39,"githubOwner":10,"githubRepo":4,"examples":40,"readme":47},"node-red-contrib-mcprotocol",[6,7,8],"catalogue_industrial","catalogue_hardware","catalogue",{"name":10},"Steve-Mcl","Mode-red nodes to Read from & Write to MITSUBISHI PLC over Ethernet using MC Protocol",[13],"steve-mcl",null,true,{"week":17},119,"1.2.1","2021-01-28T21:43:47.213Z","recommended",[22],{"name":13,"email":23},"sdmclaughlin+npm@gmail.com","https:\u002F\u002Fgithub.com\u002FSteve-Mcl\u002Fnode-red-contrib-mcprotocol#readme",{"url":26},"https:\u002F\u002Fgithub.com\u002FSteve-Mcl\u002Fnode-red-contrib-mcprotocol\u002Fissues",{"type":28,"url":29},"git","git+https:\u002F\u002Fgithub.com\u002FSteve-Mcl\u002Fnode-red-contrib-mcprotocol.git",{"created":31,"1.1.4":32,"modified":33,"1.1.5":34,"1.1.6":35,"1.1.7":36,"1.2.0":37,"1.2.1":38},"2020-04-09T21:27:08.474Z","2020-04-09T21:27:08.571Z","2022-05-11T03:32:34.213Z","2020-07-09T08:18:05.999Z","2020-11-26T20:36:26.770Z","2020-11-26T21:17:46.424Z","2020-12-04T22:00:48.518Z","2021-01-28T21:43:44.945Z","MIT",[41],{"name":42,"path":43,"url":44,"downloadUrl":45,"flow":46},"demo","examples\u002Fdemo.json","https:\u002F\u002Fgithub.com\u002FSteve-Mcl\u002Fnode-red-contrib-mcprotocol\u002Fblob\u002Fmaster\u002Fexamples\u002Fdemo.json","https:\u002F\u002Fraw.githubusercontent.com\u002FSteve-Mcl\u002Fnode-red-contrib-mcprotocol\u002Fmaster\u002Fexamples\u002Fdemo.json","[{\"id\":\"4fabbfaa.503e6\",\"type\":\"MC Read\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"topic\":\"\",\"connection\":\"8a67d1bd.c84ff\",\"address\":\"topic\",\"addressType\":\"msg\",\"outputFormat\":0,\"errorHandling\":\"throw\",\"outputs\":1,\"x\":540,\"y\":200,\"wires\":[[\"909f6d71.d3977\"]]},{\"id\":\"9d18a8b9.d51988\",\"type\":\"udp in\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"iface\":\"\",\"port\":\"5002\",\"ipv\":\"udp4\",\"multicast\":\"false\",\"group\":\"\",\"datatype\":\"buffer\",\"x\":180,\"y\":360,\"wires\":[[\"a906dcf7.c23e5\",\"14abe69.0aacc19\"]]},{\"id\":\"a906dcf7.c23e5\",\"type\":\"debug\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":350,\"y\":360,\"wires\":[]},{\"id\":\"609554a9.b5e02c\",\"type\":\"inject\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"props\":[{\"p\":\"topic\",\"vt\":\"str\"},{\"p\":\"count\",\"v\":\"50\",\"vt\":\"num\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"DINT0,50\",\"x\":200,\"y\":140,\"wires\":[[\"b920e789.6f8f98\"]]},{\"id\":\"1c92fdaa.e58f42\",\"type\":\"inject\",\"z\":\"766a1068.58afb\",\"name\":\"connect\",\"props\":[{\"p\":\"connect\",\"v\":\"true\",\"vt\":\"bool\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"connect\",\"x\":370,\"y\":60,\"wires\":[[\"894f189d.2280f8\"]]},{\"id\":\"29dda2ac.8a8dae\",\"type\":\"inject\",\"z\":\"766a1068.58afb\",\"name\":\"disconnect\",\"props\":[{\"p\":\"disconnect\",\"v\":\"true\",\"vt\":\"bool\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"disconnect\",\"x\":380,\"y\":100,\"wires\":[[\"894f189d.2280f8\"]]},{\"id\":\"14abe69.0aacc19\",\"type\":\"switch\",\"z\":\"766a1068.58afb\",\"name\":\"3E \u002F 4E\",\"property\":\"payload[0]\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"eq\",\"v\":\"0x50\",\"vt\":\"num\"},{\"t\":\"eq\",\"v\":\"0x54\",\"vt\":\"num\"}],\"checkall\":\"true\",\"repair\":false,\"outputs\":2,\"x\":200,\"y\":420,\"wires\":[[\"1762bb1b.795375\"],[\"b31e7337.5fd9\"]]},{\"id\":\"b31e7337.5fd9\",\"type\":\"buffer-parser\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"data\":\"payload\",\"dataType\":\"msg\",\"specification\":\"spec\",\"specificationType\":\"ui\",\"items\":[{\"type\":\"uint16le\",\"name\":\"header\",\"offset\":0,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"sid\",\"offset\":2,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"acess_route=\\u003enetwork\",\"offset\":6,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"acess_route=\\u003epc_no\",\"offset\":7,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"acess_route=\\u003edestination_module_station_No\",\"offset\":8,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003ecommand\",\"offset\":15,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003esub_command\",\"offset\":17,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003edevice_no\",\"offset\":19,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"request_data=\\u003edevice_code\",\"offset\":22,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003edevice_count\",\"offset\":23,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"buffer\",\"name\":\"buf\",\"offset\":0,\"length\":-1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"}],\"swap1\":\"\",\"swap2\":\"\",\"swap3\":\"\",\"swap1Type\":\"swap\",\"swap2Type\":\"swap\",\"swap3Type\":\"swap\",\"msgProperty\":\"payload\",\"msgPropertyType\":\"str\",\"resultType\":\"keyvalue\",\"resultTypeType\":\"output\",\"multipleResult\":false,\"fanOutMultipleResult\":false,\"setTopic\":true,\"outputs\":1,\"x\":370,\"y\":440,\"wires\":[[\"a2f00c21.a640e\",\"9f013c7f.8bfa7\"]]},{\"id\":\"a2f00c21.a640e\",\"type\":\"debug\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":390,\"y\":480,\"wires\":[]},{\"id\":\"9f013c7f.8bfa7\",\"type\":\"switch\",\"z\":\"766a1068.58afb\",\"name\":\"Read? Write\",\"property\":\"payload.request_data.command\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"eq\",\"v\":\"0x0401\",\"vt\":\"num\"},{\"t\":\"eq\",\"v\":\"0x1401\",\"vt\":\"num\"}],\"checkall\":\"true\",\"repair\":false,\"outputs\":2,\"x\":570,\"y\":400,\"wires\":[[\"dd7886d0.f142f8\"],[\"74cfa55d.b1adfc\"]]},{\"id\":\"909f6d71.d3977\",\"type\":\"debug\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":670,\"y\":200,\"wires\":[]},{\"id\":\"dd7886d0.f142f8\",\"type\":\"function\",\"z\":\"766a1068.58afb\",\"name\":\"Build read reply\",\"func\":\"\u002F\u002Fdebugger\\nvar registers =\\t{\\n        D: {symbol: 'D', type: 'WORD', notation: 'Decimal', binary: 0xA8, ascii: 'D*', description: 'Data register'},\\n\\t    W: {symbol: 'W', type: 'WORD', notation: 'Hexadecimal', binary: 0xB4, ascii: 'W*', description: 'Link register'},\\n\\t    Z: {symbol: 'Z', type: 'WORD', notation: 'Decimal', binary: 0xCC, ascii: 'Z*', description: 'Index register'},\\n\\t    R: {symbol: 'R', type: 'WORD', notation: 'Decimal', binary: 0xAF, ascii: 'R*', description: 'File register'},\\n    }\\nvar regLookup = {\\n    0xA8: registers.D,\\n    0xB4: registers.W,\\n    0xCC: registers.Z,\\n    0xAF: registers.R,\\n}\\nvar frame = msg.payload.header == 0x54 ? \\\"4E\\\" : (msg.payload.header == 0x50 ? \\\"3E\\\" : \\\"??\\\");\\n\\nvar reg = regLookup[msg.payload.request_data.device_code];\\nif (!reg) { \\n    node.error(`device code ${msg.payload.request_data.device_code} not supported`, msg);\\n    \u002F\u002Ftodo: return error to MC Read node\\n    return null;\u002F\u002Ftemp\\n}\\n\\n\u002F\u002Fbuild read reply\\nvar buf = Buffer.alloc(8192);\\nvar pos = 0;\\n\\nvar plcmem = flow.get(\\\"plcmem\\\");\\nif(!plcmem) {\\n    plcmem = { \\\"D\\\": [], \\\"R\\\": [], \\\"W\\\": [] };\\n    flow.set(\\\"plcmem\\\", plcmem);\\n}\\nvar data = plcmem[reg.symbol] || [];\\nvar dataStart = 11; \u002F\u002F3E\\nif (frame == '4E') {\\n    dataStart = 15;\\n    pos = buf.writeUInt16LE(0x00D4, pos);\u002F\u002F0 expectedResponse\\n    pos = buf.writeUInt16LE(msg.payload.sid, pos);\u002F\u002F2 sid\\n    pos = buf.writeUInt16LE(0, pos);\u002F\u002F4 fixed 0\\n} else {\\n    pos = buf.writeUInt16LE(0x00D0, pos);\u002F\u002F0 expectedResponse\\n}\\npos = buf.writeUInt8(msg.payload.acess_route.network, pos);\u002F\u002F6 accessRouteNetworkNo\\npos = buf.writeUInt8(msg.payload.acess_route.pc_no, pos);\u002F\u002F7 accessPCNo\\npos = buf.writeUInt16LE(msg.payload.acess_route.destination_module_station_No, pos);\u002F\u002F8 accessRouteModuleIONo\\npos = buf.writeUInt8(0, pos);\u002F\u002F10 accessRouteModuleStationNo\\npos = buf.writeUInt16LE((msg.payload.request_data.device_count*2)+2, pos);\u002F\u002F11 UInt16LE length\\npos = buf.writeUInt16LE(0, pos);\u002F\u002F12 UInt16LE endCode\\npos = dataStart;\u002F\u002F - data start\\n\u002F\u002F debugger\\nfor (let index = 0; index \\u003c msg.payload.request_data.device_count; index++) {\\n    const element = data[msg.payload.request_data.device_no + index] || 0;\\n    pos = buf.writeUInt16LE(element, pos);\\n}\\nmsg.origPayload = msg.payload;\\nmsg.payload = buf.slice(0, pos);\\n\\nreturn msg;\",\"outputs\":1,\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"x\":780,\"y\":380,\"wires\":[[\"5b3f3ef1.041e8\"]]},{\"id\":\"5b3f3ef1.041e8\",\"type\":\"udp out\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"addr\":\"\",\"iface\":\"\",\"port\":\"\",\"ipv\":\"udp4\",\"outport\":\"\",\"base64\":false,\"multicast\":\"false\",\"x\":1030,\"y\":380,\"wires\":[]},{\"id\":\"f8a9b16f.529d7\",\"type\":\"function\",\"z\":\"766a1068.58afb\",\"name\":\"Build write reply\",\"func\":\"\u002F\u002Fdebugger\\nvar registers =\\t{\\n        D: {symbol: 'D', type: 'WORD', notation: 'Decimal', binary: 0xA8, ascii: 'D*', description: 'Data register'},\\n\\t    W: {symbol: 'W', type: 'WORD', notation: 'Hexadecimal', binary: 0xB4, ascii: 'W*', description: 'Link register'},\\n\\t    Z: {symbol: 'Z', type: 'WORD', notation: 'Decimal', binary: 0xCC, ascii: 'Z*', description: 'Index register'},\\n\\t    R: {symbol: 'R', type: 'WORD', notation: 'Decimal', binary: 0xAF, ascii: 'R*', description: 'File register'},\\n    }\\nvar regLookup = {\\n    0xA8: registers.D,\\n    0xB4: registers.W,\\n    0xCC: registers.Z,\\n    0xAF: registers.R,\\n}\\nvar frame = msg.payload.header == 0x54 ? \\\"4E\\\" : (msg.payload.header == 0x50 ? \\\"3E\\\" : \\\"??\\\");\\n\\nvar reg = regLookup[msg.payload.request_data.device_code];\\nif (!reg) { \\n    node.error(`device code ${msg.payload.request_data.device_code} not supported`, msg);\\n    \u002F\u002Ftodo: return error to MC Read node\\n    return null;\u002F\u002Ftemp\\n}\\n\\n\u002F\u002Fbuild read reply\\nvar buf = Buffer.alloc(8192);\\nvar pos = 0;\\n\\nvar plcmem = flow.get(\\\"plcmem\\\") || {};\\nvar data = plcmem[reg.symbol] || [];\\n\u002F\u002F debugger\\nvar writeData = msg.payload.data.values;\\nvar writeIndex = msg.payload.request_data.device_no;\\nfor (let index = 0; index \\u003c msg.payload.request_data.device_count; index++) {\\n    data[writeIndex++] = writeData[index];\\n}\\n\\nvar dataStart = 11; \u002F\u002F3E\\nif (frame == '4E') {\\n    dataStart = 15;\\n    pos = buf.writeUInt16LE(0x00D4, pos);\u002F\u002F0 expectedResponse\\n    pos = buf.writeUInt16LE(msg.payload.sid, pos);\u002F\u002F2 sid seqNum\\n    pos = buf.writeUInt16LE(0, pos);\u002F\u002F4 fixed 0 dummy\\n} else {\\n    pos = buf.writeUInt16LE(0x00D0, pos);\u002F\u002F0 expectedResponse\\n}\\npos = buf.writeUInt8(msg.payload.acess_route.network, pos);\u002F\u002F6 accessRouteNetworkNo\\npos = buf.writeUInt8(msg.payload.acess_route.pc_no, pos);\u002F\u002F7 accessPCNo\\npos = buf.writeUInt16LE(0, pos);\u002F\u002F8 accessRouteModuleIONo\\npos = buf.writeUInt8(0, pos);\u002F\u002F10 accessRouteModuleStationNo\\npos = buf.writeUInt16LE(2, pos);\u002F\u002F11 UInt16LE length\\npos = buf.writeUInt16LE(0, pos);\u002F\u002F13 UInt16LE endCode\\npos = buf.writeUInt16LE(0, pos);\u002F\u002F15 UInt16LE endDetail\\n\\nmsg.origPayload = msg.payload;\\nmsg.payload = buf.slice(0, pos);\\n\\nreturn msg;\\n\\n\",\"outputs\":1,\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"x\":1000,\"y\":460,\"wires\":[[\"5b3f3ef1.041e8\"]]},{\"id\":\"161497d7.583468\",\"type\":\"buffer-parser\",\"z\":\"766a1068.58afb\",\"name\":\"get write data (3E)\",\"data\":\"payload.buf\",\"dataType\":\"msg\",\"specification\":\"spec\",\"specificationType\":\"ui\",\"items\":[{\"type\":\"uint16le\",\"name\":\"values\",\"offset\":21,\"length\":-1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"}],\"swap1\":\"\",\"swap2\":\"\",\"swap3\":\"\",\"swap1Type\":\"swap\",\"swap2Type\":\"swap\",\"swap3Type\":\"swap\",\"msgProperty\":\"payload.data\",\"msgPropertyType\":\"str\",\"resultType\":\"keyvalue\",\"resultTypeType\":\"output\",\"multipleResult\":false,\"fanOutMultipleResult\":false,\"setTopic\":true,\"outputs\":1,\"x\":790,\"y\":460,\"wires\":[[\"f8a9b16f.529d7\"]]},{\"id\":\"1762bb1b.795375\",\"type\":\"buffer-parser\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"data\":\"payload\",\"dataType\":\"msg\",\"specification\":\"spec\",\"specificationType\":\"ui\",\"items\":[{\"type\":\"uint16le\",\"name\":\"header\",\"offset\":0,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"acess_route=\\u003enetwork\",\"offset\":2,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"acess_route=\\u003epc_no\",\"offset\":3,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"acess_route=\\u003edestination_module_station_No\",\"offset\":4,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003ecommand\",\"offset\":11,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003esub_command\",\"offset\":13,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003edevice_no\",\"offset\":15,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"byte\",\"name\":\"request_data=\\u003edevice_code\",\"offset\":18,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"request_data=\\u003edevice_count\",\"offset\":23,\"length\":1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"},{\"type\":\"uint16le\",\"name\":\"buf\",\"offset\":0,\"length\":-1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"}],\"swap1\":\"\",\"swap2\":\"\",\"swap3\":\"\",\"swap1Type\":\"swap\",\"swap2Type\":\"swap\",\"swap3Type\":\"swap\",\"msgProperty\":\"payload\",\"msgPropertyType\":\"str\",\"resultType\":\"keyvalue\",\"resultTypeType\":\"output\",\"multipleResult\":false,\"fanOutMultipleResult\":false,\"setTopic\":true,\"outputs\":1,\"x\":370,\"y\":400,\"wires\":[[\"9f013c7f.8bfa7\"]]},{\"id\":\"74cfa55d.b1adfc\",\"type\":\"switch\",\"z\":\"766a1068.58afb\",\"name\":\"3E \u002F 4E\",\"property\":\"payload.header\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"eq\",\"v\":\"0x50\",\"vt\":\"num\"},{\"t\":\"eq\",\"v\":\"0x54\",\"vt\":\"num\"}],\"checkall\":\"true\",\"repair\":false,\"outputs\":2,\"x\":580,\"y\":480,\"wires\":[[\"161497d7.583468\"],[\"713e004a.8d583\"]]},{\"id\":\"713e004a.8d583\",\"type\":\"buffer-parser\",\"z\":\"766a1068.58afb\",\"name\":\"get write data (4E)\",\"data\":\"payload.buf\",\"dataType\":\"msg\",\"specification\":\"spec\",\"specificationType\":\"ui\",\"items\":[{\"type\":\"uint16le\",\"name\":\"values\",\"offset\":25,\"length\":-1,\"offsetbit\":0,\"scale\":\"1\",\"mask\":\"\"}],\"swap1\":\"\",\"swap2\":\"\",\"swap3\":\"\",\"swap1Type\":\"swap\",\"swap2Type\":\"swap\",\"swap3Type\":\"swap\",\"msgProperty\":\"payload.data\",\"msgPropertyType\":\"str\",\"resultType\":\"keyvalue\",\"resultTypeType\":\"output\",\"multipleResult\":false,\"fanOutMultipleResult\":false,\"setTopic\":true,\"outputs\":1,\"x\":790,\"y\":500,\"wires\":[[\"f8a9b16f.529d7\",\"fe2f26eb.73faa8\"]]},{\"id\":\"894f189d.2280f8\",\"type\":\"MC Write\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"topic\":\"\",\"connection\":\"8a67d1bd.c84ff\",\"data\":\"payload\",\"address\":\"topic\",\"addressType\":\"msg\",\"dataType\":\"msg\",\"errorHandling\":\"throw\",\"outputs\":1,\"x\":540,\"y\":140,\"wires\":[[\"d1d847e5.f14728\"]]},{\"id\":\"d1d847e5.f14728\",\"type\":\"debug\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":670,\"y\":140,\"wires\":[]},{\"id\":\"39868be.7425874\",\"type\":\"inject\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"props\":[{\"p\":\"topic\",\"vt\":\"str\"},{\"p\":\"payload\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"D0,5\",\"payload\":\"\",\"payloadType\":\"str\",\"x\":190,\"y\":200,\"wires\":[[\"4fabbfaa.503e6\"]]},{\"id\":\"fe2f26eb.73faa8\",\"type\":\"debug\",\"z\":\"766a1068.58afb\",\"name\":\"\",\"active\":false,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":970,\"y\":500,\"wires\":[]},{\"id\":\"b920e789.6f8f98\",\"type\":\"function\",\"z\":\"766a1068.58afb\",\"name\":\"Build write data\",\"func\":\"var count = msg.count || 5\\nvar data = [];\\nfor (let index = 0; index \\u003c count; index++) {\\n    data[index] = index;\\n}\\n\\nmsg.payload = data;\\n\\nreturn msg;\\n\\n\",\"outputs\":1,\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"x\":360,\"y\":140,\"wires\":[[\"894f189d.2280f8\"]]},{\"id\":\"d5772eff.5f0b7\",\"type\":\"comment\",\"z\":\"766a1068.58afb\",\"name\":\"Basic Mitsubishi Q Emulator (Supports Z, D, R, W areas only)\",\"info\":\"\",\"x\":340,\"y\":320,\"wires\":[]},{\"id\":\"8a67d1bd.c84ff\",\"type\":\"MC Protocol Connection\",\"name\":\"\",\"host\":\"localhost\",\"port\":\"5002\",\"protocol\":\"UDP\",\"frame\":\"4E\",\"plcType\":\"Q\",\"ascii\":false,\"PLCStation\":\"\",\"PCStation\":\"\",\"PLCModuleNo\":\"\",\"network\":\"\",\"octalInputOutput\":false,\"timeout\":\"1234\"}]","\u003Ch1 id=\"node-red-contrib-mcprotocol\">\u003Ca class=\"header-anchor\" href=\"#node-red-contrib-mcprotocol\">node-red-contrib-mcprotocol\u003C\u002Fa>\u003C\u002Fh1>\n\u003Ch2 id=\"about\">\u003Ca class=\"header-anchor\" href=\"#about\">About\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"overview\">\u003Ca class=\"header-anchor\" href=\"#overview\">Overview\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>This is a Node-RED node module to directly interface with MITSUBISHI PLCs over Ethernet using MC Protocol.\u003C\u002Fp>\n\u003Ch3 id=\"features\">\u003Ca class=\"header-anchor\" href=\"#features\">Features\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Both TCP and UDP connections are possible\u003C\u002Fli>\n\u003Cli>frames 1E, 3E and 4E are possible\u003C\u002Fli>\n\u003Cli>works for PLC types\n\u003Cul>\n\u003Cli>A \u003Cem>(See Note 1)\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>QnA\u003C\u002Fli>\n\u003Cli>Q\u003C\u002Fli>\n\u003Cli>L\u003C\u002Fli>\n\u003Cli>R\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>ASCII and BINARY mode \u003Cem>(See Note 2)\u003C\u002Fem>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"recommendation\">\u003Ca class=\"header-anchor\" href=\"#recommendation\">Recommendation\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>If your PLC suports UDP + 4E, this is by far most reliable.\u003C\u002Fp>\n\u003Ch3 id=\"notes\">\u003Ca class=\"header-anchor\" href=\"#notes\">NOTES\u003C\u002Fa>\u003C\u002Fh3>\n\u003Col>\n\u003Cli>For A series PLC, only 1E frames are supported\u003C\u002Fli>\n\u003Cli>ASCII mode is currently not supported for frames 3E and 4E\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Chr \u002F>\n\u003Ch2 id=\"install\">\u003Ca class=\"header-anchor\" href=\"#install\">Install\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"prerequisites\">\u003Ca class=\"header-anchor\" href=\"#prerequisites\">Prerequisites\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>node.js\t(runtime for Node-RED)\u003C\u002Fli>\n\u003Cli>Node-RED\u003C\u002Fli>\n\u003Cli>[optional] git (Used for repository cloning\u002Fdownloads)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"easy-install\">\u003Ca class=\"header-anchor\" href=\"#easy-install\">Easy install\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Use the Manage Palette &gt; Install option from the menu inside node-red\u003C\u002Fp>\n\u003Ch3 id=\"npm-install\">\u003Ca class=\"header-anchor\" href=\"#npm-install\">NPM install\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-sh\">cd ~\u002F.node-red\nnpm install node-red-contrib-mcprotocol\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"git-install-direct\">\u003Ca class=\"header-anchor\" href=\"#git-install-direct\">GIT install Direct\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-sh\">cd ~\u002F.node-red\nnpm install Steve-Mcl\u002Fnode-red-contrib-mcprotocol\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"git-install\">\u003Ca class=\"header-anchor\" href=\"#git-install\">GIT Install\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Make a directory for the base files on the disk (somewhere secure) and open the created folder and open PowerShell (SHIFT + right_click) or \"Git Bash Here\" with right mouse inside the folder. Now enter the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sh\">cd c:\u002Ftempsourcefolder\ngit clone https:\u002F\u002Fgithub.com\u002FSteve-Mcl\u002Fnode-red-contrib-mcprotocol.git\n\ncd ~\u002F.node-red\nnpm install c:\u002Ftempsourcefolder\u002Fnode-red-contrib-mcprotocol\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch3 id=\"credits\">\u003Ca class=\"header-anchor\" href=\"#credits\">Credits\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fplcpeople\u002Fmcprotocol\">plcpeople\u003C\u002Fa> for the original implementation of mcprotocol\u003C\u002Fli>\n\u003C\u002Ful>\n",1784738654115]