مشاوره تخصصی ۰۹۱۲ ۰۰۴ ۶۳۷۳
LEARN KNOWLEDGE BASE

دانش فنی اتوماسیون صنعتی

LEARN

کنترل سروو موتور با PLC دلتا؛ آموزش کامل PLSY، DPLSY، DRVI، DDRVI، DRVA، DDRVA و Homing در ISPSoft و WPLSoft

در این آموزش، کنترل سروو موتور با PLC دلتا را از سیم‌بندی و تنظیم Servo Drive تا برنامه‌نویسی در ISPSoft و WPLSoft بررسی می‌کنیم. دستورات PLSY، DPLSY، DRVI، DDRVI، DRVA، DDRVA، PLSV، PLSR و ZRN/DZRN، ترتیب اجرای فرمان‌های Pulse، Interlock، Acceleration/Deceleration، Positioning و Homing با مثال‌های عملی توضیح داده می‌شوند.

کنترل سروو موتور با PLC دلتا چیست؟

کنترل Servo Motor با PLC یکی از مهم‌ترین کاربردهای Motion Control در اتوماسیون صنعتی است.

در یک سیستم معمولی، PLC فقط یک خروجی را روشن یا خاموش می‌کند؛ اما در کنترل سروو، PLC باید بتواند اطلاعات حرکتی مانند:

  • تعداد پالس
  • فرکانس پالس
  • جهت حرکت
  • موقعیت هدف
  • سرعت
  • شتاب
  • توقف
  • موقعیت نسبی
  • موقعیت مطلق
  • نقطه Home

را کنترل کند.

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

PLC
 │
 │ Pulse + Direction
 ▼
Servo Drive
 │
 │ Motor Power
 ▼
Servo Motor
 │
 ▼
Mechanical Load
 │
 └── Encoder Feedback

در این ساختار PLC فرمان Motion را تولید می‌کند و Servo Drive آن را اجرا می‌کند. Encoder نیز Feedback حرکت را در اختیار Servo Drive قرار می‌دهد.


اجزای سیستم کنترل سروو با PLC

برای ساخت یک سیستم Servo Positioning معمولاً اجزای زیر موردنیاز هستند:

PLC

PLC وظیفه تولید فرمان Motion را دارد.

در PLCهای دارای High-Speed Pulse Output می‌توان از خروجی‌های مخصوص Pulse برای کنترل Servo Drive استفاده کرد.

برای مثال در یک سیستم Delta:

DAS-14SS2-T / DVP PLC
        │
        ├── Pulse Output
        └── Direction
               │
               ▼
          Servo Drive
               │
               ▼
          Servo Motor

نکته: برای تولید Pulse Train باید PLC دارای خروجی ترانزیستوری مناسب باشد. نسخه Relay برای High-Speed Pulse Output مناسب نیست. در مورد مدل دقیق PLC باید مشخصات همان مدل بررسی شود.


Servo Drive

Servo Drive بین PLC و موتور قرار می‌گیرد.

وظایف Drive شامل موارد زیر است:

  • دریافت Pulse Command
  • دریافت Direction
  • کنترل موتور
  • خواندن Encoder
  • کنترل Position
  • کنترل Speed
  • کنترل Torque
  • مدیریت Alarm
  • اجرای Acceleration/Deceleration
  • اجرای پارامترهای Electronic Gear

برای مثال، در Delta ASDA-E3، حالت Position می‌تواند فرمان خارجی Pulse را در PT Mode دریافت کند و همچنین PR Mode برای Position داخلی وجود دارد. این Drive طبق Manual رسمی می‌تواند در PT Mode فرمان Pulse را از ورودی دریافت کند.


Servo Motor

Servo Motor حرکت مکانیکی را ایجاد می‌کند.

در یک سیستم Servo، Encoder معمولاً به موتور متصل است و اطلاعات Feedback را به Drive می‌دهد.


Encoder

Encoder موقعیت و حرکت واقعی موتور را اندازه‌گیری می‌کند.

در نتیجه:

PLC Command
     ↓
Servo Drive
     ↓
Motor
     ↓
Encoder
     └──── Feedback → Drive

این Feedback یکی از تفاوت‌های مهم سیستم Servo با سیستم‌های Open Loop است.


تفاوت Pulse Command و Servo Control

یک نکته بسیار مهم:

PLC مستقیماً موتور Servo را کنترل نمی‌کند.

در روش Pulse Train:

PLC
 ↓
Pulse
 ↓
Servo Drive
 ↓
Servo Motor

PLC فرمان Pulse می‌دهد.

Servo Drive وظیفه تبدیل این فرمان به حرکت موتور و اجرای حلقه‌های کنترل را بر عهده دارد.

بنابراین اگر PLC مثلاً 10,000 Pulse ارسال کند، Servo Drive بر اساس تنظیمات خود این پالس‌ها را به Position Command تبدیل می‌کند.


اتصال PLC به Servo Drive

در یک سیستم Pulse/Direction معمولاً ساختار کلی به این شکل است:

PLC                       Servo Drive

Pulse Output  ──────────► Pulse Input
Direction    ──────────► Direction Input
COM / Signal ───────────► Signal Common

نام دقیق ترمینال‌ها ممکن است در Servo Driveهای مختلف متفاوت باشد.

برای مثال ممکن است ورودی‌ها با نام‌هایی مانند:

  • PULSE
  • SIGN
  • PULS
  • SIGN
  • P+
  • P-
  • S+
  • S-

مشخص شوند.

