مشاوره تخصصی ۰۹۱۲ ۰۰۴ ۶۳۷۳
CASE STUDIES INDUSTRIAL PROJECTS

پروژه‌ها و تجربه‌های اجرایی

CASE STUDIES

پروژه طراحی و برنامه‌نویسی ماشین بسته‌بندی با PLC دلتا، Servo، Loadcell و کنترل دما

در این پروژه یک ماشین بسته‌بندی ساشه پودری را از بخش مکانیکی و انتخاب تجهیزات تا برنامه‌نویسی PLC، کنترل Servo، تنظیم موقعیت، Homing، کنترل وزن با Loadcell، کنترل دما، پنوماتیک، HMI و سیستم Alarm طراحی می‌کنیم. هدف این پروژه این است که مفاهیم کنترل سروو در یک ماشین صنعتی واقعی و قابل توسعه نشان داده شوند.

مقدمه

در مقالات مربوط به Servo معمولاً دستورات PLC مانند PLSY، DDRVI یا DDRVA جداگانه توضیح داده می‌شوند، اما در یک ماشین صنعتی واقعی Servo فقط یکی از اجزای سیستم کنترل است.

برای مثال در یک ماشین بسته‌بندی، حرکت فیلم باید با عملیات پرکردن، دوخت، برش، دما، وزن، سنسورها و وضعیت Servo هماهنگ باشد.

اگر Servo حرکت کند ولی دمای فک مناسب نباشد، ماشین نباید دوخت را انجام دهد.

اگر Loadcell هنوز وزن موردنظر را تأیید نکرده باشد، ماشین نباید وارد مرحله بعد شود.

اگر Servo Alarm داشته باشد، PLC نباید فرمان Motion جدید صادر کند.

بنابراین یک پروژه واقعی Servo در حقیقت ترکیبی از:

  • PLC Programming
  • Motion Control
  • Servo Control
  • Positioning
  • Sensor Control
  • Temperature Control
  • Loadcell
  • Pneumatic Control
  • HMI
  • Alarm Management
  • Interlock

است.

در این مقاله یک نمونه کامل از چنین ماشینی را طراحی می‌کنیم.


معرفی پروژه ماشین بسته‌بندی

ماشین موردنظر را به‌صورت یک Vertical Form Fill Seal یا VFFS در نظر می‌گیریم؛ یعنی فیلم از رول وارد ماشین شده، به شکل بسته درمی‌آید، محصول داخل آن ریخته می‌شود و در نهایت بسته دوخت و برش داده می‌شود.

فرآیند کلی:

Film Roll
    │
    ▼
Film Feeding
    │
    ▼
Servo Motor
    │
    ▼
Forming
    │
    ▼
Filling
    │
    ▼
Vertical Sealing
    │
    ▼
Horizontal Sealing
    │
    ▼
Cutting
    │
    ▼
Finished Sachet

کنترل این فرآیند توسط PLC انجام می‌شود.


معماری کلی سیستم

ساختار پیشنهادی پروژه:

                         HMI
                          │
                          ▼
                   ┌────────────┐
                   │    PLC     │
                   │ DAS-14SS2  │
                   └─────┬──────┘
                         │
        ┌────────────────┼───────────────────┐
        │                │                   │
        ▼                ▼                   ▼
  Servo Control       Loadcell          Temperature
        │                │                   │
        ▼                ▼                   ▼
 Servo Drive         DAS-02LC           DAS-04MTC
        │
        ▼
 Servo Motor
        │
        ▼
 Film Feeding

در کنار این بخش‌ها، PLC با سنسورها، شیرهای پنوماتیک، سیستم برش و تجهیزات حفاظتی نیز ارتباط دارد.


تجهیزات اصلی پروژه

PLC

در این پروژه می‌توان از DAS-14SS2-T به‌عنوان PLC اصلی استفاده کرد.

وظایف PLC:

  • اجرای Sequence ماشین
  • کنترل Start و Stop
  • کنترل Servo
  • Homing
  • Positioning
  • کنترل سنسورها
  • کنترل Pneumatic
  • کنترل Sequence پرکردن
  • مدیریت Alarm
  • ارتباط با HMI
  • مدیریت Recipe
  • شمارش تولید
  • مدیریت وضعیت ماشین

نکته: در این مقاله DAS-14SS2-T به‌عنوان نمونه PLC پروژه استفاده شده است. Mapping واقعی I/O، فرکانس High-Speed Pulse و قابلیت دقیق دستورات باید از Manual همان مدل تأیید شود و نباید صرفاً براساس یک نمونه آموزشی فرض شود.


Servo Drive

Servo Drive واسط بین PLC و موتور Servo است.

PLC
 │
 ├──── Pulse ───────► Servo Drive
 │
 └──── Direction ───► Servo Drive
                         │
                         ▼
                    Servo Motor

PLC موقعیت یا سرعت موردنظر را به شکل فرمان Pulse در اختیار Drive قرار می‌دهد و Servo Drive وظیفه کنترل جریان و حرکت موتور و استفاده از Feedback Encoder را بر عهده دارد.

