آموزش زبان STL زیمنس؛ Counter، Data Block و Logic Control

آموزش STL در PLC زیمنس با مثال‌های کاربردی

فصل چهارم: دستورات Counter در STL

Counter یا شمارنده در PLC برای شمارش رویدادها استفاده می‌شود؛ برای مثال شمارش تعداد قطعات تولیدشده، تعداد دفعات عبور قطعه از سنسور، تعداد سیکل‌های دستگاه یا تعداد دفعات اجرای یک فرآیند.

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

مقدار Counter مستقیماً داخل ACCU قرار ندارد. هر Counter ناحیه حافظه مخصوص خودش را دارد. بنابراین وقتی از عبارتی مثل C10 استفاده می‌کنیم، منظور Counter شماره 10 است، نه اینکه مقدار Counter برابر 10 باشد.

برای مثال C10 یعنی شمارنده شماره 10 و ممکن است مقدار فعلی آن 0، 5، 25 یا هر مقدار دیگری در محدوده مجاز Counter باشد.

اگر بخواهیم مقدار فعلی C10 را بخوانیم، از دستور L C10 استفاده می‌کنیم. در این حالت مقدار Counter شماره 10 از ناحیه Counter خوانده شده و در ACCU1 قرار می‌گیرد.

دستور فعال‌سازی Counter

FR
دستور FR برای آزاد یا فعال کردن Counter هنگام تشخیص لبه مثبت نتیجه منطقی RLO استفاده می‌شود. زمانی که RLO از صفر به یک تغییر کند، Counter برای عملیات شمارش آماده می‌شود. استفاده از FR همیشه الزامی نیست و در بسیاری از برنامه‌ها خود تغییر RLO برای ایجاد لبه شمارش کافی است.
مثال کوتاه
A I0.0
FR C10

در این مثال C10 یعنی Counter شماره 10 و با لبه مثبت سیگنال I0.0 فعال می‌شود.

خواندن مقدار Counter

L C10
دستور L C10 مقدار فعلی Counter شماره 10 را از ناحیه Counter می‌خواند و در ACCU1 قرار می‌دهد. توجه کنید که C10 خودِ Counter شماره 10 است؛ عدد موجود در آن ممکن است مثلاً 25 باشد.
مثال کوتاه
L C10
T MW20

مقدار فعلی Counter شماره 10 در MW20 ذخیره می‌شود.

خواندن مقدار Counter به صورت BCD

LC C10
دستور LC مقدار فعلی Counter شماره 10 را به صورت BCD در ACCU1 قرار می‌دهد. این دستور زمانی کاربرد دارد که مقدار Counter را با فرمت BCD در ادامه برنامه استفاده کنیم.
مثال کوتاه
LC C10
T MW20

Reset کردن Counter

R C10
دستور R C10 برای صفر کردن Counter شماره 10 استفاده می‌شود. اگر RLO برابر یک باشد، مقدار Counter صفر خواهد شد.
مثال کوتاه
A I0.1
R C10

با فعال شدن I0.1، Counter شماره 10 صفر می‌شود.

قرار دادن مقدار اولیه Counter

S C10
دستور S C10 برای قرار دادن مقدار Preset در Counter شماره 10 استفاده می‌شود. مقدار موردنظر قبل از اجرای S باید در قالب مناسب در ACCU قرار گرفته باشد.
مثال کوتاه
L C#20
A I0.0
S C10

با برقرار شدن شرط I0.0، مقدار اولیه Counter شماره 10 برابر 20 قرار می‌گیرد.

شمارش افزایشی

CU C10
دستور CU برای افزایش مقدار Counter شماره 10 استفاده می‌شود. هر بار که RLO از صفر به یک تغییر کند، مقدار Counter یک واحد افزایش پیدا می‌کند.
مثال کوتاه
A I0.0
CU C10

اگر Counter شماره 10 در ابتدا مقدار 5 داشته باشد، با یک لبه مثبت مقدار آن به 6 تبدیل می‌شود.

شمارش کاهشی

