Programmable Automation Controller

Designing a full redundant large factory system

RedundantProgrammableArrayController_HW_V3

Browsable image of the model.

  • For an executable version,
  • Mouse over the icons to view parameters. Click on hierarchy and plotters to reveal content (if provided).
  • To simulate, click on Launch button, open downloaded file and click Run on the Java Security Page.
RedundantProgrammableArrayController_HW_V3model <h2>ModiconM</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>_hideName</td><td>true</td><td>true</td></tr><tr><td>Processor_Speed_Mhz</td><td>1000.0</td><td>1000.0</td></tr><tr><td>Devices</td><td>{&quot;EnergySupervision&quot;,&quot;Altivar_Process_Ctrl&quot;,&quot;ModiconSTB_IO1&quot;,&quot;ModiconSTB_IO2&quot;}</td><td>{&quot;EnergySupervision&quot;, &quot;Altivar_Process_Ctrl&quot;, &quot;ModiconSTB_IO1&quot;, &quot;ModiconSTB_IO2&quot;}</td></tr></table> <h2>TextDisplay</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>rowsDisplayed</td><td>10</td><td>10</td></tr><tr><td>columnsDisplayed</td><td>40</td><td>40</td></tr><tr><td>suppressBlankLines</td><td>false</td><td>false</td></tr><tr><td>title</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>ViewText</td><td>false</td><td>false</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>ArchitectureSetup</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Architecture_Name</td><td>&quot;Architecture_1&quot;</td><td>&quot;Architecture_1&quot;</td></tr><tr><td>Field_Name_Mapping</td><td>/* First row contains Column Names.                */\\nExternal_Field_Name          Internal_Field_Name   ; \\nA_Address                    A_Address             ; \\nA_Bytes                      A_Bytes               ; \\nA_Data                       A_Data                ; \\nA_IDX                        A_IDX                 ; \\nA_Instruction                A_Instruction         ; \\nA_Priority                   A_Priority            ; \\nA_Source                     A_Source              ; \\nA_Destination                A_Destination         ; \\nA_Task_ID                    A_Task_ID             ; \\nA_Time                       A_Time                ; \\n</td><td>/* First row contains Column Names.                */\\nExternal_Field_Name          Internal_Field_Name   ; \\nA_Address                    A_Address             ; \\nA_Bytes                      A_Bytes               ; \\nA_Data                       A_Data                ; \\nA_IDX                        A_IDX                 ; \\nA_Instruction                A_Instruction         ; \\nA_Priority                   A_Priority            ; \\nA_Source                     A_Source              ; \\nA_Destination                A_Destination         ; \\nA_Task_ID                    A_Task_ID             ; \\nA_Time                       A_Time                ; \\n</td></tr><tr><td>Routing_Table</td><td>/* First row contains Column Names.                */\\nSource_Node    Destination_Node   Hop           Source_Port ; \\nProcessor_1    Cache_1            Port_1        bus_out2    ;\\nCache_1        Processor_1        Port_2        output      ;\\nCache_1        SDRAM_1            Port_2        output      ;\\nSDRAM_1        Cache_1            Port_4        output      ;\\nSDRAM_1        Processor_1        Port_4        output      ;</td><td>/* First row contains Column Names.                */\\nSource_Node    Destination_Node   Hop           Source_Port ; \\nProcessor_1    Cache_1            Port_1        bus_out2    ;\\nCache_1        Processor_1        Port_2        output      ;\\nCache_1        SDRAM_1            Port_2        output      ;\\nSDRAM_1        Cache_1            Port_4        output      ;\\nSDRAM_1        Processor_1        Port_4        output      ;</td></tr><tr><td>Number_of_Samples</td><td>2</td><td>2</td></tr><tr><td>Statistics_to_Plot</td><td>&quot;Processor_1_PROC_Utilization_Min, Processor_1_PROC_Utilization_Mean, Processor_1_PROC_Utilization_Max&quot;</td><td>&quot;Processor_1_PROC_Utilization_Min, Processor_1_PROC_Utilization_Mean, Processor_1_PROC_Utilization_Max&quot;</td></tr><tr><td>Internal_Plot_Trace_Offset</td><td>2</td><td>2</td></tr><tr><td>Listen_to_Architecture_Options</td><td>None</td><td>None</td></tr></table> <h2>Altivar Process Variable Speed Drive</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>NameOfNode</td><td>&quot;Altivar_Process_Ctrl_Node&quot;</td><td>&quot;Altivar_Process_Ctrl_Node&quot;</td></tr></table> <h2>EnergySupervision</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>NameOfNode</td><td>&quot;EnergySupervision_Node&quot;</td><td>&quot;EnergySupervision_Node&quot;</td></tr></table> <h2>ConneXium Managed Swith</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>_hideName</td><td>true</td><td>true</td></tr></table> <h2>ModiconSTBI/O</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>_hideName</td><td>true</td><td>true</td></tr><tr><td>NameOfNode</td><td>&quot;ModiconSTB_IO2_Node&quot;</td><td>&quot;ModiconSTB_IO2_Node&quot;</td></tr></table> <h2>ModiconSTBI/O1</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>_hideName</td><td>true</td><td>true</td></tr><tr><td>NameOfNode</td><td>&quot;ModiconSTB_IO1_Node&quot;</td><td>&quot;ModiconSTB_IO1_Node&quot;</td></tr></table> <h2>ModiconM580</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>_hideName</td><td>true</td><td>true</td></tr><tr><td>Processor_Speed_Mhz</td><td>1000.0</td><td>1000.0</td></tr><tr><td>Devices</td><td>{&quot;EnergySupervision&quot;,&quot;Altivar_Process_Ctrl&quot;,&quot;ModiconSTB_IO1&quot;,&quot;ModiconSTB_IO2&quot;}</td><td>{&quot;EnergySupervision&quot;, &quot;Altivar_Process_Ctrl&quot;, &quot;ModiconSTB_IO1&quot;, &quot;ModiconSTB_IO2&quot;}</td></tr></table> <h2>Routing_Table</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Routing_Table_DB</td><td>&quot;Routing_Table_DB&quot;</td><td>&quot;Routing_Table_DB&quot;</td></tr><tr><td>Routing_Table_Name</td><td>RT</td><td>&quot;RT&quot;</td></tr><tr><td>Propagation_Constant_C</td><td>1.0</td><td>1.0</td></tr><tr><td>Message_Names</td><td>{&quot;Retry&quot;, &quot;Request&quot;, &quot;Acknowledge&quot;,&quot;Clk_Sync&quot;} </td><td>{&quot;Retry&quot;, &quot;Request&quot;, &quot;Acknowledge&quot;, &quot;Clk_Sync&quot;}</td></tr><tr><td>Message_Bytes</td><td>{16, 16, 16, 80} </td><td>{16, 16, 16, 80}</td></tr><tr><td>NODEs_in_Model</td><td>true</td><td>true</td></tr><tr><td>Routing_Algorithm</td><td>Dijkstra</td><td>Dijkstra</td></tr><tr><td>Routing_Algorithm_Cost</td><td>Number_of_Hops</td><td>Number_of_Hops</td></tr><tr><td>Routing_Latencies</td><td>Length_in_meters</td><td>Length_in_meters</td></tr></table> <h2>Database</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>*.xml, *.csv files abs or rel (./) path\\n  -- *.csv real columns set to number\\nInput_Fields == Lookup_Fields (num, type)\\nOutput_Expr: match, match_last, match_all\\n  -- match_all.field not allowed</td><td>*.xml, *.csv files abs or rel (./) path\\n  -- *.csv real columns set to number\\nInput_Fields == Lookup_Fields (num, type)\\nOutput_Expr: match, match_last, match_all\\n  -- match_all.field not allowed</td></tr><tr><td>Linking_Name</td><td>&quot;RT&quot;</td><td>&quot;RT&quot;</td></tr><tr><td>fileOrURL</td><td>&nbsp;</td><td>&quot;&quot;</td></tr><tr><td>Data_Structure_Text</td><td>/* Text Template or File Path.       \\n   First row contains Field Names. */\\nID Source_Node               Destination_Node          Distance  Speed_Mbps   Duplex ;       \\n 0 ModiconSTB_IO1            ModiconM580_1               2.0      100.0   true   ;\\n 2 ModiconSTB_IO2            ModiconSTB_IO1              2.0      100.0   true   ;\\n 3 EnergySupervision         ConneXium_Managed_Switch    2.0      100.0   true   ;\\n 4 Altivar_Process_Ctrl      ConneXium_Managed_Switch    2.0      100.0   true   ;\\n 5 ConneXium_Managed_Switch  ModiconSTB_IO2              2.0      100.0   true   ;\\n 6 ModiconM580_1             ModiconM580_2               2.0      100.0   true   ;\\n</td><td>/* Text Template or File Path.       \\n   First row contains Field Names. */\\nID Source_Node               Destination_Node          Distance  Speed_Mbps   Duplex ;       \\n 0 ModiconSTB_IO1            ModiconM580_1               2.0      100.0   true   ;\\n 2 ModiconSTB_IO2            ModiconSTB_IO1              2.0      100.0   true   ;\\n 3 EnergySupervision         ConneXium_Managed_Switch    2.0      100.0   true   ;\\n 4 Altivar_Process_Ctrl      ConneXium_Managed_Switch    2.0      100.0   true   ;\\n 5 ConneXium_Managed_Switch  ModiconSTB_IO2              2.0      100.0   true   ;\\n 6 ModiconM580_1             ModiconM580_2               2.0      100.0   true   ;\\n</td></tr><tr><td>Input_Fields</td><td>&quot;Source_Node&quot;</td><td>&quot;Source_Node&quot;</td></tr><tr><td>Lookup_Fields</td><td>&quot;Source_Node&quot;</td><td>&quot;Source_Node&quot;</td></tr><tr><td>Output_Expression</td><td>&quot;output = match&quot; /* FORMAT output = match.fieldb */</td><td>&quot;output = match&quot;</td></tr><tr><td>Mode</td><td>Read</td><td>Read</td></tr></table>
Mouse over the icons to see their parameters. Click on composites and plotters to reveal their contents (if provided).

