218 lines
6.6 KiB
Markdown
218 lines
6.6 KiB
Markdown
|
|
||
|
## 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| B[CustomArticleNum]
|
||
|
B -->|Supervisor Search| 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) |
|