در Servo Driveهای Delta، حالت Position Control و ورودی External Pulse در مدل‌های مختلف وجود دارد و پارامترهایی مانند Electronic Gear برای تبدیل نسبت Pulse ورودی به Position Command استفاده می‌شوند. برای نمونه، Manual سری ASDA-B پارامترهای External Pulse Input و Electronic Gear Ratio را مشخص می‌کند.


Servo Motor

Servo Motor برای حرکت دقیق رولر تغذیه فیلم استفاده می‌شود.

ساختار مکانیکی نمونه:

Servo Motor
     │
     ▼
Coupling / Gearbox
     │
     ▼
Film Pulling Roller
     │
     ▼
Packaging Film

در این سیستم، مقدار حرکت موتور مستقیماً با طول فیلم مصرف‌شده ارتباط دارد.


Encoder

Servo Motor دارای Encoder داخلی است.

مسیر Feedback به‌صورت کلی:

Servo Motor
      │
      │ Encoder Feedback
      ▼
 Servo Drive
      │
      │ Control Loop
      ▼
 Servo Motor

این نکته مهم است که در یک سیستم Servo استاندارد، Encoder موتور معمولاً مستقیماً برای اجرای حلقه کنترل موتور توسط PLC استفاده نمی‌شود؛ Servo Drive حلقه کنترل Servo را مدیریت می‌کند.

PLC در سطح بالاتر فرمان Motion را مدیریت می‌کند.


Loadcell و DAS-02LC

برای ماشین بسته‌بندی پودری، وزن محصول یکی از پارامترهای اصلی است.

ساختار:

Product
   │
   ▼
Weighing Hopper
   │
   ▼
Loadcell
   │
   ▼
DAS-02LC
   │
   ▼
PLC

فرض کنیم وزن هدف:

Target Weight = 100 g

PLC می‌تواند مقدار وزن را بررسی کند:

0 g
 ↓
25 g
 ↓
50 g
 ↓
75 g
 ↓
95 g
 ↓
99 g
 ↓
100 g

وقتی مقدار به Setpoint برسد:

Filling = OFF

و Sequence وارد مرحله بعد می‌شود.


کنترل دما با DAS-04MTC

فک‌های دوخت نیاز به کنترل دمای دقیق دارند.

در پروژه می‌توان از DAS-04MTC برای دریافت سنسورهای دما و کنترل خروجی‌های مربوط به Heating استفاده کرد.

مثلاً:

CH1 → Vertical Sealing
CH2 → Horizontal Sealing
CH3 → Auxiliary Heater
CH4 → Spare

ساختار کنترل:

Temperature Sensor
       │
       ▼
   DAS-04MTC
       │
       ▼
Temperature Control
       │
       ▼
Heater / SSR

در برنامه PLC یک شرط مهم خواهیم داشت:

Temperature_OK = TRUE

فقط در صورت برقرار بودن این شرط، عملیات Sealing اجازه اجرا خواهد داشت.


سنسورهای ماشین

ماشین می‌تواند سنسورهای زیر را داشته باشد:

سنسوروظیفه
Film Sensorتشخیص علامت یا موقعیت فیلم
Home Sensorتعیین مرجع مکانیکی
Door Sensorوضعیت حفاظ
Product Sensorتشخیص محصول
Cylinder Sensorتأیید موقعیت جک
Cutter Sensorموقعیت تیغه
Low Material Sensorتشخیص کمبود مواد
Servo Alarmدریافت خطای Servo
Servo Readyآماده‌بودن Servo

آدرس‌های جدول زیر صرفاً نمونه طراحی نرم‌افزاری هستند و باید با I/O واقعی ماشین تطبیق داده شوند.


سیستم Pneumatic

برای عملیات مکانیکی می‌توان از چند Cylinder استفاده کرد.

مثلاً:

Cylinder 1
     ↓
Vertical Sealing

Cylinder 2
     ↓
Horizontal Sealing

Cylinder 3
     ↓
Cutter

هر Cylinder بهتر است علاوه بر فرمان خروجی، Feedback موقعیت نیز داشته باشد.

مثلاً:

PLC
 │
 └──► Solenoid
          │
          ▼
       Cylinder
          │
          ▼
     End Sensor
          │
          └────► PLC

در نتیجه PLC فقط فرمان نمی‌دهد؛ بلکه وضعیت واقعی مکانیزم را نیز بررسی می‌کند.


Sequence کامل ماشین

اکنون وارد قسمت اصلی برنامه می‌شویم.

Sequence پیشنهادی:

IDLE
  ↓
SAFETY CHECK
  ↓
SERVO ON
  ↓
HOMING
  ↓
READY
  ↓
FILM FEED
  ↓
POSITION OK
  ↓
FILLING
  ↓
WEIGHT OK
  ↓
SEALING
  ↓
CUTTING
  ↓
CYCLE COMPLETE
  ↓
NEXT CYCLE

مرحله اول: Machine Ready

قبل از Start شدن ماشین باید شرایط اولیه بررسی شوند.

مثلاً:

