کنترل سروو موتور با 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 MotorPLC فرمان 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 به سرعت فرمان مرتبط است.
فرمول ساده:
که در آن:
F= Pulse FrequencyPPR= Pulse per Revolution
مثلاً:
PPR = 10000
Frequency = 50000 Hzبنابراین:
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 = 2000برای حرکت 100 میلیمتر:
پس:
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:
پس:
Pulse Count = 50000فرکانس لازم:
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 = 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داشته باشیم:
پس هر Cycle باید:
500000 Pulseحرکت Relative انجام شود.
Sequence:
Product Sensor
↓
DRVI 500000 Pulse
↓
Motion Complete
↓
Cut
↓
Next ProductDDRVI چیست؟
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 = 90000PLC میتواند به ترتیب:
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برود.
پس:
Target Position:
250000 PulseSequence:
Home
↓
DDRVA 250000
↓
Motion Complete
↓
Processاگر بعداً دستور:
DDRVA 100000اجرا شود، محور به Position مطلق 100,000 Pulse میرود.
تفاوت DRVI و DRVA
| دستور | نوع حرکت | مثال |
|---|---|---|
| DRVI | Relative | +10,000 Pulse |
| DDRVI | Relative | +10,000 Pulse با امکانات توسعهیافته |
| DRVA | Absolute | Move to 10,000 |
| DDRVA | Absolute | Move 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 MotionServo 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 میلیمتر
پس:
Target = 200000 Pulseاگر بخواهیم حرکت در:
600 RPMباشد:
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پس:
هر بار که 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 mmAbsolute Positioning
برای کاربردهایی مثل:
- چند Station
- Pick & Place
- CNC-like Positioning
- محور دارای مختصات مشخص
مفهوم Absolute بسیار مناسب است.
Move to 100 mm
Move to 300 mm
Move to 500 mmکنترل سرعت Servo با PLC
اگر هدف فقط حرکت با سرعت مشخص باشد، Pulse Frequency را میتوان بر اساس سرعت موردنیاز محاسبه کرد.
فرمول:
مثلاً:
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 CommandMotion 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 mmPLC:
250 × Pulse/mmرا محاسبه میکند.
سپس نتیجه به Instruction Motion داده میشود.
این روش باعث میشود اپراتور با mm کار کند، نه با Pulse خام.
تبدیل mm به Pulse در PLC
فرمول:
مثلاً:
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 و هر نسخه نرمافزار قابل استفاده است.
برای پروژههای جدید باید:
- مدل PLC
- Firmware
- Version نرمافزار
- Pulse Output Capability
- Axis Output
- 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 ارائه کرده است.

