prisme-flow
Version:
prisme platform flow engine
201 lines (186 loc) • 8.34 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/x-red" data-template-name="modbustcp-server">
<div class="form-row">
<label for="node-config-input-host"><i class="icon-bookmark"></i> Host</label>
<input type="text" id="node-config-input-host">
</div>
<div class="form-row">
<label for="node-config-input-port"><i class="icon-bookmark"></i> Port</label>
<input type="text" id="node-config-input-port">
</div>
<div class="form-row">
<label for="node-config-input-unit_id"><i class="icon-bookmark"></i> Unit Id</label>
<input type="text" id="node-config-input-unit_id">
</div>
<div class="form-row1">
<label for="node-config-input-reconnecttimeout"><i class="fa fa-clock-o"></i> Reconnect Interval (s)</label>
<input type="text" id="node-config-input-reconnecttimeout">
</div>
</script>
<script type="text/x-red" data-help-name="modbustcp-server">
<p>Uses MODBUSTCP to read/write ethernet host:port and register/coil addresses.</p>
<p>Reconnect Interval allows the MODBUSTCP connection to automatically reconnect after the interval has elapsed
to re-establish a TCP connection.
Reconnect Interval is an optional input. Leave blank if auto-reconnect is not desired. </p>
</script>
pid control
<script type="text/x-red" data-template-name="modbustcp-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-dataType"><i class="icon-list"></i> Type</label>
<select id="node-input-dataType">
<option value="Coil">FC 5: Write Single Coil</option>
<option value="HoldingRegister">FC 6: Write Single Holding Register</option>
<option value="Coils">FC 15: Write Multiple Coils</option>
<option value="HoldingRegisters">FC 16: Write Multiple Holding Registers</option>
</select>
</div>
<div class="form-row">
<label for="node-input-adr"><i class="icon-bookmark"></i> Address</label>
<input type="text" id="node-input-adr">
</div>
<div class="form-row">
<label for="node-input-server"><i class="icon-bookmark"></i> Server</label>
<input type="text" id="node-input-server">
</div>
</script>
<script type="text/x-red" data-help-name="modbustcp-write">
<p>Modbus TCP client node. Connects to a Modbus TCP server to write <b>msg.payload</b> to a coil or register.
<h4>Function codes currently supported include:</h4>
<ul>
<li>FC 5: Write Single Coil</li>
<li>FC 6: Write Single Holding Register</li>
<li>FC 15: Write Multiple Coils</li>
<li>FC 16: Write Multiple Holding Registers</li>
</ul>
Choose a function code (FC) from the dropdown menu, select the coil/register start address (0:65535).
Choose or edit the Modbus TCP server configuration.
<br><br>
For FC 5, <b>msg.payload</b> must be a number or string value of 0 or 1. For FC 6, <b>msg.payload</b>
must be a number or string value between 0:65535.
For FC15, <b>msg.payload</b> must be an array of numbers or strings with values of 0 or 1. For FC 16,
<b>msg.payload</b> must be an array of numbers or strings with values between 0:65535.
</p>
</script>
<script type="text/x-red" data-template-name="modbustcp-read">
<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-dataType"><i class="icon-list"></i> FC</label>
<select id="node-input-dataType">
<option value="Coil">FC 1: Read Coils</option>
<option value="Input">FC 2: Read Discrete Inputs</option>
<option value="HoldingRegister">FC 3: Read Holding Registers</option>
<option value="InputRegister">FC 4: Read Input Registers</option>
</select>
</div>
<div class="form-row">
<label for="node-input-adr"><i class="icon-home"></i> Address</label>
<input type="text" id="node-input-adr" placeholder="0:65535">
</div>
<div class="form-row">
<label for="node-input-quantity"><i class="icon-bookmark"></i> Quantity</label>
<input type="text" id="node-input-quantity" placeholder="1-65535">
</div>
<div class="form-row">
<label for="node-input-rate"><i class="fa fa-clock-o"></i> Poll Rate </label>
<input type="number" id="node-input-rate" placeholder="1-65535" style="max-width:120px">
<select id="node-input-rateUnit" style="max-width:160px">
<option value="ms">millisecond(s)</option>
<option value="s">second(s)</option>
<option value="m">minute(s)</option>
<option value="h">hour(s)</option>
</select>
</div>
<div class="form-row">
<label for="node-input-server"><i class="icon-globe"></i> Server</label>
<input type="text" id="node-input-server">
</div>
</script>
<script type="text/x-red" data-help-name="modbustcp-read">
<p>Modbus TCP client node. Connects to a Modbus TCP server to read register values at a given poll rate.
<h4>Function codes currently supported include:</h4>
<ul>
<li>FC 1: Read Coils</li>
<li>FC 2: Read Discrete Inputs</li>
<li>FC 3: Read Holding Registers</li>
<li>FC 4: Read Input Registers</li>
</ul>
Choose a function code (FC) from the dropdown menu, select the coil/input/register start address (0:65535),
and the quantity of coils/inputs/registers to be read from the start address. Input a poll rate
(greater than zero) in seconds to setup the poll rate. Choose or edit the Modbus TCP server configuration.
<br><br>
Outputs an object called <b>msg</b> containing <b>msg.payload</b> with an array of the read coils/inputs/registers.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('modbustcp-server', {
category: 'config',
defaults: {
host: {value: "127.0.0.1", required: true},
port: {value: 502, required: true, validate: RED.validators.number()},
unit_id: {value: 1, required: true, validate: RED.validators.number()},
reconnecttimeout: {value: "", required: false}
},
label: function () {
return "modbustcp@" + this.host + ":" + this.port;
}
});
</script>
<script type="text/javascript">
RED.nodes.registerType('modbustcp-write', {
category: 'plc-output',
color: '#E9967A',
defaults: {
name: {value: ""},
dataType: {value: "", required: true},
adr: {value: "", required: true, validate: RED.validators.number()},
server: {value: "", type: "modbustcp-server"}
},
inputs: 1,
outputs: 0,
icon: "bridge.png",
align: 'right',
paletteLabel: "modbustcp",
label: function () {
return (this.name || "modbus tcp write");
}
});
</script>
<script type="text/javascript">
RED.nodes.registerType('modbustcp-read', {
category: 'plc-input',
color: '#E9967A',
defaults: {
name: {value: ""},
dataType: {value: "", required: true},
adr: {value: "", required: true, validate: RED.validators.number()},
quantity: {value: "", required: true, validate: RED.validators.number()},
rate: {
value: "", required: true, validate: function (v) {
return v > 0
}
},
rateUnit: {
value: "", required: true, validate: function (v) {
return "ms" == v || "s" == v || "m" == v || "h" == v
}
},
server: {value: "", type: "modbustcp-server"}
},
inputs: 0,
outputs: 1,
icon: "modbus.png",
paletteLabel: "modbustcp",
label: function () {
return (this.name || "modbus tcp read");
}
});
</script>