CD C10
دستور CD برای کاهش مقدار Counter شماره 10 استفاده می‌شود. هر بار که RLO از صفر به یک تغییر کند، مقدار Counter یک واحد کاهش پیدا می‌کند.
مثال کوتاه
A I0.0
CD C10

اگر C10 مقدار 5 داشته باشد، یک لبه مثبت باعث می‌شود مقدار آن به 4 برسد.

مثال کاربردی شمارش قطعات

A I0.0
CU C1

A I0.1
R C1

در این مثال با هر پالس سنسور روی I0.0، Counter شماره 1 یک واحد افزایش پیدا می‌کند. ورودی I0.1 نیز به عنوان فرمان Reset استفاده شده است.

فصل پنجم: Data Block در STL

Data Block یا DB برای ذخیره اطلاعات موردنیاز برنامه PLC استفاده می‌شود. در پروژه‌های صنعتی معمولاً اطلاعات مربوط به یک ماشین، تنظیمات، پارامترها و مقادیر فرآیند داخل DB نگهداری می‌شوند.

در STEP 7 با دو مفهوم مهم روبه‌رو هستیم: Shared Data Block و Instance Data Block.

Shared DB می‌تواند توسط بخش‌های مختلف برنامه استفاده شود، در حالی که Instance DB به یک FB مربوط می‌شود و داده‌های همان FB را نگهداری می‌کند.

باز کردن Data Block

OPN DB10
دستور OPN برای باز کردن یک Data Block استفاده می‌شود. در این مثال DB10 یعنی Data Block شماره 10. بعد از باز شدن DB می‌توان با دستورات مربوط به DB به داده‌های آن دسترسی پیدا کرد.
مثال کوتاه
OPN DB10
L DBW0
T MW20

ابتدا DB10 باز می‌شود، سپس مقدار DBW0 خوانده شده و در MW20 قرار می‌گیرد.

جابه‌جایی Shared DB و Instance DB

CDB
دستور CDB برای Exchange کردن وضعیت Shared DB و Instance DB فعال استفاده می‌شود. با این دستور اطلاعات رجیسترهای مربوط به DBهای فعال با یکدیگر جابه‌جا می‌شوند.
مثال کوتاه
OPN DB10
OPN DI20
CDB

دریافت طول Shared DB

L DBLG
دستور L DBLG طول Shared Data Block فعال را در ACCU1 قرار می‌دهد. این قابلیت می‌تواند برای بررسی اندازه Data Block از داخل برنامه استفاده شود.
مثال کوتاه
OPN DB10
L DBLG
T MW10

دریافت شماره Shared DB

L DBNO
دستور L DBNO شماره Shared Data Block فعال را در ACCU1 قرار می‌دهد. به عنوان مثال اگر DB10 فعال باشد، مقدار شماره آن 10 خواهد بود.
مثال کوتاه
OPN DB10
L DBNO
T MW10

دریافت طول Instance DB

L DILG
دستور L DILG طول Instance Data Block فعال را در ACCU1 قرار می‌دهد. این دستور برای بررسی اندازه Instance DB فعال کاربرد دارد.
مثال کوتاه
OPN DI10
L DILG
T MW10

دریافت شماره Instance DB

L DINO
دستور L DINO شماره Instance Data Block فعال را در ACCU1 قرار می‌دهد. بنابراین می‌توان شماره Instance DB در حال استفاده را از داخل برنامه بررسی کرد.
مثال کوتاه
OPN DI10
L DINO
T MW10

مثال کاربردی Data Block

OPN DB10

L DBW0
T MW20

L DBW2
T MW22

در این مثال DB10 باز می‌شود و اطلاعات موجود در DBW0 و DBW2 به Markerهای MW20 و MW22 منتقل می‌شوند.

فصل ششم: Logic Control و دستورات Jump

در STL برنامه معمولاً از بالا به پایین اجرا می‌شود، اما با استفاده از دستورات Jump می‌توان مسیر اجرای برنامه را تغییر داد.

به کمک Jump می‌توان بر اساس وضعیت ورودی‌ها، نتیجه محاسبات، Overflow یا وضعیت BR تصمیم گرفت که کدام بخش برنامه اجرا شود.