شماره ترمینال‌ها را نباید بدون بررسی Manual مدل Servo Drive تعیین کرد.


Pulse Train چیست؟

Pulse Train مجموعه‌ای از پالس‌های دیجیتال با فرکانس مشخص است.

مثلاً:

_|‾|_|‾|_|‾|_|‾|_

هر Pulse می‌تواند نماینده مقدار مشخصی از حرکت باشد.

اگر Servo Drive تنظیم شده باشد:

10000 Pulse = 1 Revolution

آنگاه:

5000 Pulse = 0.5 Revolution

و:

2500 Pulse = 0.25 Revolution

خواهد بود.


فرکانس Pulse چه چیزی را تعیین می‌کند؟

در یک سیستم Position Pulse، تعداد Pulse بیشتر به مقدار حرکت و فرکانس Pulse به سرعت فرمان مرتبط است.

فرمول ساده:RPM=F×60PPRRPM = \frac{F \times 60}{PPR}

که در آن:

  • F = Pulse Frequency
  • PPR = Pulse per Revolution

مثلاً:

PPR = 10000
Frequency = 50000 Hz

بنابراین:RPM=50000×6010000RPM = \frac{50000 \times 60}{10000}

RPM = 300

البته این رابطه باید با Electronic Gear و تنظیمات واقعی Servo Drive هماهنگ شود.


Electronic Gear چیست؟

Electronic Gear نسبت بین Pulse ورودی و حرکت موتور را تعیین می‌کند.

برای مثال اگر Servo Drive طوری تنظیم شده باشد که:

10000 Pulse = 1 Revolution

با تغییر Electronic Gear می‌توان Resolution حرکت را تغییر داد.

در خانواده‌های مختلف Delta پارامترهای Electronic Gear وجود دارند؛ برای نمونه Manual رسمی ASDA-B پارامترهای GR1 و GR2 را برای Electronic Gear Ratio معرفی می‌کند.


محاسبه حرکت خطی Servo

فرض کنید Servo Motor به Ball Screw متصل است.

Ball Screw Lead = 5 mm/rev

و:

10000 Pulse = 1 rev

بنابراین:Pulse/mm=100005Pulse/mm = \frac{10000}{5}

Pulse/mm = 2000

برای حرکت 100 میلی‌متر:100×2000=200000100 \times 2000 = 200000

پس:

100 mm = 200000 Pulse

این تبدیل یکی از مهم‌ترین محاسبات هنگام برنامه‌نویسی Servo Positioning است.


دستورات Pulse در Delta PLC

Delta برای DVP PLCها مجموعه‌ای از دستورات Pulse و Positioning ارائه می‌کند.

در مستندات Delta، خانواده‌هایی مانند موارد زیر وجود دارند:

  • PLSY / DPLSY
  • PLSV / DPLSV
  • PLSR / DPLSR
  • DRVI / DDRVI
  • DRVA / DDRVA
  • ZRN / DZRN

و در برخی PLCها دستورات Motion بیشتری نیز وجود دارد.

اما همه این دستورات در همه مدل‌های PLC وجود ندارند.


دستور PLSY چیست؟

PLSY برای تولید تعداد مشخصی Pulse با فرکانس مشخص استفاده می‌شود.

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

PLSY
Frequency
Pulse Count
Output

مثال آموزشی:

PLSY   K10000   K50000   Y0

مفهوم این مثال:

Frequency = 10000 Hz
Pulse Count = 50000
Pulse Output = Y0

یعنی PLC تلاش می‌کند 50,000 پالس با فرکانس 10 kHz تولید کند.

ساختار دقیق Operand و Output باید بر اساس مدل PLC و Manual همان PLC بررسی شود.

Delta در یک Application Example رسمی از PLSY برای ارسال Pulse به Servo Drive استفاده کرده است؛ در آن مثال Y0 خروجی Pulse و Y1 خروجی Direction است و PLC با PLSY حرکت Servo را کنترل می‌کند.


مثال عملی PLSY برای Servo

فرض کنید:

Servo Resolution = 10000 Pulse/rev
Target = 5 Revolution
Speed = 60 RPM

تعداد Pulse:5×10000=500005 \times 10000 = 50000

پس:

Pulse Count = 50000

فرکانس لازم:F=60×1000060F = \frac{60 \times 10000}{60}

F = 10000 Hz

بنابراین فرمان مفهومی:

PLSY 10000 Hz
     50000 Pulse
     Y0

خواهد بود.

این دقیقاً مشابه مفهوم یک مثال رسمی Delta است که در آن PLSY برای چرخاندن Servo به تعداد مشخصی دور استفاده شده است.


محدودیت PLSY

PLSY برای تولید Pulse بسیار کاربردی است، اما برای Positioning پیشرفته، دستوراتی مانند DRVI/DDRVI و DRVA/DDRVA امکانات بیشتری ارائه می‌کنند.

همچنین در پروژه‌های جدید باید قابلیت‌های PLC مورد استفاده، 32-bit بودن فرمان، شتاب و توقف و قابلیت‌های Firmware بررسی شود.


دستور DPLSY چیست؟

DPLSY نسخه توسعه‌یافته Pulse Output است که در خانواده‌های مختلف Delta برای Pulse Output استفاده می‌شود.

این خانواده از دستورات برای کاربردهایی که به مقادیر بزرگ‌تر و امکانات Motion بیشتری نیاز دارند اهمیت پیدا می‌کند.