Emergency_OK
AND
Door_Closed
AND
Air_OK
AND
Servo_Ready
AND
Servo_Alarm = OFF
AND
Temperature_OK

اگر تمام شرایط برقرار باشند:

Machine_Ready = ON

این اولین و مهم‌ترین Interlock ماشین است.


مرحله دوم: Servo ON

پس از Ready شدن ماشین:

Servo Enable
      │
      ▼
Wait Servo Ready
      │
      ▼
Servo Ready = ON

اگر Servo Ready فعال نشود، برنامه نباید وارد مرحله Motion شود.


مرحله سوم: Homing

پس از Servo ON باید موقعیت مرجع مشخص شود.

START
  │
  ▼
SERVO ON
  │
  ▼
HOMING
  │
  ▼
HOME SENSOR
  │
  ▼
ZERO POSITION
  │
  ▼
HOME COMPLETE

در PLCهای Delta، دستورات خانواده ZRN/DZRN برای Zero Return/Homing در مدل‌هایی که از آنها پشتیبانی می‌کنند استفاده می‌شوند. انتخاب دقیق دستور و پارامترها باید با Manual همان سری PLC انجام شود.


چرا Homing مهم است؟

فرض کنید PLC بعد از روشن‌شدن ماشین نمی‌داند Servo دقیقاً در چه موقعیتی قرار دارد.

اگر بدون تعیین Reference فرمان Absolute Position صادر شود، موقعیت نرم‌افزاری PLC ممکن است با موقعیت مکانیکی واقعی یکسان نباشد.

بنابراین:

Power ON
   ↓
Servo ON
   ↓
Homing
   ↓
Machine Zero
   ↓
Production

ساختار مطمئن‌تری ایجاد می‌کند.


مرحله چهارم: Film Feeding

پس از Homing، ماشین آماده تغذیه فیلم است.

فرض کنیم طول بسته:

Bag Length = 120 mm

باشد.

Servo باید فیلم را دقیقاً به اندازه موردنیاز حرکت دهد.

Servo
  ↓
Roller
  ↓
120 mm Film

محاسبه Pulse برای حرکت فیلم

فرض کنیم برای مثال آموزشی:

Servo Command Resolution = 10,000 pulse/rev

Roll Diameter = 50 mm

محیط رول:

C = π × D

C = 3.1416 × 50

C ≈ 157.08 mm

بنابراین:

10,000 pulses
       ↓
157.08 mm

تعداد Pulse برای هر میلی‌متر:

10,000 / 157.08
≈ 63.66 pulse/mm

برای 120 میلی‌متر:

120 × 63.66
≈ 7,639 pulses

بنابراین در این مثال ساده‌شده:

Target Pulse ≈ 7,639

خواهد بود.

در ماشین واقعی باید مواردی مانند Gear Ratio، قطر واقعی رول، لغزش، Electronic Gear و مکانیزم انتقال نیز در محاسبه لحاظ شوند.


DRVI و DDRVI برای حرکت نسبی

فرض کنیم موقعیت فعلی فیلم:

Position = 500 mm

و می‌خواهیم 120 میلی‌متر دیگر حرکت کنیم.

500 mm
  +
120 mm
  =
620 mm

این مفهوم Relative Positioning است.

Current Position
       │
       │ +120 mm
       ▼
Target Position

دستورات DRVI/DDRVI برای حرکت نسبی در خانواده‌های PLC Delta که از آنها پشتیبانی می‌کنند استفاده می‌شوند. Manual رسمی Delta این دستورات را در مجموعه Pulse Output/Positioning معرفی می‌کند.


DRVA و DDRVA برای موقعیت مطلق

در Absolute Positioning، مقصد به‌صورت یک موقعیت مشخص تعریف می‌شود.

مثلاً:

Position 1 = 120 mm
Position 2 = 240 mm
Position 3 = 360 mm
Position 4 = 480 mm

فرمان Absolute به PLC می‌گوید محور باید به کدام موقعیت برسد.

Current
   │
   ├────► 120 mm
   │
   ├────► 240 mm
   │
   └────► 360 mm

در این حالت DRVA/DDRVA در PLCهای سازگار برای Absolute Positioning استفاده می‌شوند.


PLSY در پروژه

PLSY یکی از دستورات پایه Pulse Output در PLCهای Delta است.

به‌صورت مفهومی:

PLSY
 │
 ├── Frequency
 ├── Pulse Count
 └── Pulse Output

برای مثال:

Frequency = 50 kHz
Pulse Count = 7,639

البته syntax دقیق و Operandهای قابل استفاده باید مطابق مدل PLC نوشته شوند.

Delta در Application Note رسمی خود نیز نمونه‌ای از استفاده PLSY برای ارسال Pulse به Servo و کنترل حرکت ارائه کرده است.


DPLSY

DPLSY نسخه Extended مربوط به Pulse Output در PLCهای سازگار است.

در طراحی پروژه، انتخاب بین:

PLSY
DPLSY

باید براساس موارد زیر انجام شود:

  • مدل PLC
  • محدوده Operand
  • نوع داده
  • محدوده فرکانس
  • تعداد Pulse
  • ساختار پروژه