Label چیست؟

Label یک نام برای مشخص کردن مقصد پرش است. مثلاً:

NEXT:

در این مثال NEXT نام Label است و هر دستور Jump می‌تواند برنامه را به این نقطه منتقل کند.

پرش بدون شرط

JU
دستور JU مخفف Jump Unconditional است. این دستور بدون توجه به وضعیت RLO یا نتیجه محاسبات، مستقیماً به Label مشخص‌شده پرش می‌کند.
مثال کوتاه
JU NEXT

L 10
T MW10

NEXT:
L 20
T MW10

بخش بین JU NEXT و NEXT اجرا نمی‌شود و برنامه مستقیماً به NEXT می‌رود.

پرش بر اساس مقدار ACCU

JL
دستور JL یا Jump to Label برای انتخاب یکی از چند مسیر پرش استفاده می‌شود. انتخاب مسیر بر اساس مقدار موجود در ACCU1 انجام می‌شود. مقدار موجود در بخش Low از ACCU1 مشخص می‌کند کدام مسیر انتخاب شود. بنابراین JL برای ساختارهای چندشاخه در STL بسیار کاربردی است.
مثال کوتاه
L 1
JL SELECT

JU SEG0
JU SEG1
JU SEG2

SEG0:
L 10
JU END

SEG1:
L 20
JU END

SEG2:
L 30

END:
T MW10
نکته مهم: در JL فقط یک Jump ساده نداریم؛ مقدار موجود در ACCU1 تعیین می‌کند برنامه به کدام Label از جدول Jump منتقل شود.

پرش در صورت RLO برابر یک

JC
دستور JC زمانی اجرا می‌شود که RLO برابر یک باشد. در این حالت برنامه به Label مشخص‌شده پرش می‌کند. این دستور برای ساختن شرط‌های IF در STL بسیار کاربردی است.
مثال کوتاه
A I0.0
JC RUN

JU STOP

RUN:
L 1
T MW10

STOP:
NOP 0

پرش در صورت RLO برابر صفر

JCN
دستور JCN زمانی پرش می‌کند که RLO برابر صفر باشد. به زبان ساده می‌توان از آن برای ساخت شرط «اگر شرط برقرار نبود، به این قسمت برو» استفاده کرد.
مثال کوتاه
A I0.0
JCN OFF

L 100
T MW10

OFF:
NOP 0

پرش با ذخیره RLO در BR

JCB
دستور JCB در صورتی که RLO برابر یک باشد پرش می‌کند و در عین حال وضعیت RLO را در بیت BR ذخیره می‌کند. بنابراین می‌توان از نتیجه ذخیره‌شده در BR در ادامه برنامه استفاده کرد.
مثال کوتاه
A I0.0
JCB RUN

L 0
T MW10

RUN:
L 1
T MW10

پرش در صورت RLO صفر با BR

JNB
دستور JNB در صورتی که RLO برابر صفر باشد پرش می‌کند و وضعیت RLO را در BR ذخیره می‌کند.
مثال کوتاه
A I0.0
JNB OFF

L 100
T MW10

OFF:
NOP 0

پرش در صورت BR برابر یک

JBI
دستور JBI زمانی پرش می‌کند که بیت BR برابر یک باشد. بنابراین باید وضعیت BR از قبل توسط برنامه ایجاد یا ذخیره شده باشد.
مثال کوتاه
A I0.0
SAVE
JBI RUN

L 0
T MW10

RUN:
L 1
T MW10

پرش در صورت BR برابر صفر

JNBI
دستور JNBI زمانی پرش می‌کند که بیت BR برابر صفر باشد. این دستور برای بررسی نتیجه‌ای که قبلاً در BR ذخیره شده است کاربرد دارد.
مثال کوتاه
A I0.0
SAVE
JNBI STOP

L 1
T MW10

STOP:
NOP 0

تفاوت OV و OS

وضعیت
مفهوم
کاربرد
OV
Overflow
وضعیت Overflow مربوط به نتیجه فعلی عملیات
OS
Stored Overflow
وضعیت ذخیره‌شده Overflow برای استفاده بعدی در همان چرخه