Delta در مستندات رسمی DVP، DPLSY را در مجموعه Pulse Output Instructions قرار داده است.

مثال مفهومی DPLSY

DPLSY
Frequency
Pulse Count
Output

مثلاً:

DPLSY
50000 Hz
250000 Pulse
Y0

یعنی:

Frequency = 50 kHz
Pulse Count = 250000

نکته مهم: Syntax دقیق و Operandهای DPLSY به خانواده PLC بستگی دارد؛ بنابراین این مثال را باید به عنوان مفهوم برنامه‌نویسی در نظر گرفت، نه یک خط کد قابل انتقال به تمام مدل‌های Delta.


PLSV چیست؟

PLSV / DPLSV برای Pulse Output با تمرکز بر کنترل سرعت استفاده می‌شود.

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

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

Start
 ↓
PLSV
 ↓
Continuous Pulse
 ↓
Servo rotates at commanded speed

وقتی فرمان متوقف شود، Pulse Output نیز متوقف می‌شود.

Delta این خانواده را در فهرست رسمی Pulse Commands در کنار PLSY، PLSR، DRVI و DRVA قرار داده است.


مثال PLSV برای کنترل سرعت

فرض کنید:

Servo = 10000 Pulse/rev
Target = 300 RPM

فرکانس:F=300×1000060F = \frac{300 \times 10000}{60}

F = 50000 Hz

پس PLC باید Pulse با فرکانس 50 kHz ایجاد کند.

در این کاربرد، برخلاف Positioning، تمرکز اصلی روی سرعت حرکت است.


PLSR چیست؟

PLSR / DPLSR از خانواده Pulse Output Commands است که برای خروجی Pulse با Ramp و کنترل توقف/شتاب در کاربردهای مشخص استفاده می‌شود.

Delta این دستور را در مجموعه رسمی Pulse Commands معرفی کرده است.

این خانواده برای کاربردهایی که رفتار Acceleration/Deceleration اهمیت دارد، نسبت به یک Pulse Output ساده کاربرد بیشتری دارد.


DRVI چیست؟

DRVI مخفف مفهوم Drive Relative Positioning است.

در این حالت PLC به Servo می‌گوید:

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

مثلاً:

Current Position = 10000 Pulse
Relative Move = 5000 Pulse

نتیجه:

New Position = 15000 Pulse

اگر حرکت منفی باشد:

Relative Move = -5000

نتیجه:

New Position = 5000 Pulse

این دستور برای حرکت‌های Relative بسیار مناسب است.


مثال DRVI

فرض کنید:

10000 Pulse = 1 Revolution

و می‌خواهیم Servo از موقعیت فعلی:

+2 Revolution

حرکت کند.

بنابراین:

2 × 10000 = 20000 Pulse

فرمان مفهومی:

DRVI
20000 Pulse
Target Frequency
Pulse Output
Direction Output

است.


کاربرد DRVI در ماشین

فرض کنید یک دستگاه بسته‌بندی باید هر بار Film را:

250 mm

جلو ببرد.

اگر:

2000 Pulse/mm

داشته باشیم:250×2000=500000250 \times 2000 = 500000

پس هر Cycle باید:

500000 Pulse

حرکت Relative انجام شود.

Sequence:

Product Sensor
      ↓
DRVI 500000 Pulse
      ↓
Motion Complete
      ↓
Cut
      ↓
Next Product

DDRVI چیست؟

DDRVI نسخه توسعه‌یافته Relative Positioning است.

در کاربردهای جدیدتر و PLCهایی که این دستور را پشتیبانی می‌کنند، DDRVI برای حرکت Incremental/Relative استفاده می‌شود.

Delta نیز DDRVI را در مجموعه رسمی Pulse Output Instructions قرار داده است.

یکی از مزیت‌های مهم DDRVI در برخی مدل‌ها پشتیبانی از قابلیت‌های پیشرفته‌تر Pulse Positioning است.

برای نمونه Delta در FAQ رسمی خود توضیح داده که در برخی PLCهای مشخص، DDRVI همراه با M1119 می‌تواند دو سرعت متفاوت را در یک خروجی پیوسته اجرا کند.


مثال DDRVI

فرض کنید:

Position per cycle = 100000 Pulse
Speed = 30000 Hz

در برنامه می‌توان فرمان Relative Positioning را بر اساس این مقادیر اجرا کرد.

مفهوم:

Start
 ↓
DDRVI
 ↓
+100000 Pulse
 ↓
Motion Complete
 ↓
Next Command

اگر مقدار Position منفی شود، بسته به ساختار و تنظیمات PLC، حرکت در جهت مخالف انجام می‌شود.


DRVA چیست؟

DRVA برای Absolute Positioning استفاده می‌شود.

تفاوت اصلی آن با DRVI:

DRVI → حرکت نسبت به موقعیت فعلی
DRVA → حرکت به موقعیت مطلق

مثلاً:

Current Position = 5000

اگر:

DRVI +10000

اجرا شود:

New Position = 15000

اما اگر:

DRVA 10000

اجرا شود:

New Position = 10000

یعنی هدف Absolute است.


مثال DRVA

فرض کنید:

Home = 0

و سه موقعیت ماشین داریم:

Position 1 = 10000
Position 2 = 50000
Position 3 = 90000

PLC می‌تواند به ترتیب:

DRVA → 10000
DRVA → 50000
DRVA → 90000

را اجرا کند.

در این حالت موقعیت‌ها نسبت به Zero/Reference تعریف می‌شوند.


