• Recent
    • Tags
    • Popular
    • Register
    • Login

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website Mango 5 Documentation Website

    ModbusRTU, BacnetIP publisher, readonly points?

    User help
    2
    3
    1.8k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jmpy
      last edited by

      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"
            }
         ]
      }
      
      1 Reply Last reply Reply Quote 0
      • JoelHaggarJ
        JoelHaggar
        last edited by

        The BACnet publisher only supports reading point values and does not support setting values. We are planning to add this feature to it. The Modbus publisher does support writing values. We have a git issue for it that you can watch to be notified once the feature is added.
        https://github.com/infiniteautomation/ma-core-public/issues/387

        Thanks,
        Joel.

        1 Reply Last reply Reply Quote 0
        • J
          jmpy
          last edited by

          Hmmm, ok. Thanks for the fast response.
          How is it then, that virtual points can be written with the publisher?
          Also, we tested one more thing:

          • we had our modbus point A
          • we created a virtual data point VirtA
          • we created two 'onchange' point links, A->VirtA and VirtA->A
          • voilá, it worked, point A could be written using the bacnet publisher!
          • (it also worked using a metapoint and a single pointlink)

          thoughts?

          1 Reply Last reply Reply Quote 0
          • First post
            Last post