نباید syntax یک مدل PLC را بدون بررسی Manual به مدل دیگر منتقل کرد.


PLSV و DPLSV

برای بعضی سناریوهای Motion، به‌جای تمرکز روی تعداد مشخصی Pulse، کنترل سرعت Pulse اهمیت بیشتری دارد.

در چنین شرایطی دستورات خانواده:

PLSV
DPLSV

در PLCهای سازگار می‌توانند مورد استفاده قرار گیرند.

مثلاً:

Speed Command
     ↓
Pulse Frequency
     ↓
Servo Speed

این ساختار برای کاربردهایی که محور باید با سرعت مشخص حرکت کند، مناسب‌تر از یک Position Move ساده است.


PLSR و DPLSR

در Motion Control فقط سرعت نهایی مهم نیست.

اگر موتور ناگهان از:

0 RPM

به:

1000 RPM

برسد، ممکن است به مکانیک و محصول فشار وارد شود.

به همین دلیل Acceleration و Deceleration اهمیت دارند.

Speed
 │
 │             ┌──────────
 │           /
 │         /
 │       /
 │_____/
 └──────────────── Time

دستورات خانواده PLSR/DPLSR، در PLCهای پشتیبانی‌کننده، برای سناریوهای Pulse Output همراه با مشخصات حرکتی مربوط به Ramp استفاده می‌شوند.


Acceleration و Deceleration

در ماشین بسته‌بندی، شتاب زیاد می‌تواند باعث موارد زیر شود:

  • لغزش فیلم
  • لرزش مکانیکی
  • صدای زیاد
  • خطای Position
  • فشار به Gearbox
  • ناپایداری حرکت

بنابراین باید شتاب مناسب برای مکانیزم تعیین شود.

همچنین در برخی Servo Driveهای Delta، فیلترهای S-curve یا Low-pass برای نرم‌تر کردن فرمان حرکت وجود دارند؛ Manualهای Delta توضیح می‌دهند که Electronic Gear و پروفایل شتاب/کاهش سرعت باید با توجه به رفتار مکانیکی تنظیم شوند.


Electronic Gear

Electronic Gear یکی از مهم‌ترین قسمت‌های تنظیم Servo است.

فرض کنیم:

PLC Pulse
     ↓
Electronic Gear
     ↓
Motor Position Command

مثلاً اگر نسبت:

N/M

تغییر کند، رابطه بین Pulse ورودی و Position Command نیز تغییر می‌کند.

Delta در Manualهای Servo خود Electronic Gear را برای تغییر نسبت حرکت معرفی می‌کند و هشدار می‌دهد که تنظیم اشتباه آن می‌تواند باعث حرکت ناخواسته شود؛ بنابراین این پارامتر باید با Servo خاموش و مطابق Manual همان مدل تنظیم شود.


محاسبه سرعت Servo

فرض کنیم:

Pulse per Revolution = 10,000
RPM = 300

فرکانس Pulse:

F = RPM × Pulse/Rev / 60

بنابراین:

F = 300 × 10,000 / 60

F = 50,000 Hz

یعنی:

50 kHz

بنابراین قبل از انتخاب تنظیمات نهایی باید حداکثر فرکانس Pulse قابل پشتیبانی توسط PLC و Servo Drive بررسی شود.


Interlock در پروژه

Interlock قلب برنامه ماشین است.

مثلاً Servo نباید حرکت کند اگر:

Servo Alarm = ON

یا:

Home Complete = FALSE

یا:

Emergency = ON

یا:

Door Open = TRUE

یک منطق مفهومی:

Motion_Allow =
    Machine_Run
    AND Servo_Ready
    AND NOT Servo_Alarm
    AND Home_Complete
    AND Safety_OK

سپس:

Motion_Allow
      │
      ▼
Execute Motion

جلوگیری از اجرای همزمان فرمان‌های Motion

فرض کنید این دو فرمان همزمان اجرا شوند:

DRVI → Film Feed

و:

ZRN → Homing

اگر هر دو بخواهند یک خروجی Pulse را کنترل کنند، برنامه می‌تواند دچار Conflict شود.

بنابراین باید Axis State داشته باشیم:

AXIS_IDLE
AXIS_HOMING
AXIS_MOVING
AXIS_STOPPING
AXIS_ALARM

و فقط در AXIS_IDLE اجازه اجرای Motion جدید بدهیم.

Delta برای Pulse Output مکانیزم‌های مربوط به Flag و Auto-reset را مستند کرده است که برای مدیریت آزادشدن کنترل Pulse Output پس از پایان عملیات اهمیت دارد.


State Machine پروژه

بهترین روش برای این ماشین، تقسیم برنامه به Stateهای مشخص است.

STATE 0
IDLE

STATE 10
SAFETY CHECK

STATE 20
SERVO ON

STATE 30
HOMING

STATE 40
FILM FEED

STATE 50
POSITION CHECK

STATE 60
FILLING

STATE 70
WEIGHT CHECK

STATE 80
SEALING

STATE 90
CUTTING

STATE 100
CYCLE COMPLETE

