UNPKG

prisme-flow

Version:

prisme platform flow engine

141 lines (127 loc) 5.75 kB
<!-- Created by prisme.io on 09/06/2017. @author <a href="mailto:hello@prisme.io">savane vamara</a> (prisme.io) --> <script type="text/javascript"> RED.nodes.registerType('modbus-write', { category: 'plc', color: '#E9967A', defaults: { name: {value: ""}, showStatusActivities: {value: false}, showErrors: {value: false}, unitid: {value: ""}, dataType: {value: "", required: true}, adr: {value: "", required: true, validate: RED.validators.number()}, quantity: {value: "", required: true, validate: RED.validators.number()}, server: {type: "modbus-client", required:true} }, inputs: 1, outputs: 2, icon: "modbus.png", align: 'right', paletteLabel: "Modbus-Write", label: function () { return this.name || "modbus write" }, oneditprepare: function () { let previous = null let node = this let fcDataTypeSelector = $('#node-input-dataType') let quantitySelector = $('#node-input-quantity') let modbusWriteQuantityRow = $('#modbus-write-quantity') fcDataTypeSelector.on('focus', function () { previous = this.value }).change(function () { if (previous == null) { previous = fcDataTypeSelector.val() } switch (fcDataTypeSelector.val()) { case 'Coil': case 'HoldingRegister': node.quantity.required = false quantitySelector.val(1) modbusWriteQuantityRow.hide() break; default: node.quantity.required = true modbusWriteQuantityRow.show() } }) } }) </script> <script type="text/x-red" data-template-name="modbus-write"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row"> <label for="node-input-unitid"><i class="icon-bookmark"></i> <span>Unit-Id</span></label> <input type="text" id="node-input-unitid"> </div> <div class="form-row"> <label for="node-input-dataType"><i class="icon-list"></i> <span>FC</span></label> <select id="node-input-dataType"> <option value="Coil">FC 5: Force Single Coil</option> <option value="HoldingRegister">FC 6: Preset Single Register</option> <option value="MCoils">FC 15: Force Multiple Coils</option> <option value="MHoldingRegisters">FC 16: Preset Multiple Registers</option> </select> </div> <div class="form-row"> <label for="node-input-adr"><i class="icon-bookmark"></i> <span>Address</span></label> <input type="text" id="node-input-adr"> </div> <div class="form-row" id="modbus-write-quantity"> <label for="node-input-quantity"><i class="icon-bookmark"></i> <span>Quantity</span></label> <input type="text" id="node-input-quantity" placeholder="1-65535"> </div> <div class="form-row"> <label for="node-input-server"><i class="icon-bookmark"></i> <span>server</span></label> <input type="text" id="node-input-server"> </div> <hr> <div class="form-row"> <label style="min-width:160px" for="node-input-showStatusActivities"><i class="fa fa-th"></i> <span data-i18n="modbus-contrib.label.showActivities"></span></label> <input type="checkbox" id="node-input-showStatusActivities" style="max-width:30px"> </div> <div class="form-row"> <label style="min-width:160px" for="node-input-showErrors"><i class="fa fa-th"></i> <span data-i18n="modbus-contrib.label.showErrors"></span></label> <input type="checkbox" id="node-input-showErrors" style="max-width:30px"> </div> </script> <script type="text/x-red" data-help-name="modbus-write"> <p><strong> If you have more than 10 nodes on one communication configuration, use the Modbus-Flex-Writer or think about multiple connections to your Modbus device, please! </strong></p> <p>Modbus TCP/Serial node triggered with <strong>msg.payload</strong> to write.</p> <p>Connects to a Modbus TCP or serial to write coils/registers at each incoming msg.</p> <p> <h4>Function codes currently supported include:</h4> <ul> <li>FC 5: Force Single Coil</li> <li>FC 6: Preset Single Register</li> <li>FC 15: Force Multiple Coils</li> <li>FC 16: Preset Multiple Registers</li> </ul> </p> <p> Choose a function code (FC) from the dropdown menu, select the coil/register start address (0:65535) and the quantity to write. Choose or edit the Modbus TCP/serial server configuration to specify the server to connect to. </p> <p>Unit-Id (0..255 tcp | 1..247 serial) - leave empty, otherwise it overrides the default Unit-ID of client config</p> <p> For FC 5, <strong>msg.payload</strong> must be a value of 1 or 0 or true or false. For FC 15, <strong>msg.payload</strong> must be an array[] of comma separated values true or false each. For FC 6, <strong>msg.payload</strong> must be a single value between 0:65535. For FC 16, <strong>msg.payload</strong> must be an array[] of comma separated values between 0:65535 each. </p> <p>Output 1: all given data, modbus response Buffer, input message</p> <p>Output 2: modbus response Buffer, all given data, input message</p> </script>