تفاوت اصلی این است که OV وضعیت Overflow جاری را نشان می‌دهد، در حالی که OS نتیجه Overflow را به صورت ذخیره‌شده نگه می‌دارد. به همین دلیل ممکن است OV در ادامه یک دستور تغییر کند، اما OS برای نگه‌داشتن اطلاعات Overflow قبلی مورد استفاده قرار گیرد.

پرش در صورت Overflow

JO
دستور JO مخفف Jump if Overflow است. اگر بیت OV برابر یک باشد، برنامه به Label مشخص‌شده پرش می‌کند. این دستور برای تشخیص خطا یا معتبر نبودن نتیجه عملیات ریاضی کاربرد دارد.
مثال کوتاه
L MW0
L 3
*I
JO OVER

T MW10
JU END

OVER:
L 0
T MW10

END:
NOP 0

پرش بر اساس Overflow ذخیره‌شده

JOS
دستور JOS مخفف Jump if Stored Overflow است. اگر بیت OS برابر یک باشد، برنامه به Label مشخص‌شده پرش می‌کند. این دستور زمانی مهم است که بخواهیم نتیجه Overflow ذخیره‌شده را بعداً بررسی کنیم.
مثال کوتاه
L MW0
L 3
*I
JOS OVER

T MW10

OVER:
NOP 0

پرش در صورت صفر بودن نتیجه

JZ
دستور JZ مخفف Jump if Zero است. اگر نتیجه عملیات محاسباتی برابر صفر باشد، برنامه به Label مشخص‌شده پرش می‌کند.
مثال کوتاه
L MW0
L MW2
-I
JZ ZERO

ZERO:
L 0
T MW10

پرش در صورت صفر نبودن نتیجه

JN
دستور JN در صورتی که نتیجه عملیات صفر نباشد، برنامه را به Label مشخص‌شده منتقل می‌کند.
مثال کوتاه
L MW0
L 0
-I
JN NOTZERO

NOTZERO:
L 1
T MW10

پرش در صورت مثبت بودن نتیجه

JP
دستور JP زمانی پرش می‌کند که نتیجه عملیات بزرگ‌تر از صفر باشد.
مثال کوتاه
L MW0
L 10
-I
JP POSITIVE

POSITIVE:
L 1
T MW10

پرش در صورت منفی بودن نتیجه

JM
دستور JM زمانی پرش می‌کند که نتیجه محاسبات کوچک‌تر از صفر باشد.
مثال کوتاه
L MW0
L 10
-I
JM NEGATIVE

NEGATIVE:
L 1
T MW10

پرش در صورت مثبت یا صفر

JPZ
دستور JPZ زمانی پرش می‌کند که نتیجه محاسبات بزرگ‌تر یا مساوی صفر باشد. بنابراین دو حالت مثبت و صفر را پوشش می‌دهد.
مثال کوتاه
L MW0
L 10
-I
JPZ OK

L 0
T MW10

OK:
L 1
T MW10

پرش در صورت منفی یا صفر

JMZ
دستور JMZ زمانی پرش می‌کند که نتیجه عملیات کوچک‌تر یا مساوی صفر باشد.
مثال کوتاه
L MW0
L 10
-I
JMZ LOW

L 1
T MW10

LOW:
L 0
T MW10

پرش در شرایط Unordered

JUO
دستور JUO مخفف Jump if Unordered است. در عملیات‌هایی که نتیجه می‌تواند وضعیت Unordered ایجاد کند، می‌توان از این دستور برای انتقال برنامه به مسیر مناسب استفاده کرد. این دستور بیشتر در محاسبات و مقایسه‌های خاص عددی اهمیت پیدا می‌کند.
مثال کوتاه
L MD10
L 0
/D
JUO ERROR

T MD14

ERROR:
L 0
T MD14

ایجاد حلقه تکرار