STATE 900
ALARM

این روش باعث می‌شود برنامه نسبت به یک Ladder بزرگ و بدون ساختار، قابل‌فهم‌تر و قابل‌عیب‌یابی‌تر باشد.


منطق Film Feed

منطق مفهومی:

IF State = FILM_FEED
AND Servo_Ready
AND Home_Complete
AND NOT Servo_Busy
AND Safety_OK
THEN

    Start Relative Motion

END_IF

بعد:

IF Motion_Complete
THEN

    State = POSITION_CHECK

END_IF

یعنی PLC منتظر می‌ماند تا حرکت واقعاً تمام شود.


Filling

وقتی فیلم در موقعیت قرار گرفت:

Position Complete
       │
       ▼
Filling Valve ON
       │
       ▼
Read Loadcell
       │
       ▼
Weight ≥ Setpoint
       │
       ▼
Filling OFF

Weight Interlock

فرض کنیم:

Target = 100 g

برنامه نباید صرفاً بعد از زمان مشخص Filling را متوقف کند.

بهتر است Weight Feedback نیز بررسی شود:

IF Actual_Weight >= Target_Weight
THEN
    Filling = OFF
    Weight_OK = TRUE
END_IF

Temperature Interlock

قبل از Sealing:

IF
Temperature_1_OK
AND
Temperature_2_OK
AND
Weight_OK
AND
Film_Position_OK
THEN

    Allow_Sealing = TRUE

END_IF

در غیر این صورت:

Allow_Sealing = FALSE

Sealing Sequence

ترتیب نمونه:

Film Stop
   ↓
Weight Complete
   ↓
Temperature OK
   ↓
Vertical Seal
   ↓
Horizontal Seal
   ↓
Cylinder Feedback
   ↓
Release

Cutting Sequence

بعد از تأیید دوخت:

Seal Complete
      │
      ▼
Cutter ON
      │
      ▼
Cutter Home / End Sensor
      │
      ▼
Cutter OFF
      │
      ▼
Cycle Complete

Cycle Complete

در پایان Cycle:

Cycle Complete
      │
      ▼
Production Counter +1
      │
      ▼
Return to FILM FEED

بنابراین ماشین دوباره وارد Cycle بعدی می‌شود.


ساختار کامل Cycle

                 START
                   │
                   ▼
             SAFETY CHECK
                   │
                   ▼
                SERVO ON
                   │
                   ▼
                 HOMING
                   │
                   ▼
             MACHINE READY
                   │
                   ▼
              FILM FEED
                   │
                   ▼
             POSITION OK
                   │
                   ▼
                FILLING
                   │
                   ▼
               WEIGHT OK
                   │
                   ▼
           TEMPERATURE OK
                   │
                   ▼
                SEALING
                   │
                   ▼
                CUTTING
                   │
                   ▼
            CYCLE COMPLETE
                   │
                   ▼
              NEXT CYCLE

HMI پروژه

HMI باید وضعیت ماشین را برای اپراتور قابل فهم کند.

صفحه اصلی:

┌──────────────────────────────┐
│       PACKING MACHINE        │
│                              │
│ Machine       RUN            │
│ Servo         READY          │
│ Home          DONE           │
│                              │
│ Weight        100.0 g        │
│ Bag Length    120 mm         │
│ Temperature   152 °C         │
│                              │
│ [ START ]       [ STOP ]     │
└──────────────────────────────┘

صفحه Servo

SERVO STATUS

Servo Enable       ON
Servo Ready        ON
Servo Alarm        OFF
Servo Busy         OFF
Home Complete      ON

Current Position
Target Position

Speed
Acceleration
Deceleration

اپراتور می‌تواند وضعیت محور را بدون ورود به برنامه PLC مشاهده کند.


صفحه Manual

در Manual Mode می‌توان برای سرویس و Commissioning کنترل‌های جداگانه قرار داد:

Servo Forward
Servo Reverse
Film Feed
Filling Valve
Vertical Seal
Horizontal Seal
Cutter

اما Manual Mode باید همچنان محدودیت‌های Safety و Interlock را رعایت کند.

Manual Mode نباید به معنی حذف Safety باشد.


صفحه Recipe

برای مثال:

Recipe 01

Product Weight = 100 g
Bag Length     = 120 mm
Seal Temp      = 150 °C
Servo Speed    = 40 %

و:

Recipe 02

Product Weight = 250 g
Bag Length     = 180 mm
Seal Temp      = 155 °C
Servo Speed    = 35 %

مقادیر بالا صرفاً نمونه هستند و در ماشین واقعی باید براساس محصول و تست فرآیند تعیین شوند.


صفحه Alarm

Alarmهای پیشنهادی:

Servo Alarm
Servo Not Ready
Homing Timeout
Motion Timeout
Film Sensor Error
Loadcell Error
Temperature Low
Temperature High
Cylinder Not Home
Cutter Error
Door Open
Emergency Active
Air Pressure Low

برای هر Alarm بهتر است علاوه بر نمایش پیام، یک Code نیز تعریف شود.

مثلاً:

