This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

bacnet client app
#21
There's no easy way of editing this file. You need to run a Redis server locally to be able to do this. But even if you can edit the file it might not work because of different Redis versions.

Run YABE and scan the installation network to be 100% sure that device 77000 is not present anymore. As I've said the scanning process cannot consume a lot of RAM if it's trying to read a non-existing device. It will simply stop with a timeout error after some time.
Reply
#22
Ok.
The device still exist, but with bacnet client, there is infinite loop and no object displayed.
So no way to delete the mapped object.
-----------
FRANCE SMARTHOME & SMARTBUILDING INTEGRATION
SE ECO EXPERT
Reply
#23
Scan it with YABE. How many objects does it have?
Reply
#24
(11.03.2024, 07:03)admin Wrote: Scan it with YABE. How many objects does it have?

more than 2000
   
-----------
FRANCE SMARTHOME & SMARTBUILDING INTEGRATION
SE ECO EXPERT
Reply
#25
Hi ! Regarding Bacnet client App on SE (LSS100200).
Does somebody know, is it normal behaviour?
On two devices I installed Bacnet client, disabled Bacnet server and made ~15 mappings of Bacnet points.
After that, CPU load become high for permanent. No any other changes, no new scripts or data points. Is it normal load?
Before this, CPU load was near 0.1

   
Reply
#26
How often are these objects updated?
------------------------------
Ctrl+F5
Reply
#27
(27.08.2024, 07:26)Daniel Wrote: How often are these objects updated?

For 10 minutes of logging, only temperature changed twice, thats all.
"Write to bus" option is not used an all mappings.

   
   
   
Reply
#28
Install process app and see what is creating the load.
------------------------------
Ctrl+F5
Reply
#29
(27.08.2024, 08:06)Daniel Wrote: Install process app and see what is creating the load.

Could you help with Process App offline installation file? I don't have internet connection on devices.
Reply
#30
Use this, its better
https://forum.logicmachine.net/showthrea...5#pid25655
------------------------------
Ctrl+F5
Reply
#31
(27.08.2024, 08:16)Daniel Wrote: Use this, its better
https://forum.logicmachine.net/showthrea...3#pid35963

Sorry, you probably gave incorrect link?
Reply
#32
https://forum.logicmachine.net/showthrea...5#pid25655
------------------------------
Ctrl+F5
Reply
#33
(27.08.2024, 08:27)Daniel Wrote: https://forum.logicmachine.net/showthrea...5#pid25655

Thanks. It shows load 80% on this:
Code:
lua lib/genohm-scada/core/scripting-resident.lua 1

I have only 4 resident scripts here, and by togging off and on consequently, I found this is Modbus Slave script (script is original, taken from this forum).
Seems, this because of we started using Modbus instead of Bacnet for communication with SCADA server.
But we have hundreds of other Modbus devices connected to the same SCADA server and no problems there.
Reply
#34
Can't really say much from the info provided.
------------------------------
Ctrl+F5
Reply
#35
(27.08.2024, 08:56)Daniel Wrote: Can't really say much from the info provided.

This is the script which generates load.
What else I can check?

Code:
local mb = require('user.mbslave')
local copas = require('copas')
local socket = require('socket')
local address = '*'
local port = 502
local server = assert(socket.bind(address, port))

