JW

Forum Replies Created

Viewing 15 posts - 1 through 15 (of 97 total)
  • Author
    Posts
  • in reply to: How to show current date and time on scheme or dashboard #10879
    JW
    Participant

    check the use formula box.
    set channel type to calculated real.
    set formate to date and time

    in reply to: Event Attributes #10878
    JW
    Participant

    the 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 = 3

    create a “unit” in the “Units” table, e.g.
    name: mystates; sign: Safe;Not Safe;Break;Leak and Break

    for the input channel of state, set foramt to Enum text, check write event and event on change. leave the alarm settings empty.

    in reply to: Input channel (small bug) #10877
    JW
    Participant

    Hi, 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.

    in reply to: Web API, REST API, version 6 #10326
    JW
    Participant

    This will be very helpful API!

    Would you also consider an API that allow posting device data to scada?

    in reply to: Entering number from browser #10257
    JW
    Participant

    You will need to create an extra output channel to do that.
    https://rapidscada.net/doc/content/latest/en/software-configuration/using-formulas.html

    Create 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: 112

    in reply to: Rapid SCADA 6 Beta #10248
    JW
    Participant

    Any plan for PlgNotification?

    in reply to: Rapid SCADA 6 Beta #10044
    JW
    Participant

    Installation 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.

    in reply to: Basic Scada Functions #9802
    JW
    Participant

    I’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…

    in reply to: Modbus Comm Bug #9720
    JW
    Participant

    What 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.

    in reply to: How to make Led blinking #9712
    JW
    Participant

    the 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; on

    then you setup an other channel for led, e.g. 1002,
    set formula
    Val(1001)==0?0:Val(1001)+Second(DateTime.Now)%2

    then the value will toggle between 1 and 2 every second when the device is on, and remain 0 when the device is off.

    in reply to: Modbus Comm Bug #9709
    JW
    Participant

    For 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.

    in reply to: 关于ScadaServer进程内存占用率过高的问题 #9708
    JW
    Participant

    客户端是长时间开着浏览器查看GUI吗?

    在测试环境试试不使用SQL转存模块,看看有没有这个问题?

    看看以下几个日志有没有异常。
    SCADA/ScadaServer/Log/ScadaServerSvc.log
    SCADA/ScadaWeb/log/ScadaWeb.log
    SQL模块应该也有个单独的日志

    in reply to: Modbus Comm Bug #9707
    JW
    Participant

    Hi Mikhail,

    Recently when I implementing a TCP protocol, I encounter a problem with similar symptoms of this Modbus issue.

    I am going to use the Modbus error as example. I label the following error message with line number.
    ————————————–
    1. Request element group “ch1.011”
    2. Send (12): 05 42 00 00 00 06 01 03 04 4C 00 64
    3. Receive (7 / 7): 05 42 00 00 00 CB 01
    4. Receive (202 / 202): 03 C8 42 0A 8A 3D 42 0A E6 66 42 0B 41 89 42 0B 9C AC ….
    5. OK!
    6. Request element group “ch1.012”
    7. Send (12): 05 43 00 00 00 06 01 03 04 4C 00 64
    8. Receive (0 / 7):
    9. Communication error!
    10. Request element group “ch1.012”
    11. Send (12): 05 44 00 00 00 06 01 03 04 4C 00 64
    12. Receive (7 / 7): 05 43 00 00 00 CB 01
    13. Incorrect MBAP Header data!
    14. Request element group “ch1.012”
    15. Send (12): 05 45 00 00 00 06 01 03 04 4C 00 64
    16. Receive (7 / 7): 03 C8 42 IA FC EE 42
    17. Incorrect MBAP Header data!

    18. 2021-01-11 23:28:40 Disconnect from 127.0.0.1
    ————————————–

    Line 7 sent a request(05 43) but did not get proper reply.
    Line 11 sent a new request(05 44). then line 12 receive data(05 43), but which is the reply of header of line 7 request(05 43). it was considered incorrect because it did not match with line 12 request.
    Line 15 sent a new request again. then line 16 receive data, which is the body of the reply of header of line 7 request(05 43). it was considered incorrect again because it did not match with line 12 request nor the header format.

    The reason I got this error is as follow. (I guess the Modbus driver may have similar issue but not sure).

    For such small amount of data, I assumed it will be always receive at 1 try.
    So I use sock.recv(7) to get header, then calculate the length of data from header, e.g. 0xCB = 203, the reset of data should be 203-1=202, then I use sock.recv(202) to get the rest of the data body.

    But I found very rarely, it will only get e.g. maybe 100 bytes of data on sock.recv(202) or 5 bytes on sock.recv(7). This will not only create 1 error of incomplete reply, but also messed up the following sequence.

    So I changed to use a while loop to receive data, to make I received the proper length of data. something like the sudo code below.

    recv_data = bytearray()
    while recv_data_length < expected_length:
    recv_data += sock.recv(expected_length-recv_data_length)

    in reply to: 关于ScadaServer进程内存占用率过高的问题 #9704
    JW
    Participant

    哪个版本的SCADA?

    28000点中,使用函数的有多少? 我以前测试的情况是超过12000点使用函数,scadasever会崩溃,后来版本更新,好像可以使用更多一些。

    我也有很多项目是2万点以上,但是大部分是没有函数的,暂时没有遇到这个问题。

    另外可以检查自定义函数里面是否有不停创建新对象。

    in reply to: 报警里的 Undefined是什么意思 #9552
    JW
    Participant

    可以考虑以下几个措施同时采用

    1. 对应的Channel不勾选Event on undefined;
    2. Instance -> Server -> Saving parameters -> Unreliable on inactive 选择 disable, 或者根据需要设置1小时等长时间;
    3. 对应的Channel设置以下公式,如果返回值是nan,会保留上一轮的值而不更新返回的值。
    double.IsNaN(Cnl)?Val():Cnl

Viewing 15 posts - 1 through 15 (of 97 total)