بخشی از مقاله
مدلهاي مختلف PCL هاي سري S7 داراي شباهتها و تفاوتهائي هستند، مثلا تعداد يكتائي هاي BIT ورودي يا خروجي، تعداد يكتائي هاي مخصوص حافظه (special memory bits) يعني همان يكتايي هاي پرچم، شماره و نوع وقايع قطع (interrupt events) و ... از يك مدل به مدل ديگر تفاوت هائي دارد. همچنين بعضي دستورها ممكناست براي مدلي معتبر و براي مدلي ديگر نامعتبر باشد. با اين وجود كار كردن با يك مدل خاص توانائي هاي لازم براي كار كردن با مدل هاي ديگر را فراهم ميآورد. در اينجا PLC هاي مدل S702xx ساخت زيمنس بعنوان نمونه مورد بررسي قرار ميگيرد. اين PLC ساده ترين مدل از اين سري ميباشد و آشنائي با آن زمينه خوبي را براي كار كردن با انواع پيشرفته تر ايجاد ميكند.
اجزاء يك دستور
برنامه نويسي به زبان S7 بسيار شبيه به برنامه نويسي براي هر سيستم ريزپردازنده ديگري است .
در اين شكل دستور A11.3 شامل عمل (operation) و منطقي (AND) است كه با حورف A نشان داده ميشود. اين عمل بر روي عملوند (Operand) يعني 11.3 انجام ميگردد. جنس عملوند ورودي (input) است كه با حرف I نشان داده ميشود. نشاني اين ورودي 1.3 ميباشد.
منظور از نشاني 1.3 بيت 3( يكتايي 3) از بايت 1(هشتائي 1) از مجموعه ورودي ها به PLC ميباشد. پاره اي از حروف اختصاري براي نشان دادن عملوند ها در زبان S7 در جدول آمده است.
با اضافه نمدن حروف B,W يا D به سمت راست هر يك از علامات اختصاري در جدول ميتوان اندازه آنها را به هشتائي ، دو هشتايي word يا چهار هشتائي (double word) افزايش داد. مثلا IB يعني هشتايي ورودي و IB0 يعني هشتايي ورودي 0. به همين ترتيب AIW يعني دو هشتايي آنالوگ ورودي و VD يعني چهار هشايي حافظه متغير.
شرح پاره اي از حروف اختصاري در زبان S7 (بين المللي)
شرح نشاني در PLC
S7-221 عنوان علامت اختصاري
ورودي فيزيكي 0-15.7 INPUT
خروجي فيزيكي 0.15-7 OUTPUT
حافظه عمومي، قابل خواندن و نشتن 0-31.7 INTERNAL MEMORY BIT
حافظه مخصوص، قابل خواندن و نوشتن براي كاربردهايخاصي تعريف شده است 0.179.7 VARIABLE MEMORY BIT
حافظه قابل خوان و نوشتن براي جابجائي اعداد و داده ها استفاده ميشود 0.2047.7 SEQUENCE CONTROL RELAY BIT
حافظه نوع S در كنترل دنباله اي استفاده ميشود 0-31.7 TIMER BIT TIMER CURRENT VALUE
يكتائي يا مقدار جاري شمارنده 0-255 WORD COUNTER BIT COUNTER CURRENT VALUE
متغير محلي فقط در زير برنامه اي كه تعريف شده شناخته ميشود 0-59.7 LOCAL VARIABLE MEMORY BIT
ورودي آنالوگ ، قابل خواندن 0-59.7 ANALOG INPUT BIT
خروجي آنالوگ 0-59.7 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)است. مثل 11.1 يا 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 مقدار 10.0 را در بالاي ورودي 10.0 را با يكتائي (بيت) بالاي پشته و منطقي نموده ونتيجه را بجاي بيت بالائي پشته قرار ميدهد.
دستورهاي منطقي پشتهاي:
براي انجام عملياتي منطقي بر روي دادههائي كه قبلا در پشته قرار داده شدهاند، از دستورهاي منطقي پشتهاي استفاده ميكنيم. ديديم كه براي قرار دادن يك داده در پشته (بالاي پشته ) از دستور بار (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) در يك پويش اجازه عبور برنامه (عبور جريان) از طريق اتصال مربوطه را ميدهد. دشتور تغيير از وصل به قطع (روشن به خاموش) نيز به همين ترتيب و در جهت عكس دستور قبل عمل ميكند.)