Skip to content

Commit

Permalink
set registers in Flex Server
Browse files Browse the repository at this point in the history
Added the ability to set any Register in the Flex-Server for development / Slave simulation purpose
  • Loading branch information
opt-natter committed May 15, 2019
1 parent 246dd41 commit 8d21ea7
Showing 1 changed file with 31 additions and 31 deletions.
62 changes: 31 additions & 31 deletions src/modbus-flex-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,37 +126,37 @@ module.exports = function (RED) {
node.startServer()

node.on('input', function (msg) {
if( msg.payload.register === 'holding'
|| msg.payload.register === 'coils'
|| msg.payload.register === 'input'
|| msg.payload.register === 'discrete'){
if (!(Number.isInteger(msg.payload.address) &&
msg.payload.address >= 0 &&
msg.payload.address <= 65535)) {
node.error('Address Not Valid', msg)
return
}
switch (type) {
case 'holding':
node.registers.writeUInt16BE(msg.payload.value, (msg.payload.address + node.splitAddress) * node.bufferFactor)
break
case 'coils':
node.coils.writeUInt8(msg.payload.value, msg.payload.address * node.bufferFactor)
break
case 'input':
node.registers.writeUInt16BE(msg.payload.value, msg.payload.address * node.bufferFactor)
break
case 'discrete':
node.coils.writeUInt8(msg.payload.value, (msg.payload.address + node.splitAddress) * node.bufferFactor)
break
}
}

if (msg.payload.disablemsg != '1') {
node.send(buildMessage(msg))
}
if( msg.payload.register === 'holding'
|| msg.payload.register === 'coils'
|| msg.payload.register === 'input'
|| msg.payload.register === 'discrete'){
if (!(Number.isInteger(msg.payload.address) &&
msg.payload.address >= 0 &&
msg.payload.address <= 65535)) {
node.error('Address Not Valid', msg)
return
}
switch (type) {
case 'holding':
node.registers.writeUInt16BE(msg.payload.value, (msg.payload.address + node.splitAddress) * node.bufferFactor)
break
case 'coils':
node.coils.writeUInt8(msg.payload.value, msg.payload.address * node.bufferFactor)
break
case 'input':
node.registers.writeUInt16BE(msg.payload.value, msg.payload.address * node.bufferFactor)
break
case 'discrete':
node.coils.writeUInt8(msg.payload.value, (msg.payload.address + node.splitAddress) * node.bufferFactor)
break
}
}

if (msg.payload.disablemsg != '1') {
node.send(buildMessage(msg))
}
})

function buildMessage (msg) {
Expand Down

0 comments on commit 8d21ea7

Please sign in to comment.