Hi, we are connecting our system to mangoES via modbus rtu.
All works ok withing mango, we can read points, write points, no problem.
When publishing points using bacnet ip publisher, we can't write point values to modbus points.
We tried changing write priority (1 and 16), but it doesnt help.
We recreated the issue using a simple modbus relay module running at 9600 bauds and trying to write to it using another mango instance. We write virtual vars just fine, but the modbus point just stays the same (we can write to it just fine in the watchlist)
I attach the config we used on our tests, using mango: (core 2.6.0 build 373, bacnet 2.2.0, and modbus 1.6.0 )
$ java -version
openjdk version "1.8.0_66-internal"
config on the 'publisher' side
{
"dataSources":[
{
"xid":"DS_362292",
"name":"bugtest",
"enabled":true,
"type":"VIRTUAL",
"alarmLevels":{
"POLL_ABORTED":"URGENT"
},
"purgeType":"YEARS",
"updatePeriodType":"HOURS",
"updatePeriods":9999,
"editPermission":"",
"purgeOverride":false,
"purgePeriod":1
},
{
"xid":"DS_277802",
"name":"modSerial",
"enabled":true,
"type":"MODBUS_SERIAL",
"alarmLevels":{
"POINT_WRITE_EXCEPTION":"URGENT",
"POLL_ABORTED":"URGENT",
"DATA_SOURCE_EXCEPTION":"URGENT",
"POINT_READ_EXCEPTION":"URGENT"
},
"purgeType":"YEARS",
"updatePeriodType":"HOURS",
"concurrency":"SYNC_TRANSPORT",
"baudRate":9600,
"characterSpacing":0,
"commPortId":"\/dev\/ttyUSB0",
"dataBits":8,
"echo":false,
"encoding":"RTU",
"flowControlIn":0,
"flowControlOut":0,
"messageFrameSpacing":0,
"overrideTiming":false,
"parity":0,
"stopBits":2,
"contiguousBatches":false,
"createSlaveMonitorPoints":false,
"discardDataDelay":0,
"ioLogFileSizeMBytes":1.0,
"logIO":false,
"maxHistoricalIOLogs":1,
"maxReadBitCount":2000,
"maxReadRegisterCount":125,
"maxWriteRegisterCount":120,
"multipleWritesOnly":false,
"quantize":false,
"retries":2,
"timeout":500,
"updatePeriods":5,
"editPermission":"",
"purgeOverride":false,
"purgePeriod":1
}
],
"dataPoints":[
{
"xid":"DP_829661",
"name":"a",
"enabled":true,
"loggingType":"INTERVAL",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"AVERAGE",
"purgeType":"YEARS",
"pointLocator":{
"dataType":"NUMERIC",
"changeType":{
"type":"NO_CHANGE",
"startValue":"0"
},
"settable":true
},
"eventDetectors":[
],
"plotType":"SPLINE",
"unit":"",
"templateXid":"Numeric_Default",
"chartColour":"black",
"chartRenderer":{
"type":"IMAGE",
"timePeriodType":"DAYS",
"numberOfPeriods":1
},
"dataSourceXid":"DS_362292",
"defaultCacheSize":1,
"deviceName":"bugtest",
"discardExtremeValues":false,
"discardHighLimit":1.7976931348623157E308,
"discardLowLimit":-1.7976931348623157E308,
"intervalLoggingPeriod":1,
"intervalLoggingSampleWindowSize":0,
"overrideIntervalLoggingSamples":false,
"purgeOverride":false,
"purgePeriod":1,
"readPermission":"",
"setPermission":"",
"textRenderer":{
"type":"ANALOG",
"useUnitAsSuffix":true,
"unit":"",
"renderedUnit":"",
"format":"0.00"
},
"tolerance":0.0
},
{
"xid":"DP_430617",
"name":"rele1",
"enabled":true,
"loggingType":"INTERVAL",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"range":"HOLDING_REGISTER",
"modbusDataType":"TWO_BYTE_INT_UNSIGNED",
"writeType":"SETTABLE",
"additive":0.0,
"bit":0,
"charset":"ASCII",
"multiplier":1.0,
"offset":15,
"registerCount":0,
"slaveId":1,
"slaveMonitor":false
},
"eventDetectors":[
],
"plotType":"STEP",
"unit":"",
"chartColour":"black",
"chartRenderer":null,
"dataSourceXid":"DS_277802",
"defaultCacheSize":1,
"deviceName":"modSerial",
"discardExtremeValues":false,
"discardHighLimit":1.7976931348623157E308,
"discardLowLimit":-1.7976931348623157E308,
"intervalLoggingPeriod":1,
"intervalLoggingSampleWindowSize":0,
"overrideIntervalLoggingSamples":false,
"purgeOverride":false,
"purgePeriod":1,
"readPermission":"",
"setPermission":"",
"textRenderer":{
"type":"RANGE",
"useUnitAsSuffix":true,
"unit":"",
"renderedUnit":"",
"format":"bool",
"rangeValues":[
{
"colour":"#000000",
"from":0.0,
"text":"Zero",
"to":0.0
},
{
"colour":"#00ff00",
"from":1.0,
"text":"One",
"to":1.0
}
]
},
"tolerance":0.0
},
{
"xid":"DP_836397",
"name":"rele2",
"enabled":true,
"loggingType":"ON_CHANGE",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"range":"HOLDING_REGISTER",
"modbusDataType":"TWO_BYTE_INT_UNSIGNED",
"writeType":"SETTABLE",
"additive":0.0,
"bit":0,
"charset":"ASCII",
"multiplier":1.0,
"offset":16,
"registerCount":0,
"slaveId":1,
"slaveMonitor":false
},
"eventDetectors":[
],
"plotType":"STEP",
"unit":"",
"chartColour":"blue",
"chartRenderer":null,
"dataSourceXid":"DS_277802",
"defaultCacheSize":1,
"deviceName":"modSerial",
"discardExtremeValues":false,
"discardHighLimit":1.7976931348623157E308,
"discardLowLimit":-1.7976931348623157E308,
"intervalLoggingPeriod":15,
"intervalLoggingSampleWindowSize":0,
"overrideIntervalLoggingSamples":false,
"purgeOverride":false,
"purgePeriod":1,
"readPermission":"",
"setPermission":"",
"textRenderer":{
"type":"RANGE",
"useUnitAsSuffix":false,
"unit":"",
"renderedUnit":"",
"format":"boolt",
"rangeValues":[
{
"colour":null,
"from":0.0,
"text":"Zero",
"to":0.0
},
{
"colour":"#008000",
"from":1.0,
"text":"One",
"to":1.0
}
]
},
"tolerance":0.0
}
],
"publishers":[
{
"xid":"PUB_302755",
"type":"BACnet",
"points":[
{
"dataPointId":"DP_430617",
"instanceNumber":0,
"objectName":"modSerial - rele1"
},
{
"dataPointId":"DP_836397",
"instanceNumber":1,
"objectName":"modSerial - rele2"
},
{
"dataPointId":"DP_829661",
"instanceNumber":2,
"objectName":"bugtest - a"
}
],
"snapshotSendPeriodType":"MINUTES",
"localDeviceConfig":"62cb7655-d718-4c40-9552-202efb93cc91",
"cacheDiscardSize":1000,
"cacheWarningSize":100,
"changesOnly":false,
"enabled":true,
"name":"bac1",
"sendSnapshot":false,
"snapshotSendPeriods":5
}
],
"BACnetLocalDevices":[
{
"baudRate":9600,
"broadcastAddress":"255.255.255.255",
"commPortId":"",
"deviceId":31416,
"deviceName":"Mango Automation",
"id":"62cb7655-d718-4c40-9552-202efb93cc91",
"localBindAddress":"0.0.0.0",
"localNetworkNumber":0,
"port":47808,
"retries":2,
"retryCount":1,
"segTimeout":5000,
"segWindow":5,
"thisStation":0,
"timeout":6000,
"type":"ip"
}
]
}
on the client side
{
"dataSources":[
{
"xid":"DS_467782",
"name":"qwe",
"enabled":true,
"type":"BACnetIP",
"alarmLevels":{
"INITIALIZATION_EXCEPTION":"URGENT",
"DEVICE_EXCEPTION":"URGENT",
"MESSAGE_EXCEPTION":"URGENT"
},
"purgeType":"YEARS",
"updatePeriodType":"MINUTES",
"covSubscriptionTimeoutMinutes":60,
"localDeviceConfig":"10d9ca6d-477a-41d2-93ab-9755780520e7",
"updatePeriods":5,
"purgeOverride":true,
"purgePeriod":1
}
],
"dataPoints":[
{
"xid":"DP_166879",
"name":"rele1",
"enabled":true,
"loggingType":"ON_CHANGE",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"dataType":"NUMERIC",
"objectType":"ANALOG_VALUE",
"propertyIdentifier":"PRESENT_VALUE",
"link":"",
"mac":"192.168.3.145:47808",
"networkNumber":0,
"objectInstanceNumber":0,
"remoteDeviceInstanceNumber":31416,
"settable":true,
"useCovSubscription":true,
"writePriority":1
},
"eventDetectors":[
],
"plotType":"STEP",
"unit":"",
"chartColour":"",
"chartRenderer":null,
"dataSourceXid":"DS_467782",
"defaultCacheSize":1,
"deviceName":"qwe",
"discardExtremeValues":false,
"discardHighLimit":1.7976931348623157E308,
"discardLowLimit":-1.7976931348623157E308,
"intervalLoggingPeriod":15,
"intervalLoggingSampleWindowSize":0,
"overrideIntervalLoggingSamples":false,
"purgeOverride":true,
"purgePeriod":1,
"textRenderer":{
"type":"PLAIN",
"useUnitAsSuffix":true,
"unit":"",
"renderedUnit":"",
"suffix":""
},
"tolerance":0.0
},
{
"xid":"DP_946499",
"name":"rele2",
"enabled":true,
"loggingType":"ON_CHANGE",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"dataType":"NUMERIC",
"objectType":"ANALOG_VALUE",
"propertyIdentifier":"PRESENT_VALUE",
"link":"",
"mac":"192.168.3.145:47808",
"networkNumber":0,
"objectInstanceNumber":1,
"remoteDeviceInstanceNumber":31416,
"settable":true,
"useCovSubscription":true,
"writePriority":1
},
"eventDetectors":[
],
"plotType":"STEP",
"unit":"",
"chartColour":"",
"chartRenderer":null,
"dataSourceXid":"DS_467782",
"defaultCacheSize":1,
"deviceName":"qwe",
"discardExtremeValues":false,
"discardHighLimit":0.0,
"discardLowLimit":0.0,
"intervalLoggingPeriod":15,
"intervalLoggingSampleWindowSize":0,
"overrideIntervalLoggingSamples":false,
"purgeOverride":true,
"purgePeriod":1,
"textRenderer":{
"type":"PLAIN",
"useUnitAsSuffix":true,
"unit":"",
"renderedUnit":"",
"suffix":""
},
"tolerance":0.0
},
{
"xid":"DP_346289",
"name":"a",
"enabled":true,
"loggingType":"ON_CHANGE",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"dataType":"NUMERIC",
"objectType":"ANALOG_VALUE",
"propertyIdentifier":"PRESENT_VALUE",
"link":"",
"mac":"192.168.3.145:47808",
"networkNumber":0,
"objectInstanceNumber":2,
"remoteDeviceInstanceNumber":31416,
"settable":true,
"useCovSubscription":true,
"writePriority":1
},
"eventDetectors":[
],
"plotType":"STEP",
"unit":"",
"chartColour":"",
"chartRenderer":null,
"dataSourceXid":"DS_467782",
"defaultCacheSize":1,
"deviceName":"qwe",
"discardExtremeValues":false,
"discardHighLimit":0.0,
"discardLowLimit":0.0,
"intervalLoggingPeriod":15,
"intervalLoggingSampleWindowSize":0,
"overrideIntervalLoggingSamples":false,
"purgeOverride":true,
"purgePeriod":1,
"textRenderer":{
"type":"PLAIN",
"useUnitAsSuffix":true,
"unit":"",
"renderedUnit":"",
"suffix":""
},
"tolerance":0.0
}
],
"BACnetLocalDevices":[
{
"baudRate":9600,
"broadcastAddress":"255.255.255.255",
"commPortId":"",
"deviceId":31417,
"deviceName":"Mango Automation",
"id":"10d9ca6d-477a-41d2-93ab-9755780520e7",
"localBindAddress":"0.0.0.0",
"localNetworkNumber":0,
"port":47808,
"retries":2,
"retryCount":1,
"segTimeout":5000,
"segWindow":5,
"strict":true,
"thisStation":0,
"timeout":6000,
"type":"ip"
}
]
}