A001 = Servo Alarm
A002 = Servo Not Ready
A003 = Homing Timeout
A004 = Loadcell Error
A005 = Temperature Error
A006 = Cutter Error

ساختار برنامه PLC

برنامه را می‌توان به بخش‌های منطقی تقسیم کرد:

MAIN
 │
 ├── Safety
 │
 ├── Machine State
 │
 ├── Servo Control
 │
 ├── Homing
 │
 ├── Film Position
 │
 ├── Loadcell
 │
 ├── Temperature
 │
 ├── Pneumatic
 │
 ├── HMI
 │
 ├── Alarm
 │
 └── Production Counter

این ساختار برای پروژه‌های بزرگ‌تر نیز قابل توسعه است.


ISPSoft و WPLSoft

در پروژه‌های Delta باید یک نکته مهم را در نظر گرفت: نرم‌افزار برنامه‌نویسی به سری PLC وابسته است.

بنابراین نباید در یک مقاله عمومی گفت که تمام PLCهای Delta را می‌توان با ISPSoft و WPLSoft به یک شکل برنامه‌ریزی کرد.

برای نمونه، مستندات رسمی Delta برای سری DVP-ES3/EX3/SV3/SX3 مجموعه دستورات و محیط برنامه‌نویسی مربوط به همان سری را مشخص می‌کنند.

بنابراین هنگام نوشتن برنامه واقعی:

PLC Model
   ↓
Firmware
   ↓
Programming Software
   ↓
Instruction Set
   ↓
Pulse Output Capability

باید همه با یکدیگر تطبیق داده شوند.


نمونه منطق برنامه برای Servo

نمونه زیر Pseudo Code است و syntax نهایی Ladder/ST باید براساس PLC واقعی نوشته شود:

IF START
AND Safety_OK
AND Servo_Ready
AND NOT Servo_Alarm
THEN

    Machine_Run := TRUE;

END_IF;

سپس:

IF Machine_Run
AND NOT Home_Complete
THEN

    State := HOMING;

END_IF;

بعد:

IF Home_Complete
THEN

    State := FILM_FEED;

END_IF;

و:

IF State = FILM_FEED
AND NOT Servo_Busy
THEN

    Execute_Relative_Move := TRUE;

END_IF;

پس از پایان حرکت:

IF Motion_Complete
THEN

    State := FILLING;

END_IF;

چرا از State Machine استفاده کنیم؟

بدون State Machine ممکن است برنامه به شکل زیر شود:

IF Start ...
IF Sensor ...
IF Servo ...
IF Weight ...
IF Temperature ...
IF Cylinder ...
IF Cutter ...
IF Stop ...
IF Alarm ...

و با بزرگ‌ترشدن ماشین، پیدا کردن خطا دشوار شود.

اما با State Machine:

STATE 40 = Film Feed
STATE 60 = Filling
STATE 80 = Sealing
STATE 90 = Cutting

مشخص است ماشین دقیقاً در کدام مرحله قرار دارد.


محاسبه سرعت و Pulse Frequency

فرمول عمومی:

F = RPM × PPR / 60

یا:

RPM = F × 60 / PPR

مثلاً:

PPR = 10,000
RPM = 300

بنابراین:

F = 300 × 10,000 / 60
  = 50,000 Hz

پس فرکانس Pulse برابر:

50 kHz

خواهد بود.

این محاسبه فقط زمانی معتبر است که PPR مورد استفاده واقعاً همان تعداد Pulse command موردنظر در سیستم باشد و Electronic Gear یا نسبت مکانیکی دیگری بین PLC و موتور رابطه را تغییر نداده باشد.


محاسبه طول فیلم

اگر:

Roll Diameter = 50 mm

باشد:

Circumference = π × 50
              ≈ 157.08 mm

اگر:

10,000 pulses = 1 revolution

آنگاه:

Pulse/mm ≈ 63.66

برای:

120 mm

داریم:

120 × 63.66
≈ 7,639 pulses

این محاسبه پایه است و برای طراحی صنعتی نهایی باید با انتقال مکانیکی و تنظیمات Servo Drive تطبیق داده شود.


خطای رایج: اشتباه گرفتن Pulse و RPM

Pulse به‌تنهایی به معنی RPM نیست.

رابطه بین آنها به Resolution یا Pulse/Rev بستگی دارد.

مثلاً:

10,000 pulse/rev

با:

5,000 pulse/rev

در یک فرکانس یکسان، RPM متفاوتی ایجاد می‌کند.

بنابراین هنگام طراحی باید همیشه بدانیم:

Pulse Frequency
Pulse/Rev
Electronic Gear
Mechanical Gear Ratio

چه مقادیری دارند.


خطای رایج: انتخاب اشتباه خروجی PLC

برای High-Speed Pulse باید مشخصات خروجی PLC بررسی شود.

خروجی Relay برای تولید پالس‌های سریع مناسب نیست.

بنابراین:

PLC Transistor Output
        ↓
High Speed Pulse
        ↓
Servo Drive

معماری موردنظر است.

اما شماره دقیق خروجی Pulse، فرکانس قابل پشتیبانی و قابلیت محور باید از Manual همان PLC تأیید شود.


