## Plant Overview The system operates in a manufacturing plant where: - **ALPLA**: Bottle manufacturing (blow molding) - **HENKEL**: Bottle filling operations - **AUTEFA**: Empty bottle storage logistics - **Vetromeccanica**: Bottle conveyor system and inter-system communications hub ## System Architecture ```mermaid graph TD subgraph "Line N" Q1[Q1 PLC] --> Q2[Q2 PLC] Q1 --> Q3[Q3 PLC] Q1 --> Q4[Q4 PLC] Q1 <--> H[Henkel] end subgraph "Supervisor PLC" S[Supervisor] end Q1 <--> S S <--> AU[AUTEFA] S <--> AL[ALPLA] ``` ### PLC Distribution - **Q1 PLCs**: Main line controller, interfaces with Henkel and other line PLCs - **Q2-Q4 PLCs**: Secondary line controllers for conveyor sections - **Supervisor PLC**: Central system managing communications with ALPLA and AUTEFA ## Batch Identification System ### ID Types and Formats 1. **HENKEL System** - PO_NUMBER: 12-char Production Order number - IDH_BTL: 12-char Article Number (bottle specifications) - IDH_CON: Container specifications 2. **ALPLA System** - CustomArticleNum: 12-char identifier - Article Variant (AV): Numeric ID - Product Family: Numeric ID for recipe selection 3. **AUTEFA System** - Uses ALPLA's Article Variant (AV) ID ### ID Conversion Process ```mermaid graph LR A[Henkel IDH_BTL] -->|Q1 Processing- Ask Supervisor| B[CustomArticleNum/FamilyNumber - Vetro Recipe Number] B -->|Supervisor Search on ALPLA OPC Table| C[ALPLA SKU] C -->|Extract| D[Article Variant ID] D -->|TG10 Telegram| E[AUTEFA] ``` ## Data Flow Details ### 1. Q1 PLC (Client) Functions - Receives data from Henkel in Data_From_EbConvey[0-49] array - Performs byte-swapping based on data type: ```pascal CASE index OF 0, 10, 20, 35..40, 44..49: // Control words & IDs // 4-byte swap ELSE: // 2-byte word swap END_CASE; ``` ### 2. Supervisor PLC (Server) Functions - Manages SKU database (AlplaSkuList) - Performs ID conversions and validations - Handles AUTEFA telegram communications - Provides OPC-UA interface for ALPLA ## Batch Management ### Data Location in HENKEL Array ``` Current Batch (AB): - PO_NUMBER: di[44-46] - IDH_BTL: di[35-37] Next Batch (NB): - PO_NUMBER: di[47-49] - IDH_BTL: di[38-40] Next+1 Batch: - PO_NUMBER: di[1-3] - IDH_BTL: di[7-9] - IDH_CON: di[4-6] ``` ### Identifier Explanations | Prefix | Meaning | Usage | | ------ | ------------------ | ---------------------------------------- | | AB | Actual Batch | Current production batch being processed | | NB | Next Batch | Next scheduled production batch | | IDH | Internal Henkel ID | Unique identifier used by HENKEL | | BTL | Bottle | Relates to bottle specifications | | CON | Container | Relates to container specifications | | PO | Production Order | Order number for batch tracking | PO_NUMBER : Batch IDH_CON ( 12 char ) IDH_BTL : Article Number ( 12 char ) | | | ACTUAL | NEXT | NEXT + 1 | | | | --------- | -------------------- | ------ | ----- | -------- | --- | --- | | PO_NUMBER | Batch IDH_CON | 44-46 | 47-49 | 1-3 | | | | IDH_BTL | Batch Article Number | 35-37 | 38-40 | 7-9 | | | | IDH_CON | | | | 4-6 | | | ### AUTEFA Telegram System 4. **TG10 - Production Info** - Sends current and next batch information - Includes Article Variant IDs and batch targets 5. **TG20/21 - Line Change Request** - Used for tray loader assignment changes - Includes validation of product compatibility 6. **TG40 - Speed Updates** - Line speed synchronization - Values from 0-100 in steps of 10 Each telegram type (TG10, TG20, etc.) has three associated control bits: 1. **Trigger_TGxx** - Purpose: Initiates sending of new telegram - Usage: Set when new data needs to be transmitted - Example: `Trigger_TG10` set when batch information changes 2. **TT_TGxx** (Test Trigger) - Purpose: Manual testing of telegram transmission - Usage: Can be set from HMI for testing communications - Example: `TT_TG10` for testing production info transmission 3. **KT_TGxx** (Kill Trigger) - Purpose: Cancels pending telegram transmission - Usage: Set to stop telegram from being sent - Example: `KT_TG10` to cancel production info update ### SKU Search Process ```pascal // In Supervisor PLC FOR #i := 0 TO 249 DO IF LineN[line].ReqActualCustomProdNum = AlplaSkuList[#i].CustomArticleNum THEN // Store complete SKU info LineN[line].SkuActualReq := AlplaSkuList[#i]; // Mark search complete LineN[line].SearchActualSku := FALSE; EXIT; END_IF; END_FOR; ``` ## Line Indexing System The system uses a consistent line indexing system across all communications: | Index | Configuration | Line Reference | |-------|--------------|----------------| | 0 | Fill_TL21_L23 | Line 23 | | 1 | Fill_TL22_L25 | Line 25 | | 2 | Fill_TL23_L43 | Line 43 | | 3 | Fill_TL25_L41 | Line 41 | | 4 | Fill_TL26_L42 | Line 42 | | 5 | Fill_TL27_L40 | Line 40 | ## Change Management Process 4. **Batch Change Initiation** - HENKEL sends "CalculatedBottlesRemainingToFill" = 0 - Line clearance verification process starts 5. **Change Execution** - Q1 initiates emptying sequence - Supervisor coordinates with AUTEFA - New batch parameters loaded after confirmation 6. **Production Resume** - System waits for all confirmations - New batch counters initialized - Production flow resumes ## Error Handling 7. **Communication Timeouts** - 60-second threshold for Q1-Henkel communication - Automatic reconnection attempts 8. **SKU Validation** - Not found conditions trigger warnings - Invalid format handling - Automatic zero-padding for string fields 9. **Batch Change Safety** - Multiple confirmation requirements - Line status verification - Product compatibility checks ## NEXT2 Batch Information (New Implementation) | Position From Henkel | Data Type | Processing | Description | | -------------------- | --------- | --------------- | --------------------------------------------------------------- | | di[1]-di[3] | SINT | Direct transfer | Production Order Number for second next batch (PO_NUMBER_NEXT2) | | di[4]-di[6] | SINT | Direct transfer | Container ID for second next batch (IDH_CON_NEXT2) | | di[7]-di[9] | SINT | Direct transfer | Bottle ID for second next batch (IDH_BTL_NEXT2) |