LOOP
دستور LOOP برای ایجاد یک حلقه تکرار در برنامه STL استفاده می‌شود. تعداد دفعات اجرای حلقه در بخش Low از ACCU1 قرار می‌گیرد. هر بار که دستور LOOP اجرا می‌شود، یک واحد از 8 بیت پایین ACCU1 یعنی ACCU-LL کم می‌شود. اگر مقدار ACCU-LL بعد از کاهش برابر صفر نباشد، برنامه به Label مشخص‌شده برمی‌گردد و حلقه ادامه پیدا می‌کند. وقتی ACCU-LL به صفر برسد، پرش انجام نمی‌شود و اجرای برنامه ادامه پیدا می‌کند.
مثال کوتاه
L 10

NEXT:
L MW10
L 1
+I
T MW10

LOOP NEXT
روند اجرای LOOP:
مقدار 10 ابتدا در ACCU-LL قرار می‌گیرد.
بعد از هر اجرای LOOP، یک واحد از ACCU-LL کم می‌شود.
تا زمانی که ACCU-LL صفر نشده باشد، برنامه دوباره به Label یعنی NEXT برمی‌گردد.
بنابراین در این مثال حلقه 10 بار اجرا می‌شود.

مثال ترکیبی از Jump

L MW10
L 50
-I
JM LOW

L MW10
L 50
-I
JP HIGH

JU NORMAL

LOW:
L 1
T MW20
JU END

NORMAL:
L 2
T MW20
JU END

HIGH:
L 3
T MW20

END:
NOP 0

در این مثال مقدار MW10 با عدد 50 مقایسه می‌شود. اگر نتیجه منفی باشد، مسیر LOW اجرا می‌شود. اگر نتیجه مثبت باشد، مسیر HIGH اجرا می‌شود. و در صورت صفر بودن نتیجه، برنامه وارد مسیر NORMAL خواهد شد.

خرید و تعمیرات تجهیزات زیمنس

برق موشن ارائه‌دهنده خدمات فروش، مشاوره، راه‌اندازی و تعمیرات درایوهای زیمنس است. برای خرید تجهیزات زیمنس یا دریافت خدمات تعمیرات درایو زیمنس، بخش موردنظر خود را انتخاب کنید.

خرید، تعمیرات و اجرای پروژه SIEMENS

جهت خرید HMI زیمنس، PLC زیمنس، اینورتر SIEMENS و سایر محصولات اتوماسیون صنعتی یا برای تعمیرات و اجرای پروژه‌های اتوماسیون صنعتی زیمنس با برق موشن تماس بگیرید.