DDRVA چیست؟

DDRVA نسخه توسعه‌یافته Absolute Positioning است.

ساختار مفهومی:

Target Absolute Position
          ↓
       DDRVA
          ↓
     Servo Motion

این دستور برای Positioning دقیق‌تر و امکانات Motion پیشرفته‌تر در PLCهایی که از آن پشتیبانی می‌کنند استفاده می‌شود.

Delta در Manualهای PLC خود DDRVA را در گروه Position/Pulse Output Instructions قرار داده است.


مثال DDRVA

فرض کنید:

Pulse/mm = 1000

و می‌خواهیم محور به:

250 mm

برود.

پس:250×1000=250000250 \times 1000 = 250000

Target Position:

250000 Pulse

Sequence:

Home
 ↓
DDRVA 250000
 ↓
Motion Complete
 ↓
Process

اگر بعداً دستور:

DDRVA 100000

اجرا شود، محور به Position مطلق 100,000 Pulse می‌رود.


تفاوت DRVI و DRVA

دستورنوع حرکتمثال
DRVIRelative+10,000 Pulse
DDRVIRelative+10,000 Pulse با امکانات توسعه‌یافته
DRVAAbsoluteMove to 10,000
DDRVAAbsoluteMove to 10,000 با امکانات توسعه‌یافته

این تفاوت در طراحی برنامه بسیار مهم است.

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

اگر می‌خواهید محور به یک مختصات مشخص برود، Absolute مناسب است.


ZRN و DZRN چیستند؟

یکی از مهم‌ترین قسمت‌های Servo Positioning، Homing است.

برای این کار در Delta PLCها خانواده دستورات:

ZRN
DZRN

وجود دارد.

Delta این دستورات را در مجموعه Pulse Commands/Positioning خود قرار داده است.


چرا Homing ضروری است؟

فرض کنید PLC بعد از روشن شدن فقط بداند:

Current Position = ?

اگر موقعیت واقعی محور مشخص نباشد، فرمان:

Move to 100 mm

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

پس ابتدا:

Power ON
 ↓
Servo ON
 ↓
Homing
 ↓
Home Complete
 ↓
Position = 0
 ↓
Normal Motion

انجام می‌شود.


مثال Homing

ساختار ساده:

START
 ↓
Servo ON
 ↓
ZRN / DZRN
 ↓
Home Sensor
 ↓
Reference Found
 ↓
Home Complete
 ↓
Position = 0

بعد از این مرحله:

DDRVA 250000

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


Interlock در کنترل سروو چیست؟

یکی از مهم‌ترین قسمت‌های برنامه Servo، Interlock است.

Interlock یعنی اجازه ندهیم دو فرمان Motion نامناسب هم‌زمان روی یک Pulse Output یا Axis اجرا شوند.

مثلاً اشتباه است که برنامه هم‌زمان:

DDRVI +50000

و:

DDRVA 100000

را روی یک Axis اجرا کند.

در برنامه باید مشخص باشد:

Axis Busy = ON

در این حالت فرمان جدید نباید اجرا شود، مگر اینکه سیستم و دستور مربوطه اجازه چنین تغییری را بدهد.


چرا Interlock در Delta PLC مهم است؟

در Manual رسمی Delta برای PLCهای دارای Pulse Output توضیح داده شده که هنگام اجرای Pulse Output Instructions، PLC کنترل Pulse Output را به اولین دستور اجراشده اختصاص می‌دهد و تا توقف کامل آن، دستورات دیگر نمی‌توانند همان خروجی را به شکل عادی کنترل کنند. Delta همچنین برای برخی PLCها Auto-reset Flagهایی برای آزاد شدن کنترل خروجی پس از تکمیل Pulse Output ارائه می‌کند.

بنابراین در برنامه‌نویسی باید Motion State را کنترل کنیم.


ساختار صحیح Interlock

یک ساختار ساده:

Start Move
     │
     ▼
Axis Busy?
  │       │
 YES      NO
  │       │
 STOP    Execute
          │
          ▼
      Axis Busy
          │
          ▼
     Motion Complete
          │
          ▼
       Next Move

مثال Interlock برای DDRVI

فرض کنید:

X0 = Move Forward
X1 = Move Reverse
M100 = Axis Busy
M101 = Move Complete

ساختار منطقی:

X0    /M100
───| |───|/|────────► DDRVI +50000

و:

X1    /M100
───| |───|/|────────► DDRVI -50000

یعنی اگر Axis Busy باشد، فرمان جدید اجرا نشود.


Interlock برای چند فرمان

اگر چند Position Command دارید:

Move 1
Move 2
Move 3

بهتر است آنها به شکل Sequence اجرا شوند:

M100 Step 1
     ↓
Move 1
     ↓
Complete
     ↓
M101 Step 2
     ↓
Move 2
     ↓
Complete
     ↓
M102 Step 3

این روش بسیار قابل‌اعتمادتر از این است که چند فرمان Pulse را بدون State Management در بخش‌های مختلف برنامه قرار دهیم.


یک نکته مهم درباره Scan Cycle

PLC برنامه Ladder را مرتباً Scan می‌کند.

بنابراین اگر فقط بنویسیم:

X0 → DDRVI

و X0 برای مدت طولانی ON بماند، باید رفتار Instruction و Trigger آن را در مدل PLC موردنظر بررسی کنیم.

برای Motion بهتر است Trigger، Busy، Complete و Sequence به‌صورت مشخص طراحی شوند.

