آموزش زبان STL -آدرس دهی غیر مستقیم در stl
آدرسدهی غیرمستقیم یا Indirect Addressing یکی از قابلیتهای مهم زبان برنامهنویسی STL در PLCهای زیمنس است. در این روش، بهجای اینکه همیشه آدرس موردنظر را مستقیماً داخل دستور بنویسیم، آدرس یا شماره موردنظر را از یک Pointer، Memory Word یا Register آدرس دریافت میکنیم.
آدرسدهی غیرمستقیم در برنامههای پیچیده، کار با آرایهها، جابهجایی بین آدرسها، Data Blockها و برنامههایی که نیاز به دسترسی پویا به حافظه دارند، اهمیت زیادی دارد.
در آدرسدهی مستقیم، آدرس دقیقاً داخل دستور مشخص میشود. برای مثال:
در این حالت PLC دقیقاً میداند که باید مقدار MW30 را بخواند.
اما در آدرسدهی غیرمستقیم، آدرس از طریق یک مقدار دیگر تعیین میشود. بنابراین آدرس مقصد میتواند بر اساس مقدار موجود در Pointer، Memory یا Register تغییر کند.
۱. Memory Indirect Addressing with Area Pointer
۲. Memory Indirect Addressing with Number
۳. Register-Indirect Area-Internal Addressing
۴. Register-Indirect Area-Crossing Addressing
Memory Indirect Addressing with Area Pointer
در روش اول، یک Pointer ۳۲ بیتی که شامل اطلاعات مربوط به شماره بایت و بیت است، داخل یک متغیر Double Word مانند MD20 ذخیره میشود.
سپس همان مقدار بهعنوان آدرس غیرمستقیم استفاده میشود.
T MD20
L MW[MD20] // معادل خواندن MW30
A M[MD20] // معادل بررسی بیت M30.0
دستور L P#30.0 یک Pointer با Offset برابر ۳۰.۰ ایجاد میکند.
Pointer ساختهشده در مرحله قبل داخل MD20 قرار میگیرد. بنابراین میتوان گفت:
چون مقدار Pointer موجود در MD20 برابر P#30.0 است، این دستور در عمل به آدرس زیر اشاره میکند:
MW[MD20] معادل MW30 است.
یعنی PLC مقدار Word موجود در آدرس MW30 را میخواند.
در اینجا نیز همان Pointer استفاده میشود؛ اما این بار دسترسی به یک بیت از ناحیه Memory انجام میشود.
چون Pointer برابر P#30.0 است:
M[MD20] معادل M30.0 خواهد بود.
Memory Indirect Addressing with Number
در روش دوم، بهجای ذخیره یک Pointer، یک عدد صحیح داخل یک Memory Word مانند MW100 قرار میگیرد.
این عدد میتواند شماره یک شیء مانند Timer، Counter یا Data Block را مشخص کند.
T MW100 // عدد 237 را در MW100 ذخیره کن
OPN DB[MW100] // معادل OPN DB 237؛ دیتابلاک 237 را باز کن
SP T[MW100] // معادل SP T 237؛ تایمر 237 را به صورت پالس راهاندازی کن
در این مرحله عدد 237 بهعنوان یک مقدار عددی وارد Accumulator میشود.
حالا وضعیت Memory به شکل زیر است:
چون مقدار موجود در MW100 برابر 237 است، PLC این دستور را بهصورت زیر تفسیر میکند:
OPN DB[MW100] معادل OPN DB 237 است.
بنابراین DB شماره 237 باز میشود.
چون MW100 هنوز مقدار 237 را دارد، نتیجه این دستور نیز مشخص است:
SP T[MW100] معادل SP T 237 است.
یعنی Timer شماره 237 بهصورت پالس راهاندازی میشود.
در روش اول، مقدار داخل Memory یک Pointer است؛ اما در روش دوم، مقدار داخل Memory یک Number است که شماره یک شیء مانند DB یا Timer را مشخص میکند.
Register-Indirect Area-Internal Addressing
در روش سوم از Registerهای آدرس یعنی AR1 یا AR2 استفاده میشود.
در این نوع آدرسدهی، Register شامل مقدار Offset است و ناحیه حافظه داخل خود دستور مشخص میشود.
همچنین میتوان یک Offset ثابت دیگر را نیز به مقدار موجود در AR1 یا AR2 اضافه کرد.
L MW[AR1,P#4.0] // معادل MW؛ حاصل 2.0 + 4.0 = 6.0
A I[AR1,P#1.4] // معادل I؛ حاصل 2.0 + 1.4 = 3.4
پس از اجرای این دستور، مقدار Offset موجود در AR1 برابر 2.0 است.
در این دستور دو مقدار با یکدیگر جمع میشوند:
بنابراین آدرس نهایی برابر با MW6 خواهد بود.
MW[AR1,P#4.0] معادل MW6 است.
چون: 2.0 + 4.0 = 6.0
مقدار AR1 برابر P#2.0 است و Offset دوم برابر P#1.4 است. بنابراین:
I[AR1,P#1.4] معادل I3.4 است.
یعنی PLC در نهایت وضعیت ورودی I3.4 را بررسی میکند.
چون Area در خود دستور مشخص شده است. برای مثال در I[AR1,P#1.4] حرف I مشخص میکند که ناحیه موردنظر Input است. AR1 فقط برای تعیین موقعیت داخل آن ناحیه استفاده میشود.
Register-Indirect Area-Crossing Addressing
در روش چهارم، علاوه بر شماره بایت و بیت، خود ناحیه حافظه نیز در Pointer موجود در Register قرار میگیرد.
به همین دلیل ساختار Pointer میتواند مشخص کند که نقطه شروع در کدام Area قرار دارد. در این روش، Registerهایی مانند AR1 میتوانند برای دسترسی غیرمستقیم استفاده شوند و در دستور نوع داده نیز مشخص میشود.
L B[AR1,P#4.0] // معادل MB؛ حاصل 10.0 + 4.0 = 14.0
= Q[AR1,P#1.7] // معادل Q؛ حاصل 10.0 + 1.7 = 11.7
برخلاف مثال قبلی، اینجا Pointer فقط یک Offset ساده نیست. در P#M10.0 هم Area و هم موقعیت مشخص شده است.
Area = M
Offset = 10.0
مقدار پایه Pointer برابر M10.0 است و Offset برابر P#4.0 است. بنابراین:
B[AR1,P#4.0] معادل MB14 است.
یعنی مقدار یک Byte از آدرس MB14 خوانده میشود.
این بار Offset برابر P#1.7 است. بنابراین از آدرس پایه 10.0 حرکت میکنیم:
Q[AR1,P#1.7] معادل Q11.7 است.
بنابراین نتیجه دستور در نهایت در Q11.7 قرار میگیرد.
| شماره | روش آدرسدهی | مبنای آدرس | نمونه | نتیجه مثال |
|---|---|---|---|---|
| ۱ | Memory Indirect Area Pointer |
Pointer ذخیرهشده در Memory | MW[MD20] | MW30 |
| ۲ | Memory Indirect Number |
Number ذخیرهشده در Memory | DB[MW100] | DB237 |
| ۳ | Register Indirect Area Internal |
AR1 + Offset | MW[AR1,P#4.0] | MW6 |
| ۴ | Register Indirect Area Crossing |
Area + Pointer + Offset | B[AR1,P#4.0] | MB14 |
P#30.0 داخل MD20 قرار میگیرد.
MW[MD20] → MW30
M[MD20] → M30.0
عدد 237 داخل MW100 قرار میگیرد.
OPN DB[MW100] → OPN DB237
SP T[MW100] → SP T237
AR1 = P#2.0
MW[AR1,P#4.0] → MW6
I[AR1,P#1.4] → I3.4
AR1 = P#M10.0
B[AR1,P#4.0] → MB14
Q[AR1,P#1.7] → Q11.7
- اگر در Memory یک مقدار مانند P#30.0 ذخیره شده باشد، باید آن را بهعنوان Pointer در نظر گرفت.
- اگر یک عدد مانند 237 در MW ذخیره شده باشد و برای تعیین شماره DB یا Timer استفاده شود، با Memory Indirect Addressing with Number روبهرو هستیم.
- در Register-Indirect Addressing معمولاً AR1 یا AR2 نقش Register آدرس را دارند.
- Offsetهایی مانند P#4.0 به Pointer پایه اضافه میشوند تا آدرس نهایی مشخص شود.
- در Area-Internal، ناحیهای مانند I یا M در خود دستور مشخص میشود.
- در Area-Crossing، Pointer میتواند اطلاعات ناحیه و Offset را در خود داشته باشد و دسترسی غیرمستقیم بین نواحی مختلف انجام شود.
برای تشخیص نوع آدرسدهی غیرمستقیم، فقط به وجود AR1 یا MD نگاه نکنید. باید بررسی کنید که مقدار داخل آن چیست، آیا Pointer است یا Number، Area در کجا مشخص شده و Offset چگونه محاسبه میشود. همین موارد نوع دقیق آدرسدهی را مشخص میکنند.
آدرسدهی غیرمستقیم در STL به PLC اجازه میدهد بهجای استفاده از آدرسهای ثابت، آدرس مقصد را از طریق Pointer، Number یا Register محاسبه و تعیین کند. این قابلیت یکی از ابزارهای مهم برای نوشتن برنامههای انعطافپذیر و حرفهای در PLCهای زیمنس است.
چهار ساختار اصلی که در این مقاله بررسی شدند عبارتاند از:
Pointer داخل Memory ذخیره میشود و برای دسترسی به آدرس استفاده میشود.
۲. Memory Indirect Addressing with Number
یک Number داخل Memory قرار میگیرد و شماره DB، Timer یا سایر اشیاء را مشخص میکند.
۳. Register-Indirect Area-Internal Addressing
AR1 یا AR2 شامل Offset است و Area در خود دستور مشخص میشود.
۴. Register-Indirect Area-Crossing Addressing
Pointer موجود در Register میتواند شامل Area و Offset باشد و امکان دسترسی غیرمستقیم بین نواحی مختلف را فراهم کند.
آموزش برنامهنویسی STL زیمنس، آدرسدهی مستقیم و غیرمستقیم، تحلیل برنامه PLC و عیبیابی سیستمهای اتوماسیون صنعتی
خرید و تعمیرات تجهیزات زیمنس
برق موشن ارائهدهنده خدمات فروش، مشاوره، راهاندازی و تعمیرات درایوهای زیمنس است. برای خرید تجهیزات زیمنس یا دریافت خدمات تعمیرات درایو زیمنس، بخش موردنظر خود را انتخاب کنید.
خرید، تعمیرات و اجرای پروژه SIEMENS
جهت خرید HMI زیمنس، PLC زیمنس، اینورتر SIEMENS و سایر محصولات اتوماسیون صنعتی یا برای تعمیرات و اجرای پروژههای اتوماسیون صنعتی زیمنس با برق موشن تماس بگیرید.
فروش محصولات SIEMENS 09331234717 تعمیرات تجهیزات SIEMENS 09011234717 اجرای پروژههای اتوماسیون صنعتی 09381234717تنظیمات بوسترپمپ درایو دانفوس درایو DANFOSS FC51 شرکت دانفوس یکی از پرکاربردترین اینورتر های شرکت دانفوس است . اينورتر FC51 با نام Micro VLT Danfoss که توسط شرکت دانفوس توليد می شود در محدوده توان 0.18 کيلو وات تا 22 کيلو وات موجود است . مدل تکفاز اين اينورتر، از 0.18 تا 2.2 کيلو وات […]
آموزش زبان STL زیمنس؛ کنترل برنامه، تایمر و عملیات داده آموزش دستورات Program Control، Shift و Rotate، Timer، Word Logic و Accumulator بخش دهم: Program Control دستورات Program Control برای کنترل روند اجرای برنامه استفاده میشوند. با کمک این دستورات میتوان اجرای یک Block را پایان داد، بلوک دیگری را فراخوانی کرد یا بخشی از […]
دانلود منوال و کاتالوگ درایو تتا درایوهای TETA Electric برای کاربردهای عمومی تا صنعتی سنگین طراحی شدهاند و در ایران به دلیل قیمت مناسب، امکانات قابل قبول و خدمات پس از فروش، در پروژههای مختلف استفاده میشوند. اقتصادی، مناسب ماشینآلات عمومی و کنترل سرعت موتورها 1. سری MA410 این سری از اینورتر های TETA برای […]
PID در پی ال سی فتک استفاده از PID با پی ال سی فتک یکی از راهکارهای کاربردی برای کنترل دقیق فرآیندهای صنعتی است. کنترل PID در PLC FATEK امکان کنترل پارامترهایی مانند دما، فشار، دبی، سطح و سرعت را فراهم میکند. مفهوم PID به زبان ساده (در محیط صنعتی) P: P (Proportional – تناسبی): […]
کیپد ATV320 چیست؟ راهنمای کامل دکمهها، تنظیمات و قابلیتهای کیپد اشنایدر کیپد ATV320 یکی از مهمترین ابزارهای کار با درایو Altivar Machine ATV320 اشنایدر الکتریک است. این پنل به کاربر اجازه میدهد بدون نیاز به کامپیوتر، بسیاری از پارامترهای درایو را مشاهده و تنظیم کند. درایو ATV320 یکی از درایوهای پرکاربرد اشنایدر در ماشینآلات صنعتی، […]
درایوهای فرکانس متغیر(VFD)شرکت Electric Fuji از پیشرفته ترین تجهیزات کنترل دور موتور در صنعت هستند. این درایوها با تنظیم دقیق فرکانس و ولتاژ خروجی، علاوه بر بهینه سازی مصرف انرژی، کنترل گشتاور و سرعت را با دقت بالا فراهم میکنند. این مقاله به بررسی ساختار،کاربردها و نکات فنی سری های مختلف درایو فوجی میپردازد کاربردهای […]
جهت خرید پی ال سی فتک کلیک کنید راهنمای انتخاب PLC فتک انتخاب PLC مناسب یکی از مهمترین بخشهای طراحی و اجرای سیستمهای اتوماسیون صنعتی است. بسیاری از مهندسان هنگام طراحی یا ارتقای یک پروژه، علاوه بر قابلیتهای فنی، عواملی مانند قیمت، دسترسی به قطعات، سهولت برنامهنویسی و خدمات پس از فروش را نیز در […]
HMI فتک | معرفی HMI FATEK، مدلها، ابعاد، مزایا و کاربردها HMI فتک یکی از تجهیزات مهم در سیستمهای اتوماسیون صنعتی است که برای نمایش اطلاعات، کنترل فرآیند، مانیتورینگ تجهیزات و ارتباط اپراتور با ماشینآلات استفاده میشود. HMI FATEK میتواند در کنار PLC، اینورتر، سروو، تجهیزات اندازهگیری و سایر تجهیزات صنعتی مورد استفاده قرار گیرد […]
آموزش PLC دلتا با توجه به قیمت مناسب و سادگی در برنامهنویسی، مسیر ورود بسیاری از متخصصان اتوماسیون به پروژههای واقعی صنعتی و کارخانههای بزرگ را هموار کرده است. چه در حال راهاندازی یک خط تولید جدید باشید، چه قصد بهینه سازی سیستمهای موجود را داشته باشید، یا صرفاً علاقهمند به گسترش دانش فنی خود […]
نظری برای این وجود ندارد.