فروش محصولات SIEMENS 09331234717 تعمیرات تجهیزات SIEMENS 09011234717 اجرای پروژه‌های اتوماسیون صنعتی 09381234717
برق موشن نمایندگی زیمنس | فروش، تعمیرات و اجرای پروژه‌های اتوماسیون صنعتی
  • تنظیمات کیپد درایو اینوت GD27

    درایو GD27 اینوت یکی از درایوهای سری Goodrive27 شرکت INVT است که برای کنترل و مدیریت موتور در کاربردهای صنعتی مورد استفاده قرار می‌گیرد. یکی از بخش‌های مهم هنگام کار با این درایو، شناخت اطلاعاتی است که از طریق کیپد و پارامترهای مانیتورینگ در اختیار کاربر قرار می‌گیرد. در این مقاله از برق موشن، تنظیمات […]

  • تعمیر PLC زیمنس

    تعمیر PLC زیمنس در مرکز برق موشن با هدف بازگرداندن سریع و مطمئن این تجهیزات به چرخه عملیاتی طراحی شده است. ما با تکیه بر دانش فنی عمیق و تجربه کار با مدل‌های مختلف زیمنس، قادر به عیب ‌یابی دقیق ریشه‌ای‌ترین مشکلات سخت‌افزاری هستیم تا از نیاز به جایگزینی ماژول‌های گران ‌قیمت جلوگیری کنیم. با […]

  • دانلود منوال و کاتالوگ درایو امرن

    فهرست مطالب دانلود منوال و کاتالوگ درایو امرن شرکت Omron یکی از برندهای شناخته‌شده ژاپنی در حوزه اتوماسیون صنعتی، تجهیزات کنترلی و سیستم‌های هوشمند تولید است. درایوهای امرن برای کنترل سرعت، گشتاور، شتاب‌گیری و توقف موتورهای الکتریکی در کاربردهای مختلف صنعتی مورد استفاده قرار می‌گیرند. درایوهای Omron در ماشین‌آلات صنعتی، خطوط تولید، تجهیزات بسته‌بندی، نوار […]

  • تنظیم پارامتر درایو GD350 اینوت | کاتالوگ فارسی اینورتر GD350A

    منوال فارسی و کاتالوگ اینورتر INVT GD350A معرفی مشخصات، پارامترها، ترمینال‌ها و کارت‌های توسعه اینورتر GD350A معرفی اینورتر INVT GD350A INVT GD350A نسل جدید اینورترهای High Performance شرکت INVT است که به عنوان نسخه ارتقایافته GD350 طراحی شده است. این درایو با استفاده از پلتفرم سخت‌افزاری و نرم‌افزاری جدید، امکانات گسترده‌ای برای کنترل دقیق موتور، […]

  • خرید تجهیزات فتک FATEK

    اجزای اصلی سخت‌افزار PLC فتک سخت‌افزار PLC فتک از بخش‌های مختلفی تشکیل شده است که هر کدام وظیفه مشخصی در کنترل، پردازش، دریافت و ارسال سیگنال‌ها و ارتباط با تجهیزات صنعتی دارند. شناخت این بخش‌ها به انتخاب PLC مناسب برای هر پروژه کمک می‌کند. CPU (واحد پردازش مرکزی) بخش اصلی PLC که وظیفه اجرای برنامه، […]

  • تنظیم مد گشتاور درایو اینوت GD200A (TORQUE CONTROL)

    کنترل گشتاور TORQUE CONTROL درایو اینوت GD200A کنترل گشتاور درایو اینوت GD200A یکی از قابلیت‌های مهم اینورتر برای کاربردهایی است که مقدار گشتاور موتور باید به‌صورت دقیق کنترل شود و عملکرد سیستم فقط بر اساس ثابت نگه داشتن سرعت نباشد. در حالت Torque Control، درایو تلاش می‌کند گشتاور مرجع را دنبال کند و هم‌زمان فرکانس […]

  • آموزش زبان STL -دستورات بیت و مقایسه و تبدیل

    آموزش زبان STL زیمنس؛ دستورات و مثال‌های کاربردی آموزش دستورات مهم زبان برنامه‌نویسی STL در PLC زیمنس جست‌وجوی سریع آدرس در برنامه PLC زیمنس یکی از مهم‌ترین مهارت‌ها هنگام کار با برنامه‌های PLC زیمنس، پیدا کردن سریع محل استفاده از یک آدرس در برنامه است. در پروژه‌های کوچک شاید بتوان آدرس‌ها را به‌صورت دستی پیدا […]

  • مشخصات و کاتالوگ PLC S7-1200 زیمنس | ماژول های پی ال سی S7-1200

    معرفی ماژول های PLC S7-1200 مشخصات و کاتالوگ PLC S7-1200 زیمنس | ماژول های پی ال سی S7-1200 PLC S7-1200 زیمنس یکی از کنترلرهای پرکاربرد خانواده SIMATIC برای اجرای پروژه‌های اتوماسیون صنعتی در محدوده عملکرد پایین تا متوسط است. این PLC با طراحی کامپکت، ورودی و خروجی‌های یکپارچه، قابلیت توسعه ماژولار و امکانات ارتباطی متنوع، […]

  • پارامتر های شبکه درایو اینوت GD27

    شبکه درایو GD27 اینوت یکی از قابلیت‌های مهم اینورتر Goodrive27 برای اتصال درایو به PLC، HMI، کنترلر صنعتی و سایر تجهیزات اتوماسیون است. ارتباط سریال GD27 بر پایه رابط RS485 و پروتکل Modbus انجام می‌شود و پارامترهای گروه P14 برای تنظیم مشخصات این ارتباط در نظر گرفته شده‌اند. در این مقاله تنظیمات شبکه، آدرس‌دهی Modbus، […]