در بعضی PLCها Auto-reset Flags نیز برای جلوگیری از درگیری چند Instruction روی یک Pulse Output وجود دارد.


Interlock پیشنهادی برای یک محور

یک Axis می‌تواند Stateهای زیر را داشته باشد:

0 = IDLE
1 = SERVO ON
2 = HOMING
3 = READY
4 = MOVING
5 = COMPLETE
6 = ALARM

برنامه:

IDLE
 ↓
Servo ON
 ↓
Homing
 ↓
READY
 ↓
Move Command
 ↓
MOVING
 ↓
Motion Complete
 ↓
READY

در صورت Alarm:

Any State
   ↓
ALARM
   ↓
Stop Motion

Servo ON و Interlock

قبل از اجرای Motion باید وضعیت Drive بررسی شود.

مثلاً:

Servo Ready = ON
Alarm = OFF
Emergency Stop = OK
Home Complete = ON
Axis Busy = OFF

سپس Motion اجرا شود.

به‌صورت منطقی:

Ready
AND
Servo ON
AND
No Alarm
AND
Safety OK
AND
Axis Not Busy
        ↓
     MOVE

تنظیم Servo Drive برای Pulse Position Mode

تنظیمات دقیق Servo Drive به مدل آن بستگی دارد.

اما در یک سیستم PT/Pulse Position معمولاً باید موارد زیر بررسی شوند:

Control Mode

Drive باید در Position/Pulse Mode قرار بگیرد.

برای نمونه ASDA-E3 Delta در Position Mode دو ساختار PT و PR دارد؛ در PT Mode، فرمان Position از External Pulse دریافت می‌شود.


Pulse Input Type

Servo Drive باید بداند Pulse ورودی چه فرمتی دارد.

بسته به Drive ممکن است حالت‌هایی مانند:

Pulse + Direction
CW + CCW
A/B Phase

وجود داشته باشد.

نوع دقیق باید از Manual همان Drive انتخاب شود.


Pulse Logic

ممکن است Positive Logic یا Negative Logic وجود داشته باشد.

این موضوع باید با PLC و Wiring هماهنگ شود.


Electronic Gear

پارامترهای Electronic Gear باید بر اساس:

  • Motor Resolution
  • Required Machine Resolution
  • PLC Pulse Frequency
  • Mechanical Ratio

تنظیم شوند.


Maximum Speed

حداکثر سرعت Servo باید محدود و با ظرفیت موتور، Drive و مکانیک هماهنگ شود.


Acceleration / Deceleration

زمان Acceleration و Deceleration باید تنظیم شود.

اگر شتاب بسیار زیاد باشد:

  • موتور گشتاور بیشتری نیاز دارد.
  • مکانیک تحت Shock قرار می‌گیرد.
  • احتمال Position Error افزایش می‌یابد.

Servo ON

Digital Input مربوط به Servo Enable باید مطابق Wiring و Manual تنظیم شود.


Alarm Reset

در صورت نیاز باید Digital Input مربوط به Alarm Reset نیز تنظیم شود.


Inhibit / Stop

بعضی Servo Driveها ورودی‌هایی برای جلوگیری از دریافت Pulse دارند.

برای نمونه در ASDA-AB Delta، قابلیت Pulse Inhibit وجود دارد و هنگام فعال بودن آن در Position Mode، External Pulse Command معتبر نیست و موتور متوقف می‌شود.


مثال کامل: PLC تا Servo

فرض کنیم:

PLC = DAS-14SS2-T
Servo Drive = Delta ASDA Series
Motor = Servo Motor

و هدف:

Ball Screw = 5 mm/rev
Servo Resolution = 10000 pulse/rev

بنابراین:

2000 Pulse/mm

داریم.


حرکت 100 میلی‌متر

100×2000=200000100 \times 2000 = 200000

پس:

Target = 200000 Pulse

اگر بخواهیم حرکت در:

600 RPM

باشد:F=600×1000060F = \frac{600 \times 10000}{60}

F = 100000 Hz

در اینجا باید یک نکته بسیار مهم را بررسی کنیم:

PLC باید توانایی تولید 100 kHz را داشته باشد.

اگر خروجی Pulse PLC فقط مثلاً تا فرکانس پایین‌تری را پشتیبانی کند، باید سرعت، Electronic Gear یا معماری Motion تغییر کند.

همچنین Servo Drive نیز باید حداکثر Pulse Input Frequency موردنیاز را پشتیبانی کند.

برای نمونه ASDA-E3 طبق Manual رسمی تا 4 Mpps در PT Position Mode را پشتیبانی می‌کند، اما این مشخصه را نباید به سایر Servo Driveهای Delta تعمیم داد.


مثال برنامه Sequence کامل

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

START
  ↓
Servo ON
  ↓
Check Servo Ready
  ↓
Check Alarm
  ↓
Homing
  ↓
Home Complete
  ↓
Set Position
  ↓
Move
  ↓
Wait Motion Complete
  ↓
Process
  ↓
Next Move

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

فرض کنید Servo برای Feed کردن فیلم استفاده می‌شود.

Product Sensor
       ↓
     PLC
       ↓
Servo Position Command
       ↓
Servo Drive
       ↓
Servo Motor
       ↓
Film Feed
       ↓
Cut

مثلاً:

Film Length = 300 mm
Pulse/mm = 2000

پس:300×2000=600000300 \times 2000 = 600000

هر بار که Product Sensor فعال شود:

DDRVI 600000 Pulse

می‌تواند یک حرکت Relative ایجاد کند.

