Appendix 2: SPC Data Organization

Print Friendly, PDF & Email

SPC data is stored on the PLC for the 50 most recent Infra cycles. This can be exported to an external server with additional code.

The SPC data is comprised of two components: Part SPC and Module SPC. Both are found in the Infra_User controller tag (unless renamed by the integrator).

Infra_User.SPC_Data_Part is a 50-item array containing the last 50 cycles, with position 0 being the most recent cycle. Each array item contains information on which Parts ran, the Valve Group (Zone) the Parts ran on, the date and time, and whether the cycle passed or failed.

  • The ValveNum indicates which Valve Group (Zone) the Part(s) ran on.
  • The PartsRun word, when expanded to view each bit, shows which Part or Parts ran. In the example shown, Parts 1 and 2 were run. (Even though the value of the word is 6, Part 6 did not run; it’s the bits that you need to pay attention to. Bit zero is not used.)
  • DateTime shows when the cycle was run. In this example, the time is 3:23:38 PM, on January 9, 2017.
  • Lastly, the PassFail bit shows a 1 for an overall pass and a 0 for any failure. (Faults are enumerated separately in the Infra_User.Fault_History tag array.)

The Infra_User.SPC_Data_Module tag contains the Module SPC data and is also a 50-item array, with item 0 being the most recent. The entries in this array do not necessarily correspond to the same entries from the Part SPC array.

Each tag in a given index position is also an array whose size corresponds to the number of Modules the system is capable of (31, 63, or 127). So basically the Module SPC data is a two-dimensional array, with the first index indicating the cycle number and the second index indicating the Module. For example, Module 5’s stake height for the 3rd most recent cycle may be found in Infra_User.SPC_Data_Module[3].StakeHeightPosn[5]. (Index position 0 is unused since Module numbering starts at 1.)

  • CycleNum indicates which cycle the data was collected on. For example, if Infra_User.SPC_Data_Module[0].CycleNum[1] contains a 3, that would mean that the most recent on which Module 1 ran was 3 cycles ago. This allows this data to be compared to the Part SPC data.
  • PartNum indicates which Part was run on a given Module for the cycle number indicated in CycleNum
  • BossHeightPosn indicates the reference position, in millimeters, of the boss height for the cycle number indicated in CycleNum
  • StakeHeightPosn indicates the reference position, in millimeters, of the stake height for the cycle number indicated in CycleNum

Another example: Let’s look at Module 4’s Boss Height for its 9th most recent cycle. This corresponds to Infra_User.SPC_Data_Module[9].BossHeightPosn[4]. Then if we want to see which cycle this data was taken, we would examine Infra_User.SPC_Data_Module[9].CycleNum[4]. Let’s say that contains a 12. Then we could match this data to the Part SPC data for cycle 12.

The next cycle’s data for the same Module is found at Infra_User.SPC_Data_Module[10].BossHeightPosn[4]

Boss Heights for the most recent cycle for Modules 1-4 (again, note that index 0 is not used):