خطای رایج: شروع حرکت قبل از Homing

اگر سیستم Position را نمی‌داند:

Absolute Position

ممکن است با موقعیت واقعی ماشین هماهنگ نباشد.

بنابراین در بسیاری از ماشین‌ها:

Power ON
↓
Servo ON
↓
Homing
↓
Production

ترتیب منطقی‌تری است.


خطای رایج: نادیده گرفتن Servo Alarm

این ساختار اشتباه است:

Start
 ↓
Move Servo

ساختار بهتر:

Start
 ↓
Safety OK
 ↓
Servo Ready
 ↓
No Servo Alarm
 ↓
Home Complete
 ↓
Motion

خطای رایج: نبود Motion Complete

اگر PLC بلافاصله بعد از ارسال فرمان Servo وارد مرحله بعد شود، ممکن است هنوز حرکت تمام نشده باشد.

ساختار صحیح:

Motion Command
      ↓
Servo Busy
      ↓
Wait
      ↓
Motion Complete
      ↓
Next State

این یکی از مهم‌ترین اصول برنامه‌نویسی Motion است.


خطای رایج: عدم هماهنگی دما و Sealing

PLC نباید صرفاً براساس زمان بگوید:

Wait 5 seconds
→ Seal

بلکه بهتر است وضعیت فرآیند نیز بررسی شود:

Temperature_OK
AND
Film_Position_OK
AND
Weight_OK
AND
Cylinder_Ready

سپس:

Seal = ON

خطای رایج: حذف Interlock در Manual Mode

Manual Mode باید برای تست و تعمیر استفاده شود، اما نباید Safety را حذف کند.

مثلاً:

Door Open

نباید صرفاً به‌دلیل فعال بودن Manual Mode اجازه حرکت خطرناک را ایجاد کند.

Safety Circuit و Emergency Stop نیز نباید صرفاً به یک شرط نرم‌افزاری معمولی در PLC محدود شوند؛ طراحی واقعی ایمنی باید براساس معماری ایمن ماشین، تجهیزات مناسب و استانداردهای مربوط انجام شود.


Commissioning پروژه

پس از ساخت ماشین، بهتر است راه‌اندازی مرحله‌ای انجام شود.

مرحله اول

PLC بدون موتور تست شود:

Inputs
Outputs
HMI
Alarms

مرحله دوم

Servo بدون بار تست شود:

Servo ON
Direction
Speed
Homing
Position
Stop

مرحله سوم

حرکت مکانیکی با سرعت پایین تست شود.

مرحله چهارم

Film بدون محصول تست شود.

مرحله پنجم

Film با عملیات دوخت تست شود.

مرحله ششم

Loadcell و Filling فعال شوند.

مرحله هفتم

Automatic Cycle اجرا شود.


تست Servo

در اولین تست بهتر است:

Low Speed
Low Acceleration
Low Position

استفاده شود.

سپس به‌تدریج افزایش داده شود.

قبل از تغییر Electronic Gear نیز باید Servo Drive خاموش یا در شرایط مجاز Manual تنظیم شود؛ Delta برای برخی سری‌های Servo درباره تنظیم Electronic Gear هشدار ایمنی صریح دارد.


ساختار نهایی کنترل ماشین

در نهایت سیستم ما به شکل زیر است:

                         HMI
                          │
                          ▼
                   ┌────────────┐
                   │ DAS-14SS2  │
                   │    PLC     │
                   └─────┬──────┘
                         │
       ┌─────────────────┼─────────────────┐
       │                 │                 │
       ▼                 ▼                 ▼
 Servo Motion         Loadcell        Temperature
       │                 │                 │
       ▼                 ▼                 ▼
 Servo Drive          DAS-02LC         DAS-04MTC
       │
       ▼
 Servo Motor
       │
       ▼
 Film Roller
       │
       ▼
 Packaging Film
       │
       ├────────► Filling
       │
       ├────────► Sealing
       │
       └────────► Cutting

منطق کامل پروژه در یک نگاه

                  POWER ON
                     │
                     ▼
                SAFETY CHECK
                     │
                     ▼
                 SERVO READY
                     │
                     ▼
                   HOMING
                     │
                     ▼
              MACHINE READY
                     │
                     ▼
                FILM FEED
                     │
                     ▼
             POSITION COMPLETE
                     │
                     ▼
                  FILLING
                     │
                     ▼
               WEIGHT COMPLETE
                     │
                     ▼
             TEMPERATURE CHECK
                     │
                     ▼
                  SEALING
                     │
                     ▼
                  CUTTING
                     │
                     ▼
              PRODUCTION COUNT
                     │
                     ▼
                NEXT CYCLE

اگر هر خطایی اتفاق بیفتد:

Any Fault
    │
    ▼
   STOP
    │
    ▼
   ALARM
    │
    ▼
Operator Reset
    │
    ▼
Safety Check

نتیجه‌گیری

این پروژه نشان می‌دهد که کنترل Servo در یک ماشین صنعتی فقط به ارسال چند Pulse محدود نمی‌شود.

