بخشی از متن مقاله آشنايي با زبان S7 :
مدلهای مختلف PCL های سری S7 دارای شباهتها و تفاوتهائی هستند, مثلا تعداد یکتائی های BIT ورودی یا خروجی, تعداد یکتائی های مخصوص حافظه (special memory bits) یعنی همان یکتایی های پرچم, شماره و نوع وقایع قطع (interrupt events) و ; از یک مدل به مدل دیگر تفاوت هائی دارد. همچنین بعضی دستورها ممکناست برای مدلی معتبر و برای مدلی دیگر نامعتبر باشد. با این وجود کار کردن با یک مدل خاص توانائی های لازم برای کار کردن با مدل های دیگر را فراهم میآورد. در اینجا PLC های مدل S702xx ساخت زیمنس بعنوان نمونه مورد بررسی قرار میگیرد. این PLC ساده ترین مدل از این سری میباشد و آشنائی با آن زمینه خوبی را برای کار کردن با انواع پیشرفته تر ایجاد میکند.
اجزا یک دستور
برنامه نویسی به زبان S7 بسیار شبیه به برنامه نویسی برای هر سیستم ریزپردازنده دیگری است .
در این شکل دستور A11.3 شامل عمل (operation) و منطقی (AND) است که با حورف A نشان داده میشود. این عمل بر روی عملوند (Operand) یعنی 113 انجام میگردد. جنس عملوند ورودی (input) است که با حرف I نشان داده میشود. نشانی این ورودی 13 میباشد.
منظور از نشانی 13 بیت 3( یکتایی 3) از بایت 1(هشتائی 1) از مجموعه ورودی ها به PLC میباشد. پاره ای از حروف اختصاری برای نشان دادن عملوند ها در زبان S7 در جدول آمده است.
با اضافه نمدن حروف B,W یا D به سمت راست هر یک از علامات اختصاری در جدول میتوان اندازه آنها را به هشتائی , دو هشتایی word یا چهار هشتائی (double word) افزایش داد. مثلا IB یعنی هشتایی ورودی و IB0 یعنی هشتایی ورودی 0 به همین ترتیب AIW یعنی دو هشتایی آنالوگ ورودی و VD یعنی چهار هشایی حافظه متغیر.
شرح پاره ای از حروف اختصاری در زبان S7 (بین المللی)
شرح نشانی در PLC
S7-221 عنوان علامت اختصاری
ورودی فیزیکی 0-157 INPUT
خروجی فیزیکی 015-7 OUTPUT
حافظه عمومی, قابل خواندن و نشتن 0-317 INTERNAL MEMORY BIT
حافظه مخصوص, قابل خواندن و نوشتن برای کاربردهایخاصی تعریف شده است 01797 VARIABLE MEMORY BIT
حافظه قابل خوان و نوشتن برای جابجائی اعداد و داده ها استفاده میشود 020477 SEQUENCE CONTROL RELAY BIT
حافظه نوع S در کنترل دنباله ای استفاده میشود 0-317 TIMER BIT TIMER CURRENT VALUE
یکتائی یا مقدار جاری شمارنده 0-255 WORD COUNTER BIT COUNTER CURRENT VALUE
متغیر محلی فقط در زیر برنامه ای که تعریف شده شناخته میشود 0-597 LOCAL VARIABLE MEMORY BIT
ورودی آنالوگ , قابل خواندن 0-597 ANALOG INPUT BIT
خروجی آنالوگ 0-597 ANALOG OUTPUT BIT
ثبات انباره قابل خواندن و نوشتن 0-3 ACCUMULATOR REGISTER
نشانه گذاری (آدرس گذاری) عملوندها:
عملوندها را به صورت بایت (هشتایی) دسته بندی میکنیم و سپس هر عضو در دسته هشتائی را بصورت بیت (یکتائی) شماره گذاری مینمائیم. مثلا در plc ای که دارای 20 ورودی است, ورود ها را ابتدا بصورت هشتایی شماره صفر (بایت صفر) هشتائی شماره یک بایت یک و هشتائی شماره دو (بایت دو) دسته بندی میگردند و سپس در داخل هر هشتائی, یکتائی ها (بیت ها) از شماره صفر تا شماره هفت ماره گذاری میشود. دقت نمائید که که در اینجا هشتائی شماره دو فقط داری چهار یکتائی (بیت) خواهد بود. این نحوه شماره گذاری در شکل زیر بیان دو هشتائی متوالی را یک کلمه WORD و چهار هشتایی متوالی را دو کلمه DOUBLE WORD مینامیم. در اینجا از کلمه یکتائی بجای بیت (BIT هشتائی بجای بایت ( BYTE) دو هشتایی بجای ورد WORD و چهار هشتائی بجای دبل ورد (DOUBLE WORD) استفاده میشود. تعاریف فوق در استفاده از محتوای مناطق حافظه دارای اهمیت است.در PCL های سری S7 , مقادیر جاری شمارندهها (Counters) و زمان سنج ها (Timers) بصورت دوهشتائی میباشد و بنابراین برای نشانی دهی و جابجائی آن باید دقت نمود.
روشهای نشانی دهی (آدرسدهی):
عملوندهای مورد استفاده در یک برنامه به دو روش نشانی دهی میشود:
1- نشانیدهی مستقیم :
در این روش عملوند بصورت منطقه حافظه (memory area) , اندازه (size) و محل آن در منطقه V (variable memory bit) بصورت دو هشتائی (word) و در محل 790 میباشد.
در این روش مناطق حافظه (I,Q, M, SM, V, …) با اندازههای هشتائی, دو هشتائی یا چهارهشتائی (double word) بیان میشود. مثلا هر گاه بخواهیم به V100 بعنوان یک هشتائی( byte) دسترسی پیدا کنیم, آن را بصورت VB100 بیان میکنیم. برای دسترسی به یکتائی (بیت) موردنظر از یک هشتائی, باید شماره آن را بعد از شماره هشتائی بیان کنیم. مثلا هر گاه منظور دسترسی به یکتائی شماره 7 از VB100 باشد, باید نشانی آن را بصورت VB100.7 بیان داریم.
2- نشانی دهی غیر مستقیم:
در این روش از یک نشانگر (pointer) برای اشاره به محل (Location) مورد نظر استفاده میشود. بدین ترتیب که ابتدا با استفاده از دستور انتقال چهارهشتائی (move double word) یعنی MOVD نشانی مبدأ را به انباره (AC3 یا AC2 یا AC1) یا به منطقه ای از V منتقل میکنیم. سپس با استفاده از یک دستور انتقال دیگر(مثلا MOVD) محتوای آدرس مبدأ را به مقصد منتقل مینمائیم.
مکان حافظه مخصوص (Special memory areas):
در PCLهای سری S7 از اصطلاح یکتائی حافظه مخصوص بجای یکتائی پرچم (flag bit)استفاده میشود. در مکانهایی از حافظه PCL که با SM مشخص میشود, اطلاعاتی مربوط به پیشامدهای با اهمیت و همچنین اطلاعات مخصوص دیگری ثبت میگردد. مثلا یکتائی SMO.1 فقط در اولین پویش برنامه کاربر, (1) میشود و در پویشهای بعدی (0)باقی میماند. بنابراین از این یکتائی میتوان بعنوان علامتی (پرچمی) برای آغازین نمودن (initialization) برنامه استفاده نمود و یا SM1.0 معادل پرچم صفر (zero) میباشد. یعنی هنگامیکه حاصل اجرای یک دستور صفر باشد, این یکتائی (1) میشود.
معمولا در هر هشتائی (بایت) SMB اطلاعات مرتبط با هم وجود دارد. مثلا SMBO اطلاعات مربوط به حالات PCL در حین پویش برنامه را دربردارد و SMB1 حالات ناشی از اجرا دستورها (صفر, سرریز, تقسیم بر صفر و ; ) را نشان میدهد.
در PCL های سری S7 از SMB ها برای برنامهریزی و تعیین مشخصات PCL نیز استفاده میشود. مثلا SMB8- SMB21 برای تعیین مدول های متصل به PCL بکار میرود و ازSMB30 برای کنترل ارتباطات PCL استفاده میشود. یا از SMB36- SMB65 برای برنامه ریزی شمارندههای سرعت بالا استفاده میگردد.
تعداد و وظائف هشتائیهای حافظه مخصوص (SMB ) ممکن است از یک مدل به مدل دیگر تفاوت داشته باشد و معمولا توسط سازنده در راهنمای PCL مشخص میگردد.
جدول زیر که در ابتدای معرف دستور AND آمده است را در نظر بگیرید:
نوع داده عملوند ورودی/خروجی دستور
صفر/یک I,Q,M,SM,T,C,V,S,L bit(LAD, STL)
صفر/یک I,Q,M,SM,T,C,V,S,L input(FBD)
صفر/یک I,Q,M,SM,T,C,V,S,L output(FBD)
سنئن ورودی/خروجی- دستور بیان میکند که ورودی(ها) به این دستور و خروجی(ها) از این دستور چیست. مثلا در مورد فوق ورودی یا خروجی در نمایش STL, LAD یک یکتائی (bit)است. مثل 111 یا Q2.0 و در نمایش FBD ورودی یا خروجی یک ارزش یا یک جریان الکتریکی (power- flow) است. ستون عملوندها نوع عملوندهائی که ورودی یا خروجی دستور است را بیان میکند. مثلا ورودی یا خروجی این دستور در نمایش STL, LAD میتواند از جنس I, Q, M, S, T, C, V, L باشد, در حالیکه درنمایش FBD علاوه بر اینها power- flow یعنی وجود یا عدم جریان الکتریکی (1 یا0) نیز میتواند بعنوان ورودی/ خروجی دستور بشمار آید. ستون نوع داده نوع عددی ورودی یا خروجی را بیان میکند. مثلا نوع عددی داده میتواند صفر / یک, عدد طبیعی, عدد حقیقی و ; باشد.
بعد از جدول معرفی ورودی/ خروجی, در پایین آن و در قسمت چپ نمایش شکلهای مختلف دستور(STL, FBD, LAD) آمده است و در سمت راست متن توضیحات لازم برای معرفی دستور نوشته شده است.
بیان اتصال (contacts) در S7:
اتصالهای عادی باز (NO) و عادی بسته (NC) :
دستورهای (Load, And, Or, LoadNot, AndNot Or Not)
در کنترل منطقی فرامین و اطلاعات بصورت 0 یا 1 بیان میشود. صدور فرمان را با 1 و عدم صدور آن را با 0 نشان میدهیم. همچنین اطلاعات و علائمیکه حسگرها (sensors) به PCL ارسال میدارد نیز بصورت 0 یا 1 است. PCL دریافت 1 از یک ورودی را معادل با عمل کردن حسگر متصل به آن و دریافت 0 را به معنی عملنکردن آن حسگر میداند. بنابراین دریافت ولتاژ (1) از کنتاکت عادی باز به معنی عمل کردن آن کنتاکت است و عدم دریافت ولتاژ (0) از یک اتصال عادی بسته نیز به معنی عملکردن آن حسگر میباشد. در این صورت برای آنکه دریافت یا عدم دریافت ولتاژ در یک ورودی به عملکردن یا عملنکردن تبدیل شود باید با شناسائی حسگر متصل به آن ورودی, از عمل و بر روی حسگرهای عادی بسته استفاده کنیم. دستور بار (LD) و یا (OR) و شکلهای منفی آنها نیز میتواند به منظور فوق مورد استفاده قرار گیرد. دستور LD 10.0 مقدار 100 را در بالای ورودی 100 را با یکتائی (بیت) بالای پشته و منطقی نموده ونتیجه را بجای بیت بالائی پشته قرار میدهد.
دستورهای منطقی پشتهای:
برای انجام عملیاتی منطقی بر روی دادههائی که قبلا در پشته قرار داده شدهاند, از دستورهای منطقی پشتهای استفاده میکنیم. دیدیم که برای قرار دادن یک داده در پشته (بالای پشته ) از دستور بار (LD) استفاده میشود. دستورهای منطقی پشتهای از دستور بار بعلاوه دستور منطقی مورد نظر تشکیل شده است:
ALD: این دستور محتوی اولین و دومین سطح پشته را بایکدیگر و نموده و نتیجه را در بالای پشته قرار میدهد. بنابراین بعد از اجرای این دستور عمق پشته یکی یکی کم میشود.
OLD: این دستور محتوی اولین و دومین سطح پشته را یا نموده و نتیجه را در بالای پشته قرار میدهد. عمق پشته بعد از اجرای این دستور یکی کم میشود.
LPS: این دستور(L;ogic Push) محتوی بالای پشته را دو نسخهای میکند بنابراین محتوی ته پشته از آن خارج و از بین میرود.
LPP: این دستور (Logic Pop ) محتوی بالای پشته را برمیدارد. بنابراین محتوی محل بعدی در بالای پشته قرار میگیرد.
LRD: این دستور (Logic Read) محتوی دومین پشته را در بالای پشته کپی میکند.
LDS n : این دستور (Load Stack) یکتائی n پشته را در بالای پشته کپی میکند. بنابراین یکتائی انتهای پشته از آن خارج و از بین میرود.
اتصال لحظهای (Immediate Contacts):
نوع داده عملوند ورودی/خروجی دستور
صفر/یک I bit(LAD, STL)
صفر/یک I input(FBD)
در شروع هر برنامه کنترل, ابتدا PCL در یک پویش (Scan) همه ورودیها و خروجیها را میخواند و حالت آنها را (0 یا 1) در ثبات تصویر فرآیند(Process- image- register)مینویسد و سپس با توجه به این اطلاعات شروع به محاسبه منطق کنترل مینماید و بعد از اتمام کلیه دستورات برنمامه, نتایج خاص (خروجیها) را بطور یکجا به خروجیهای مربوطه اعمال میکند و مجددا تصویربرداری دیگر را آغاز نموده و این دوره تکرار میگردد. بعضی از ورودی ها ممکن است هنگامیکه PCL در حال محاسبه منطق کنترل است تغییرات آنی (Immediate) داشته باشند و این در حالی است که تصویر آنها در ثبات تصویر فرآیند دست کم تا زمان پویش بعدی بدون تغییر است. برای آشکارسازی حسگرهائی که دارای اتصال لحظهای هستند از دستورات اتصال لحظهای استفاده میکنیم. اتصالهای عادی باز هنگام اتصال لحظهای سیگنال 1 را ارسال میدارند. بنابراین برای آشکارسازی آنها میتوان از دستورات بار لحظهای (LDI) و یا و لحظهای (AI) ویا یا لحظهای (OI) استفاده نمود. به همین ترتیب برای اتصالهای عادی بسته میتوان از حالت منفی دستورهای فوق استفاده نمود.
با استفاده از این دستورات میتوان تغییرات لحظهای یک ورودی را به بالای پشته (`Top ofthestack)انتقال داد.
دستور منفی (NOT):
دستور NOT منطق حرکت فرمانها و علائم را معکوس میکند. مثلا در یک نمایش نردبانی هنگامیکه به اتصال NOT میرسیم در صورتیکه در سمت چپ اتصال فرمان 1 موجود باشد, در سمت راست آن فرمان 0 برقرار میگردد و برعکس.
دستور تغییر مثبت, منفی (Transition-negative-Transition)
نوع داده عملوندها ورودی/خروجی دستور
صفر/یک I,Q,SM,T,C,V,S,L, power flow In(FBD)
صفر/یک I,Q,SM,T,C,V,S,L, power flow out (FBD)
با استفاده از این دستور تغییر عملوند از قطع به وصل (خاموش به روشن) یا از وصل به قطع (روشن به خاموش)آشکار میشود. مثلا هر گاه آشکار سازی قطع به وصل (لبه بالا رونده) به یک حسگر مورد نظر باشد, PLC به ازای هر قطع به صول (Edge-Up) در یک پویش اجازه عبور برنامه (عبور جریان) از طریق اتصال مربوطه را میدهد. دشتور تغییر از وصل به قطع (روشن به خاموش) نیز به همین ترتیب و در جهت عکس دستور قبل عمل میکند.)