پس از:

Motion Complete

فرمان Cutting اجرا می‌شود.


مثال Absolute Positioning در ماشین

فرض کنیم سه Station داریم:

Station 1 = 100 mm
Station 2 = 250 mm
Station 3 = 500 mm

و:

Pulse/mm = 2000

پس:

Station 1 = 200000 Pulse
Station 2 = 500000 Pulse
Station 3 = 1000000 Pulse

در Absolute Positioning:

DDRVA 200000

سپس:

DDRVA 500000

و سپس:

DDRVA 1000000

محور به مختصات مشخص می‌رود.


Relative یا Absolute؛ کدام ساختار را استفاده کنیم؟

Relative Positioning

برای کاربردهایی مثل:

  • Feed
  • Indexing
  • Material Length
  • Repetitive Motion

معمولاً مفهوم Relative بسیار مناسب است.

Move +100 mm
Move +100 mm
Move +100 mm

Absolute Positioning

برای کاربردهایی مثل:

  • چند Station
  • Pick & Place
  • CNC-like Positioning
  • محور دارای مختصات مشخص

مفهوم Absolute بسیار مناسب است.

Move to 100 mm
Move to 300 mm
Move to 500 mm

کنترل سرعت Servo با PLC

اگر هدف فقط حرکت با سرعت مشخص باشد، Pulse Frequency را می‌توان بر اساس سرعت موردنیاز محاسبه کرد.

فرمول:F=RPM×PPR60F = \frac{RPM \times PPR}{60}

مثلاً:

PPR = 10000
RPM = 120

پس:

F = 20000 Hz

بنابراین:

20 kHz

فرکانس Pulse لازم است.

برای کاربرد Speed Command می‌توان از خانواده PLSV/DPLSV نیز استفاده کرد، مشروط به اینکه PLC موردنظر از آن دستور پشتیبانی کند. Delta این دستورات را در مجموعه Pulse Commands خود فهرست کرده است.


تغییر سرعت در حین حرکت

در برخی کاربردها لازم است سرعت در حین حرکت تغییر کند.

برای این کار باید از دستور و PLC مناسب استفاده شود.

Delta برای بعضی PLCها قابلیت‌های پیشرفته مانند دو سرعت در DDRVI را نیز ارائه کرده است؛ در FAQ رسمی Delta آمده که در PLCهای مشخص، DDRVI همراه با M1119 می‌تواند دو سرعت مختلف را در یک حرکت پیاده‌سازی کند.

بنابراین نباید این قابلیت را برای همه DVPها یکسان فرض کرد.


توقف Servo

توقف Servo می‌تواند به چند شکل طراحی شود:

توقف طبیعی

فرمان Pulse تمام می‌شود و محور به Target می‌رسد.

Deceleration Stop

PLC یا Drive محور را با Ramp متوقف می‌کند.

Emergency Stop

در شرایط اضطراری، مدار Safety باید وارد عمل شود.

Emergency Stop را نباید صرفاً با یک دستور معمولی Motion در Ladder جایگزین کرد.


Servo Alarm Interlock

یکی از مهم‌ترین Interlockها:

Servo Alarm = OFF

تا زمانی که Alarm وجود دارد، نباید Motion معمولی شروع شود.

ساختار:

Start
AND
Servo Ready
AND
No Alarm
AND
Safety OK
AND
Home Complete
AND
Axis Idle
        ↓
Motion Command

Motion Complete چیست؟

پس از اجرای Position Command باید برنامه بفهمد که حرکت تمام شده است.

این وضعیت می‌تواند از:

  • Completion Flag PLC
  • Servo Output
  • Drive Status
  • Position Complete
  • Communication Register

دریافت شود.

روش دقیق به PLC و Servo Drive بستگی دارد.


چگونه از اجرای چند Pulse Command جلوگیری کنیم؟

برای هر Axis یک وضعیت Busy تعریف کنید:

M100 = Axis Busy

هنگام شروع حرکت:

SET M100

و بعد از تکمیل:

RST M100

فرمان بعدی فقط زمانی اجرا شود که:

/M100

فعال باشد.

در PLCهایی که Auto-reset Flags برای Pulse Output دارند، می‌توان از مکانیزم رسمی همان PLC نیز استفاده کرد. Delta برای نسل‌های مختلف PLC این Auto-reset behavior را مستند کرده است.


یک ساختار بهتر برای برنامه Servo

به جای اینکه همه Motionها را مستقیماً با X Input اجرا کنیم، بهتر است Sequence بسازیم.

مثلاً:

M100 = Servo Ready
M101 = Homed
M102 = Axis Busy
M103 = Move Complete
M104 = Alarm
M105 = Safety OK

سپس:

READY =
Servo Ready
AND
Homed
AND
NOT Alarm
AND
Safety OK
AND
NOT Busy

و فقط در صورت READY:

DDRVI / DDRVA

اجرا شود.


استفاده از HMI برای تنظیم Servo

HMI می‌تواند پارامترهای زیر را در اختیار اپراتور قرار دهد:

Speed
Position
Acceleration
Deceleration
Target Length
Jog Speed
Manual / Auto
Home
Servo ON
Alarm Reset

مثلاً:

Target Length = 250 mm

PLC:

250 × Pulse/mm

را محاسبه می‌کند.

سپس نتیجه به Instruction Motion داده می‌شود.

این روش باعث می‌شود اپراتور با mm کار کند، نه با Pulse خام.


تبدیل mm به Pulse در PLC

