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

    This is not possible to do if you were using physical PLC, you have to consider;
    Maximum Request Length is the maximum number of data bits that can be read from an I/O Device in a single request. For example, if the maximum request length is 2048 bits, the maximum number of integers that can be read is: 2048/16 = 128
    If you define an array of I/O Device variables, you must ensure that the array does not exceed the maximum request length.
    Citect also has a limit of 2048 bits irrespective of the protocol!

    Since you are using a Generic driver , I should consider to use Local variables. The drawback with Local variables are the values in a local variable are only available to the process in which they were written.
Reply
  • Hi Rune.

    This is not possible to do if you were using physical PLC, you have to consider;
    Maximum Request Length is the maximum number of data bits that can be read from an I/O Device in a single request. For example, if the maximum request length is 2048 bits, the maximum number of integers that can be read is: 2048/16 = 128
    If you define an array of I/O Device variables, you must ensure that the array does not exceed the maximum request length.
    Citect also has a limit of 2048 bits irrespective of the protocol!

    Since you are using a Generic driver , I should consider to use Local variables. The drawback with Local variables are the values in a local variable are only available to the process in which they were written.
Children
No Data