prisme-flow
Version:
prisme platform flow engine
141 lines (127 loc) • 5.75 kB
HTML
<!--
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>