فرمول:Pulse=Distance(mm)×PulsePerMMPulse = Distance(mm) \times PulsePerMM

مثلاً:

Distance = 250 mm
PulsePerMM = 2000

پس:

Pulse = 500000

در برنامه بهتر است این محاسبه با Data Registerهای مناسب و در صورت نیاز 32-bit انجام شود.


چرا باید از 32-bit استفاده کنیم؟

در Motion واقعی تعداد Pulse می‌تواند بسیار بزرگ باشد.

مثلاً:

1000 mm × 2000 pulse/mm

می‌شود:

2,000,000 Pulse

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

به همین دلیل خانواده دستورهای D-prefixed مانند:

DPLSY
DPLSV
DPLSR
DDRVI
DDRVA

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

قابلیت دقیق هر Instruction و PLC باید با جدول Compatibility همان Manual بررسی شود.


تفاوت ISPSoft و WPLSoft در Servo Programming

از نظر مفهوم Motion، دستورات Delta در این محیط‌ها بر اساس خانواده PLC و Instruction Set تعریف می‌شوند.

ساختار کلی:

WPLSoft / ISPSoft
        ↓
PLC Program
        ↓
Pulse Output Instruction
        ↓
Servo Drive

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

برای پروژه‌های جدید باید:

  1. مدل PLC
  2. Firmware
  3. Version نرم‌افزار
  4. Pulse Output Capability
  5. Axis Output
  6. Instruction Compatibility

بررسی شود.


نکته مهم درباره ISPSoft

در ISPSoft ممکن است بسته به PLC، High-Speed Output و Axis Configuration نیاز به تنظیمات سخت‌افزاری/سیستمی داشته باشد.

در PLCهای جدیدتر Delta، امکانات Pulse Output و Auto-reset Flags نیز می‌تواند به مدل و Firmware وابسته باشد. Manual رسمی ES3/EX3/SV3/SX3 نمونه‌ای از این وابستگی را نشان می‌دهد.

پس قبل از نوشتن برنامه Servo:

PLC Model
↓
Output Capability
↓
Axis Assignment
↓
Pulse Mode
↓
Instruction Compatibility

را بررسی کنید.


نکات مهم برای DAS-14SS2

اگر قرار است DAS-14SS2-T را به عنوان PLC کنترل‌کننده Servo استفاده کنید، ابتدا باید مشخصات خروجی High-Speed آن در نسخه دقیق سخت‌افزار بررسی شود.

مهم‌ترین نکته:

DAS-14SS2-T
        ↓
High-Speed Transistor Output
        ↓
Pulse / Direction
        ↓
Servo Drive

در نسخه Relay نباید صرفاً به دلیل وجود ترمینال خروجی، آن را به عنوان Pulse Output Controller در نظر گرفت.

همچنین شماره دقیق خروجی Pulse و Direction باید از مشخصات همان مدل تعیین شود و نباید بدون تأیید مستندات، Y0/Y1 یا هر Output دیگری را به DAS-14SS2 نسبت داد.


اشتباهات رایج در کنترل Servo با Delta PLC

اشتباه اول؛ استفاده از PLC Relay برای Pulse Output

Relay Output برای High-Speed Pulse Train مناسب نیست.

اشتباه دوم؛ انتخاب فرکانس بالاتر از توان PLC

اگر محاسبه شما 100 kHz باشد، PLC باید واقعاً توانایی تولید آن فرکانس را داشته باشد.

اشتباه سوم؛ تنظیم اشتباه Electronic Gear

در این حالت تعداد Pulse موردنیاز برای حرکت واقعی تغییر می‌کند.

اشتباه چهارم؛ اجرای هم‌زمان چند Motion Command

این موضوع می‌تواند باعث Conflict روی Pulse Output شود. Delta برای این مسئله مکانیزم کنترل حق استفاده از Pulse Output و Auto-reset Flags دارد.

اشتباه پنجم؛ نداشتن Homing

در سیستم Absolute Positioning باید Reference Axis به‌درستی تعریف شود.

اشتباه ششم؛ نبودن Interlock

فرمان Motion نباید بدون بررسی:

Servo Ready
Alarm
Safety
Busy
Home

اجرا شود.

اشتباه هفتم؛ تست مستقیم با سرعت بالا

اول سیستم را با:

Low Speed
Low Pulse Count
Low Acceleration

تست کنید.


ترتیب پیشنهادی راه‌اندازی یک Servo Axis

ترتیب عملی راه‌اندازی می‌تواند چنین باشد:

1. Mechanical Installation
        ↓
2. Motor / Drive Wiring
        ↓
3. Encoder Wiring
        ↓
4. PLC Pulse Wiring
        ↓
5. Servo Drive Parameter Setup
        ↓
6. Control Mode = Position
        ↓
7. Pulse Input Mode
        ↓
8. Electronic Gear
        ↓
9. Servo ON
        ↓
10. Low-Speed Jog
        ↓
11. Homing
        ↓
12. Small Relative Move
        ↓
13. Absolute Position
        ↓
14. Acceleration / Deceleration
        ↓
15. Full-Speed Test

این ترتیب احتمال خطای راه‌اندازی را کاهش می‌دهد.


جمع‌بندی

کنترل Servo با PLC دلتا را می‌توان از یک سیستم ساده Pulse/Direction تا یک سیستم چندمحوره Motion Control توسعه داد.

در سطح پایه:

PLC
 ↓
Pulse + Direction
 ↓
Servo Drive
 ↓
Servo Motor

و در سطح برنامه‌نویسی، مهم‌ترین خانواده دستورات شامل:

PLSY / DPLSY
PLSV / DPLSV
PLSR / DPLSR
DRVI / DDRVI
DRVA / DDRVA
ZRN / DZRN

هستند. Delta این خانواده را در مستندات Pulse Control خود معرفی کرده است.

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

PLSY / DPLSY
        ↓
Pulse Generation

PLSV / DPLSV
        ↓
Speed-oriented Pulse Output

DRVI / DDRVI
        ↓
Relative Position

DRVA / DDRVA
        ↓
Absolute Position

ZRN / DZRN
        ↓
Homing

اما مهم‌ترین بخش برنامه Servo فقط انتخاب Instruction نیست.

یک برنامه صنعتی باید Interlock، Busy، Complete، Servo Ready، Alarm، Safety، Homing، Electronic Gear، Acceleration/Deceleration و محدودیت فرکانس Pulse را نیز مدیریت کند.

در نهایت، قبل از استفاده از هر Instruction باید Compatibility آن با مدل دقیق PLC، Firmware و نوع High-Speed Output بررسی شود. Delta برای مدل‌ها و نسل‌های مختلف PLC تفاوت‌هایی در Instruction و قابلیت‌های Pulse Output دارد.


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

PLSY در PLC دلتا چه کاری انجام می‌دهد؟

PLSY برای تولید تعداد مشخصی Pulse با فرکانس مشخص استفاده می‌شود و می‌تواند برای فرمان Pulse به Servo Drive یا Stepper Driver استفاده شود. Delta در یک Application Example رسمی از PLSY برای کنترل حرکت Servo استفاده کرده است.

تفاوت PLSY و DPLSY چیست؟

هر دو برای Pulse Output هستند، اما DPLSY در PLCهای پشتیبانی‌کننده قابلیت‌های توسعه‌یافته‌تری دارد. جزئیات دقیق به مدل PLC و Firmware بستگی دارد.

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

DRVI برای Relative Positioning و DRVA برای Absolute Positioning استفاده می‌شود.

تفاوت DDRVI و DDRVA چیست؟

DDRVI و DDRVA نسخه‌های توسعه‌یافته خانواده Relative و Absolute Positioning هستند. قابلیت دقیق آنها به مدل PLC و Firmware بستگی دارد.

ZRN و DZRN برای چه کاری هستند؟

برای اجرای فرآیند Zero Return یا Homing محور استفاده می‌شوند.

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

برای کاربردهای ساده Pulse Positioning بله، در صورتی که PLC و Servo Drive از این روش پشتیبانی کنند. اما برای Positioning پیچیده‌تر، دستورات اختصاصی مانند DRVI/DDRVI و DRVA/DDRVA امکانات بیشتری فراهم می‌کنند.

آیا PLSY سرعت Servo را کنترل می‌کند؟

فرکانس Pulse با سرعت فرمان مرتبط است، اما در Position Control باید رابطه بین Pulse Frequency، Pulse-per-Revolution و Electronic Gear را در نظر گرفت.

آیا PLC Relay می‌تواند Servo Pulse تولید کند؟

برای High-Speed Pulse Train معمولاً باید از خروجی ترانزیستوری مناسب استفاده شود. خروجی Relay برای تولید Pulse با فرکانس بالا مناسب نیست.

چرا Servo حرکت نمی‌کند؟

مواردی مانند Control Mode، Servo ON، Pulse Input Mode، Wiring، Pulse Frequency، Electronic Gear، Alarm، Enable و Compatibility خروجی PLC باید بررسی شوند.

چرا Servo بیش از مقدار موردنظر حرکت می‌کند؟

از دلایل رایج می‌توان به Electronic Gear اشتباه، Pulse-per-Revolution نادرست، محاسبه اشتباه Pulse/mm یا تنظیم نامناسب Position Command اشاره کرد.

آیا می‌توان در ISPSoft سروو را کنترل کرد؟

بله، در PLCهای Delta که High-Speed Pulse/Motion را پشتیبانی می‌کنند می‌توان از دستورات Motion مربوط به همان PLC استفاده کرد. Instruction Set و قابلیت‌ها باید بر اساس مدل و Firmware بررسی شوند.

آیا WPLSoft و ISPSoft دستورات Servo یکسانی دارند؟

خانواده Instructionهای Delta مشابه است، اما قابلیت واقعی به PLC، Firmware و نسخه نرم‌افزار بستگی دارد. نباید بدون بررسی Compatibility تصور کرد تمام دستورات در تمام PLCها یکسان هستند.

Interlock در Servo PLC چیست؟

Interlock مجموعه شرایطی است که اجازه می‌دهد Motion فقط زمانی اجرا شود که شرایط لازم برقرار باشد؛ برای مثال Servo Ready، No Alarm، Safety OK، Home Complete و Axis Not Busy.

آیا می‌توان دو دستور Pulse را هم‌زمان روی یک Axis اجرا کرد؟

نباید بدون بررسی مکانیزم PLC این کار را انجام داد. Delta برای Pulse Output یک سازوکار اختصاص دادن کنترل خروجی به Instruction در حال اجرا و در مدل‌های مشخص Auto-reset Flags ارائه کرده است.

سوالی دارید؟

اگر در انتخاب یا پیاده‌سازی سیستم‌های اتوماسیون نیاز به راهنمایی دارید، با ما تماس بگیرید.

تماس با ما