Browse Source

Add 'Reconnect' and 'RTU over TCP' options to TCP Modbus extension configuration.

pull/1360/head
dvk2018 8 years ago
committed by Andrew Shvayka
parent
commit
9590c37720
  1. 45
      ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
  2. 104
      ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
  3. 2
      ui/src/app/locale/locale.constant-en_US.json

45
ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js

@ -31,17 +31,38 @@ export default function ExtensionFormModbusDirective($compile, $templateCache, $
var linker = function(scope, element) {
function TcpTransport() {
this.type = "tcp",
this.host = "localhost",
this.port = 502,
this.timeout = 5000,
this.reconnect = true,
this.rtuOverTcp = false
}
function UdpTransport() {
this.type = "udp",
this.host = "localhost",
this.port = 502,
this.timeout = 5000
}
function RtuTransport() {
this.type = "rtu",
this.portName = "COM1",
this.encoding = "ascii",
this.timeout = 5000,
this.baudRate = 115200,
this.dataBits = 7,
this.stopBits = 1,
this.parity ="even"
}
function Server() {
this.transport = {
"type": "tcp",
"host": "localhost",
"port": 502,
"timeout": 3000
};
this.transport = new TcpTransport();
this.devices = []
}
function Device() {
this.unitId = 1;
this.deviceName = "";
@ -105,9 +126,13 @@ export default function ExtensionFormModbusDirective($compile, $templateCache, $
scope.onTransportChanged = function(server) {
var type = server.transport.type;
server.transport = {};
server.transport.type = type;
server.transport.timeout = 3000;
if (type === "tcp") {
server.transport = new TcpTransport();
} else if (type === "udp") {
server.transport = new UdpTransport();
} else if (type === "rtu") {
server.transport = new RtuTransport();
}
scope.theForm.$setDirty();
};

104
ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html

@ -73,49 +73,69 @@
</div>
<div layout="row" ng-if="server.transport.type == 'tcp' || server.transport.type == 'udp'">
<md-input-container flex="33" class="md-block">
<label translate>extension.host</label>
<input required name="transportHost_{{serverIndex}}" ng-model="server.transport.host">
<div ng-messages="theForm['transportHost_' + serverIndex].$error">
<div translate ng-message="required">extension.field-required</div>
</div>
</md-input-container>
<div ng-if="server.transport.type == 'tcp' || server.transport.type == 'udp'">
<div layout="row">
<md-input-container flex="33" class="md-block">
<label translate>extension.host</label>
<input required name="transportHost_{{serverIndex}}" ng-model="server.transport.host">
<div ng-messages="theForm['transportHost_' + serverIndex].$error">
<div translate ng-message="required">extension.field-required</div>
</div>
</md-input-container>
<md-input-container flex="33" class="md-block">
<label translate>extension.port</label>
<input type="number"
required
name="transportPort_{{serverIndex}}"
ng-model="server.transport.port"
min="1"
max="65535"
>
<div ng-messages="theForm['transportPort_' + serverIndex].$error">
<div translate
ng-message="required"
>extension.field-required</div>
<div translate
ng-message="min"
>extension.port-range</div>
<div translate
ng-message="max"
>extension.port-range</div>
</div>
</md-input-container>
<md-input-container flex="33" class="md-block">
<label translate>extension.timeout</label>
<input type="number"
required name="transportTimeout_{{serverIndex}}"
ng-model="server.transport.timeout"
>
<div ng-messages="theForm['transportTimeout_' + serverIndex].$error">
<div translate
ng-message="required"
>extension.field-required</div>
</div>
</md-input-container>
<md-input-container flex="33" class="md-block">
<label translate>extension.port</label>
<input type="number"
required
name="transportPort_{{serverIndex}}"
ng-model="server.transport.port"
min="1"
max="65535"
>
<div ng-messages="theForm['transportPort_' + serverIndex].$error">
<div translate
ng-message="required"
>extension.field-required</div>
<div translate
ng-message="min"
>extension.port-range</div>
<div translate
ng-message="max"
>extension.port-range</div>
</div>
</md-input-container>
<md-input-container flex="33" class="md-block">
<label translate>extension.timeout</label>
<input type="number"
required name="transportTimeout_{{serverIndex}}"
ng-model="server.transport.timeout"
>
<div ng-messages="theForm['transportTimeout_' + serverIndex].$error">
<div translate
ng-message="required"
>extension.field-required</div>
</div>
</md-input-container>
</div>
<div layout="row" ng-if="server.transport.type == 'tcp'">
<md-input-container flex="50" class="md-block">
<md-checkbox aria-label="{{ 'extension.modbus-tcp-reconnect' | translate }}"
ng-checked="server.transport.reconnect"
name="transportTcpReconnect_{{serverIndex}}"
ng-model="server.transport.reconnect">{{ 'extension.modbus-tcp-reconnect' | translate }}
</md-checkbox>
</md-input-container>
<md-input-container flex="50" class="md-block">
<md-checkbox aria-label="{{ 'extension.modbus-rtu-over-tcp' | translate }}"
ng-checked="server.transport.rtuOverTcp"
name="transportRtuOverTcp_{{serverIndex}}"
ng-model="server.transport.rtuOverTcp">{{ 'extension.modbus-rtu-over-tcp' | translate }}
</md-checkbox>
</md-input-container>
</div>
</div>
<div ng-if="server.transport.type == 'rtu'">

2
ui/src/app/locale/locale.constant-en_US.json

@ -1008,6 +1008,8 @@
"modbus-add-server": "Add server/slave",
"modbus-add-server-prompt": "Please add server/slave",
"modbus-transport": "Transport",
"modbus-tcp-reconnect": "Automatically reconnect",
"modbus-rtu-over-tcp": "RTU over TCP",
"modbus-port-name": "Serial port name",
"modbus-encoding": "Encoding",
"modbus-parity": "Parity",

Loading…
Cancel
Save