mb.setmapping({
  ['*'] = {
    coils = {
      [0] = 'U.5.004_LightOnOff',
      [1] = 'U.5.003_LightOnOff',
      [2] = 'U.5.002_LightOnOff',
      [3] = 'U.5.004_LightSts',
      [4] = 'U.5.003_LightSts',
      [5] = 'U.5.002_LightSts',
      [6] = 'U.5.004_LightOnOffWC',
      [7] = 'U.5.003_LightOnOffWC',
      [8] = 'U.5.002_LightOnOffWC',
      [9] = 'U.5.004_LightStsWC',
      [10] = 'U.5.003_LightStsWC',
      [11] = 'U.5.002_LightStsWC',
       
      [12] = 'U.5.004_FancoilOnOff',
      [13] = 'U.5.003_FancoilOnOff',
      [14] = 'U.5.002_FancoilOnOff',
      [15] = 'U.5.004_FancoilStatus',
      [16] = 'U.5.003_FancoilStatus',
      [17] = 'U.5.002_FancoilStatus',
      [18] = 'U.5.004_FancoilAlarm',
      [19] = 'U.5.003_FancoilAlarm',
      [20] = 'U.5.002_FancoilAlarm',
       
      [21] = 'U.5.004_Call',
      [22] = 'U.5.003_Call',
      [23] = 'U.5.002_Call',
       
      [24] = '5.SHAVIP.2_D1_KNXStatus',
      [25] = '5.SHAVIP.2_D2_KNXStatus',
      [26] = '5.SHAVIP.2_MEGateway_Status',
      [27] = '7.SHAUOV.6_Status',
       
      [28] = '5.SHAVIP.2_LightOnOff',
      [29] = '5.SHAVIP.2_LightOnOffWCStaff',
      [30] = '5.SHAVIP.2_DisableButtons',
       
      [31] = 'U.5.004_Status',
      [32] = 'U.5.004_Status',
      [33] = 'U.5.004_Status'
      },
    registers = {
      [0] = 'U.5.004_LightDim',
      [1] = 'U.5.003_LightDim',
      [2] = 'U.5.002_LightDim',
      [3] = 'U.5.004_LightDimWC',
      [4] = 'U.5.003_LightDimWC',
      [5] = 'U.5.002_LightDimWC',
       
      [6] = 'U.5.004_Temp',
      [7] = 'U.5.003_Temp',
      [8] = 'U.5.002_Temp',
      [9] = 'U.5.004_Setpoint',
      [10] = 'U.5.003_Setpoint',
      [11] = 'U.5.002_Setpoint',
       
      [12] = 'U.5.004_FancoilErrorCode',
      [13] = 'U.5.003_FancoilErrorCode',
      [14] = 'U.5.002_FancoilErrorCode',
       
      [15] = '5.SHAVIP.2-D1_1_GenFaultCount',
      [16] = '5.SHAVIP.2-D1_1_FaultLampCount',
      [17] = '5.SHAVIP.2-D1_1_FaultECGCount',
      [18] = '5.SHAVIP.2-D1_2_GenFaultCount',
      [19] = '5.SHAVIP.2-D1_2_FaultLampCount',
      [20] = '5.SHAVIP.2-D1_2_FaultECGCount',
      [21] = '5.SHAVIP.2-D2_1_GenFaultCount',
      [22] = '5.SHAVIP.2-D2_1_FaultLampCount',
      [23] = '5.SHAVIP.2-D2_1_FaultECGCount',
      [24] = '5.SHAVIP.2-D2_2_GenFaultCount',
      [25] = '5.SHAVIP.2-D2_2_FaultLampCount',
      [26] = '5.SHAVIP.2-D2_2_FaultECGCount'
    }
  }
})

mb.setswap('w')
mb.setfloat16precision(2)

local function handler(sock)
  copas.setErrorHandler(log)

  sock = copas.wrap(sock)
  sock:settimeout(60)

  while true do
    local res, err = mb.tcphandler(sock)
    if not res then
      break
    end
  end

  sock:close()
end

copas.addserver(server, handler, 60)
copas.loop()
Reply
#36
Any alerts?
------------------------------
Ctrl+F5
Reply
#37
(27.08.2024, 09:34)Daniel Wrote: Any alerts?

Nothing. Only several "System start" on earlier dates. 

Some more observations. We tried to toggle-off the modus polling on SCADA server side. As result - script load decreases to almost zero.
Then, we tried to change some of the options on SCADA server side to see if something changes. And decreasing number if simultaneous connections from 5 to 1 - gave load decreased from 80% to 60%. That is better, but not ideal.

   
   
Reply
#38
See if you can lower the polling interval. The load is caused by the Scada system constantly polling the Modbus values.

Or you can add a short delay before each request:
Code:
local function handler(sock)
  copas.setErrorHandler(log)

  sock = copas.wrap(sock)
  sock:settimeout(60)

  while true do
    copas.sleep(0.5) -- extra delay

    local res, err = mb.tcphandler(sock)
    if not res then
      break
    end
  end

  sock:close()
end
Reply
#39
(27.08.2024, 10:07)admin Wrote: See if you can lower the polling interval. The load is caused by the Scada system constantly polling the Modbus values.

Or you can add a short delay before each request:

Nice! Delay 0.1 made load 10%. Seems, it is the solution. Thanks!
Reply


Forum Jump: