Probably the best way to explain the ChartByArray is to describe the two applications it was developed for.
The ChartByArray was first created for a cooker that would record temperature, pressure, and steam output in arrays. It was a batch process that would reset the data recording each time a new batch was started. It used an index variable that pointed the the next element in the arrays to be used for a data sample. Every 15 seconds the process values were sampled and stored in the arrays in the current index position then the index variable was incremented. Using PLCAddressItems, each array was added to the list. Then the index variable was set in PLCArrayIndex. When the variable PLCArrayIndex went to 0 (actually it watched for it to reduce in value), then chart was cleared. Each time the index incremented, it would read the values from the arrays and add them to the chart. The result was a chart that would get new values added as the process was running and that would show the complete process after it was finished a batch.
Another application was for a machine that would weigh small batches of material. Each time a weigh out was completed, a data table with 50 elements was shifted (discarding element 50) and the latest weight stored in element 0. The data table address was added to PLCAddressItems. A bit value in the PLC was set to 1 each time a new weight value was added to the table. The address of the bit value was put in PLCAddressRefreshAllPoints. When the ChartByArray saw this bit go true, it would read the complete array and plot the values. The result was a chart showing the last 50 weights.