Forum Replies Created
-
AuthorPosts
-
May 23, 2023 at 6:05 am in reply to: Server Slient Crash – ScadaServer killed by OOM killer on Linux #12681
JW
ParticipantAs temporary measure, is there any recommended way to monitor and auto restart the service on crash?
For systemd daemon file, it’s easy to add
[Service] Restart=always RestartSec=30
But the Scada 5.8.4 is using init.d, and the daemon file is a complicated script. Is there any similar to do it?
JW
Participantsorry the /// in this post was a typo. couldn’t edit it now.
but in the actual project, the setting was correct.In most case the current version works fine.
But I am looking for solutions for the 2 cases I mentioned.
JW
Participantthe picture link above seems not working.
it’s figure 5 in this link
https://instrumentationtools.com/basics-of-alarms-and-trips/JW
ParticipantTest on channel deadband
Limits are 10,20,30,40 and deadband is 2
Init value as 25.5, increase value by +1 until 50.5; then decrese value by -1 until 0.5; then increase value by +1 until 25.5.Event detected as follow:
High, 30.5 °C Extremely high, 40.5 °C High, 39.5 °C Normal, 27.5 °C Low, 19.5 °C Extremely low, 9.5 °C Low, 10.5 °C Normal, 22.5 °C
the deadband seems only work on the bounds of normal/high and low/normal, but not high/extremely high nor low/extremely low.
then testing value flicking round 30, only 1 event of high as expected. but when testing value value flicking round 40, many high/extremely high events.
for multiple status, I think it would be better if the deadband works for all bounds, as the following picture.
September 22, 2022 at 2:44 am in reply to: How to show current date and time on scheme or dashboard #10879JW
Participantcheck the use formula box.
set channel type to calculated real.
set formate to date and timeJW
Participantthe alarms limit settings is only best for value alarms by threholds.
for multiples states, e.g.
00 is fine and safe. value =0
01 is alarm and not safe. value =1
10 is another alarm (break) and not safe to use. value = 2
11 is critical alarm (leak and break). Value = 3create a “unit” in the “Units” table, e.g.
name: mystates; sign: Safe;Not Safe;Break;Leak and Breakfor the input channel of state, set foramt to Enum text, check write event and event on change. leave the alarm settings empty.
JW
ParticipantHi, I think it’s a feature related to modbus protocol.
Each element group equals 1 modbus request command, which can only get upto 100 consecutive address.to add 30001, 30004, 30006, it can be done by adding 1 element group of read holding register (0x03) with starting elelment address 1 and elelment count of 6.
when creating input channels, singals 1,4,6 can be used while singals 2,3,5 can be ignored.
this is the fastest way because there will be only 1 modbus request.another way is to add 3 element gourps of read holding register (0x03) with starting address 1,4,6 respectively.
this way is slower beacause there will be 3 requests.
you will slao need to config the dalay between each requst in communication line settings.JW
ParticipantThis will be very helpful API!
Would you also consider an API that allow posting device data to scada?
JW
ParticipantYou will need to create an extra output channel to do that.
https://rapidscada.net/doc/content/latest/en/software-configuration/using-formulas.htmlCreate an output channel, maybe also use same channel number 112 as follow
Command Type: Standard
Formula Used: True
Fomula: SetVal(112,Cmd)Button settings
Action: Send command
Input Channel: empty
Output Channel: 112JW
ParticipantAny plan for PlgNotification?
JW
ParticipantInstallation and Basic Test:
1. Installation on both Windows 10 and Ubuntu 20.04 Tested OK.
2. A bug of WebApp not refreshing after switching between views on Firefox seems no longer there.A few suggestion For ScadaAdmin App:
1. Make the search and replace function applicable for the enable (checkbox) fields.
2. Is it possible to copy an array / list from excel and paste it to the ScadAdmin table? at least for the number and text field, such as channel name, formula.
3. The linux pack no longer has ScadaAdmin. In v5 I can use mono to run ScadaAdmin GUI to modify settings and upload projects. Is there any features that allow user to at least upload a project from Linux desktop or command line?some know bug /limitation on v5 I am going to test.
1. On V5 if the formula used channel exceed ~1.5k, the server will crash.
2. On V5 if the reading of 1 device exceed ~4k, communicator will not be able send to to server.JW
ParticipantI’m not sure if I understand you correctly. Do you mean create a template for 1 machine (with pictures, texts, buttons), then apply the template to multiple machine?
Now there is no such function. I use a workaround for similar requirements.
The scheme .sch file is actually XML file. I create 1 set of the machine manually, then write a script to edit the .sch file, copy and multiple the manually created one, and change x-y coordinates, input channels and etc…
JW
ParticipantWhat does the following log mean? No reply within “Timeout” period or “Delay” period? Or socket throws an exception or receive an empty message?
8. Receive (0 / 7):
9. Communication error!I still get this error from time to time, even the communication line is connecting to a virtual device on localhost. Sometimes it never happened in months, sometimes it happened a few times in an hour.
JW
Participantthe trick is set two “ON” states for your led, and toggle between them.
set a led with condition
0; 1; 2 for silver; light green; green.assume you have multiple led, they should blink at the same time.
step 1, defind a function in formula, which is the value of second of current time.
———
double Second(DateTime dt){
double en_dt = EncodeDate(dt);
double s = Math.Truncate(en_dt * 24 * 60 * 60) % 60;
return s;
}
——–you can have 1 input channel for device status, e.g. Cnl 1001
0; 1 for off; onthen you setup an other channel for led, e.g. 1002,
set formula
Val(1001)==0?0:Val(1001)+Second(DateTime.Now)%2then the value will toggle between 1 and 2 every second when the device is on, and remain 0 when the device is off.
JW
ParticipantFor error handling, in case any request and reply sequence get messed up, I am thinking the following approach.
after the error of line 7 and 8, I would run and wait an additional loop of sock.recv() for a period (maybe same time of timeout), and then discard of all the data of this recv. in the above case, it would get line 12 and line 16 and so on.
then send a new request of line 11, then the reply should be correct from now on.
-
AuthorPosts