Citect Scada 2018 - IOServer stops when transferring data between Array's

Hi,

When I try to move data from one array defined in Cicode to an array defined in Variable Table, the IOServer "halts" and sometimes stops and then restarts.

My Simple test code in Cicode Editor is as follow:
REAL HPCData[8760];
FUNCTION Transfer()
INT i;
FOR i = 0 TO 8760 DO
  HPCPerfDatahttps://softwareforums.aveva.com/cfs-file/__key/system/emoji/1f4a1.svg = HPCDatahttps://softwareforums.aveva.com/cfs-file/__key/system/emoji/1f4a1.svg;
END
The Variable Array HPCPerDatahttps://softwareforums.aveva.com/cfs-file/__key/system/emoji/1f4a1.svg is defined as follow:
TagName: HPCPerDatahttps://softwareforums.aveva.com/cfs-file/__key/system/emoji/1f4a1.svg
I/O Device: GENERIC
Data Type: REAL
Address: R1[8760]
If I reduce the array size, the IOServer is not halted/stopped that frequently. As an array may have 32767 elements according to help files, this number should not be an issue.
Appreciate any input that can help enlighten what's going on and perhaps there are some good best practices in Citect on how to work efficient with Arrays. 
Thanks,
Rune
Parents
  • Hi Patrick,
    Thanks for your supplementary explanation, most appreciated.

    Yes I had the Persist to True, changed it to False, did not have nay major impact.

    Added the SleepMS(1) to the FOR loop and that prevented the IOServer from halted/restarting.
    However it then requires quite some time to loop through the 8759 elements (used about 15seconds).

    I then added a new IOServer2 only dedicated to the GENERIC Protocol.
    This seems to really do the magic trick, now the data move completes within 1-2s and no impact on IOServer1.

    What do you think about this solutions? Do you see any impact when it comes to remote access etc, or other tasks?

    Thanks
    Rune
Reply
  • Hi Patrick,
    Thanks for your supplementary explanation, most appreciated.

    Yes I had the Persist to True, changed it to False, did not have nay major impact.

    Added the SleepMS(1) to the FOR loop and that prevented the IOServer from halted/restarting.
    However it then requires quite some time to loop through the 8759 elements (used about 15seconds).

    I then added a new IOServer2 only dedicated to the GENERIC Protocol.
    This seems to really do the magic trick, now the data move completes within 1-2s and no impact on IOServer1.

    What do you think about this solutions? Do you see any impact when it comes to remote access etc, or other tasks?

    Thanks
    Rune
Children
No Data