یک سیستم واقعی شامل چند لایه است:

HMI
 ↓
PLC
 ↓
Sequence
 ↓
Interlock
 ↓
Motion Command
 ↓
Servo Drive
 ↓
Servo Motor
 ↓
Mechanical System

و در کنار آن:

Loadcell
Temperature
Sensors
Pneumatic
Alarm
Safety

قرار دارند.

در بخش Motion، دستورات Delta مانند PLSY، DPLSY، DRVI، DDRVI، DRVA، DDRVA و ZRN/DZRN ابزارهای مهمی برای کنترل Pulse و Position هستند، اما استفاده صحیح از آنها به مدل PLC، Firmware، قابلیت خروجی Pulse و Manual همان خانواده بستگی دارد.

در طرف Servo نیز پارامترهایی مانند Position Mode، Pulse Input، Electronic Gear، Maximum Speed و Acceleration/Deceleration باید براساس مدل Servo Drive انتخاب و تنظیم شوند. Manualهای Delta برای سری‌های مختلف Servo ساختارهای متفاوتی ارائه می‌کنند، بنابراین نباید یک تنظیم را بدون بررسی Manual به تمام Servoهای Delta تعمیم داد.

در نهایت، مهم‌ترین قسمت چنین پروژه‌ای ایجاد ارتباط صحیح میان Motion، Position، Sensor، Weight، Temperature و Machine Sequence است؛ زیرا یک ماشین صنعتی موفق فقط با حرکت‌کردن Servo کار نمی‌کند، بلکه تمام اجزای آن باید در زمان و شرایط درست با یکدیگر هماهنگ شوند.


سوالات متداول

آیا برای ماشین بسته‌بندی حتماً Servo لازم است؟

خیر. بسته به دقت موردنیاز، سرعت، مکانیزم و هزینه می‌توان از روش‌های مختلف استفاده کرد؛ اما Servo برای کاربردهایی که Positioning دقیق، سرعت متغیر و کنترل حرکت موردنیاز است گزینه‌ای رایج است.

آیا می‌توان فیلم را فقط با PLSY کنترل کرد؟

در PLCهای سازگار بله، PLSY می‌تواند برای Pulse Output استفاده شود؛ اما انتخاب دستور مناسب به نوع حرکت، Positioning، سرعت و قابلیت PLC بستگی دارد.

تفاوت DRVI و DRVA چیست؟

به‌صورت مفهومی:

DRVI / DDRVI
= Relative Position

DRVA / DDRVA
= Absolute Position

یعنی Relative نسبت به موقعیت فعلی حرکت می‌کند و Absolute به یک موقعیت مشخص فرمان می‌دهد.

Homing چرا لازم است؟

برای مشخص‌کردن Reference Position محور و هماهنگ‌کردن موقعیت نرم‌افزاری با موقعیت مکانیکی.

Loadcell چه نقشی دارد؟

Loadcell مقدار وزن را اندازه‌گیری می‌کند و در این پروژه می‌تواند برای کنترل مقدار محصول داخل بسته استفاده شود.

آیا می‌توان این پروژه را با ISPSoft و WPLSoft پیاده‌سازی کرد؟

دستورها و قابلیت‌های دقیق به مدل PLC، نسخه نرم‌افزار و Firmware بستگی دارد. خانواده DVP دلتا شامل دستورهای Positioning مانند DRVI، DDRVI، DRVA، DDRVA و ZRN است، اما قبل از اجرای پروژه باید Manual مدل دقیق PLC بررسی شو

DAS-04MTC در این پروژه چه کاری انجام می‌دهد؟

برای دریافت و کنترل کانال‌های دما و مدیریت فرآیندهای حرارتی مانند فک‌های دوخت استفاده می‌شود.

آیا می‌توان همه این موارد را با یک PLC کنترل کرد؟

در پروژه‌های واقعی باید ظرفیت I/O، High-Speed Pulse، Communication، Memory، Processing و قابلیت‌های Motion PLC بررسی شود. در صورت نیاز می‌توان از Expansion و ارتباطات صنعتی استفاده کرد.

آیا ISPSoft و WPLSoft برای تمام PLCهای Delta یکسان هستند؟

خیر. نرم‌افزار و Instruction Set به خانواده PLC وابسته است و باید Manual مدل دقیق بررسی شود.

آیا می‌توان طول بسته را از HMI تغییر داد؟

بله. PLC می‌تواند مقدار Length دریافت‌شده از HMI را به تعداد پالس تبدیل کند و فرمان Motion جدید ایجاد کند.

آیا می‌توان این پروژه را به چند محصول مختلف توسعه داد؟

بله. با استفاده از Recipe می‌توان پارامترهایی مانند وزن، طول بسته، سرعت Servo و دمای دوخت را برای محصولات مختلف ذخیره کرد.

پروژه‌ای با مسئله مشابه دارید؟

نیاز خط یا ماشین شما می‌تواند از نظر I/O، منطق کنترل، HMI و تجهیزات اجرایی بررسی شود تا مسیر فنی مناسب برای پیاده‌سازی مشخص شود.