The need to improve productivity and maintain an edge with customer’s demand for innovation, industrial markets has adopted technology in their production activity. Managing workload, performance and optimize the system is very important to deliver quality products on time-to-market. VisualSim enables designer and architects to evaluate the workload, power consumption and optimize the system accordingly and supports to develop a highly sustainable product with greater flexibility for future enhancements.

The growth of technology developments in processors, data storage, and chip design, etc., opened door to endless opportunities in the computing industry. With opportunities, the need to collaborate and communicate with vendors, clients, architects and development team has increased. Time-to-market and power bandwidth determine the sustainability of product in the global market. Early exploration analysis and power analysis would enhance architects and designers to develop innovative products and create new revenue opportunities.


Model Overview

In this model, we have considered distributed IO architecture. This includes single M580 Processor Rack with a Dual Core ARM Processor. We have also considered two STB I/O modules with multiple sensors connected to it, two distributed devices that are connected to ConneXium Management Switch. The two devices connected to ConneXium Management switch are for Energy Supervision and altivar Process variable speed drive.

One of the Processor modules in PAC acts as the primary, which runs the application by executing program logic and operating RIO drops and distributed equipment; the other PAC acts as the standby PAC. The primary PAC updates the standby PAC at the beginning of each scan. The standby is ready to assume control within one scan if the primary stops communications.

Primary and standby states are interchangeable. When the PACs are running, either PAC can enter the primary state. When one running PAC becomes primary, the other running PAC may be in the standby or wait state. Explorations are focused around latency between nodes, end-to-end latency, and application performance on the target platform, pipeline utilization, processor stalls and network latency.

Block Diagram


Fig 1. Block Diagram Of the Programmable Automation Control

Results:

The model captures the following

  1. MIPS of CPU_1 and CPU_2
  2. Latency at ModiconSTB1
  3. Latency at ModiconSTB2
  4. Latency at Altivar
  5. Latency at EnergySupervision

Fig. 1 CPU_1 MIPS Plot

Fig. 2 CPU_2 MIPS Plot

Fig. 3 Latency at ModiconSTB1Plot

Fig. 4 Latency at ModiconSTB1Plot

Fig. 5 Latency at Altivar 

Fig. 6 Latency at EnergySupervision