You are on page 1of 10

‫منتدى التحكم اآللي واإللكترونيات (م‪ /‬حسن الشحات)‬

‫‪http://hassanheha.forumn.net‬‬

‫التحكم اآللي والحاكمات المنطقية‬


‫الفصل الثاني عشر ‪ :‬برمجة المتحكم ‪S7-300/400‬‬
‫‪Hassan el shahat‬‬
‫برمجة المتحكم ‪STEP7 Programming S7‬‬
‫قبل أن نبدأ في عرض أوامر البرمجة نستعرض معا الذواكر الرئيسية التي تتم عليها عمليات البرمجة داخل وحدة‬
‫المعالجة فكما ذكرنا أنه حسب حجم البيانات والتي تنقسم إلى (‪ bit‬و ‪ byte‬و ‪ word‬و ‪ )double word‬فحسب هذا‬
‫الحجم تتم العمليات والبد من وجود ذواكر وسيطة ‪ Buffer Memory or Registers‬لتتم عليها تلك العمليات‪:‬‬

‫‪ -‬فالعمليات التي تتطلب حجما أكبر من ‪ bit‬واحدة تتم على ما يسمى ‪ Accumulator‬حيث أنه يوجد لكل وحدة‬
‫معالجة وحدتي ‪ Accumulator‬على األقل ويرمز بهما بالرموز ‪ ACCU1‬و ‪ ACCU2‬وفي بعض األنواع من‬
‫المعالجات يوجد عدد ‪ 4‬وحدات ‪ Accumulator‬وتأخذ الرموز ‪ ACCU1‬و ‪ ACCU2‬و ‪ ACCU3‬و ‪ACCU4‬‬
‫تتم عليها العمليات التي تتطلب حجم بيانات أكبر من ‪ ، bit‬وحجم وحدة ‪ Accumulator‬هو ‪32-bits‬‬
‫)‪Accumulator(32-bit‬‬
‫)‪High Word (W-H‬‬ ‫)‪Low Word (W-L‬‬
‫)‪High Byte (H-H‬‬ ‫)‪Low Byte (H-L) High Byte (L-H) Low Byte (L-L‬‬
‫‪15‬‬ ‫‪51‬‬ ‫‪51‬‬ ‫‪0‬‬
‫ويتكون ‪ Accumulator‬من عدد ‪ 2-WORD‬وعدد ‪ 4-BYTE‬فعند التعامل مع ‪ BYTE‬يتم تحميل البيانات في‬
‫البايت ‪ L-L‬وفي حالة التعامل مع ‪ WORD‬يتم التعامل مع ‪ W-L‬أما في حالة التعامل فيتم التعامل مع ‪DWORD‬‬
‫ويخضع شكل البيانات في ‪ Accumulator‬لنفس صيغ البيانات التي تحدثنا عليها من قبل سواء كانت صحيحة‬
‫‪ INT‬أو صحيحة مضاعفة ‪ DINT‬أو حقيقية ‪ REAL‬أو غير ذلك من البيانات مثل ‪ S5T‬أو ‪ DATE‬أو ‪TIME‬‬
‫‪ -‬أما على مستوى البيانات التي تحتل خانة واحدة فهناك مجموعة كبيرة من الخانات يصل عددها إلى ‪ 9‬خانات‬
‫يجمعها معا ما يسمى ‪ STATUS Register‬ويطلق عليها ‪ STATUS Bits‬حيث كل واحدة منها تتغير طبقا‬
‫للعمليات المختلفة لكنها تعطي انطباعا منطقيا عن حالة تنفيذ العمليات وهذه الخانات ‪ STATUS Bits‬هي‪:‬‬
‫‪ RLO o‬نتيجة العمليات المنطقية ‪ Result of Logic Operations‬حيث يتم فيها تخزين نتيجة آخر عملية‬
‫منطقية وتتم عليها العمليات المنطقية أيضا‪.‬‬
‫‪ OV o‬زيادة في قيمة البيانات ‪ Overflow‬وتقوم بمراقبة حدوث تجاوز في القيمة الرقمية لحدود التخزين‬
‫عند تنفيذ العمليات الحسابية ويتم تصفيرها بمجرد البدء في عملية جديدة‬
‫‪ OS o‬زيادة في قيمة البيانات مع تخزين الحالة ‪ Stored Overflow‬وتقوم بنفس عمل ‪ OV‬تماما غير‬
‫أنها تحتفظ بالحالة "‪ "1‬ويتم تصفيرها عن طريق أوامر برمجة‬
‫‪ CC0,CC1 o‬وتستخدم في عمليات كثيرة منها المقارنة وحسب حالة االثنين معا يتم تحديد نتيجة المقارنة ‪،‬‬
‫كذلك في الحسابات الحقيقية والصحيحة تعطي انطباعا عن النتيجة وتستخدم في عمليات‬
‫‪ Shift/Rotate‬حيث تدخل في بعض العمليات كجزء من مكان التخزين‬
‫‪ STA o‬ووتستخدم إلظهار حالة المتغير الثنائي المستخدم حاليا في العملية وهذا غير ‪ RLO‬والتي تعكس‬
‫النتيجة للعمليات المنطقية‬
‫‪ /FC o‬يستخدم لتحديد بداية الحسابات المنطقية في كل مرة تبدأ فيها مجموعة من العمليات وتقوم العمليات‬
‫بتغيير قيمة ‪ /FC‬بما يتناسب مع طبيعة العملية فمثال ‪ And‬تقوم بتغيير ‪ /FC‬إلى "‪ "1‬قبل التنفيذ بينما‬
‫العملية ‪ Or‬تقوم بتغيير ‪ /FC‬إلى الحالة "‪"0‬‬
‫‪ OR o‬تستخدم لتخزين النتائج الوسيطة عند عمل عمليات ‪ AND‬قبل أن يتم عليها تنفيذ عملية ‪ OR‬حيث‬
‫يتم فيها تخزين نتيجة العمليات ‪ AND‬األخيرة‬
‫‪ BR o‬أو نتيجة ثنائية ‪ Binary Result‬حيث تستخدم عند االنتقال من بلوك آلخر‬
‫وسوف نتحدث عن الطرق الثالث للبرمجة معا إن شاء هللا ونبدأ معا بأول نوع من العمليات وهو العمليات المنطقية‬

:Bit Logic Operations ‫العمليات المنطقية على خانة واحدة‬

Statement List (STL) Ladder Diagram (LAD) Function Block Diagram


(FBD)
And Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
A <Address>
<Address> I,Q,M,L,T,C,DB
Example:
A I10.3 <Address> I,Q,M,L,T,C,DB
A M3.7 <Address> I,Q,M,L,T,C,DB
A T11 Example: Example:
A DB30.DBX2.7
A C2
A L0.3
A Q12.4
RLO ‫ وتخزين النتيجة في‬RLO ‫ لها مع قيمة‬ANDing ‫< وعمل‬Address> ‫ بقراءة قيمة المتغير‬AND ‫تقوم العملية‬
OR Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
O <Address>
<Address> I,Q,M,L,T,C,DB
Example:
O I10.3
O M3.7 <Address-i> I,Q,M,L,T,C,DB
O T11 <Address-i> I,Q,M,L,T,C,DB
Example:
O DB30.DBX2.7 Example
O C2
O L0.3
O Q12.4

RLO ‫ وتخزين النتيجة في‬RLO ‫ لها مع قيمة‬ORing ‫< وعمل‬Address> ‫ بقراءة قيمة المتغير‬OR ‫تقوم العملية‬
NOT Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
NOT
Example:
O I10.3
O M3.7 <Address> I,Q,M,L,T,C,DB
O T11 Example Example:
NOT

"0" ‫" إلى‬1" ‫" والعكس من‬1" ‫" إلى‬0" ‫ من‬RLO ‫ بتغيير حالة‬NOT ‫تقوم العملية‬
And-NOT Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
AN <Address>
<Address> I,Q,M,L,T,C,DB
Example:
AN I10.3
<Address-i> I,Q,M,L,T,C,DB
AN M3.7 <Address> I,Q,M,L,T,C,DB
AN T11 Example:
Example:
AN DB30.DBX2.7
AN C2
AN L0.3
AN Q12.4
‫ وتخزين‬RLO ‫ لها مع قيمة‬ANDing ‫ له ثم‬NOT ‫< وعمل‬Address> ‫ بقراءة قيمة المتغير‬AND-NOT ‫تقوم العملية‬
RLO ‫النتيجة في‬
OR-NOT Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
ON <Address>
<Address> I,Q,M,L,T,C,DB
Example:
ON I10.3
ON M3.7 <Address> I,Q,M,L,T,C,DB
Example
ON T11 Example:
ON DB30.DBX2.7
ON C2
ON L0.3
ON Q12.4
‫ وتخزين النتيجة‬RLO ‫ لها مع قيمة‬ORing ‫ له ثم‬NOT ‫< وعمل‬Address> ‫ بقراءة قيمة المتغير‬OR-NOT ‫تقوم العملية‬
RLO ‫في‬
ASSIGN Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
= <Address>
<Address> I,Q,M,L,DB
Example:
A I10.3 <Address> I,Q,M,L,DB <Address> I,Q,M,L,DB
A M3.7 Example Example:
A DB30.DBX2.7
= L0.3
= Q12.4

<Address> ‫ في العنوان‬RLO ‫تقوم العملية "=" بكتابة قيمة‬


And, And-NOT before OR Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
O(
A <Address1>
A <Address2>
)
O(
A <Address3> <Address-i> I,Q,M,L,T,C,DB
AN <Address4>
) Example:
<Address-i> I,Q,M,L,T,C,DB <Address-i> I,Q,M,L,T,C,DB
Example:
O( Example:
A I10.3
AN M3.7
(
O(
AN T11
A C2
(
= Q10.7
‫ لها مع مجموعة أخرى تم عمل‬OR ‫ لمجموعة من المتغيرات قبل عمل‬ANDing ‫ بعمل‬AND-Before OR ‫تقوم العملية‬
RLO ‫ لها بنفس الطريقة وتخزين النتيجة في‬ANDing
OR,OR-NOT before AND Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
A(
O <Address1>
O <Address2>
)
A(
O <Address3> <Address-i> I,Q,M,L,T,C,DB
ON <Address4>
) Example:
<Address-i> I,Q,M,L,T,C,DB
<Address-i> I,Q,M,L,T,C,DB
Example: Example:
A(
O I10.3
ON M3.7
(
A(
ON T11
O C2
(
= Q10.7
RLO ‫ لها وتخزين النتيجة في‬OR ‫ لمجموعات من المتغيرات قبل عمل‬ANDing ‫ بعمل‬OR-Before AND ‫تقوم العملية‬
XOR Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
X <Address1>
X <Address2>
<Address-i> I,Q,M,L,DB,C,T

Example:
X I10.3 <Address-i> I,Q,M,L,DB,C,T <Address-i> I,Q,M,L,DB,C,T
X M3.7 Example:
= Q12.4 Example

RLO ‫< وكتابة النتيجة في‬Address> ‫ بين المدخالت‬XORing ‫" بحساب نتيجة‬XOR" ‫تقوم العملية‬
XOR-NOT Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
XN <Address1>
XN <Address2>
<Address-i> I,Q,M,L,DB,C,T

Example: <Address-i> I,Q,M,L,DB,C,T <Address-i> I,Q,M,L,DB,C,T


XN I10.3 Example Example:
XN M3.7
= Q12.4

‫ بينها‬XORing ‫< ثم حساب نتيجة‬Address1>,<Address2> ‫ للمتغيرات‬NOT ‫" بعمل‬NOT-XOR" ‫تقوم العملية‬


RLO ‫وكتابة النتيجة في‬
Set/Reset Operations
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
S <Address>
<Address> I,Q,M,L,DB
R <Address>
<Address> I,Q,M,L,DB,C,T <Address> I,Q,M,L,DB
<Address> I,Q,M,L,DB Example:
Example:
A I10.3
Example
A M3.7
S Q12.4
R M20.4

RLO ‫" بتحويل حالة‬RESET" ‫< بينما تقوم العملية‬Address> ‫" ونقلها إلى‬1" ‫ إلى‬RLO ‫" بتحويل حالة‬SET" ‫تقوم العملية‬
<Address> ‫" ونقلها إلى‬0" ‫إلى‬
‫‪Set Before Reset Operations‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
‫>‪S <Address‬‬
‫>‪R <Address‬‬
‫‪<Address> I,Q,M,L,DB‬‬
‫‪<Address> I,Q,M,L,DB‬‬ ‫‪<Address> I,Q,M,L,DB‬‬
‫‪Example:‬‬
‫‪Example‬‬ ‫‪Example:‬‬
‫‪A I10.3‬‬
‫‪S Q12.4‬‬
‫‪A I10.4‬‬
‫‪R Q12.4‬‬

‫تقوم العملية ‪ SR‬إما بتحويل الحالة إلى "‪ "0‬أو إلى "‪ "1‬مع االستمرار وفي حالة تواجد الشرطين ‪ R,S‬معا تكون النتيجة‬
‫"‪ "0‬وال تكون الحالة "‪ "1‬إال إذا كان ‪ S‬حالته "‪ "1‬و ‪ R‬حالته "‪"0‬‬
‫‪Reset Before Set Operations‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
‫>‪R <Address‬‬
‫>‪S <Address‬‬
‫‪<Address> I,Q,M,L,DB‬‬

‫‪Example:‬‬ ‫‪<Address> I,Q,M,L,DB‬‬ ‫‪<Address> I,Q,M,L,DB‬‬


‫‪A I10.3‬‬ ‫‪Example‬‬ ‫‪Example:‬‬
‫‪R Q12.4‬‬
‫‪A I10.4‬‬
‫‪S Q12.4‬‬

‫تقوم العملية ‪ RS‬إما بتحويل الحالة إلى "‪ "0‬أو إلى "‪ "1‬مع االستمرار وفي حالة تواجد الشرطين ‪ R,S‬معا تكون النتيجة‬
‫"‪ "1‬و تكون الحالة "‪ "1‬إذا كان ‪ S‬حالته "‪ "1‬مهما كانت حالة ‪R‬‬
‫‪Positive edge Operation‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
‫>‪A <Address1‬‬
‫>‪Fp <Address2‬‬
‫‪<Address1> I,Q,M,L,DB,C,T‬‬
‫‪<Address2> I,Q,M,L,DB‬‬ ‫‪<Address1> I,Q,M,L,DB,C,T <Address1> I,Q,M,L,DB,C,T‬‬
‫‪<Address2>I,Q,M,L,DB‬‬ ‫‪<Address2>I,Q,M,L,DB‬‬
‫‪Example:‬‬ ‫‪Example‬‬ ‫‪Example:‬‬
‫‪A M10.2‬‬
‫‪Fp M10.3‬‬
‫‪= M12.4‬‬
‫تقوم العملية ‪ Fp‬بقراءة التحول من "‪ "0‬إلى "‪ "1‬على المتغير >‪ <Address1‬وإخراج نبضة في حالة التغير إلى ‪RLO‬‬
‫مع االحتفاظ بالقيمة القديمة قبل التغيير في >‪<Address2‬‬
Negative edge Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
A <Address1>
Fn <Address2>
<Address1> I,Q,M,L,DB,C,T
<Address2> I,Q,M,L,DB <Address1> I,Q,M,L,DB,C,T <Address1> I,Q,M,L,DB,C,T
<Address2>I,Q,M,L,DB <Address2>I,Q,M,L,DB
Example: Example Example:
A M10.2
Fn M10.3
= M12.4
RLO ‫< وإخراج نبضة في حالة التغير إلى‬Address1> ‫" على المتغير‬0" ‫" إلى‬1" ‫ بقراءة التحول من‬Fn ‫تقوم العملية‬
<Address2> ‫مع االحتفاظ بالقيمة القديمة قبل التغيير في‬
Mid-ASSIGN Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
= <Address>
A <Address>
<Address> I,Q,M,L,DB
Example: <Address> I,Q,M,L,DB <Address> I,Q,M,L,DB
A I10.3 Example Example:
A M3.7
A DB30.DBX2.7
= L0.3
= Q12.4

‫< مع االحتفاظ بها واستخدامها في العمليات التالية‬Address> ‫ (" بتخزين ناتج العمليات قبلها في‬# (" ‫تقوم العملية‬
‫وتستخدم في العمليات المرحلية‬
POS Operation
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬

Same as Fp Operation

<Address1> I,Q,M,L,DB,C,T
<Address1> I,Q,M,L,DB,C,T <Address2> I,Q,M,L,DB
<Address2> I,Q,M,L,DB Example:
Example

RLO ‫ في‬Pulse ‫" وإخراج نبضة‬1" ‫" إلى‬0" ‫< من‬Address1> ‫" بمراقبة التغير في حالة‬POS " ‫تقوم العملية‬
<Address2> ‫واالحتفاظ بالحالة في‬
‫‪NEG Operation‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬

‫‪Same as Fp Operation‬‬

‫‪<Address1> I,Q,M,L,DB,C,T‬‬
‫‪<Address1> I,Q,M,L,DB,C,T‬‬
‫‪<Address2> I,Q,M,L,DB‬‬
‫‪<Address2> I,Q,M,L,DB‬‬
‫‪Example:‬‬
‫‪Example‬‬

‫تقوم العملية "‪ "NEG‬بمراقبة التغير في حالة >‪ <Address1‬من "‪ "1‬إلى "‪ "0‬وإخراج نبضة ‪ Pulse‬في ‪ RLO‬واالحتفاظ‬
‫بالحالة في >‪<Address2‬‬
‫‪Nesting XOR Operation‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
‫(‪X‬‬
‫>‪X <Address1‬‬ ‫العملية غير موجودة ويتم تمثيلها‬
‫>‪X <Address2‬‬ ‫بالعمليات األساسية‬
‫)‬
‫(‪X‬‬
‫>‪X <Address3‬‬
‫>‪X <Address4‬‬ ‫‪<Address-i> I,Q,M,L,DB,C,T‬‬
‫)‬
‫‪Example‬‬ ‫‪Example:‬‬
‫(‪X‬‬
‫‪X I 1.2‬‬
‫‪X I 1.3‬‬
‫)‬
‫(‪X‬‬
‫‪X M 10.2‬‬
‫‪X M 10.5‬‬
‫)‬
‫‪= M 20.1‬‬
‫تقوم العملية "(‪ "X‬بتنفيذ عمليات ‪ XOR‬المتداخلة من الداخل إلى الخارج حيث يتم تنفيذ داخل األقواس أوال ويجب مراعاة‬
‫توزيع األقواس‬

‫وينطبق نفس الكالم تماما على العمليات ‪ NOT-XOR‬وبنفس الطريقة‬


‫‪SET Operation‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
‫‪SET‬‬ ‫العملية غير موجودة‬ ‫العملية غير موجودة‬
‫‪Example‬‬
‫‪SET‬‬
‫‪= Q 1.2‬‬
‫تقوم العملية "‪ "SET‬بتحويل حالة ‪ RLO‬إلى "‪"1‬‬

‫‪SAVE Operation‬‬
‫الصيغة العامة‬ ‫الصيغة العامة‬ ‫الصيغة العامة‬
‫‪SAVE‬‬ ‫العملية غير موجودة‬
‫‪Example‬‬
‫‪SAVE‬‬
‫تقوم العملية "‪ "SAVE‬بتخزين حالة ‪ RLO‬في خانة ‪BR‬‬

‫الحظ أنه يمكن التحويل بين الثالث طرق للبرمجة لو التزمنا بالطريقة المثالية للكتابة ولكن هناك بعض العمليات الغير‬
‫متاحة في كل من ‪ LAD‬أو ‪ FBD‬ويتم تكوينها باستخدام ‪ STL‬مع العلم بأنه يمكن كتابة كل شئ باستخدام ‪STL‬‬

‫والعمليات الفعلية التي نستخدمها في دوائر التحكم مزيج من العمليات السابقة وليست بسيطة بالشكل الذي عرضناه فهي‬
‫تحتوي على خليط من كل األشكال مثل الشكل التالي والذي يمثل صورة فعلية من أحد البرامج‬

You might also like