You are on page 1of 192

‫ﺑﺮﳎﺔ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻰ ‪P.L.C.

‬‬
‫اء ا
‬

‫ﺇﻋﺪﺍﺩ‬
‫رن آل‬

‫ﻣﻌﻬﺪ ﺍﻟﺴﺎﻟﺰﻳﺎﻥ ﺍﻹﻳﻄﺎﱃ "ﺩﻭﻥ ﺑﻮﺳﻜﻮ"‬


‫‪٢‬ﺷﺎﺭﻉ ﻋﺒﺪ ﺍﻟﻘﺎﺩﺭ ﻃﻪ ‪ -‬ﺍﻟﺴﺎﺣﻞ ﺕ‪٢٤٥٧٦٧٩٤ - ٢٤٥٧٩٦٥٠ :‬‬
‫ﻣﻌﻬﺪ ﻓﲎ ‪ -‬ﻣﻌﻬﺪ ﺻﻨﺎﻋﻰ‬
‫ﺩﻭﺭﺍﺕ ﺗﺪﺭﻳﺒﻴﺔ ﺳﺮﻳﻌﺔ ﻣﺮﻛﺰﺓ‬
‫ﺩﻭﺭﺍﺕ ﺗﺪﺭﻳﺒﻴﺔ ﺗﻌﻠﻴﻤﻴﺔ ﻟﻠﻤﺪﺭﺳﲔ‬
‫ﺍﳌﺮﺍﺟﻊ‬

‫‪ .۱‬ﺃﺟﻬﺰﺓ ﺍﻟﺘﺤﻜﻢ ﺍﳌﱪﻣﺞ ﻭﺗﻄﺒﻴﻘﺎ‪‬ﺎ ﺍﻟﻌﻤﻠﻲ‪.‬‬


‫‪1. Controllore a logica programmabile P. Bani.‬‬
‫‪2. Siemens Programmable Controller Manual.‬‬

‫ﻃﺒﻌﺔ ﺟﺪﻳﺪﺓ‬
‫‪2012‬‬

‫ﺑﺮﳎﺔ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻰ ‪P.L.C.‬‬ ‫ﺃﺳﻢ ﺍﻟﻜﺘﺎﺏ‪:‬‬

‫ﺍﳉﺰﺀ ﺍﻟﺜﺎﱏ‬

‫ﻃﺒﺎﻋﺔ‬
‫ﺭﻗﻢ ﺍﻹﻳﺪﺍﻉ‪:‬‬
‫ﺍﻟﺘﺮﻗﻴﻢ ﺍﻟﺪﻭﱃ‪:‬‬

‫ﺣﻘﻮﻕ ﺍﻟﻄﺒﻊ ﻭﺍﻟﻨﺸﺮ ﳏﻔﻮﻇﺔ ﻟﻠﻤﺆﻟﻒ‬


‫ﺷﻜﺮ ﻭ ﺇﻫﺪﺍﺀ‬

‫ﺃﻫﺪﻯ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﺇﱃ ﺃﰉ ﻭﺃﻣﻲ ﺍﻟﺬﻳﻦ ﳍﻢ ﻛﻞ ﺍﻟﻔﻀﻞ ﺑﺄﻥ ﺃﻋﻤﻞ ﰲ ﻫﺬﺍ ﺍ‪‬ﺎﻝ ﻭﻫﻢ ﺍﻟﺬﻳﻦ ﺷﺠﻌﻮﱐ‬

‫ﻋﻠﻰ ﻋﻤﻞ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﺑﻜﻞ ﺟﻬﺪ ﻭﺇﺧﻼﺹ ﺷﺎﻛﺮ ﺍﷲ ﻭ ﺇﻳﺎﻫﻢ ﻭﻛﻞ ﻣﻦ ﺳﺎﻫﻢ ﰲ ﺗﻘﺪﳝﻪ‪.‬‬

‫ﻭﺃﺷﻜﺮ ﺃﻳﻀﹰﺎ ﻛﻞ ﺍﳌﻌﻠﻤﲔ ﺍﻷﻓﺎﺿﻞ ﺍﻟﺬﻳﻦ ﺳﺎﻋﺪﻭﺍ ﻋﻠﻰ ﺧﺮﻭﺝ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﺇﱃ ﺍﳌﻠﻲﺀ‪.‬‬

‫ ﺍﳌﺪﻳﺮ ﺍﻹﻳﻄﺎﱄ ﻟﻠﻤﻌﻬﺪ‪ :‬ﺍﻷﺏ ﺭﻳﻨﺴﻮ ﻟﻴﻮﻧﺎﺭﺩﻭﺳﻰ‬


‫ ﺍﻟﻨﺎﻇﺮ ﺍﻟﺴﺎﺑﻖ ﻟﻠﻤﻌﻬﺪ‪ :‬ﺍﻷﺏ ﺑﲑﻧﺎﺭﺩﻭ ﺃﺷﲑﺑﻮﱏ‬
‫ ﻣﺪﻳﺮ ﺍﻟﺪﻭﺭﺍﺕ ﺍﻟﺘﺪﺭﻳﺒﻴﺔ‪ :‬ﺃ‪ .‬ﻣﺎﺟﺪ ﭼﻮﺭﭺ‬
‫ ﺃﺳﺘﺎﺫ ﺍﻟﺘﺤﻜﻢ‪ :‬ﺃ‪ .‬ﻧﺒﻴﻞ ﺭﺯﻕ – ﺃ‪ .‬ﻭﺟﻴﺔ ﺟﺮﺟﺲ‬
‫ ﺃﺳﺘﺎﺫ ﺍﻟﺘﻜﻴﻒ ﻭﺍﻟﺘﱪﻳﺪ‪ :‬ﺃ‪ .‬ﺇﻣﻴﻞ ﻓﺘﺢ ﺍﷲ‬
‫ ﺃﺳﺘﺎﺫ ﺍﻟـ ‪ :PLC‬ﺃ‪ .‬ﻣﺎﺟﺪ ﻣﻮﺭﻳﺲ – ﺃ‪ .‬ﻣﺎﺟﺪ ﻋﺮﻳﺎﻥ – ﺃ‪ .‬ﭼﻴﻮﻟﻴﻮ ﺟﺎﻟﻮ – ﺃ‪ .‬ﳏﺴﻦ ﺃﻧﻄﻮﻥ‬

‫ﺃﺷﻜﺮ ﻛﻞ ﻣﻦ ﺃﺭﺳﻠﻮﺍ ﱃ ﺍﻟﺘﻌﻠﻴﻘﺎﺕ ﲞﺼﻮﺹ ﺍﳉﺰﺀ ﺍﻷﻭﻝ ﻣﻦ ﺍﻟﻜﺘﺎﺏ ﻭﻗﺪ ﺣﺎﻭﻟﺖ ﻗﺪﺭ ﺍﳌﺴﺘﻄﺎﻉ ﺗﻠﺒﻴﺔ ﻣﺘﻄﻠﺒﺎ‪‬ﻢ ﰱ ﺍﳉﺰﺀ‬
‫ﺍﻟﺜﺎﱏ ﻭﺃﺗﺸﺮﻑ ﺑﺎﺳﺘﻘﺒﺎﻝ ﺍﳌﺰﻳﺪ ﻣﻦ ﺗﻌﻠﻴﻘﺎﺕ ﺍﻟﺴﺎﺩﺓ ﺍﻟﻘﺮﺍﺀ ﲞﺼﻮﺹ ﻫﺬﺍ ﳉﺰﺀ ﻣﻦ ﺍﻟﻜﺘﺎﺏ ﻋﻠﻰ ﻋﻨﻮﺍﻥ ﺍﻟﱪﻳﺪ ﺍﻟﺘﺎﱃ‬
‫‪plcbook@hotmail.com‬‬
‫ﻣﻘﺪﻣﺔ‬
‫ﻧﻈﺮﹰﺍ ﻟﻠﺘﻘﺪﻡ ﺍﻟﻌﻠﻤﻰ ﺍﻟﺴﺮﻳﻊ ﺍﳌﺮﺗﺒﻂ ﺑﺎ‪‬ﺎﻝ ﺍﻟﺼﻨﺎﻋﻰ ﻭﺧﺎﺻﺔ ﻣﻦ ﺍﻟﻨﺎﺣﻴﺔ ﺍﻟﻜﻬﺮﺑﻴﺔ ﺃﺻﺒﺢ ﻻ ﻏﲎ ﻋﻦ ﺍﻟﺮﺑﻂ‬
‫ﺑﲔ ﻋﺎﱂ ﺍﻟﺼﻨﺎﻋﺔ ﻭﺑﲔ ﺍﻟﺘﻜﻨﻮﻟﻮﭼﻴﺎ ﺍﻟﻌﺼﺮﻳﺔ ﻭﻳﺘﻤﺜﻞ ﻫﺬﺍ ﺍﻟﺮﺑﻂ ﺑﻮﺍﺳﻄﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺟﻬﺰﺓ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻰ‬
‫ﲟﺨﺘﻠﻒ ﺃﻧﻮﻋﻬﺎ ﻭﺍﻟﱴ ﺗﺴﺘﺤﻖ ﺃﻥ ﺗﺴﻤﻰ ﺑﺎﻷﺟﻬﺰﺓ ﺍﻟﺬﻛﻴﺔ ﻧﻈﺮﹰﺍ ﳌﺎ ﺗﻘﺪﻣﻪ ﰱ ﺍ‪‬ﺎﻝ ﺍﻟﺼﻨﺎﻋﻰ ﻣﻦ‪ :‬ﺳﻬﻮﻟﺔ ﰱ‬
‫ﺗﺼﻤﻴﻢ ﺍﻟﱪﺍﻣﺞ‪ ،‬ﻭﻣﺮﻭﻧﺔ ﰱ ﺃﻛﺘﺸﺎﻑ ﺍﻷﻋﻄﺎﻝ‪ ،‬ﻭﻣﺴﺎﻋﺪﺓ ﰱ ﺣﻞ ﺍﳌﺸﺎﻛﻞ‪... ،‬ﺍﱁ‬
‫ﻭ ﻧﻈﺮﹰﺍ ﻟﺼﻌﻮﺑﺔ ﺗﺮﲨﺔ ﺑﻌﺾ ﺍﳌﺼﻄﻠﺤﺎﺕ ﺍﳋﺎﺻﺔ ‪‬ﺬﺍ ﺍ‪‬ﺎﻝ ﻭﺧﺎﺻﺔ ﻟﻜﻰ ﻻ ﺗﻔﻘﺪ ﺍﳌﻌﲎ ﺍﻟﺘﻘﲎ ﺃﻭ ﺍﻟﻔﲎ ﳍﺎ‪،‬‬
‫ﲤﺖ ﻛﺘﺎﺑﺘﻬﺎ ﺑﻠﻐﺘﻬﺎ ﺍﻷﺻﻠﻴﺔ ﻟﺬﻟﻚ ﻻ ‪‬ﺘﻢ ﻛﺜﲑﹰﺍ ﻋﺰﻳﺰﻯ ﺍﻟﻘﺎﺭﺉ ‪‬ﺬﻩ ﺍﳌﺼﻄﻠﺤﺎﺕ ﻓﺴﺘﻜﻮﻥ ﺑﺴﻴﻄﺔ ﻭﻣﻔﻬﻮﻣﺔ‬
‫ﲟﺠﺮﺩ ﻣﺎ ﺃﻥ ﺗﺘﻌﻤﻖ ﺑﻔﻬﻢ ﰱ ﻫﺬﺍ ﺍ‪‬ﺎﻝ‪.‬‬
‫ﻫﻜﺬﺍ ﺃﻳﻀﹰﺎ ﻻ ﺗﺘﻌﺠﻞ ﻋﺰﻳﺰﻯ ﺍﻟﻘﺎﺭﺉ ﰱ ﺍﻟﻨﻈﺮ ﺇﱃ ﻣﻮﺍﺿﻴﻊ ﻣﺘﺒﺎﻋﺪﺓ ﺧﺎﺻﺔ ﺃﻥ ﻛﻨﺖ ﲟﺒﺘﺪﺉ ﰱ ﻫﺬﺍ ﺍ‪‬ﺎﻝ‬
‫ﻭﻫﺬﺍ ﻷﻧﻪ ﻗﺪ ﰎ ﺷﺮﺡ ﺍﳌﻨﻬﺞ ﺑﻄﺮﻳﻘﺔ ﻣﺘﺴﻠﺴﻠﺔ ﻭﻟﺬﻟﻚ ﻳﻔﻀﻞ ﻟﻠﻘﺎﺭﺉ ﻗﺮﺍﺀﺓ ﺍﳌﻮﺍﺿﻴﻊ ﺑﺎﻟﺘﺴﻠﺴﻞ ﺍﻟﱴ ﻛﺘﺒﺖ‬
‫ﺑﻪ ﻟﻔﻬﻢ ﲨﻴﻊ ﺍﻷﻣﻮﺭ ﺩﻭﻥ ﲣﺒﻂ‪.‬‬
‫ﻭ ﺧﺎﺻﹰﺎ ﻟﻔﻬﻢ ﺍﻟﺘﻤﺎﺭﻳﻦ ﻻ ﻳﺸﺘﺮﻁ ﻓﻘﻂ ﺍﻟﻘﺮﺍﺀﺓ ﺑﺘﺮﺗﻴﺐ ﺑﻞ ﳚﺐ ﺃﻳﻀﹰﺎ ﺃﻥ ﺗﺮﺑﻂ ﻛﻞ ﺷﺮﺡ ﻭ ﻛﻞ ﺭﻣﺰ‬
‫ﺑﺎﻟﺮﺳﻢ ﺍﳌﻮﺟﻮﺩ ﻭﻻ ﺗﻘﻮﻡ ﺑﺎﻟﻘﺮﺍﺀﺓ ﺑﻄﺮﻳﻘﺔ ﻋﺎﺑﺮﺓ‪.‬‬
‫ﰎ ﺷﺮﺡ ﺍﻟﱪﳎﺔ ﺑﻄﺮﻳﻘﺔ ﻋﺎﻣﺔ ﺩﻭﻥ ﺍﻟﻠﺠﺆ ﺇﱃ ﻣﺎﺭﻛﺔ ﺑﻌﻴﻨﻬﺎ ﻭﻫﺬﺍ ﻟﻜﻰ ﳜﺪﻡ ﻛﻞ ﻣﻦ ﻳﻌﻤﻞ ﻣﻊ ﻭﺣﺪﺍﺕ‬
‫ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻰ ﲟﺨﺘﻠﻒ ﺃﻧﻮﺍﻋﻬﺎ‪.‬‬
‫ﺗﻨﻘﺴﻢ ﻣﻌﺮﻓﺔ ﺃﺟﻬﺰﺓ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻰ ﺇﱃ ﺃﻣﻮﺭ ﻋﺪﻳﺪﺓ ﻣﻦ ﺃﳘﻬﺎ‪:‬‬
‫ﺗﺼﻤﻴﻢ ﺑﺮﺍﻣﺞ – ﺍﻛﺘﺸﺎﻑ ﺃﻋﻄﺎﻝ ‪ -‬ﺣﻞ ﻣﺸﺎﻛﻞ‬
‫ﻗﺪ ﰎ ﺍﻟﺘﺮﻛﻴﺰ ﺑﺸﻜﻞ ﻛﺒﲑ ﰱ ﺍﳉﺰﺀ ﺍﻷﻭﻝ ﻣﻦ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﻋﻠﻰ ﻣﻌﺮﻓﺔ ﺃﺳﺎﺳﺎﺕ ﺗﺼﻤﻴﻢ ﺍﻟﱪﺍﻣﺞ ﺑﻄﺮﻳﻘﺔ‬
‫ﺳﻠﺴﺔ ﻭﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺳﻬﻞ ﻟﻐﺎﺕ ﺍﻟﱪﳎﺔ ﻭﻟﺬﻟﻚ ﺃﻗﺪﻡ ﻟﻜﻢ ﺍﳉﺰﺀ ﺍﻟﺜﺎﱏ ﻻﺳﺘﻜﻤﺎﻝ ﺷﺮﺡ ﺗﺼﻤﻴﻢ ﺍﻟﱪﺍﻣﺞ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺳﺎﻟﻴﺐ ﺫﺍﺕ ﺃﻛﺜﺮ ﺗﻄﻮﺭ ﻭﻳﺘﻢ ﺍﻵﻥ ﲢﻀﲑ ﺟﺰﺀ ﺧﺎﺹ "ﺑﺄﻛﺘﺸﺎﻑ ﺍﻷﻋﻄﺎﻝ ‪ -‬ﲝﻞ ﺍﳌﺸﺎﻛﻞ‬
‫ﻭﺑﺘﺼﻤﻴﻢ ﺍﻟﺘﻤﺎﺭﻳﻦ ﻭﺍﻷﻓﻜﺎﺭ ﺍﻟﻌﻤﻠﻴﺔ"‪.‬‬
‫ﻟﺬﻟﻚ ﺃﻗﺪﻡ ﻟﻜﻢ ﺍﳉﺰﺀ ﺍﻟﺜﺎﱏ ﻣﻦ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﳋﺪﻣﺔ ﻛﻞ ﻣﻦ ﻳﺪﺭﺱ ﺃﻭ ﻳﻌﻤﻞ ﰱ ﻫﺬﺍ ﺍ‪‬ﺎﻝ ﻭ ﺃﲤﲎ ﻣﻦ ﺍﷲ ﺃﻥ‬
‫ﳚﺪ ﻛﻞ ﻣﻦ ﻳﻘﺮﺃ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﻧﻔﻌﹰﺎ ﻟﻪ‪.‬‬

‫ﺍﳌـﺆﻟـﻒ‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺎب اﻷول‬

‫اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬
‫ﻟﻸرﻗـﺎم اﻟﺼﺤﻴﺤﺔ و اﻟﻌﺸﺮﻳﺔ‬
‫• أﻧﻮاع اﻟﻌﻤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‪.‬‬

‫• اﻟﻌﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﺼﺤﻴﺤﺔ‪.‬‬

‫• اﻟﻌﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﻌﺸﺮﻳﺔ‪.‬‬

‫• اﻟﻔ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮق ﺑﻴﻦ اﻟﻨﻮﻋﻴﻦ‪.‬‬

‫• ﻃﺮﻳﻘﺔ ﺗﻮﺻﻴﻞ اﻟﻌﻤﻠﻴ ـ ـ ـ ــﺎت اﻟﺤﺴﺎﺑﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ‪.‬‬

‫• ﻣ ـ ـ ــﻼﺣﻈﺎت ﻫﺎﻣﺔ ﺑﺨﺼﻮص اﻟﻌﻤﻠﻴـﺎت اﻟﺤﺴﺎﺑﻴﺔ‪.‬‬

‫• ﺗﻤﺎرﻳـﻦ ﺗـﻄـﺒﻴـﻘـﻴـﺔ ﻋﻠﻰ اﻟﻌﻤﻠﻴـﺎت اﻟﺤﺴﺎﺑﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ‪.‬‬

‫‪5‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‪:‬‬

‫ﺗﺴﺘﺨﺪم اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ ﰱ ﺑﻌﺾ اﻟﱪاﻣﺞ اﻟﱴ ﲢﺘﻮى ﻋﻠﻰ ﻣﺘﻐﲑات أو اﻟﱴ ﻳﺘﻢ ﻓﻴﻬﺎ اﻟﺘﺤﻮﻳﻞ ﻣﻦ أى وﺣﺪة‬
‫ﻗﻴﺎس إﱃ أى وﺣﺪة ﻗﻴﺎس ﳐﺘﻠﻔﺔ أو ﺣﱴ ﻟﻠﻘﻴﺎم ﲟﻌﺪﻻت ﻣﻦ اﻟﺪرﺟﺔ اﻷوﱃ‪ ,‬أو اﻟﺜﺎﻧﻴﺔ‪ ,‬أو ‪......‬‬
‫ﺗﻨﻘﺴﻢ اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ إﱃ ﻧﻮﻋﲔ‪ ,‬اﻟﻨﻮع اﻷول ﻫﻮ اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﺼﺤﻴﺤﺔ و اﻟﺜﺎﻧﻴﺔ ﻫﻰ‬
‫اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﻌﺸﺮﻳﺔ‪.‬‬

‫اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﺼﺤﻴﺤﺔ‪:‬‬

‫‪6‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫‪7‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻛﻞ اﻟﻌﻤﻠﻴﺎت اﻟﱴ ﺗﺘﻢ ﺑﻮاﺳﻄﺔ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﺼﺤﻴﺤﺔ ﳚﺐ أن ﲢﺘﻮى ﻓﻘﻂ ﻋﻠﻰ أرﻗﺎم‬
‫ﺻﺤﻴﺤﺔ و ﳚﺐ أن ﺗﻜﻮن اﻟﻨﻮاﺗﺞ ﻫﻰ أﻳﻀﺎً ﺻﺤﻴﺤﺔ ﻓﻤﺜﻼً‪:‬‬

‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﺼﺤﻴﺤﺔ ﻟﺠﻤﻊ أرﻗﺎم ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﲨﻊ رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ٢‚٥‬و ﻗﻴﻤﺔ ‪ ٦‚١‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﺻﺤﻴﺤﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﺼﺤﻴﺤﺔ ﻟﻄﺮح أرﻗﺎم ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﻃﺮح رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ۸‚٥‬ﻣﻦ رﻗﻢ ‪ ٦‚١‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﺻﺤﻴﺤﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﺼﺤﻴﺤﺔ ﻟﻘﺴﻤﺔ أرﻗﺎم ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﻗﺴﻤﺔ رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ٠,١‬و ﻗﻴﻤﺔ ‪ ٥,٣‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﺻﺤﻴﺤﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﺼﺤﻴﺤﺔ ﻟﻀﺮب أرﻗﺎم ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﺿﺮب رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ۸,١٠‬و ﻗﻴﻤﺔ ‪ ٣,٢‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﺻﺤﻴﺤﺔ‪.‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻳﺠﺐ أﻳﻀﺎً ﻣﺮاﻋﺎة اﻟﺨﺮج ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﻌﺎدﻟﺔ أى ﻣﺮاﻋﺎة أن اﻟﻨﺎﺗﺞ ﻳﺠﺐ أن ﻳﻜﻮن رﻗﻢ ﺻﺤﻴﺢ و أن‬
‫ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻣﻮﺿﻮع ﻋﻠﻰ ذاﻛﺮة ﺑﺎﻟﺤﺠﻢ اﻟﺼﺤﻴﺢ‪ ,‬ﻓﻤﺜﻼً‪:‬‬
‫‪ -‬ﻻ ﳝﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ اﻟﺼﺤﻴﺤﺔ ﲝﺠﻢ ‪ byte‬ﻟﻀﺮب ﻗﻴﻤﺔ ‪ ٢٠٠‬و ﻗﻴﻤﺔ ‪٢٠٠‬‬
‫ﺑﺎﺳﺘﺨﺪام ‪ MUL-B‬ﻷن اﻟﻨﺎﺗﺞ ﻻ ﳝﻜﻦ أن ﻳﻜﺘﺐ ﻋﻠﻰ ‪.byte‬‬
‫ﻟﺘﺠﻨﺐ ﻫﺬﻩ اﳌﺸﻜﻠﺔ ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ أﺧﺮى ذات ﺣﺠﻢ أﻛﱪ ﻣﺜﻞ‪.word :‬‬

‫‪ -‬ﻻ ﳝﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ اﻟﺼﺤﻴﺤﺔ ﻟﻘﺴﻤﺔ أرﻗﺎم ﺻﺤﻴﺤﺔ ﻣﺜﻞ ﻗﻴﻤﺔ ‪ ١٠‬و ﻗﻴﻤﺔ ‪٣‬‬
‫ﻷن اﻟﻨﺎﺗﺞ ﻟﻦ ﺳﻴﻜﻮن رﻗﻢ ﺻﺤﻴﺢ‪.‬‬
‫‪ -‬ﻟﺘﺠﻨﺐ ﻫﺬﻩ اﳌﺸﻜﻠﺔ ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ أﺧﺮى ﻏﲑ ﺻﺤﻴﺤﺔ ﻛﻤﺎ ﺳﻨﻮﺿﺢ ﺑﻌﺪ ﻗﻠﻴﻞ‪.‬‬

‫‪8‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫الشكل‬ ‫الشرح‬ ‫االسم‬ ‫م‬

‫ﻋﻤﻠﻴ ـ ـ ـ ــﺎت ﲨ ـ ـ ـ ــﻊ ﲝﺠ ـ ـ ـ ــﻢ ‪Word‬‬ ‫‪ADD_I‬‬ ‫‪١‬‬


‫ﺗﻘـ ـ ـ ـ ـ ــﻮم ﲜﻤـ ـ ـ ـ ـ ــﻊ أرﻗـ ـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ـ ــﺤﻴﺤﺔ‬ ‫عملية جمع أرقام‬
‫)‪ IN1‬و ‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺐ‬ ‫صحيحة‬
‫اﻟﻨـ ـ ـ ـ ــﺎﺗﺞ )‪ (OUT‬ﻋﻠـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Word‬‬
‫‪.Word‬‬
‫ﻋﻤﻠﻴ ـ ــﺎت ﲨـ ـ ــﻊ ﲝﺠـ ـ ــﻢ ‪Dword‬‬ ‫‪ADD_DI‬‬ ‫‪٢‬‬
‫ﺗﻘـ ـ ـ ـ ـ ــﻮم ﲜﻤـ ـ ـ ـ ـ ــﻊ أرﻗـ ـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ـ ــﺤﻴﺤﺔ‬ ‫عملية جمع أرقام‬
‫)‪ IN1‬و ‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺐ‬ ‫صحيحة‬
‫اﻟﻨـ ـ ـ ـ ــﺎﺗﺞ )‪ (OUT‬ﻋﻠـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Dword‬‬
‫‪.Dword‬‬
‫ﻋﻤﻠﻴـ ـ ـ ــﺎت ﻃـ ـ ـ ــﺮح ﲝﺠ ـ ـ ـ ــﻢ ‪Word‬‬ ‫‪SUB_I‬‬ ‫‪٣‬‬
‫عملية طرح أرقام ﺗﻘـ ـ ـ ـ ـ ــﻮم ﺑﻄـ ـ ـ ـ ـ ــﺮح أرﻗـ ـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ـ ــﺤﻴﺤﺔ‬
‫)‪ IN2‬ﻣ ـ ـ ـ ـ ـ ـ ـ ــﻦ ‪ (IN1‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ـ ــﺐ‬ ‫صحيحة‬
‫اﻟﻨ ـ ـ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Word‬‬
‫‪.Word‬‬
‫ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت ﻃ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮح ﲝﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪SUB_DI‬‬ ‫‪٤‬‬
‫عملية طرح أرقام ‪ Dword‬ﺗﻘـ ـ ـ ـ ـ ــﻮم ﺑﻄـ ـ ـ ـ ـ ــﺮح أرﻗـ ـ ـ ـ ـ ــﺎم‬
‫ﺻ ـ ـ ـ ـ ـ ـ ــﺤﻴﺤﺔ )‪ IN2‬ﻣ ـ ـ ـ ـ ـ ـ ــﻦ ‪(IN1‬‬ ‫صحيحة‬
‫وﻳﻜﺘ ـ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ــﻰ‬
‫بحجم ‪.Dword‬‬
‫ذاﻛﺮة ‪.Dword‬‬

‫‪9‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻋﻤﻠﻴـ ـ ــﺎت ﺿـ ـ ــﺮب ﲝﺠـ ـ ــﻢ ‪Word‬‬ ‫‪MUL‬‬ ‫‪٥‬‬


‫ﻟﻠ ـ ـ ـ ـ ـ ــﺪﺧﻞ و ‪ Dword‬ﻟﻠﺨ ـ ـ ـ ـ ـ ــﺮج‪,‬‬ ‫عملية ضرب‬
‫ﺗﻘـ ـ ـ ـ ــﻮم ﺑﻀـ ـ ـ ـ ــﺮب أرﻗـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ــﺤﻴﺤﺔ‬ ‫أرقام صحيحة‬
‫ﲝﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ ‪ IN1) Word‬و‬
‫بحجم‬
‫‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ــﺎﺗﺞ ‪OUT‬‬
‫‪.Dword/Word‬‬
‫ﻋﻠﻰ ذاﻛﺮة ‪.Dword‬‬
‫ﻋﻤﻠﻴـ ـ ــﺎت ﺿـ ـ ــﺮب ﲝﺠـ ـ ــﻢ ‪Word‬‬ ‫‪MUL_I‬‬ ‫‪٦‬‬
‫ﺗﻘـ ـ ـ ـ ــﻮم ﺑﻀـ ـ ـ ـ ــﺮب أرﻗـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ــﺤﻴﺤﺔ‬ ‫عملية ضرب‬
‫)‪ IN1‬و ‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺐ‬ ‫أرقام صحيحة‬
‫اﻟﻨ ـ ـ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Word‬‬
‫‪.Word‬‬
‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت ﺿـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮب ﲝﺠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪MUL_DI‬‬ ‫‪٧‬‬
‫‪ Dword‬ﺗﻘ ـ ـ ـ ــﻮم ﺑﻀ ـ ـ ـ ــﺮب أرﻗ ـ ـ ـ ــﺎم‬ ‫عملية ضرب‬
‫ﺻ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺤﻴﺤﺔ )‪ IN1‬و ‪(IN2‬‬ ‫أرقام صحيحة‬
‫وﻳﻜﺘ ـ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ــﻰ‬
‫بحجم ‪.Dword‬‬
‫ذاﻛﺮة ‪.Dword‬‬
‫ﻋﻤﻠﻴـ ـ ــﺎت ﻗﺴـ ـ ــﻤﺔ ﲝﺠ ـ ـ ـﻢ ‪Word‬‬ ‫‪DIV‬‬ ‫‪٨‬‬
‫عملية قسمة أرقام ﻟﻠ ـ ـ ـ ـ ـ ــﺪﺧﻞ و ‪ Dword‬ﻟﻠﺨ ـ ـ ـ ـ ـ ــﺮج‪,‬‬
‫ﺗﻘـ ـ ـ ـ ــﻮم ﺑﻘﺴـ ـ ـ ـ ــﻤﺔ أرﻗـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ــﺤﻴﺤﺔ‬ ‫صحيحة‬
‫ﲝﺠ ـ ـ ـ ـ ـ ـ ــﻢ ‪ IN1) Word‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ‬
‫بحجم‬
‫‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ــﺎﺗﺞ ‪OUT‬‬
‫‪.Dword/Word‬‬
‫ﻋﻠﻰ ذاﻛﺮة ‪.Dword‬‬

‫‪10‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻋﻤﻠﻴـ ـ ــﺎت ﻗﺴـ ـ ــﻤﺔ ﲝﺠـ ـ ــﻢ ‪Word‬‬ ‫‪DIV_I‬‬ ‫‪٩‬‬


‫عملية قسمة أرقام ﺗﻘـ ـ ـ ـ ــﻮم ﺑﻘﺴـ ـ ـ ـ ــﻤﺔ أرﻗـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ــﺤﻴﺤﺔ‬
‫)‪ IN1‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ــﺐ‬ ‫صحيحة‬
‫اﻟﻨ ـ ـ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Word‬‬
‫‪.Word‬‬
‫ﻋﻤﻠﻴـ ـ ــﺎت ﻗﺴـ ـ ــﻤﺔ ﲝﺠـ ـ ــﻢ ‪Word‬‬ ‫‪DIV_DI‬‬ ‫‪١٠‬‬
‫عملية قسمة أرقام ﺗﻘـ ـ ـ ـ ــﻮم ﺑﻘﺴـ ـ ـ ـ ــﻤﺔ أرﻗـ ـ ـ ـ ــﺎم ﺻـ ـ ـ ـ ــﺤﻴﺤﺔ‬
‫)‪ IN1‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ــﺐ‬ ‫صحيحة‬
‫اﻟﻨ ـ ـ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Dword‬‬
‫‪.Word‬‬
‫ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ــﺎت اﻹﺿ ـ ـ ـ ـ ـ ـ ــﺎﻓﺔ ﺗﺼ ـ ـ ـ ـ ـ ـ ــﺎﻋﺪﻳﺎً‬ ‫‪INC_B‬‬ ‫‪١١‬‬
‫ﲝﺠ ـ ـ ـ ـ ــﻢ ‪ Byte‬ﲝﻴ ـ ـ ـ ـ ــﺚ ﻳﻀ ـ ـ ـ ـ ــﺎف‬ ‫عملية إضافة‬
‫واﺣ ـ ــﺪ ﻋﻠ ـ ــﻰ اﻟ ـ ــﺪﺧﻞ ‪ IN‬و ﻳﻨﻘ ـ ــﻞ‬ ‫تصاعدية‬
‫إﱃ اﳋ ـ ـ ـ ــﺮج ‪ OUT‬ﻋﻠ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Byte‬‬
‫ﲝﺠﻢ ‪.Byte‬‬
‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ــﺎت أﻹﺿـ ـ ـ ـ ـ ـ ــﺎﻓﺔ ﺗﺼـ ـ ـ ـ ـ ـ ــﺎﻋﺪﻳﺎً‬ ‫‪INC_W‬‬ ‫‪١٢‬‬
‫ﲝﺠ ـ ـ ـ ــﻢ ‪ Word‬ﲝﻴ ـ ـ ـ ــﺚ ﻳﻀ ـ ـ ـ ــﺎف‬ ‫عملية إضافة‬
‫واﺣ ـ ــﺪ ﻋﻠ ـ ــﻰ اﻟ ـ ــﺪﺧﻞ ‪ IN‬و ﻳﻨﻘ ـ ــﻞ‬ ‫تصاعدية‬
‫إﱃ اﳋ ـ ـ ـ ــﺮج ‪ OUT‬ﻋﻠ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Word‬‬
‫ﲝﺠﻢ ‪.Word‬‬
‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ــﺎت أﻹﺿـ ـ ـ ـ ـ ـ ــﺎﻓﺔ ﺗﺼـ ـ ـ ـ ـ ـ ــﺎﻋﺪﻳﺎً‬ ‫‪INC_DW‬‬ ‫‪١٣‬‬
‫ﲝﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ ‪ Dword‬ﲝﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺚ‬ ‫عملية إضافة‬
‫ﻳﻀ ـ ــﺎف واﺣ ـ ــﺪ ﻋﻠ ـ ــﻰ اﻟ ـ ــﺪﺧﻞ ‪IN‬‬ ‫تصاعدية‬
‫و ﻳﻨﻘ ـ ـ ــﻞ إﱃ اﳋ ـ ـ ــﺮج ‪ OUT‬ﻋﻠ ـ ـ ــﻰ‬
‫بحجم ‪.Dword‬‬
‫ذاﻛﺮة ﲝﺠﻢ ‪.Dword‬‬

‫‪11‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻋﻤﻠﻴ ـ ـ ـ ــﺎت اﻟﻄ ـ ـ ـ ــﺮح ﺗﻨﺎزﻟﻴـ ـ ـ ـ ـﺎً ﲝﺠ ـ ـ ـ ــﻢ‬ ‫‪DEC_B‬‬ ‫‪١٤‬‬


‫‪ Byte‬ﲝﻴـ ـ ــﺚ ﻳﻄـ ـ ــﺮح واﺣـ ـ ــﺪ ﻣـ ـ ــﻦ‬ ‫عملية طرح‬
‫اﻟ ـ ـ ـ ــﺪﺧﻞ ‪ IN‬و ﻳﻨﻘ ـ ـ ـ ــﻞ إﱃ اﳋ ـ ـ ـ ــﺮج‬ ‫تنازلية‬
‫‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة ﲝﺠ ـ ـ ـ ـ ـ ـ ــﻢ‬
‫بحجم ‪.Byte‬‬
‫‪.Byte‬‬
‫ﻋﻤﻠﻴ ـ ـ ـ ــﺎت اﻟﻄـ ـ ـ ـ ـﺮح ﺗﻨﺎزﻟﻴـ ـ ـ ـ ـﺎً ﲝﺠ ـ ـ ـ ــﻢ‬ ‫‪DEC_W‬‬ ‫‪١٥‬‬
‫‪ Word‬ﲝﻴـ ــﺚ ﻳﻄـ ــﺮح واﺣـ ــﺪ ﻣـ ــﻦ‬ ‫عملية طرح‬
‫اﻟ ـ ـ ـ ــﺪﺧﻞ ‪ IN‬و ﻳﻨﻘ ـ ـ ـ ــﻞ إﱃ اﳋ ـ ـ ـ ــﺮج‬ ‫تنازلية‬
‫‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة ﲝﺠ ـ ـ ـ ـ ـ ـ ــﻢ‬
‫بحجم ‪.Word‬‬
‫‪.Word‬‬
‫ﻋﻤﻠﻴ ـ ـ ـ ــﺎت اﻟﻄ ـ ـ ـ ــﺮح ﺗﻨﺎزﻟﻴـ ـ ـ ـ ـﺎً ﲝﺠ ـ ـ ـ ــﻢ‬ ‫‪DEC_DW‬‬ ‫‪١٦‬‬
‫‪ Dword‬ﲝﻴ ـ ـ ـ ــﺚ ﻳﻄ ـ ـ ـ ــﺮح واﺣ ـ ـ ـ ــﺪ‬ ‫عملية طرح‬
‫ﻣ ـ ـ ـ ـ ـ ــﻦ اﻟ ـ ـ ـ ـ ـ ــﺪﺧﻞ ‪ IN‬و ﻳﻨﻘ ـ ـ ـ ـ ـ ــﻞ إﱃ‬ ‫تنازلية‬
‫اﳋ ـ ـ ـ ـ ـ ـ ــﺮج ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Dword‬‬
‫ﲝﺠﻢ ‪.Dword‬‬

‫‪12‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫أﻣﺜﻠﺔ )ﺗﻤﺎرﻳﻦ ﻋﻤﻠﻴﺔ(‪:‬‬

‫‪ -١‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﳌﺼﻨﻊ ﳛﺘﻮى ﻋﻠﻰ ﺧﻄﲔ أﻧﺘﺎج ﲝﻴﺚ ﺗﻀﺎء اﻟﻠﻤﺒﺔ ﻋﻨﺪﻣﺎ ﻳﻜﻮن ﺣﺎﺻﻞ‬
‫ﳎﻤﻮع اﻟﻘﻄﻊ اﳌﻨﺘﺠﺔ ﻣﻦ اﳋﻄﲔ ﻫﻮ ‪ ١٠٠‬ﻗﻄﻌﺔ‪.‬‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/S1‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.2/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪I0.3/S3‬‬ ‫‪n.o.‬‬ ‫‪٣‬‬
‫أسم العدادات‬ ‫نوع العدادات‬ ‫عدد العدادات‬
‫‪C2‬‬ ‫‪CTU‬‬ ‫‪١‬‬
‫‪C3‬‬ ‫‪CTU‬‬ ‫‪٢‬‬
‫عدد مفاتيح المقارنة نوع مفاتيح المقارنة أسم مفاتيح المقارنة‬
‫‪VW0‬‬ ‫‪==I‬‬ ‫‪١‬‬
‫أسم العمليات‬ ‫نوع العمليات‬ ‫عدد العمليات‬
‫‪ADD_I‬‬ ‫‪ADD_I‬‬ ‫‪١‬‬
‫أسم الخرج‬ ‫نوع الخرج‬ ‫عدد الخرج‬
‫‪Q0.0‬‬ ‫لمبة‬ ‫‪١‬‬

‫‪13‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪14‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺸﺮح‪:‬‬
‫‪:Network1‬‬
‫ﻋﻨﺪ ﻣﺮور أى ﻗﻄﻌﺔ ﻋﻠﻰ ﺧﻂ اﻹﻧﺘﺎج اﻷول أﻣﺎم اﳊﺴﺎس ‪ I0.2‬ﻓﺄﻧﺔ ﻳﺮﺳﻞ أﺷﺎرة إﱃ اﻟﻌﺪاد ‪ C2‬ﺑﺸﺮط أن‬
‫ﻳﻜﻮن اﳌﻔﺘﺎح ‪ I0.0‬ﻣﻔﺘﻮح‪.‬‬

‫‪:Network2‬‬
‫ﻋﻨﺪ ﻣﺮور أى ﻗﻄﻌﺔ ﻋﻠﻰ ﺧﻂ اﻹﻧﺘﺎج اﻟﺜﺎﱏ أﻣﺎم اﳊﺴﺎس ‪ I0.3‬ﻓﺄﻧﺔ ﻳﺮﺳﻞ أﺷﺎرة إﱃ اﻟﻌﺪاد ‪ C3‬ﺑﺸﺮط أن‬
‫ﻳﻜﻮن اﳌﻔﺘﺎح ‪ I0.0‬ﻣﻔﺘﻮح‪.‬‬

‫‪:Network3‬‬
‫ﻳﻘﻮم ﲜﻤﻊ ﻋﺪد اﻟﻘﻄﻊ اﻟﱴ ﰎ ﻋﺪﻫﺎ ﺳﻮاء ﺑﻮاﺳﻄﺔ اﻟﻌﺪاد اﳋﺎص ﲞﻂ اﻹﻧﺘﺎج اﻷول ‪ C2‬أو ﺑﻮاﺳﻄﺔ اﻟﻌﺪاد‬
‫اﳋﺎص ﲞﻂ اﻹﻧﺘﺎج اﻟﺜﺎﱏ ‪ C3‬وﻛﺘﺎﺑﺔ ا‪‬ﻤﻮع ﰱ اﻟﺬاﻛﺮة ‪.VW0‬‬

‫‪:Network4‬‬
‫ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﻗﻴﻤﺔ اﻟﺬاﻛﺮة ‪ VW0‬ﺗﺴﺎوى ‪ ١٠٠‬ﻳﺼﺒﺢ ﻣﻔﺘﺎح اﳌﻘﺎرﻧﺔ ﻣﻐﻠﻖ ﻓﺘﻀﺎء اﻟﻠﻤﺒﺔ‪.‬‬

‫‪15‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫‪ -٢‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﳌﺼﻨﻊ ﳛﺘﻮى ﻋﻠﻰ ﺧﻂ أﻧﺘﺎج ﲝﻴﺚ ﲤﺮ اﻟﻜﺮﺗﻮﻧﺔ أﻣﺎم اﳊﺴﺎس ﻣﻊ ﻣﺮاﻋﺎة أن‬
‫ﻛﻞ ﻛﺮﺗﻮﻧﺔ ﲢﺘﻮى ﻋﻠﻰ ‪ ١٢‬زﺟﺎﺟﺔ‪ ,‬ﺻﻤﻢ ﺑﺮﻧﺎﻣﺞ ﳌﻌﺮﻓﺔ ﻋﺪد اﻟﺰﺟﺎﺟﺎت و ﻟﻴﺲ اﻟﻜﺮاﺗﲔ وﺗﻀﺎء ﳌﺒﺔ أﺷﺎرة‬
‫ﻋﻨﺪﻣﺎ ﻳﺼﻞ ﻋﺪد اﻟﺰﺟﺎﺟﺎت إﱃ ‪.١٢٠‬‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/S1‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫أسم العدادات‬ ‫نوع العدادات‬ ‫عدد العدادات‬
‫‪C0‬‬ ‫‪CTU‬‬ ‫‪١‬‬
‫عدد مفاتيح المقارنة نوع مفاتيح المقارنة أسم مفاتيح المقارنة‬
‫‪VW24‬‬ ‫‪==I‬‬ ‫‪١‬‬
‫أسم العمليات‬ ‫نوع العمليات‬ ‫عدد العمليات‬
‫‪MUL_I‬‬ ‫‪MUL_I‬‬ ‫‪١‬‬
‫أسم الخرج‬ ‫نوع الخرج‬ ‫عدد الخرج‬
‫‪Q1.1/K1M‬‬ ‫لمبة‬ ‫‪١‬‬

‫اﻟﺸﺮح‪:‬‬
‫‪:Network1‬‬
‫ﻋﻨﺪ ﻣﺮور أى ﻛﺮﺗﻮﻧﺔ ﻋﻠﻰ ﺧﻂ اﻹﻧﺘﺎج أﻣﺎم اﳊﺴﺎس ‪ I0.1‬ﻓﺄﻧﺔ ﻳﺮﺳﻞ أﺷﺎرة إﱃ اﻟﻌﺪاد ‪ C0‬ﺑﺸﺮط أن ﻳﻜﻮن‬
‫اﳌﻔﺘﺎح ‪ I0.0‬ﻣﻔﺘﻮح‪.‬‬
‫‪:Network2‬‬
‫ﻳﻘﻮم اﻟﱪﻧﺎﻣﺞ ﺑﻀﺮب ﻋﺪد اﻟﻜﺮاﺗﲔ اﻟﱴ ﰎ ﻋﺪﻫﺎ ﺑﻮاﺳﻄﺔ اﻟﻌﺪاد ‪ C0‬ﰱ ﻋﺪد اﻟﺰﺟﺎﺟﺎت ﰒ ﻛﺘﺎﺑﺔ ا‪‬ﻤﻮع ﰱ‬
‫اﻟﺬاﻛﺮة ‪.VW24‬‬
‫‪:Network3‬‬
‫ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﻗﻴﻤﺔ اﻟﺬاﻛﺮة ‪ VW24‬ﺗﺴﺎوى ‪ ١٢٠‬ﻳﺼﺒﺢ ﻣﻔﺘﺎح اﳌﻘﺎرﻧﺔ ﻣﻐﻠﻖ ﻓﺘﻀﺎء اﻟﻠﻤﺒﺔ‪.‬‬

‫‪16‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪17‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫‪ -٣‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﳌﻌﺎدﻟﺔ ﺗﻘﻮم ﺑﺘﺤﻮﻳﻞ درﺟﺔ اﳊﺮارة ﻣﻦ ‪ Kelvin‬إﱃ ‪ Celsius‬ﲝﻴﺚ أذا‬
‫ﻛﺎﻧﺖ ﻗﻴﻤﺔ درﺟﺔ اﳊﺮارة ﲢﺖ اﻟﺼﻔﺮ ﺗﻀﻰء ﳌﺒﺔ ﲪﺮاء‪.‬‬
‫ﻋﻠﻤﺎً ﺑﺄن اﳌﻌﺎدﻟﺔ اﳋﺎﺻﺔ ﺑﺎﻟﺘﺤﻮﻳﻞ ﻫﻰ‪Kelvin=Celsius + 273 .‬‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/Stop‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/Start‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫عدد المتغيرات نوع المتغيرات أسم المتغيرات‬
‫)‪VW0(celsius‬‬ ‫‪word‬‬ ‫‪١‬‬
‫)‪VW2(273‬‬ ‫‪word‬‬ ‫‪٢‬‬
‫)‪VW4(kelvin‬‬ ‫‪word‬‬ ‫‪٣‬‬
‫عدد العمليات نوع العمليات أسم العمليات‬
‫‪ADD_I‬‬ ‫‪ADD_I‬‬ ‫‪١‬‬
‫أسم الخرج‬ ‫نوع الخرج‬ ‫عدد الخرج‬
‫‪Q1.1/K1M‬‬ ‫لمبة‬ ‫‪١‬‬

‫اﻟﺸﺮح‪:‬‬
‫‪:Network1‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬وﺑﺸﺮط أن ﻳﻜﻮن ‪ I0.0‬ﻣﻐﻠﻖ ﻓﻴﻌﻤﻞ اﻟﺮﻳﻠﻴﻪ ‪M0.7‬‬
‫‪:Network2‬‬
‫ﻳﻘﻮم ﺑﻄﺮح ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VW2‬اﻟﺬى ﳝﺜﻞ درﺟﺔ اﳊﺮارة ﺑﺎﻟـ ‪ Kelvin‬ﻣﻦ ﻗﻴﻤﺔ اﳌﺘﻐﲑ اﻵﺧﺮة ‪ VW2‬اﻟﱴ‬
‫ﲤﺜﻞ اﻟﻔﺮق ﺑﲔ اﻟﻘﻴﻤﺘﲔ "‪."273‬‬
‫‪:Network3‬‬
‫ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﻗﻴﻤﺔ اﻟـ ‪ VW0‬أﻗﻞ ﻣﻦ ﺻﻔﺮ ﺳﻮف ﺗﻀﺎء ﳌﺒﺔ ﻟﺘﺸﲑ أن درﺟﺔ اﳊﺮارة ﺑﺎﻟﺴﺎﻟﺐ‪.‬‬

‫‪18‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪19‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫‪ -٤‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﳌﻌﺎدﻟﺔ ﺗﻘﻮم ﺑﻨﻔﺲ ﻋﻤﻞ اﻟﻌﺪاد ﺣﻴﺚ ﻳﻌﻤﻞ اﳋﺮج ﻋﻨﺪﻣﺎ ﻳﺼﻞ اﻟﻌﺪد إﱃ‬
‫‪ ٣٠٠٠٠٠‬ﻋﺪة‪.‬‬
‫ﻋﻠﻤﺎً ﺑﺄن اﳌﻌﺎدﻟﺔ اﳋﺎﺻﺔ ﺑﺎﻟﻌﺪاد‪VD0 = VD0 + 1 .‬‬
‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬
‫‪I0.0/Stop‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.1/Start‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫عدد المتغيرات نوع المتغيرات أسم المتغيرات‬
‫‪VD0‬‬ ‫‪D.word‬‬ ‫‪١‬‬
‫عدد العمليات نوع العمليات أسم العمليات‬
‫‪INC_DW‬‬ ‫‪INC_DW‬‬ ‫‪١‬‬
‫أسم الخرج‬ ‫نوع الخرج‬ ‫عدد الخرج‬
‫‪Q1.0/lamp‬‬ ‫لمبة‬ ‫‪١‬‬

‫اﻟﺸﺮح‪:‬‬
‫‪:Network1‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ إﺿﺎﻓﺔ واﺣﺪ إﱃ اﳌﺘﻐﲑ ‪ VD0‬ﻓﻴﻌﻤﻞ ﲤﺎﻣﺎً ﻣﺜﻞ اﻟﻌﺪاد وﻗﺪ ﰎ اﺳﺘﺨﺪام‬
‫ﻣﻔﺘﺎح اﻟـ ‪ positive edge‬ﻟﻜﻰ ﺗﻜﻮن ﻛﻞ ﺿﻐﻄﺔ ﻋﻠﻰ اﳌﻔﺘﺎح ﺗﻌﺎدل ﻋﺪة واﺣﺪة ﻓﻘﻂ وﻟﻴﺲ أﻛﺜﺮ‪.‬‬
‫‪:Network2‬‬
‫ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD0‬ﺗﺴﺎوى ‪ 300000‬ﻓﺴﻮف ﻳﻌﻤﻞ اﳋﺮج ‪ Q1.0‬ﺗﻠﻘﺎﺋﻴﺎً‪.‬‬
‫‪:Network3‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.0‬ﺳﻮف ﻳﺘﻢ ﻋﻤﻞ ‪ reset‬أى إﻳﻘﺎف ﻟﻠﺨﺮج ‪.Q1.0‬‬
‫‪:Network4‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.0‬أﻳﻀﺎً ﺳﻮف ﻳﺘﻢ ﻧﻘﻞ ﻗﻴﻤﺔ ﺻﻔﺮ إﱃ اﳌﺘﻐﲑ ‪ VD0‬ﻟﻜﻰ ﻳﺘﻤﻜﻦ اﻟﻌﺎﻣﻞ ﻣﻦ اﻟﺒﺪء ﻣﻦ‬
‫ﺟﺪﻳﺪ ﺑﺪاﻳﺘﺎً ﻣﻦ اﻟﺼﻔﺮ ﻛﻤﺎ ﻛﺎن اﻟﻮﺿﻊ ﰱ اﻟﺒﺪاﻳﺔ‪.‬‬

‫‪20‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪21‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﻌﺸﺮﻳﺔ‪:‬‬

‫‪22‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻛﻞ اﻟﻌﻤﻠﻴﺎت اﻟﱴ ﺗﺘﻢ ﺑﻮاﺳﻄﺔ اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ ﻟﻸرﻗﺎم اﻟﻌﺸﺮﻳﺔ ﳚﺐ أن ﲢﺘﻮى ﻓﻘﻂ ﻋﻠﻰ أرﻗﺎم ﻋﺸﺮﻳﺔ و‬
‫ﳚﺐ أن ﺗﻜﻮن اﻟﻨﻮاﺗﺞ ﻫﻰ أﻳﻀﺎً ﻋﺸﺮﻳﺔ ﻓﻤﺜﻼً‪:‬‬

‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻌﺸﺮﻳﺔ ﻟﺠﻤﻊ أرﻗﺎم ﻏﻴﺮ ﻋﺸﺮﻳﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﲨﻊ رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ٢‬و ﻗﻴﻤﺔ ‪ ٦‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﻋﺸﺮﻳﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻌﺸﺮﻳﺔ ﻟﻄﺮح أرﻗﺎم ﻏﻴﺮ ﻋﺸﺮﻳﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﻃﺮح رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ۸‬ﻣﻦ رﻗﻢ ‪ ١‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﻋﺸﺮﻳﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻌﺸﺮﻳﺔ ﻟﻘﺴﻤﺔ أرﻗﺎم ﻏﻴﺮ ﻋﺸﺮﻳﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﻗﺴﻤﺔ رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ١‬و ﻗﻴﻤﺔ ‪ ٣‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﻋﺸﺮﻳﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻌﺸﺮﻳﺔ ﻟﻀﺮب أرﻗﺎم ﻏﻴﺮ ﻋﺸﺮﻳﺔ ﻓﻤﺜﻼً‪:‬‬
‫ﻻ ﳝﻜﻦ ﺿﺮب رﻗﻢ ﺑﻘﻴﻤﺔ ‪ ١٠۸‬و ﻗﻴﻤﺔ ‪ ٢٣‬ﻷ‪‬ﺎ ﻟﻴﺴﺖ أرﻗﺎم ﻋﺸﺮﻳﺔ‪.‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻻ ﺗﻮﺟﺪ ﻣﺸﻜﻠﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﻌﺎدﻟﺔ أى ﻻ داﻋﻰ ﻟﻤﺮاﻋﺎة اﻟﻨﺎﺗﺞ ﻣﻦ اﻟﻨﺎﺣﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﺬاﻛﺮة ﻷﻧﻪ‪:‬‬
‫‪ -‬ﻳﺘﻢ اﺳﺘﺨﺪام ذاﻛﺮة ﲝﺠﻢ ‪ Dword‬ﻣﻊ اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ اﻟﻌﺸﺮﻳﺔ وﻫﻮ أﻛﱪ ﺣﺠﻢ ﻟﻠﺬاﻛﺮة ﰱ‬
‫اﻟـ ‪ PLC‬ﻛﻤﺎ وﺿﺢ ﰱ اﳉﺰء اﻷول ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب‪.‬‬

‫ﻻ ﺗﻮﺟﺪ ﻣﺸﻜﻠﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﻌﺎدﻟﺔ أى ﻻ داﻋﻰ ﻟﻤﺮاﻋﺎة اﻟﻨﺎﺗﺞ ﻣﻦ اﻟﻨﺎﺣﻴﺔ اﻟﺨﺎﺻﺔ ﺑﻨﻮع اﻟﻨﺎﺗﺞ ﻷﻧﻪ‪:‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ أن ﻛﺎن اﻟﻨﺎﺗﺞ ﻫﻮ رﻗﻢ ﺻﺤﻴﺢ ﺑﺎﻟﺼﺪﻓﺔ ﻣﺜﻼً ﻓﻼ ﺗﻮﺟﺪ أى ﻣﺸﻜﻠﺔ ﻷﻧﻪ ﻳﺘﻢ إﺿﺎﻓﺔ "‪",٠‬‬
‫إﱃ اﻟﺮﻗﻢ ﻓﻼ ﺗﺘﻐﲑ اﻟﻘﻴﻤﺔ وﻟﻜﻦ ﻳﺼﺒﺢ اﻟﺮﻗﻢ ﻋﺸﺮى ﺗﻠﻘﺎﺋﻴﺎً‪.‬‬

‫‪23‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫الشكل‬ ‫الشرح‬ ‫االسم‬ ‫م‬

‫ﻋﻤﻠﻴ ـ ــﺎت ﲨـ ـ ــﻊ ﲝﺠـ ـ ــﻢ ‪Dword‬‬ ‫‪ADD_R‬‬ ‫‪١‬‬


‫ﺗﻘ ـ ــﻮم ﲜﻤ ـ ــﻊ أرﻗ ـ ــﺎم ﻋﺸـ ـ ـﺮﻳﺔ )‪IN1‬‬ ‫عملية جمع أرقام‬
‫و ‪ (IN2‬وﻳﻜﺘ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺐ اﻟﻨـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎﺗﺞ‬ ‫عشرية‬
‫)‪ (OUT‬ﻋﻠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Dword‬‬
‫‪.Dword‬‬
‫ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت ﻃ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮح ﲝﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪SUB_R‬‬ ‫‪٢‬‬
‫‪ Dword‬ﺗﻘـ ـ ـ ـ ـ ــﻮم ﺑﻄـ ـ ـ ـ ـ ــﺮح أرﻗـ ـ ـ ـ ـ ــﺎم‬ ‫عملية طرح أرقام‬
‫ﻋﺸ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮﻳﺔ )‪ IN1‬و ‪(IN2‬‬ ‫عشرية‬
‫وﻳﻜﺘ ـ ـ ــﺐ اﻟﻨ ـ ـ ــﺎﺗﺞ )‪ (OUT‬ﻋﻠ ـ ـ ــﻰ‬
‫بحجم ‪.Dword‬‬
‫ذاﻛﺮة ‪.Dword‬‬
‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت ﺿـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮب ﲝﺠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪MUL_R‬‬ ‫‪٣‬‬
‫‪ Dword‬ﺗﻘ ـ ـ ـ ــﻮم ﺑﻀ ـ ـ ـ ــﺮب أرﻗ ـ ـ ـ ــﺎم‬ ‫عملية ضرب أرقام‬
‫ﻋﺸ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮﻳﺔ )‪ IN1‬و ‪(IN2‬‬ ‫عشرية‬
‫وﻳﻜﺘ ـ ـ ــﺐ اﻟﻨ ـ ـ ــﺎﺗﺞ )‪ (OUT‬ﻋﻠ ـ ـ ــﻰ‬
‫بحجم ‪.Dword‬‬
‫ذاﻛﺮة ‪.Dword‬‬
‫ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت ﻗﺴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻤﺔ ﲝﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪DIV_R‬‬ ‫‪٤‬‬
‫‪ Dword‬ﺗﻘ ـ ـ ـ ــﻮم ﺑﻘﺴ ـ ـ ـ ــﻤﺔ أرﻗ ـ ـ ـ ــﺎم‬ ‫عملية ضرب أرقام‬
‫ﻋﺸ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮﻳﺔ )‪ IN1‬و ‪(IN2‬‬ ‫عشرية‬
‫وﻳﻜﺘ ـ ـ ــﺐ اﻟﻨ ـ ـ ــﺎﺗﺞ )‪ (OUT‬ﻋﻠ ـ ـ ــﻰ‬
‫بحجم ‪.Dword‬‬
‫ذاﻛﺮة ‪.Dword‬‬

‫‪24‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻋﻤﻠﻴ ـ ـ ــﺎت اﳉـ ـ ـ ــﺰر اﻟﱰﺑﻴﻌ ـ ـ ــﻰ ﲝﺠـ ـ ـ ــﻢ‬ ‫‪SQRT‬‬ ‫‪٥‬‬
‫‪ Dword‬ﻟﻠـ ـ ـ ــﺪﺧﻞ ‪IN‬‬ ‫عملية جزر تربيعى‬
‫وﻳﻜﺘ ـ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ــﻰ‬ ‫أرقام عشرية‬
‫ذاﻛﺮة ‪.Dword‬‬
‫بحجم ‪.Dword‬‬

‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت "ﺟﺘ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎ" ﲝﺠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪COS‬‬ ‫‪٦‬‬


‫‪ Dword‬ﻟﻠـ ـ ـ ــﺪﺧﻞ ‪IN‬‬ ‫عملية جتا لألرقام‬
‫وﻳﻜﺘ ـ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ــﻰ‬ ‫العشرية‬
‫ذاﻛﺮة ‪.Dword‬‬
‫بحجم ‪.Dword‬‬

‫ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت "ﺟ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎ" ﲝﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪SIN‬‬ ‫‪٧‬‬


‫‪ Dword‬ﻟﻠـ ـ ـ ــﺪﺧﻞ ‪IN‬‬ ‫عملية جا لألرقام‬
‫وﻳﻜﺘ ـ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ــﻰ‬ ‫العشرية‬
‫ذاﻛﺮة ‪.Dword‬‬
‫بحجم ‪.Dword‬‬

‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت "ﻇـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎ" ﲝﺠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪TAN‬‬ ‫‪٨‬‬


‫‪ Dword‬ﻟﻠـ ـ ـ ــﺪﺧﻞ ‪IN‬‬ ‫عملية ظا لألرقام‬
‫وﻳﻜﺘ ـ ـ ـ ـ ــﺐ اﻟﻨ ـ ـ ـ ـ ــﺎﺗﺞ ‪ OUT‬ﻋﻠ ـ ـ ـ ـ ــﻰ‬ ‫العشرية‬
‫ذاﻛﺮة ‪.Dword‬‬
‫بحجم ‪.Dword‬‬

‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت "اﻷس" ﺑﺎﺳـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺘﺨﺪام‬ ‫‪EXP‬‬ ‫‪٩‬‬


‫ﻗﻴﻤﺔ ‪ ١٠‬ﻛﺄﺳﺎس‬ ‫عملية األس لألرقام‬
‫ﲝﻴ ـ ـ ـ ـ ـ ـ ــﺚ ﻳﻜﺘ ـ ـ ـ ـ ـ ـ ــﺐ رﻗ ـ ـ ـ ـ ـ ـ ــﻢ اﻷس ﰱ‬ ‫العشرية‬
‫اﻟـ ـ ـ ـ ـ ـ ــﺪﺧﻞ ‪ IN‬وﻳﻜﺘـ ـ ـ ـ ـ ـ ــﺐ اﻟﻨـ ـ ـ ـ ـ ـ ــﺎﺗﺞ‬ ‫بحجم ‪.Dword‬‬
‫‪ OUT‬ﻋﻠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫‪.Dword‬‬

‫‪25‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎت "ﻟـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻦ" ﲝﺠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻢ‬ ‫‪LN‬‬ ‫‪١٠‬‬


‫‪ Dword‬ﺑﻜﺘﺎﺑـ ـ ـ ـ ـ ــﺔ اﻟﻘﻴﻤـ ـ ـ ـ ـ ــﺔ ‪IN‬‬ ‫عملية لن لألرقام‬
‫ﻳﻜﺘ ـ ـ ــﺐ اﻟﻨ ـ ـ ــﺎﺗﺞ‬ ‫ﻛﺄﺳ ـ ـ ــﺎس و‬ ‫العشرية‬
‫‪ OUT‬ﻋﻠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻰ ذاﻛـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮة‬
‫بحجم ‪.Dword‬‬
‫‪.Dword‬‬

‫أﻣﺜﻠﺔ )ﺗﻤﺎرﻳﻦ ﻋﻤﻠﻴﺔ(‪:‬‬

‫‪ -۱‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﻟﻘﺎﻧﻮن ﻓﻴﺜﺎﻏﻮرث‬


‫ﻋﻠﻤﺎً ﺑﺄن اﳌﻌﺎدﻟﺔ اﳋﺎﺻﺔ ﺑﻘﺎﻧﻮن ﻓﻴﺜﺎﻏﻮرث ﻫﻰ‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/Stop‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/Start‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫عدد المتغيرات نوع المتغيرات أسم المتغيرات‬
‫)‪VD0(a‬‬ ‫‪D.word‬‬ ‫‪١‬‬
‫)‪VD2(b‬‬ ‫‪D.word‬‬ ‫‪٢‬‬
‫)‪VD4(C‬‬ ‫‪D.word‬‬ ‫‪٣‬‬
‫‪2‬‬
‫) ‪VD20(a‬‬ ‫‪D.word‬‬ ‫‪٤‬‬
‫‪2‬‬
‫) ‪VD22(b‬‬ ‫‪D.word‬‬ ‫‪٥‬‬
‫‪2‬‬ ‫‪2‬‬
‫) ‪VD40( a + b‬‬ ‫‪D.word‬‬ ‫‪٦‬‬
‫عدد العمليات نوع العمليات أسم العمليات‬
‫‪ADD_R‬‬ ‫‪ADD_R‬‬ ‫‪١‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٢‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٣‬‬
‫‪SQRT‬‬ ‫‪SQRT‬‬ ‫‪٤‬‬

‫‪26‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫ﺗﻮﺿﻴﺢ‪:‬‬
‫أسم العملية‬ ‫المتغير‬ ‫العملية‬ ‫المتغير‬ ‫العملية‬ ‫‪Network‬‬
‫عملية ضرب‬ ‫‪2‬‬
‫‪VD20‬‬ ‫‪a‬‬ ‫‪VD0 x VD0‬‬ ‫‪axa‬‬ ‫‪١‬‬
‫عملية ضرب‬ ‫‪2‬‬
‫‪VD22‬‬ ‫‪b‬‬ ‫‪VD2 x VD2‬‬ ‫‪bxb‬‬ ‫‪٢‬‬
‫عملية جمع‬ ‫‪VD40 a + b VD20 + VD22 a2 + b2‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪٣‬‬
‫جزر تربيعى‬ ‫‪VD4 a2 + b2 SQRT(VD40) a2 + b2‬‬ ‫‪٤‬‬

‫اﻟﺸﺮح‪:‬‬

‫‪:Network1‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﺿﺮب ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD0‬ﰱ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD0‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD20‬‬
‫‪:Network2‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﺿﺮب ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD2‬ﰱ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD2‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD22‬‬
‫‪:Network3‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﲨﻊ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD20‬وﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD22‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD40‬‬
‫‪:Network4‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻖ اﳉﺬر اﻟﱰﺑﻴﻌﻰ ﻋﻠﻰ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD40‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD4‬‬

‫‪27‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪28‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫‪ -٢‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﳌﻌﺎدﻟﺔ ﺗﻘﻮم ﺑﺘﺤﻮﻳﻞ اﻟﺰاوﻳﺔ ﻣﻦ ‪ Radiant‬إﱃ ‪.Degree‬‬
‫ﻋﻠﻤﺎً ﺑﺄن اﳌﻌﺎدﻟﺔ اﳋﺎﺻﺔ ﺑﺎﻟﺘﺤﻮﻳﻞ ﻫﻰ‪.‬‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/Stop‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/Start‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫عدد المتغيرات نوع المتغيرات أسم المتغيرات‬
‫)‪VD0(D‬‬ ‫‪D.word‬‬ ‫‪١‬‬
‫)‪VD4(G‬‬ ‫‪D.word‬‬ ‫‪٢‬‬
‫)‪VD8(G/1.8‬‬ ‫‪D.word‬‬ ‫‪٣‬‬
‫عدد العمليات نوع العمليات أسم العمليات‬
‫‪ADD_R‬‬ ‫‪ADD_R‬‬ ‫‪١‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٢‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٣‬‬
‫‪SQRT‬‬ ‫‪SQRT‬‬ ‫‪٤‬‬

‫ﺗﻮﺿﻴﺢ‪:‬‬
‫المتغير أسم العملية‬ ‫العملية‬ ‫المتغير‬ ‫العملية‬ ‫‪Network‬‬
‫عملية قسمة‬ ‫‪VD8‬‬ ‫‪G/1.8‬‬ ‫‪VD4 / 1.8‬‬ ‫‪G/1.8‬‬ ‫‪١‬‬
‫عملية طرح‬ ‫‪VD0 (G/1.8) – 32 VD8 – 32 (G/1.8) – 32‬‬ ‫‪٢‬‬

‫‪29‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺸﺮح‪:‬‬

‫‪:Network1‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﻗﺴﻤﺔ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD4‬ﻋﻠﻰ ‪ ۸,۱‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ ‪.VD8‬‬
‫‪:Network2‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﻃﺮح رﻗﻢ ‪ ٣٢,٠‬ﻣﻦ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD8‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ ‪.VD0‬‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪30‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫‪ -٣‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﳌﻌﺎدﻟﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.1/Start‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫عدد المتغيرات نوع المتغيرات أسم المتغيرات‬
‫)‪VD0(x‬‬ ‫‪word‬‬ ‫‪١‬‬
‫)‪VD4(Y‬‬ ‫‪word‬‬ ‫‪٢‬‬
‫عدد العمليات نوع العمليات أسم العمليات‬
‫‪ADD_R‬‬ ‫‪ADD_R‬‬ ‫‪١‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٢‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٣‬‬
‫‪SQRT‬‬ ‫‪SQRT‬‬ ‫‪٤‬‬

‫ﺗﻮﺿﻴﺢ‪:‬‬

‫المتغير‬ ‫العملية‬ ‫المتغير‬ ‫العملية‬ ‫‪Network‬‬


‫‪2‬‬
‫‪VD8‬‬ ‫‪x‬‬ ‫‪VD0 x VD0‬‬ ‫‪x.x‬‬ ‫‪١‬‬
‫‪VD12‬‬ ‫‪2.5x2‬‬ ‫‪2.5 x VD8‬‬ ‫‪2,5 . x2‬‬ ‫‪٢‬‬
‫‪VD16‬‬ ‫‪0.6x‬‬ ‫‪0.6 x VD0‬‬ ‫‪0,6 . x‬‬ ‫‪٣‬‬
‫‪VD20‬‬ ‫‪2.5x2+0.6x‬‬ ‫‪VD12 + VD16‬‬ ‫‪2,5 . x2 + 0,6 . x‬‬ ‫‪٤‬‬
‫‪VD4‬‬ ‫‪2.5x2+0.6x-4‬‬ ‫‪VD20 – 4.0‬‬ ‫‪2,5 . x2 + 0,6 . x - 4‬‬ ‫‪٥‬‬

‫عملية جمع‬ ‫‪Network4‬‬ ‫عملية ضرب‬ ‫‪Network1‬‬


‫عملية طرح‬ ‫‪Network5‬‬ ‫عملية ضرب‬ ‫‪Network2‬‬
‫عملية ضرب‬ ‫‪Network3‬‬

‫‪31‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪32‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻤﻠﻴﺎت اﳊﺴﺎﺑﻴﺔ‬

‫اﻟﺸﺮح‪:‬‬

‫‪:Network1‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﺿﺮب ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD0‬ﰱ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD0‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD8‬‬
‫‪:Network2‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﺿﺮب رﻗﻢ ‪ ٥,٢‬ﰱ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD8‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD12‬‬
‫‪:Network3‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﺿﺮب رﻗﻢ ‪ ٦,٠‬ﰱ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD0‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ‬
‫‪.VD16‬‬
‫‪:Network4‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﲨﻊ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD12‬ﰱ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD16‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ‬
‫اﳌﺘﻐﲑ ‪.VD20‬‬
‫‪:Network5‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﻃﺮح رﻗﻢ ‪ ٤‬ﻣﻦ ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VD20‬وﻳﺘﻢ وﺿﻊ اﻟﻨﺎﺗﺞ ﰱ اﳌﺘﻐﲑ ‪.VD4‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻟﻘﺪ ﰎ ﺗﻨﻔﻴﺬ اﳌﻌﺎدﻟﺔ اﻟﺴﺎﺑﻘﺔ ﻛﻤﺜﺎل ﻋﺎﺑﺮ وﻟﻜﻦ ﰱ ﺣﻘﻴﻘﺔ اﻷﻣﺮ ﻗﺪ ﺗﻜﻮن ﻫﺬﻩ اﳌﻌﺎدﻟﺔ ﺧﺎﺻﺔ ﺑﻘﻴﻤﺔ ﺗﻨﺎﻇﺮﻳﺔ‬
‫ﺗﺸﲑ إﱃ درﺟﺔ ﺣﺮارة‪ ,‬ﺳﺮﻋﺔ ﳏﺮك‪ ,‬ﺷﺪة اﻟﻀﻐﻂ‪ ,‬إﱁ‪....‬‬

‫‪33‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﺒﺎب اﻟﺜﺎﻧﻰ‬

‫ﺟﺪول اﻟﺤﺎﻻت‬
‫• ﻣﺤﺘﻮﻳﺎت ﺟﺪول اﻟﺤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎﻻت‪.‬‬

‫• أﺳﺘﺨﺪاﻣﺎت ﺟﺪول اﻟﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎﻻت‪.‬‬

‫• اﻟﻤﻔ ـﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺟﺪول اﻟﺤ ـﺎﻻت‪.‬‬

‫• اﻟﻄﺮق اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ أﻇﻬﺎر ﺣـﺎﻟﺔ اﻟﻌﻨﺎوﻳﻦ‪.‬‬

‫• ﻛﻴﻔﻴﺔ ﻛﺘﺎﺑﺔ ﻣﺠﻤﻮﻋﺔ ﻋﻨﺎوﻳ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻦ‪.‬‬

‫• أﻣـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮ ‪.Write all‬‬

‫• أﻣـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮ ‪.Force‬‬

‫• ﻛﻴﻔﻴﺔ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Write all‬ﻋﻠﻰ ﺗﻤـﺎرﻳﻦ‪.‬‬

‫• ﻛﻴﻔﻴﺔ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Force‬ﻋﻠﻰ ﺗﻤـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎرﻳﻦ‪.‬‬

‫• اﻟﺮﺳﻢ اﻟﺘﺨﻄﻴﻄﻰ ﻷى ﻋﻨﻮان ﻓﻰ اﻟﺒﺮﻧﺎﻣـ ـ ـ ـﺞ‪.‬‬

‫‪35‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﺟﺪول اﻟﺤﺎﻻت ‪:Status Chart‬‬

‫ﺗﺴﺘﺨﺪم ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" اﻟـ ‪ Status Chart‬ﳌﻌﺮﻓﺔ اﳊﺎﻟﺔ اﳋﺎﺻﺔ ﺑﻜﻞ‬
‫ﻋﻨﻮان ﻣﻦ اﻟﻌﻨﺎوﻳﻦ اﳌﺴﺘﺨﺪﻣﺔ أو ﻏﲑ اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ‬
‫و ﳝﻜﻦ أﻳﻀﺎً ﺗﻌﺪﻳﻞ ﺣﺎﻟﺔ اﳌﺪﺧﻼت‪ ,‬اﳌﺨﺮﺟﺎت‪ ,‬اﻟﺮﻳﻠﻴﻬﺎت‪,‬‬
‫اﳌﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ‪ ,‬اﻟﻌﺪادات و اﳌﺘﻐﲑات ﺑﻮاﺳﻄﺔ ﻫﺬﻩ اﻟﺼﻔﺤﺔ‪.‬‬

‫ﻃﺮﻳﻘﻪ اﺳﺘﺨﺪام ﺻﻔﺤﺔ "ﺟﺪول اﻟﺤﺎﻻت "‪:‬‬

‫‪ -‬ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" اﻟـ ‪Status Chart‬‬


‫ﳝﻜﻦ ﻣﻌﺮﻓﺔ ﺣﺎﻟﺔ اﳌﺪﺧﻼت و اﳌﺨﺮﺟﺎت وأى ﻋﻨﻮان أﺧﺮ‬
‫دون اﻟﺬﻫﺎب إﱃ ﻣﻜﺎن اﳌﺪاﺧﻞ أو ﻣﻜﺎن اﳌﺨﺮﺟﺎت‪ ,‬ﻓﻤﺜﻼً‬
‫ﻗﺪ ﻳﻮﺟﺪ ﻣﻦ ﺿﻦ ﳎﻤﻮﻋﺔ اﳌﻔﺎﺗﻴﺢ ) ﺣﺴﺎس ﻣﻮﺻﻞ أﺳﻔﻞ‬
‫ﻣﻜﻴﻨﺔ ﻣﻌﻴﻨﺔ ( ﻓﺒﺪﻻً ﻣﻦ اﻟﺬﻫﺎب ﻟﻠﺒﺤﺚ ﻋﻦ اﳌﻔﺘﺎح ﳌﻌﺮﻓﺔ‬
‫إذا ﻛﺎن ﻣﻔﺘﻮح أو ﻣﻐﻠﻖ ﻓﻴﻤﻜﻦ ﻣﻌﺮﻓﺔ اﳊﺎﻟﺔ ﺑﻮاﺳﻄﺔ‬
‫ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" ﺑﻜﻞ ﺳﻬﻮﻟﺔ‪.‬‬

‫‪36‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﺗﺴﺘﺨﺪم أﻳﻀﺎً ﺻﻔﺤﺔ "ﺟﺪول اﻟﺤﺎﻻت" اﻟـ ‪ Status Chart‬ﻟﻤﻌﺮﻓﺔ اﻷﻋﻄﺎل‪:‬‬


‫‪ -‬ﻓﻤﺜﻼ ﰱ ﺣﺎﻟﺔ أن ﻛﺎن اﳌﻔﺘﺎح ﻣﻐﻠﻖ ﺑﻴﻨﻤﺎ ﺗﻘﻮل ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" أﻧﺔ ﻣﻔﺘﻮح ﻓﻬﺬا ﻳﻌﲎ أن‬
‫اﳌﻔﺘﺎح ﺑﻪ ﻣﺸﻜﻠﺔ )ﻟﻴﺲ ﻣﻮﺻﻞ ﺑﺎﻟﻜﻬﺮﺑﺎء – ﰎ اﻟﺘﻮﺻﻴﻞ ﻋﻠﻰ اﻟﻌﺰل – اﻟﻜﻬﺮﺑﺎء اﳌﻮﺻﻠﺔ ﺑﺎﳌﻔﺘﺎح أﻗﻞ‬
‫ﻣﻦ اﳊﺪ اﳌﺴﻤﻮح ﺑﺔ – ﻣﺸﻜﻠﺔ ﺑﻨﻘﺎط اﻟﺘﻼﻣﺲ اﳋﺎﺻﺔ ﺑﺎﳌﻔﺘﺎح – إﱁ‪.(..‬‬
‫‪ -‬ﺑﻴﻨﻤﺎ ﰱ ﺣﺎﻟﻪ إذا ﻛﺎن اﳋﺮج )اﶈﺮك( ﻻ ﻳﻌﻤﻞ ﺑﻴﻨﻤﺎ ﺗﺸﲑ ﺻﻔﺤﺔ ﺟﺪول اﳊﺎﻻت أن اﳋﺮج ﻳﻌﻤﻞ‬
‫ﻓﻬﺬا ﻳﺸﲑ إﱃ ﻋﻄﻞ ﻏﲑ ﻣﺴﺌﻮل ﻋﻨﻪ وﺣﺪة اﻟﱪﳎﺔ ﻧﻔﺴﻬﺎ )ﻗﺪ ﻻ ﺗﻮﺟﺪ ﺗﻐﺬﻳﺔ ﻟﺪاﺋﺮة اﻟﻘﻮة – ﻣﺸﻜﻠﺔ‬
‫ﺑﺎﻟﺮﻳﻠﻴﻪ اﳌﻴﻜﺎﻧﻴﻜﻰ أو ﺑﻨﻘﻄﺔ اﻟﺮﻳﻠﻴﺔ اﻟﺬى ﻳﻌﻤﻞ ﻛﺤﻤﺎﻳﺔ ﺑﲔ وﺣﺪة اﻟﱪﳎﺔ وداﺋﺮة اﻟﻘﻮى – ﻧﻘﺎط‬
‫اﻟﻘﺎﻃﻊ اﳊﺮارى ﻣﻔﺘﻮﺣﺔ(‪.‬‬

‫ﻣﻼﺣﻈﺔ‪ .‬ﺳﻮف ﻳﺘﻢ ﺷﺮخ اﻷﻋﻄﺎل ﺑﺎﻟﺘﻔﺼﻴﻞ ﲜﻤﻴﻊ أﻧﻮﻋﻬﺎ ﰱ اﻟﻜﺘﺎب اﻟﺘﺎﱃ‪.‬‬

‫اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﺼﻔﺤﺔ "ﺟﺪول اﻟﺤﺎﻻت"‪:‬‬

‫اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ )‪(Address – Format – Current value – New value‬‬

‫‪ :Address -‬ﺣﻴﺚ ﺗﻜﺘﺐ اﻟﻌﻨﺎوﻳﻦ وﻟﻴﺲ ﺑﺎﻟﺸﺮط أن ﻳﻜﻮن اﻟﻌﻨﻮان ﻣﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ :Format -‬ﺣﻴﺚ ﻳﺘﻢ أﺧﺘﻴﺎر اﻟﻄﺮﻳﻘﺔ اﳌﺮاد أﻇﻬﺎر ‪‬ﺎ ﺣﺎﻟﺔ اﻟﻌﻨﻮان‪.‬‬
‫‪ :Current value -‬ﺣﻴﺚ ﺗﻈﻬﺮ ﺣﺎﻟﺔ اﻟﻌﻨﻮان‪.‬‬
‫‪ :New value -‬ﺣﻴﺚ ﳝﻜﻦ ﺗﻌﺪﻳﻞ ﺣﺎﻟﺔ اﻟﻌﻨﻮان‪.‬‬

‫‪37‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻣﻔﺎﺗﻴﺢ ﻫﺎﻣﺔ ﻓﻰ ﺻﻔﺤﺔ "ﺟﺪول اﻟﺤﺎﻻت"‪:‬‬

‫‪ :Chart status -١‬ﳌﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻟﻌﻨﺎوﻳﻦ اﳌﻜﺘﻮﺑﺔ ﺑﺼﻔﺔ ﻣﺴﺘﻤﺮة‪.‬‬


‫‪ :Pause chart status -٢‬ﻹﻳﻘﺎف ﻋﻨﺪ ﻧﻘﻄﺔ ﻣﻌﻴﻨﺔ ﳌﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻟﻌﻨﺎوﻳﻦ اﳌﻜﺘﻮﺑﺔ‪.‬‬
‫‪ :single read -٣‬ﳌﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻟﻌﻨﺎوﻳﻦ اﳌﻜﺘﻮﺑﺔ ﰱ ﳊﻈﺔ ﻣﻌﻴﻨﺔ‪.‬‬
‫‪ :Write all -٤‬ﻟﺘﻌﺪﻳﻞ أو ﺗﻐﲑ ﺑﻌﺾ اﻟﻌﻨﺎوﻳﻦ وﻟﻜﻦ ﺣﺴﺐ اﻟﱪﻧﺎﻣﺞ اى ﺣﺴﺐ اﻟﺸﺮوط اﳌﺴﺘﺨﺪﻣﺔ ﰱ‬
‫اﻟﱪﻧﺎﻣﺞ‪ ,‬ﻓﻤﺜﻼً ﻻ ﳝﻜﻦ ﺗﺸﻐﻴﻞ ﳏﺮك ﻋﻜﺲ ﺣﺮﻛﺔ ﰱ اﻻﲡﺎﻫﲔ ﻣﻌﺎً وﻫﺬا ﻟﻴﺲ ذﻛﺎء ﻣﻦ ﺟﻬﺎز اﻟـ ‪ PLC‬ﻷﻧﻪ‬
‫ﻻ ﻳﻌﺮف ﻣﻘﺪﻣﺎً أﻧﻪ ﺳﻮف ﳛﺪث ﻗﻔﻠﻪ ﺑﻞ ﻷن ﺷﺮوط اﻟﱪﻧﺎﻣﺞ ﺗﺸﲑ إﱃ أﻧﻪ ﻻ ﳝﻜﻦ ﻟﻼﲡﺎﻫﲔ أن ﻳﻌﻤﻞ ﻣﻌﺎً‬
‫ﰱ وﻗﺖ واﺣﺪ‪.‬‬
‫‪ :Force -٥‬ﻟﺘﻌﺪﻳﻞ أو ﺗﻐﲑ ﺑﻌﺾ اﻟﻌﻨﺎوﻳﻦ ﻣﻬﻤﺎ ﻛﺎن اﻟﱪﻧﺎﻣﺞ اى أﻧﻪ ﻻ ﺗﺆﺧﺬ ﰱ اﻻﻋﺘﺒﺎر اﻟﺸﺮوط‬
‫اﳌﺴﺘﺨﺪﻣﺔ‪ ,‬ﻓﻤﺜﻼً ﳝﻜﻦ ﺗﺸﻐﻴﻞ ﳏﺮك ﻋﻜﺲ ﺣﺮﻛﺔ ﰱ اﻻﲡﺎﻫﲔ ﻣﻌﺎً ﻟﺬاﻟﻚ ﳚﺐ وﺿﻊ اﳊﻤﺎﻳﺎت ﻟﻴﺲ ﻓﻘﻂ ﰱ‬
‫اﻟﱪﻧﺎﻣﺞ ﺑﻞ ﻋﻠﻰ اﻟﺮﻳﻠﻴﺔ اﳌﻴﻜﺎﻧﻴﻜﻰ إﻳﻀﺎً ﻛﻢ وﺿﺢ ﰱ اﳉﺰء اﻷول ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب‪.‬‬
‫‪ :Unforce -٦‬ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ‪ bit‬اى ﻟﺪﺧﻞ واﺣﺪ أو ﳋﺮج واﺣﺪ ﻓﻘﻂ‪.‬‬
‫‪ :Unforce all -٧‬ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ‪ byte‬أو ‪ word‬أو ‪ Dword‬أى ‪‬ﻤﻮﻋﺔ‬
‫ﻣﺪﺧﻼت أو ‪‬ﻤﻮﻋﺔ ﳐﺮﺟﺎت‪.‬‬
‫‪38‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫‪ :Read all forced -٨‬ﳌﻌﺮﻓﺔ ﻛﻞ اﻟﻌﻨﺎوﻳﻦ اﻟﱴ ﻃﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ ‪ Force‬ﺧﺎﺻﺎً ﻋﻨﺪﻣﺎ ﺗﺘﻌﺎﻣﻞ ﻣﻊ‬
‫اﳉﻬﺎز ﻷول ﻣﺮة ﳚﺐ اﻟﺘﺄﻛﺪ ﻣﻦ أن ﻛﻞ اﳌﺨﺎرج ﺗﻌﻤﻞ ﺑﻄﺮﻳﻘﺔ ﻃﺒﻴﻌﻴﺔ وﻟﻴﺲ ﲢﺖ ﺗﺄﺛﲑ أﻣﺮ ‪.force‬‬
‫‪ :Trend view -٩‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ ﻳﻘﻮم ﺟﻬﺎز اﻟـ ‪ PLC‬ﺑﻌﻤﻞ رﺳﻢ ﲣﻄﻴﻄﻰ ‪ diagram‬ﻟﻠﻌﻨﺎوﻳﻦ‬
‫اﳌﻜﺘﻮﺑﺔ ﺑﺼﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" ﺳﻮاء ﻛﺎﻧﺖ اﻟﻌﻨﺎوﻳﻦ اﳌﻮﺟﻮدة ﻫﻰ )ﻣﺪﺧﻼت – ﳐﺮﺟﺎت – ﻣﺆﻗﺘﺎت زﻣﻨﻴﺔ‬
‫– ﻋﺪادات – ﻣﺘﻐﲑات – رﻳﻠﻴﻬﺎت داﺧﻠﻴﺔ – إﱁ‪.(.....‬‬

‫ﻃﺮﻳﻘﺔ أﻇﻬﺎر ﺣﺎﻟﻪ اﻟﻌﻨﻮان اﻟـ ‪: format‬‬

‫‪ :Format‬ﻫﻰ اﻟﻄﺮﻳﻘﺔ اﳌﺮاد أﻇﻬﺎر ‪‬ﺎ ﺣﺎﻟﺔ اﻟﻌﻨﻮان و ﺗﻨﻘﺴﻢ إﱃ‪:‬‬

‫‪- Unsigned - Signed - Hexadecimal - Binary - Bit -‬‬


‫‪- ASCII - Floating point‬‬

‫اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻜﻞ ‪:format‬‬


‫‪ 2#0 :Bit -‬ﺣﻴﺚ رﻗﻢ اﺛﻨﺎن ﻳﺸﲑ أن اﻟﻠﻐﺔ اﳌﺴﺘﺨﺪﻣﺔ ﻫﻰ ‪.Binary‬‬
‫‪ 2#0000_0000 :Binary -‬ﺣﻴﺚ رﻗﻢ “اﺛﻨﺎن” ﻳﺸﲑ أن اﻟﻠﻐﺔ اﳌﺴﺘﺨﺪﻣﺔ ﻫﻰ ‪.Binary‬‬
‫‪ 16#2A :Hexadecimal -‬ﺣﻴﺚ رﻗﻢ “ﺳﺘﺔ ﻋﺸﺮ” ﻳﺸﲑ أن اﻟﻠﻐﺔ اﳌﺴﺘﺨﺪﻣﺔ ﻫﻰ ‪.Hexa‬‬
‫‪ +٧٨٥٨ :Signed -‬أو ‪ -٥٩٣‬ﺣﻴﺚ ﳛﺘﻮى اﻟﺮﻗﻢ ﻋﻠﻰ أﺷﺎرة ﺳﻮاء ﻣﻮﺟﺒﺔ أو ﺳﺎﻟﺒﺔ‪.‬‬
‫‪ ٦٧١١ :Unsigned -‬ﺣﻴﺚ ﻻ ﳛﺘﻮى اﻟﺮﻗﻢ ﻋﻠﻰ أﺷﺎرة ﻣﻮﺟﺒﺔ أو ﺳﺎﻟﺒﺔ‪.‬‬
‫‪ +٢ ,٥٣٩ +E ٢ :Floating point -‬ﺣﻴﺚ أن اﻟﺮﻗﻢ اﳌﻜﺘﻮب ﻫﻮ رﻗﻢ ﻋﺸﺮى‪.‬‬
‫‪ "S" :ASCII -‬أو "<" ﺣﻴﺚ ﻳﺸﲑ إﱃ اﳊﺎﻟﺔ ﺑﺎﺳﺘﺨﺪام ﺣﺮوف أو رﻣﻮز‪.‬‬

‫‪39‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﺸﺮح‪:‬‬
‫‪ -‬ﺑﻌﺾ اﻟﻌﻨﺎوﻳﻦ ﻻ ﳝﻜﻦ أن ﺗﻈﻬﺮ ﺑﺄﻛﺜﺮ ﻣﻦ ‪ ,format‬ﻓﻤﺜﻼً اﳌﻔﺘﺎح ‪ I0.1‬أو اﳋﺮج ‪ Q2.6‬أو‬
‫اﻟﺮﻳﻠﻴﻪ ‪ M1.1‬أو اﳌﺘﻐﲑات ‪ V23.4‬ﻻ ﳝﻜﻦ أن ﻳﻜﻮن ﳍﻢ ‪ format‬ﻏﲑ اﻟـ ‪ Bit‬وﻫﺬا ﻷن‬
‫ﺣﺎﻟﺔ اﻟﺪﺧﻞ أو اﳋﺮج أو اﻟﺮﻳﻠﻴﻪ أو اﳌﺘﻐﲑ أﻣﺎ أن ﺗﻜﻮن واﺣﺪ أو ﺻﻔﺮ‪.‬‬

‫‪ -‬ﻳﺴﺘﺨﺪم اﻟـ ‪ (Floating point) format‬ﻣﻊ اﻷرﻗﺎم اﻟﻌﺸﺮﻳﺔ‪ ,‬وﻣﻊ اﻷرﻗﺎم اﻟﻌﺸﺮﻳﺔ وﻣﻊ‬
‫اﳌﻌﺪﻻت أو اﳌﺘﻐﲑات أو اﻟـﻤﺪاﺧﻞ واﳌﺨﺎرج اﻟﺘﻨﺎﻇﺮﻳﺔ‪.‬‬

‫‪ -‬ﻳﻌﺘﱪ اﻟـ ‪ (ASCII) format‬ﻣﻦ اﻟـ ‪ format‬اﻷﻗﻞ اﺳﺘﺨﺪاﻣﺎً ﺣﻴﺚ ﻳﻈﻬﺮ اﳊﺎﻟﺔ اﳋﺎﺻﺔ‬
‫ﺑﺎﻟﻌﻨﻮان اﳌﺬﻛﻮر ﺑﺎﺳﺘﺨﺪام أﺣﺮف أو رﻣﻮز ﺑﺪﻻً ﻣﻦ اﺳﺘﺨﺪام اﻷرﻗﺎم‪.‬‬

‫‪ -‬ﺑﻌﺾ اﻟﻌﻨﺎوﻳﻦ ﳝﻜﻦ أن ﺗﻌﻤﻞ ﻣﻊ أﻛﺜﺮ ﻣﻦ ‪ ,format‬ﻓﻤﺜﻼً اﳌﺆﻗﺖ اﻟﺰﻣﲎ ‪ T32‬أو اﻟﻌﺪاد ‪C0‬‬
‫أو اﳌﺘﻐﲑ ‪ VB4‬ﳝﻜﻦ أن ﻳﻜﻮن ﳍﻢ ‪ format‬ﳐﺘﻠﻔﺔ ﻣﺜﻞ اﻟـ ‪ Binary‬أو ‪ Signed‬أو‬
‫‪ Unsigned‬أو ‪ Hexadecimal‬أو ‪ ASCII‬وﻟﻜﻦ ﻳﻔﻀﻞ داﺋﻤﺎً اﺧﺘﻴﺎر اﻷﻓﻀﻞ ﺣﺴﺐ‬
‫ﻧﻮع اﻟﻌﻨﻮان اﳌﺴﺘﺨﺪم‪.‬‬

‫‪ -‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺆﻗﺖ اﻟﺰﻣﲎ أو ﻟﻠﻌﺪاد ﳝﻜﻦ ﺗﻜﺮار اﻟﻌﻨﻮان ﻣﺮﺗﲔ ﲝﻴﺚ أن ﺗﻜﻮن اﳌﺮة اﻷوﱃ ﻣﺜﻼً‬
‫)‪ format (Bit‬وﻫﻰ ﺗﻌﲎ اﳊﺎﻟﺔ اﳋﺎﺻﺔ ﺑﻨﻘﻄﺔ اﻟﻌﺪاد أو ﻧﻘﻄﺔ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﲝﻴﺚ ﺗﺸﲑ أذا‬
‫ﻛﺎﻧﺖ ﻣﻐﻠﻘﺔ أو ﻣﻔﺘﻮﺣﺔ ﺑﻴﻨﻤﺎ اﳌﺮة اﻟﺜﺎﻧﻴﺔ ﺗﻜﻮن ﻣﺜﻼً ‪,Signed) FORMAT‬‬
‫‪ Binary ,Unsigned‬أو ‪ (Hexadecimal‬ﲝﻴﺚ ﺗﺸﲑ إﱃ ﻗﻴﻤﺔ اﻟﺮﻗﻤﻴﺔ ﻟﻠﻌﺪاد أو اﻟﻘﻴﻤﺔ‬
‫اﻟﺮﻗﻤﻴﺔ ﻟﻠﻤﺆﻗﺖ اﻟﺰﻣﲎ‪.‬‬

‫‪ -‬ﰱ ﺣﺎﻟﺔ اﻻﺳﺘﻌﻼم ﻋﻦ ﺣﺎﻟﺔ ﳎﻤﻮﻋﺔ ﻣﻦ اﳌﺪﺧﻼت أو اﳌﺨﺮﺟﺎت ﻓﺒﺪﻻً ﻣﻦ ﻛﺘﺎﺑﺔ ﻛﻞ دﺧﻞ أو ﻛﻞ‬
‫ﺧﺮج أو ﻛﻞ رﻳﻠﻴﻪ أو ﻛﻞ ﻣﺘﻐﲑ ﻋﻠﻰ ﺣﺪى ﳝﻜﻦ اﻻﺳﺘﻌﻼم ﻋﻦ ﳎﻤﻮﻋﺔ ﻣﻜﻮﻧﺔ ﻣﻦ ‪ ٨‬أو ‪ ١٦‬أو‬
‫‪ ٣٢‬دﺧﻞ أو ﺧﺮج أو رﻳﻠﻴﻪ أو ﻣﺘﻐﲑ ﻣﻌﺎً ﻋﻦ ﻃﺮﻳﻖ ﺣﺮف اﻟـ ‪ B‬اﻟﺬى ﻳﺮﻣﺰ إﱃ اﻟـ ‪ Byte‬أى ﲦﺎﻧﻴﺔ‬

‫‪40‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫أو ﻋﻦ ﻃﺮﻳﻖ ﺣﺮف اﻟـ ‪ W‬اﻟﺬى ﻳﺮﻣﺰ إﱃ اﻟـ ‪ Word‬أى ﺳﺘﺔ ﻋﺸﺮ أو ﻋﻦ ﻃﺮﻳﻖ ﺣﺮف اﻟـ ‪D‬‬
‫اﻟﺬى ﻳﺮﻣﺰ إﱃ اﻟـ ‪ Dword‬أى اﺛﻨﺎن و ﺛﻼﺛﻮن ﻓﻤﺜﻼً‪:‬‬

‫ﺷﺮح ﻣﺒﺴﻂ‬
‫‪ :IB0‬ﺗﻌﲎ أول "ﲦﺎﻧﻴﺔ ﻣﺪﺧﻼت"‪.‬‬ ‫‪-‬‬
‫‪ :IB1‬ﺗﻌﲎ ﺛﺎﱏ "ﲦﺎﻧﻴﺔ ﻣﺪﺧﻼت"‪.‬‬ ‫‪-‬‬
‫‪ :QB6‬ﺗﻌﲎ ﺳﺎﺑﻊ "ﲦﺎﻧﻴﺔ ﳐﺮﺟﺎت"‪.‬‬ ‫‪-‬‬
‫‪ :QB9‬ﺗﻌﲎ ﻋﺎﺷﺮ "ﲦﺎﻧﻴﺔ ﳐﺮﺟﺎت "‪.‬‬ ‫‪-‬‬
‫‪ :IW2‬ﺗﻌﲎ ﺛﺎﱏ "ﺳﺘﺔ ﻋﺸﺮ دﺧﻞ"‪.‬‬ ‫‪-‬‬
‫‪ :IW6‬ﺗﻌﲎ راﺑﻊ "ﺳﺘﺔ ﻋﺸﺮ دﺧﻞ "‪.‬‬ ‫‪-‬‬
‫‪ :QW4‬ﺗﻌﲎ ﺛﻼث "ﺳﺘﺔ ﻋﺸﺮ ﺧﺮج "‪.‬‬ ‫‪-‬‬
‫‪ :QW8‬ﺗﻌﲎ ﺧﺎﻣﺲ "ﺳﺘﺔ ﻋﺸﺮ ﺧﺮج "‪.‬‬ ‫‪-‬‬
‫‪ :ID0‬ﺗﻌﲎ أول " اﺛﻨﺎن وﺛﻼﺛﲔ دﺧﻞ "‪.‬‬ ‫‪-‬‬
‫‪ :ID4‬ﺗﻌﲎ ﺛﺎﱏ " أﺛﻨﺎن وﺛﻼﺛﲔ دﺧﻞ "‪.‬‬ ‫‪-‬‬
‫‪ :QD8‬ﺗﻌﲎ ﺛﻼث "اﺛﻨﺎن وﺛﻼﺛﲔ ﳐﺮج"‪.‬‬ ‫‪-‬‬
‫‪ :QD12‬ﺗﻌﲎ راﺑﻊ "اﺛﻨﺎن وﺛﻼﺛﲔ ﳐﺮج"‪.‬‬ ‫‪-‬‬

‫ﻟﻠﺘﻮﺿﻴﺢ أﻧﻈﺮ ﺻﻔﺤﺔ ‪ ٢٠۱‬ﻓﻰ اﻟﺠﺰء اﻷول ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب‪.‬‬

‫ﺑﺎﺳﺘﺨﺪام ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" اﻟـ ‪ Status Chart‬اﻟﱴ ﺗﺴﺘﺨﺪم ﳌﻌﺮﻓﺔ اﳊﺎﻟﺔ اﳋﺎﺻﺔ ﺑﻜﻞ ﻋﻨﻮان ﻣﻦ‬
‫اﻟﻌﻨﺎوﻳﻦ اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ أو ﻏﲑ اﳌﺴﺘﺨﺪﻣﺔ ﺣﱴ‪ ,‬ﳝﻜﻦ أﻳﻀﺎً ﺗﻌﺪﻳﻞ أو ﺗﻐﻴﲑ ﺣﺎﻟﻪ اﻟﻌﻨﺎوﻳﻦ اﳌﺴﺘﺨﺪﻣﺔ‬
‫ﰱ اﻟﱪﻧﺎﻣﺞ وﻏﲑ اﳌﺴﺘﺨﺪﻣﺔ أﻳﻀﺎً ﻓﻠﺬاﻟﻚ ﺗﻮﺟﺪ ﻃﺮﻳﻘﺘﺎن ﻟﻠﺘﻌﺪﻳﻞ أو اﻟﺘﻐﲑ ﰱ اﻟﱪﻧﺎﻣﺞ‪:‬‬

‫‪41‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﻄﺮﻳﻘﺔ اﻷوﻟﻰ ﻫﻰ ‪.write all‬‬

‫اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ﻫﻰ ‪:force‬‬

‫اﻟﻄﺮﻳﻘﺔ اﻷوﻟﻰ ﻟﻠﺘﻌﺪﻳﻞ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫ﺗﺴﺘﺨﺪم ‪ Write all‬ﰱ ﺗﻌﺪﻳﻞ اﻟﱪﻧﺎﻣﺞ وﻟﻜﻦ "ﻣﻊ ﻣﺮاﻋﺎة اﻟﺸﺮوط" اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ﻣﺮاﻋﺎة اﻟﺸﺮوط اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ أى أﻧﻪ ﻻ ﳝﻜﻦ ﺗﻨﻔﻴﺬ أى أﻣﺮ ﺑﻮاﺳﻄﺔ اﻟـ ‪write all‬‬
‫وﰱ ﻧﻔﺲ اﻟﻮﻗﺖ ﻳﻜﻮن ﻣﻦ ﻏﲑ اﳌﻤﻜﻦ ﺗﻨﻔﻴﺬ ﻫﺬا اﻷﻣﺮ ﺑﻮاﺳﻄﺔ اﻟﱪﻧﺎﻣﺞ‪ ,‬ﻓﻤﺜﻼً‪:‬‬

‫أ‪ .‬ﻻ ﳝﻜﻦ ﶈﺮك أن ﻳﻌﻤﻞ ﺑﻴﻨﻤﺎ ﻳﻜﻮن ﻣﻔﺘﺎح اﻹﻳﻘﺎف اﳋﺎص ﺑﺎﶈﺮك ﻣﻔﺘﻮح‪.‬‬
‫ب‪ .‬ﻻ ﳝﻜﻦ ﶈﺮك أن ﻳﻘﻒ ﺑﻴﻨﻤﺎ ﻳﻜﻮن ﻣﻔﺘﺎح اﻟﺘﺸﻐﻴﻞ اﳋﺎص ﺑﺎﶈﺮك ﻣﻐﻠﻖ‪.‬‬
‫ت‪ .‬ﻻ ﳝﻜﻦ ﶈﺮك ﻋﻜﺲ ﺣﺮﻛﺔ )ﻳﻌﻤﻞ ﰱ اﲡﺎﻫﲔ( أن ﻳﻌﻤﻞ ﰱ اﻻﲡﺎﻫﲔ ﻣﻌﺎً ﰱ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬
‫ث‪ .‬ﻻ ﳝﻜﻦ ﳌﺆﻗﺖ زﻣﲎ أن ﻳﺒﺪأ ﺑﺎﻟﻌﻤﻞ ﺑﻴﻨﻤﺎ ﻻ ﺗﻜﻮن ﻫﻨﺎك ﺗﻐﺬﻳﺔ‪.‬‬
‫ج‪ .‬ﻻ ﳝﻜﻦ ﻟﻌﺪاد أن ﻳﺒﺪأ ﺑﺎﻟﻌﺪ ﺑﻴﻨﻤﺎ ﺗﻜﻮن ﻛﻞ اﻟﻨﻘﺎط اﳋﺎﺻﺔ ﺑﺎﻹﺷﺎرة ﻏﲑ ﻣﻐﻠﻘﺔ‪.‬‬

‫ﻓﻠﺬاﻟﻚ وﻻ ﺣﺘﻰ أﻣﺮ ‪ write all‬ﻳﺴﺘﻄﻴﻊ أن ﻳﻘﻮم ﺑﺘﻨﻔﻴﺬ أى ﻣﻦ اﻟﻨﻘﺎط اﻟﺴﺎﺑﻘﺔ‬

‫‪42‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﻄﺮﻳﻘﺔ‪:‬‬
‫‪ -١‬ﺗﺘﻢ ﻛﺘﺎﺑﺔ اﻟﻌﻨﺎوﻳﻦ اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﺳﻮاء ﻛﺎﻧﺖ‪ ,‬ﳐﺮﺟﺎت أو ﻣﺆﻗﺘﺎت زﻣﻨﻴﺔ أو ﻋﺪادات أو ﻣﺘﻐﲑات‬
‫إﱁ‪.....‬‬

‫‪ -٢‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟﻄﺮﻳﻘﺔ ‪ format‬اﳌﺮاد إﻇﻬﺎر ‪‬ﺎ ﺣﺎﻟﺔ اﻟﻌﻨﻮان اﳌﺬﻛﻮر أﻋﻼﻩ‪.‬‬

‫‪ -٣‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح ‪ chart status‬ﳌﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻟﻌﻨﺎوﻳﻦ ﺑﺼﻔﺔ ﻣﺴﺘﻤﺮة‪.‬‬

‫‪ -٤‬ﻳﻜﺘﺐ ﰱ ‪ new value‬ﻣﻘﺎﺑﻞ ﻛﻞ ﻋﻨﻮان اﻟﺘﻌﺪﻳﻞ اﳌﺮاد ﺗﻨﻔﻴﺬﻩ‪.‬‬

‫ﻟﺘﻨﻔﻴﺬ اﻟﺘﻐﻴﻴﺮ اﻟﻤﺮاد ﺗﻄﺒﻴﻘﻪ‬ ‫ﺑﻌﺪ ذاﻟﻚ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪write all‬‬
‫‪43‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﻻ ﳝﻜﻦ ﺗﻌﺪﻳﻞ ﺣﺎﻟﺔ اﳌﺪﺧﻼت ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪.Write all‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﺗﻌﺪﻳﻞ ﺧﺮج ﻳﻜﺘﺐ واﺣﺪ ﻟﻠﺘﺸﻐﻴﻞ أو ﺻﻔﺮ ﻟﻺﻳﻘﺎف‪.‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﺗﻌﺪﻳﻞ ﻗﻴﻤﺔ اﻟﻌﺪاد ﺗﻜﺘﺐ اﻟﻘﻴﻤﺔ اﳌﺮاد اﻟﻌﺪاد اﻟﻮﺻﻮل إﻟﻴﻬﺎ وﻟﻴﺲ ﺑﺎﻟﻀﺮورى أن ﻳﺘﻢ ﺗﻨﻔﻴﺬ‬
‫ﻫﺬا اﻟﺘﻌﺪﻳﻞ أﺛﻨﺎء ﻋﻤﻞ اﻟﻌﺪاد‪.‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﺗﻌﺪﻳﻞ ﻗﻴﻤﺔ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﺗﻜﺘﺐ اﻟﻘﻴﻤﺔ اﳌﺮاد اﻟﻮﺻﻮل إﻟﻴﻬﺎ ﺑﻮاﺳﻄﺔ اﳌﺆﻗﺖ اﻟﺰﻣﲎ وﻟﻜﻦ‬
‫ﺑﺸﺮط أن ﻳﻜﻮن ﺗﻨﻔﻴﺬ ﻫﺬا اﻟﺘﻌﺪﻳﻞ أﺛﻨﺎء ﻋﻤﻞ اﳌﺆﻗﺖ اﻟﺰﻣﲎ‪.‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﻛﺘﺎﺑﺔ أى ﻗﻴﻤﺔ ﻋﻠﻰ ﻣﺘﻐﲑات ﳚﺐ أن ﻳﺄﺧﺬ ﰱ اﻻﻋﺘﺒﺎر ﺑﺄن اﻟﻘﻴﻤﺔ اﳌﺮاد ﻛﺘﺎﺑﺘﻬﺎ ﺑﻮاﺳﻄﺔ أﻣﺮ‬
‫‪ write all‬ﳚﺐ أن ﻻ ﺗﻜﻮن أﻛﱪ ﻣﻦ أﻛﱪ رﻗﻢ ﳝﻜﻦ ﻛﺘﺎﺑﺘﻪ ﻋﻠﻰ اﳌﺘﻐﲑات وﻳﻨﻄﺒﻖ ﻫﺬا ﻋﻠﻰ‬
‫ﲨﻴﻊ اﳌﺘﻐﲑات ﲟﺨﺘﻠﻒ أﺣﺠﺎﻣﻬﺎ ﺣﻴﺚ أن ﰱ ﺣﺎﻟﻪ ﻛﺘﺎﺑﺔ ﻗﻴﻢ ﻛﺒﲑة ﻋﻠﻰ ﻣﺘﻐﲑات ﺻﻐﲑة ﻗﺪ ﻳﺴﺒﺐ‬
‫ﻫﺬا ﻣﺸﺎﻛﻞ ﺳﻮف ﻳﺘﻢ ﺗﻮﺿﻴﺤﻬﺎ ﰱ اﻟﻜﺘﺎب اﻟﺘﺎﱃ اﳋﺎص ﺑﺎﻷﻋﻄﺎل واﻟﺘﻤﺮﻳﻦ اﻟﻌﻤﻠﻴﺔ‪.‬‬

‫ﻣﺜﺎل ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:Write all‬‬


‫ﳏﺮك ﻳﻌﻤﻞ ﻣﻦ ﻣﻜﺎن واﺣﺪ‪.‬‬

‫‪L‬‬

‫‪S1‬‬ ‫‪K1M‬‬

‫‪S2‬‬
‫‪K1M‬‬

‫‪N‬‬

‫‪44‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫عدد الدخل نوع الدخل أسم الدخل‬


‫‪I0.2/S1‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.0/S2‬‬ ‫‪n.c.‬‬ ‫‪٢‬‬
‫عدد الخرج نوع الخرج أسم الخرج‬
‫‪Q0.6/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫اﻟﺨﻄﻮات‪:‬‬
‫‪ -‬أوﻻً‪ :‬ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﰱ ‪ Address‬و ﰱ ﻫﺬا اﻟﺘﻤﺮﻳﻦ اﻟﻌﻨﻮان ﻫﻮ ‪Q0.6‬‬
‫‪ -‬ﺛﺎﻧﻴﺎً‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟـ ‪ Format‬ﺣﺴﺐ اﻟـ ‪ Address‬و ﰱ ﻫﺬﻩ اﻟﺘﻤﺮﻳﻦ اﻟـ ‪ Format‬ﻫﻮ ‪Bit‬‬
‫ﻓﻘﻂ‪.‬‬
‫‪ -‬ﺛﺎﻟﺜﺎً‪ :‬ﺗﻜﺘﺐ اﳊﺎﻟﺔ اﳌﺮاد ﺗﻌﺪﻳﻠﻬﺎ أى ‪ 2#0‬ﻟﻺﻳﻘﺎف و ‪ 2#1‬ﻟﻠﺘﺸﻐﻴﻞ‪.‬‬
‫‪ -‬راﺑﻌﺎً‪ :‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Write all‬ﻟﺘﻨﻔﻴﺬ اﻟﺘﻌﺪﻳﻞ اﳌﺮﻏﻮب ﻓﻴﻪ‪.‬‬

‫‪45‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻹﻟﻐﺎء أﻣﺮ ‪ Write all‬اﻟﺬى ﰎ اﺳﺘﺨﺪاﻣﻪ ﰱ اﳌﺜﺎل اﻟﺴﺎﺑﻖ ﺗﻮﺟﺪ ﻃﺮﻳﻘﺘﺎن‪:‬‬
‫‪ -١‬اﻟﺘﺤﻜﻢ ﺑﺎﳋﺮج ﻋﻦ ﻃﺮﻳﻖ اﻟﱪﻧﺎﻣﺞ أى ﺑﻔﺘﺢ ‪ I0.0‬وﻫﺬا ﻷن أﻣﺮ ‪ write all‬ﻻ ﻳﺴﺘﻄﻴﻊ أن ﳜﺎﻟﻒ‬
‫اﻟﱪﻧﺎﻣﺞ ﻧﻔﺴﻪ ﻣﻦ ﺣﻴﺚ ﻃﺮﻳﻘﺔ اﻟﺘﺤﻜﻢ ﺑﺎﳋﺮج‪.‬‬
‫‪ -٢‬اﻟﺘﺤﻜﻢ ﺑﺎﳋﺮج ﻋﻦ ﻃﺮﻳﻖ ‪ Status chart‬أى ﻟﻺﻳﻘﺎف ﻳﻜﺘﺐ ‪ 2#0‬و ﻟﻠﺘﺸﻐﻴﻞ ﻳﻜﺘﺐ ‪ 2#1‬ﰒ‬
‫اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Write all‬ﻣﺮة أﺧﺮى‪.‬‬

‫ﻳﻤﻜﻦ أﻳﻀﺎً ﺗﻐﻴﺮ ﻗﻴﻢ اﻟﻤﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ ﺑﻮاﺳﻄﺔ ﻧﻔﺲ اﻷﻣﺮ‪:‬‬

‫اﻟﺨﻄﻮات‪:‬‬
‫أوﻻً‪ :‬ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﰱ ‪ Address‬و ﰱ ﻫﺬﻩ اﳊﺎﻟﺔ اﻟﻌﻨﻮان ﻫﻮ ‪.T32‬‬ ‫‪-‬‬
‫ﺛﺎﻧﻴﺎً‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟـ ‪ Format‬ﺣﺴﺐ اﻟـ ‪ Address‬و ﰱ ﻫﺬﻩ اﳊﺎﻟﺔ اﻟـ ‪ Format‬ﻫﻮ ‪Bit‬‬ ‫‪-‬‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻨﻘﻄﺔ اﳌﺆﻗﺖ اﻟﺰﻣﲎ و ‪ Signed‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻘﻴﻤﺔ اﻟﻔﻌﻠﻴﺔ ﻟﻠﻤﺆﻗﺖ اﻟﺰﻣﲎ‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﺗﻜﺘﺐ اﳊﺎﻟﺔ اﳌﺮاد ﺗﻌﺪﻳﻠﻬﺎ أى ﻟﺘﻐﻴﲑ اﻟﻘﻴﻤﺔ إﱃ أرﺑﻊ ﺛﻮاﱏ ﺗﻜﺘﺐ ﻗﻴﻤﺔ ‪.٤٠٠٠‬‬ ‫‪-‬‬
‫راﺑﻌﺎً‪ :‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Write all‬ﻟﺘﻨﻔﻴﺬ اﻟﺘﻌﺪﻳﻞ اﳌﺮﻏﻮب ﻓﻴﻪ‪.‬‬ ‫‪-‬‬

‫ﺑﺸﺮط أن ﻳﺘﻢ ﻫﺬا اﻟﺘﻄﺒﻴﻖ أﺛﻨﺎء ﻋﻤﻞ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﻷﻧﻨﺎ ﻧﺘﺤﺪث ﻋﻦ زﻣﻦ ﺣﻘﻴﻘﻰ ﻓﻠﺬاﻟﻚ ﻟﻴﺲ ﻣﻦ اﳌﻨﻄﻘﻰ‬
‫أن ﻳﺘﻢ أﻋﻄﺎء أى زﻣﻦ ﻟﻠﻤﺆﻗﺖ ﰒ ﻳﺘﻢ ﺑﺪء ﺣﺴﺐ ﻫﺬا ﻣﺆﺧﺮاً ﻋﻨﺪ ﺗﺸﻐﻴﻞ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﻓﻬﺬا ﻷﻧﻨﺎ ﻧﺘﺤﺪث‬
‫ﻋﻦ زﻣﻦ ﺣﻘﻴﻘﻰ ‪.real time‬‬

‫‪46‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻳﻤﻜﻦ أﻳﻀﺎً ﺗﻐﻴﺮ ﻗﻴﻢ اﻟﻌﺪادات‪:‬‬

‫اﻟﺨﻄﻮات‪:‬‬
‫أوﻻً‪ :‬ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﰱ ‪ Address‬و ﰱ ﻫﺬﻩ اﳊﺎﻟﺔ اﻟﻌﻨﻮان ﻫﻮ ‪.C10‬‬ ‫‪-‬‬
‫ﺛﺎﻧﻴﺎً‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟـ ‪ Format‬ﺣﺴﺐ اﻟـ ‪ Address‬و ﰱ ﻫﺬﻩ اﳊﺎﻟﺔ اﻟـ ‪ Format‬ﻫﻮ ‪Bit‬‬ ‫‪-‬‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻨﻘﻄﺔ اﳌﺆﻗﺖ اﻟﺰﻣﲎ و ‪ Signed‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻘﻴﻤﺔ اﻟﻔﻌﻠﻴﺔ ﻟﻠﻌﺪاد‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﺗﻜﺘﺐ اﳊﺎﻟﺔ اﳌﺮاد ﺗﻌﺪﻳﻠﻬﺎ أى ﻟﺘﻐﻴﲑ اﻟﻘﻴﻤﺔ إﱃ ﲬﺴﺔ ﻋﺸﺮ ﺗﻜﺘﺐ ﻗﻴﻤﺔ ‪.۱٥‬‬ ‫‪-‬‬
‫راﺑﻌﺎً‪ :‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Write all‬ﻟﺘﻨﻔﻴﺬ اﻟﺘﻌﺪﻳﻞ اﳌﺮﻏﻮب ﻓﻴﻪ‪.‬‬ ‫‪-‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﳚﺐ داﺋﻤﺎً اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Write all‬ﻟﺘﻨﻔﻴﺬ اﻟﻘﻴﻢ اﳌﻜﺘﻮﺑﺔ ﰱ ‪.New value‬‬

‫‪ -‬ﻟﻴﺲ ﺑﺎﻟﺸﺮط أن ﻳﺘﻢ ﻫﺬا اﻟﺘﻄﺒﻴﻖ أﺛﻨﺎء ﻋﻤﻞ اﻟﻌﺪاد ﻷﻧﻨﺎ ﻧﺘﺤﺪث ﻋﻦ إﺷﺎرات ﺣﻘﻴﻘﻴﺔ ﲢﺘﺴﺐ ﻓﻘﻂ‬
‫ﻋﻨﺪ إرﺳﺎل اﻹﺷﺎرة ﺑﻮاﺳﻄﺔ اﻟﻀﻐﻂ ﻋﻠﻰ اﳌﻔﺘﺎح ﻣﺜﻼً ﻓﻠﺬاﻟﻚ ﻣﻦ اﳌﻨﻄﻘﻰ ﺟﺪاً أن ﻳﺘﻢ أﻋﻄﺎء أى‬
‫رﻗﻢ ﻟﻠﻌﺪاد ﰒ ﻳﺘﻢ ﺑﺪء ﺣﺴﺐ ﻫﺬا ﻣﺆﺧﺮاً ﻋﻨﺪ ﺗﺸﻐﻴﻞ اﻟﻌﺪاد أو ﰱ اﳊﺎل إذ ﻛﺎن اﻟﻌﺪاد ﻳﻌﻤﻞ أﺳﺎﺳﺎً‬
‫ﻓﻬﺬﻩ اﻟﻌﻤﻠﻴﺔ ﻻ ﺗﺮﺗﺒﻂ ﺑـﺰﻣﻦ ﺣﻘﻴﻘﻰ ‪.real time‬‬

‫‪ -‬ﰱ ﺣﺎﻟﺔ إرﺳﺎل ﻗﻴﻤﺔ إﱃ اﻟﻌﺪاد ﺣﱴ وأن ﻛﺎﻧﺖ ﻫﺬﻩ اﻟﻘﻴﻤﺔ أﻛﱪ أو ﺗﺴﺎوى اﻟﻘﻴﻤﺔ اﳌﺴﺒﻘﺔ )إى‬
‫اﻟﻘﻴﻤﺔ اﳌﻘﺼﻮدة( ﻓﺄﻧﻪ ﻳﺸﱰط داﺋﻤﺎ أن ﻳﻌﻤﻞ اﻟﻌﺪاد ﺣﱴ ﻳﺘﻢ ﺗﻔﻌﻴﻞ اﳊﺎﻟﻪ اﳊﻘﻴﻘﻴﺔ ﻟﻠﻨﻘﺎط اﳋﺎﺻﺔ‬
‫ﺑﺎﻟﻌﺪاد ﻷﻧﻪ ﻟﻴﺲ ﻣﻦ اﳌﻨﻄﻘﻲ أن ﻳﻐﲑ اﻟﻌﺪاد اﻟﻨﻘﺎط اﳋﺎﺻﺔ ﺑﻪ أن ﻛﺎن ﱂ ﻳﻌﻤﻞ ﺑﻌﺪ‪.‬‬

‫‪47‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻣﺜﺎل أﺧﺮ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:Write all‬‬


‫ﳏﺮك ﻳﻌﻤﻞ ﰱ اﲡﺎﻫﲔ‪:‬‬

‫‪L‬‬
‫‪S3‬‬

‫‪OL‬‬

‫‪S1‬‬ ‫‪K1M‬‬ ‫‪S2‬‬ ‫‪K2M‬‬

‫‪K2M‬‬ ‫‪K1M‬‬

‫‪K1M‬‬ ‫‪M2K‬‬

‫أسم الدخل‬ ‫عدد الدخل نوع الدخل‬


‫‪I0.1 / S1‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.2 / S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪I1.1 / S3‬‬ ‫‪n.c.‬‬ ‫‪٣‬‬
‫‪I1.2 / OL‬‬ ‫‪n.c.‬‬ ‫‪٤‬‬
‫أسم الخرج‬ ‫عدد الخرج نوع الخرج‬
‫‪Q0.2 / K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.4 / K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬

‫‪48‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﺒﺮﻧﺎﻣﺞ‬

‫اﻟﺨﻄﻮات‪:‬‬
‫‪ -‬أوﻻً‪ :‬ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﰱ ‪ Address‬و ﰱ ﻫﺬا اﻟﺘﻤﺮﻳﻦ اﻟﻌﻨﻮان ﻫﻮ ‪ Q0.2‬و‬
‫‪Q0.4‬‬
‫‪ -‬ﺛﺎﻧﻴﺎً‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟـ ‪ Format‬ﺣﺴﺐ اﻟـ ‪ Address‬و ﰱ ﻫﺬﻩ اﻟﺘﻤﺮﻳﻦ اﻟـ ‪ Format‬ﻫﻮ‬
‫‪ Bit‬ﻓﻘﻂ‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﺗﻜﺘﺐ اﳊﺎﻟﺔ اﳌﺮاد ﺗﻌﺪﻳﻠﻬﺎ أى ‪ 2#0‬ﻟﻺﻳﻘﺎف أو ‪ 2#1‬ﻟﻠﺘﺸﻐﻴﻞ ﺑﺎﻟﻨﺴﺒﺔ ﻷى ﻣﻦ اﳋﺮﺟﲔ‪.‬‬ ‫‪-‬‬
‫راﺑﻌﺎً‪ :‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Write all‬ﻟﺘﻨﻔﻴﺬ اﻟﺘﻌﺪﻳﻞ اﳌﺮﻏﻮب ﻓﻴﻪ‪.‬‬ ‫‪-‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬

‫‪49‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻹﻟﻐﺎء أﻣﺮ ‪ Write all‬اﻟﺬى ﰎ اﺳﺘﺨﺪاﻣﻪ ﰱ اﳌﺜﺎل اﻟﺴﺎﺑﻖ ﺗﺘﻢ اﺳﺘﺨﺪام ﻧﻔﺲ اﻟﻄﺮﻳﻘﺘﺎن اﻟﺬﻳﻦ‬ ‫‪-‬‬
‫ﺳﺒﻖ ﺷﺮﺣﻬﻢ‪.‬‬
‫ﻣﻦ اﻟﺸﻰء اﳌﻬﻢ ﺟﺪاً ﰱ اﻟـ ‪ Write all‬أﻧﻪ ﻻ ﳝﻜﻦ أن ﻳﻘﻮم ﺑﺘﻐﲑ أى ﺣﺎﻟﺔ دون ﻣﺮاﻋﺎة اﻟﺸﺮوط‬ ‫‪-‬‬
‫اﳌﻮﺟﻮدة ﰱ اﻟﱪﻧﺎﻣﺞ‪ ,‬ﻓﻤﺜﻼً اﻟﺘﻤﺮﻳﻦ اﻟﺴﺎﺑﻖ ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﳏﺮك اﲡﺎﻫﲔ وﻣﻦ اﳌﻌﺮوف أﻧﺔ ﻻ ﳝﻜﻦ‬
‫ﺗﺸﻐﻴﻞ اﲡﺎﻫﲔ ﻣﻌﺎً ﻷن اﻟﺘﻤﺮﻳﻦ ﳛﺘﻮى ﻋﻠﻰ ﻧﻘﻂ ﻣﻐﻠﻘﺔ ﻣﻦ اﻟﻄﺮﻓﲔ ﻓﻠﺬﻟﻚ وﻻ ﺣﱴ أﻣﺮ ‪Write‬‬
‫‪ all‬ﻳﺴﺘﻄﻴﻊ أن ﻳﻘﻮم ﺑﺘﺸﻐﻴﻞ اﻻﲡﺎﻫﲔ ﻣﻌﺎً‪.‬‬

‫اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ﻟﻠﺘﻌﺪﻳﻞ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫ﺗﺴﺘﺨﺪم ‪ Force‬ﰱ ﺗﻌﺪﻳﻞ اﻟﱪﻧﺎﻣﺞ "وﺑﺪون أى ﻣﺮاﻋﺎة ﻟﻠﺸﺮوط" اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ‪.‬‬


‫اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ﺑﺪون ﻣﺮاﻋﺎة اﻟﺸﺮوط اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ أى أﻧﻪ ﳝﻜﻦ ﺗﻨﻔﻴﺬ أى أﻣﺮ ﺑﻮاﺳﻄﺔ اﻟـ ‪force‬‬
‫وﰱ ﻧﻔﺲ اﻟﻮﻗﺖ ﻳﻜﻮن ﻫﺬا اﻷﻣﺮ ﻏﲑ ﳑﻜﻦ ﺗﻨﻔﻴﺬﻩ ﺑﻮاﺳﻄﺔ اﻟﱪﻧﺎﻣﺞ ﻓﻤﺜﻼً‪:‬‬

‫أ‪ .‬ﳝﻜﻦ ﶈﺮك أن ﻳﻌﻤﻞ ﺑﻴﻨﻤﺎ ﻳﻜﻮن ﻣﻔﺘﺎح اﻹﻳﻘﺎف اﳋﺎص ﺑﺎﶈﺮك ﻣﻔﺘﻮح‪.‬‬
‫ب‪ .‬ﳝﻜﻦ ﶈﺮك أن ﻳﻘﻒ ﺑﻴﻨﻤﺎ ﻳﻜﻮن ﻣﻔﺘﺎح اﻟﺘﺸﻐﻴﻞ اﳋﺎص ﺑﺎﶈﺮك ﻣﻐﻠﻖ‪.‬‬
‫ت‪ .‬ﳝﻜﻦ ﶈﺮك ﻋﻜﺲ ﺣﺮﻛﺔ أن ﻳﻌﻤﻞ ﰱ اﻻﲡﺎﻫﲔ ﻣﻌﺎً ﰱ ﻧﻔﺲ اﻟﻮﻗﺖ )ﻗﻔﻠﻪ(‪.‬‬

‫اﻟﻄﺮﻳﻘﺔ‪:‬‬
‫‪ -١‬ﺗﺘﻢ ﻛﺘﺎﺑﺔ اﻟﻌﻨﺎوﻳﻦ اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﺳﻮاء ﻛﺎﻧﺖ‪ ,‬ﻣﺪاﺧﻞ‪ ,‬ﳐﺎرج‪ ,‬اﱁ‪........‬‬

‫‪50‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫‪ -٢‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟﻄﺮﻳﻘﺔ ‪ format‬اﳌﺮاد أﻇﻬﺎر ‪‬ﺎ ﺣﺎﻟﺔ اﻟﻌﻨﻮان اﳌﺬﻛﻮر أﻋﻼﻩ ﻛﻤﺎ وﺿﺢ ﰱ ﻣﺎ ﻗﺒﻞ ﰱ ﻧﻔﺲ‬
‫اﻟﺒﺎب‪.‬‬

‫‪ -٣‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ chart status‬ﳌﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻟﻌﻨﺎوﻳﻦ اﳌﻜﺘﻮﺑﺔ ﺑﺼﻔﺔ ﻣﺴﺘﻤﺮة‪.‬‬

‫‪ -٤‬ﻳﻜﺘﺐ ﻣﻘﺎﺑﻞ اﻟﻌﻨﻮان ‪ new value‬اﻟﺘﻌﺪﻳﻞ اﳌﺮاد ﺗﻨﻔﻴﺬﻩ‪.‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﳝﻜﻦ ﺗﻌﺪﻳﻞ ﺣﺎﻟﺔ اﻟﺪﺧﻞ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪.Force‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﺗﻌﺪﻳﻞ ﺧﺮج ﻳﻜﺘﺐ واﺣﺪ ﻟﻠﺘﺸﻐﻴﻞ أو ﺻﻔﺮ ﻟﻺﻳﻘﺎف‪.‬‬
‫‪ -‬ﻻ ﳝﻜﻦ ﺗﻌﺪﻳﻞ ﻗﻴﻤﺔ اﻟﻌﺪاد أو اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪.Force‬‬

‫‪51‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫‪ -‬ﰱ ﺣﺎﻟﻪ ﺗﻐﻴﲑ أى ﺧﺮج إﱃ ‪ 2#1‬ﻻ ﻳﻌﲎ أن إﻟﻐﺎء اﳊﺎﻟﺔ ﺳﻴﻜﻮن ﻋﻦ ﻃﺮﻳﻖ ‪ 2#0‬ﻷن ﰱ اﳊﺎﻟﺘﲔ‬
‫ﻻ ﺗﺮاﻋﻰ اﻷوﻟﻮﻳﺎت أو اﻟﺸﺮوط اﳋﺎﺻﺔ ﺑﺎﻟﱪﻧﺎﻣﺞ‪.‬‬

‫ﺑﻌﺪ ذاﻟﻚ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪.Force‬‬


‫ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻌﻨﻮان واﺣﺪ ﻓﺄﻧﺔ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪.Unforce‬‬
‫ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻜﻞ اﻟﻌﻨﺎوﻳﻦ ﻓﺄﻧﺔ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪.Unforce all‬‬
‫ﳌﻌﺮﻓﺔ أى اﻟﻌﻨﺎوﻳﻦ اﻟﱴ ﰎ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Force‬ﻋﻠﻴﻬﺎ ﻓﺄﻧﺔ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪.Read all forced‬‬

‫ﻣﺜﺎل ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:Force‬‬


‫ﳏﺮك ﻳﻌﻤﻞ ﻣﻦ ﻣﻜﺎن واﺣﺪ‪.‬‬
‫‪L‬‬
‫‪S1‬‬ ‫‪K1M‬‬

‫‪S2‬‬

‫‪K1M‬‬

‫‪N‬‬

‫عدد الدخل نوع الدخل أسم الدخل‬


‫‪I0.2/S1‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.0/S2‬‬ ‫‪n.c.‬‬ ‫‪٢‬‬
‫عدد الخرج نوع الخرج أسم الخرج‬
‫‪Q0.6/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬

‫‪52‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﺒﺮﻧﺎﻣﺞ‬

‫اﻟﺨﻄﻮات‪:‬‬
‫أوﻻً‪ :‬ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﰱ ‪ address‬و ﰱ ﻫﺬا اﻟﺘﻤﺮﻳﻦ اﻟﻌﻨﻮان ﻫﻮ ‪Q0.6‬‬ ‫‪-‬‬
‫ﺛﺎﻧﻴﺎً‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟـ ‪ format‬ﺣﺴﺐ اﻟـ ‪ address‬و ﰱ ﻫﺬﻩ اﻟﺘﻤﺮﻳﻦ اﻟـ ‪ format‬ﻫﻮ ‪bit‬‬ ‫‪-‬‬
‫ﻓﻘﻂ‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﺗﻜﺘﺐ اﳊﺎﻟﺔ اﳌﺮاد ﺗﻌﺪﻳﻠﻬﺎ أى ‪ 2#0‬ﻟﻺﻳﻘﺎف أو ‪ 2#1‬ﻟﻠﺘﺸﻐﻴﻞ‪.‬‬ ‫‪-‬‬
‫راﺑﻌﺎً‪ :‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ force‬ﻟﺘﻨﻔﻴﺬ اﻟﺘﻌﺪﻳﻞ اﳌﺮﻏﻮب ﻓﻴﻪ‪.‬‬ ‫‪-‬‬

‫‪53‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬اﻟﺬى ﰎ اﺳﺘﺨﺪاﻣﻪ ﰱ اﳌﺜﺎل اﻟﺴﺎﺑﻖ ﺗﻮﺟﺪ ﻃﺮﻳﻖ واﺣﺪة ﻓﻘﻂ وﻫﻰ‪:‬‬
‫‪ -‬ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬ﻳﺴﺘﺨﺪم أﻣﺮ ‪ Unforce‬دون ﻛﺘﺎﺑﺔ أى ﺷﻰء‪.‬‬
‫‪ -‬أﻣﺮ ‪ Force‬ﺑﻘﻴﻤﺔ ‪ 2#0‬ﻟﻴﺲ ﻋﻜﺴﻬﺎ ‪ Force‬ﺑﻘﻴﻤﺔ ‪ 2#1‬و اﻟﻌﻜﺲ ﺻﺤﻴﺢ أﻳﻀﺎً وﻟﻜﻦ‬
‫ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬داﺋﻤﺎً وأﺑﺪاً ﻳﺴﺘﺨﺪم أﻣﺮ ‪.Unforce‬‬

‫ﻻ ﳝﻜﻦ ﺗﻐﲑ ﻗﻴﻢ اﳌﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ ﺑﺎﺳﺘﺨﺪام ‪:force‬‬ ‫‪-‬‬

‫ﻻ ﳝﻜﻦ ﺗﻐﲑ ﻗﻴﻢ اﻟﻌﺪادات ﺑﺎﺳﺘﺨﺪام ‪:force‬‬ ‫‪-‬‬

‫‪54‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫ﻣﺜﺎل أﺧﺮ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:Force‬‬


‫ﻣﺤﺮك ﻳﻌﻤﻞ ﻓﻰ اﺗﺠﺎﻫﻴﻦ‪:‬‬

‫‪L‬‬

‫‪S3‬‬

‫‪OL‬‬

‫‪S1‬‬ ‫‪K1M‬‬ ‫‪S2‬‬ ‫‪K2M‬‬

‫‪K2M‬‬ ‫‪K1M‬‬

‫‪K1M‬‬ ‫‪M2K‬‬

‫‪N‬‬

‫عدد الدخل نوع الدخل أسم الدخل‬


‫‪I0.1 / S1‬‬ ‫‪n.o.‬‬ ‫‪١‬‬
‫‪I0.2 / S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪I1.1 / S3‬‬ ‫‪n.c.‬‬ ‫‪٣‬‬
‫‪I1.2 / OL‬‬ ‫‪n.c.‬‬ ‫‪٤‬‬
‫عدد الخرج نوع الخرج أسم الخرج‬
‫‪Q0.2 / K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.4 / K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬

‫‪55‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫اﻟﺨﻄﻮات‪:‬‬
‫‪ -‬أوﻻً‪ :‬ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﰱ ‪ address‬و ﰱ ﻫﺬا اﻟﺘﻤﺮﻳﻦ اﻟﻌﻨﻮان ﻫﻮ ‪ Q0.2‬و‬
‫‪Q0.4‬‬
‫‪ -‬ﺛﺎﻧﻴﺎً‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟـ ‪ format‬ﺣﺴﺐ اﻟـ ‪ address‬و ﰱ ﻫﺬا اﻟﺘﻤﺮﻳﻦ اﻟـ ‪ format‬ﻫﻮ ‪bit‬‬
‫ﻓﻘﻂ‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﺗﻜﺘﺐ اﳊﺎﻟﺔ اﳌﺮاد ﺗﻌﺪﻳﻠﻬﺎ أى ‪ 2#0‬ﻟﻺﻳﻘﺎف أو ‪ 2#1‬ﻟﻠﺘﺸﻐﻴﻞ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺨﺮﺟﲔ‪.‬‬ ‫‪-‬‬
‫راﺑﻌﺎً‪ :‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ force‬ﻟﺘﻨﻔﻴﺬ اﻟﺘﻌﺪﻳﻞ اﳌﺮﻏﻮب ﻓﻴﻪ‪.‬‬ ‫‪-‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﻹﻟﻐﺎء أﻣﺮ ‪ Force‬اﻟﺬى ﰎ اﺳﺘﺨﺪاﻣﻪ ﰱ اﳌﺜﺎل اﻟﺴﺎﺑﻖ ﺗﺘﻢ اﺳﺘﺨﺪام ﻧﻔﺲ اﻟﻄﺮﻳﻘﺔ اﻟﱴ ﰎ ﺷﺮﺣﻬﺎ‬
‫ﰱ ﻣﺎ ﺳﺒﻖ‪.‬‬

‫‪56‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫‪ -‬ﻣﻦ اﻟﺸﻰء اﳌﻬﻢ ﺟﺪاً ﰱ اﻟـ ‪ force‬أﻧﻪ ﳝﻜﻦ أن ﻳﻘﻮم ﺑﺘﻐﲑ أى ﺣﺎﻟﺔ دون ﻣﺮاﻋﺎة اﻟﺸﺮوط اﳌﻮﺟﻮدة‬
‫ﰱ اﻟﱪﻧﺎﻣﺞ‪ ,‬ﻓﻤﺜﻼً اﻟﺘﻤﺮﻳﻦ اﻟﺴﺎﺑﻖ ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﳏﺮك اﲡﺎﻫﲔ وﻣﻦ اﳌﻌﺮوف أﻧﺔ ﻻ ﳝﻜﻦ ﺗﺸﻐﻴﻞ‬
‫اﲡﺎﻫﲔ ﻣﻌﺎً ﻷن اﻟﺘﻤﺮﻳﻦ ﳛﺘﻮى ﻋﻠﻰ ﻧﻘﻂ ﻣﻐﻠﻘﺔ ﻣﻦ اﻟﻄﺮﻓﲔ وﻟﻜﻦ ﻳﺴﺘﻄﻴﻊ أﻣﺮ ‪ force‬أن ﻳﻘﻮم‬
‫ﺑﺘﺸﻐﻴﻞ اﻻﲡﺎﻫﲔ ﻣﻌﺎً وﻫﺬا ﻳﻌﲎ أﻧﻪ ﺳﺘﺤﺪث "ﻗﻔﻠﺔ" ﻋﻠﻰ أﻃﺮاف اﶈﺮك‪.‬‬

‫أﻣﺮ ‪ force‬ﻳﺴﺘﻄﻴﻊ ﺗﻐﲑ ﻗﻴﻤﺔ اﻟﺪﺧﻞ أﻳﻀﺎً‪.‬‬ ‫‪-‬‬

‫‪ -‬ﻧﻈﺮاً إﱃ أن أﻣﺮ ‪ force‬ﻣﻦ اﻷواﻣﺮ اﻟﱴ أذا أﻧﺴﻴﺖ ﻗﺪ ﺗﺴﺒﺐ اﳌﺸﺎﻛﻞ ﻓﺄﻧﺔ ﺗﻈﻬﺮ ﻋﻼﻣﺔ ﻗﻔﻞ‬
‫ﻣﻐﻠﻖ ﺑﺎﻟﻘﺮب ﻣﻦ اﻟﻌﻨﻮان اﻟﺬى ﰎ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ force‬ﻋﻠﻴﻪ‪.‬‬

‫‪ -‬أذا ﰎ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ force‬ﺑﻘﻴﻤﺔ ‪ 2#1‬ﻋﻠﻰ اﳋﺮج ‪ Q0.0‬ﻓﺄﻧﻪ ﺳﻴﻌﻤﻞ ﻓﻘﻂ ﻫﺬا اﳋﺮج‪ ,‬أى أﻧﺔ‬
‫أذا ﻛﺎن اﻟﱪﻧﺎﻣﺞ ﻗﺪ ﺻﻤﻢ ﲝﻴﺚ ﻋﻨﺪﻣﺎ ﻳﻌﻤﻞ ﻫﺬا اﳋﺮج ﻳﻌﻤﻞ أﻳﻀﺎً ﻣﻌﻪ ﻣﺆﻗﺖ زﻣﲎ ﻓﺄﻧﺔ ﻟﻦ‬
‫ﺳﻴﻌﻤﻞ ﻷن اﳋﺮج ﱂ ﻳﻌﻤﻞ ﺑﻄﺮﻳﻘﺔ ﻃﺒﻴﻌﻴﺔ ﺑﻞ ﻋﻤﻞ ﻋﻦ ﺑﻮاﺳﻄﺔ أﻣﺮ ‪.force‬‬

‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام أﻣﺮ ‪ force‬ﻓﻰ ﺣﻞ ﺑﻌﺾ اﻷﻋﻄﺎل‪ ,‬ﻓﻤﺜﻼً‪:‬‬


‫‪ -‬أذا ﻛﺎن اﶈﺮك ﻻ ﻳﻌﻤﻞ ﻓﻴﻤﻜﻦ ﺑﺪاﻳﺘﺎً ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Force‬ﻋﻠﻰ ﻛﻞ ﻣﻔﺘﺎح ﻣﻦ اﳌﻔﺎﺗﻴﺢ اﻟﱴ ﺗﺘﺤﻜﻢ‬
‫ﺑﺎﶈﺮك ﻋﻠﻰ ﺣﺪا ﲝﻴﺚ أﻧﻪ ﻗﺪ ﻳﻜﻮن ﻫﻨﺎك ﻣﺸﻜﻠﺔ ﰱ دﺧﻞ ﻣﻌﲔ ﻓﺈذا ﻋﻤﻞ اﶈﺮك ﻋﻨﺪ ﺗﻨﻔﻴﺬ أﻣﺮ‬
‫‪ force‬ﻋﻠﻰ اﳌﻔﺘﺎح ‪ I2.3‬ﻣﺜﻼً ﻓﻬﺬا ﻳﻌﲎ أﻧﻪ ﺗﻮﺟﺪ ﻣﺸﻜﻠﺔ ﺑﺘﻠﻚ اﳌﻔﺘﺎح‪.‬‬

‫أﻣﺮ ال‪.‬رﺳﻢ اﻟﺘﺨﻄﻴﻄﻰ ‪:Trend view‬‬


‫ﻳﻌﺘﱪ ﻫﺬا اﻷﻣﺮ ﻣﻦ اﻟﻌﻤﺎﻟﻴﺎت اﻟﺘﻮﺿﻴﺤﻴﺔ اﳌﻮﺟﻮدة ﺑﺎﻟﱪﻧﺎﻣﺞ ﺣﻴﺚ ﻳﻘﻮم ﺑﻌﻤﻞ "رﺳﻢ ﲣﻄﻴﻄﻰ" ﻟﻜﻞ اﻟﻌﻨﺎوﻳﻦ‬
‫اﳌﺬﻛﻮرة ﰱ ﺻﻔﺤﺔ ‪.Status chart‬‬

‫‪57‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳊﺎﻻت‬

‫اﻟﺨﻄﻮات‪:‬‬
‫‪ -١‬ﺗﻜﺘﺐ اﻟﻌﻨﺎوﻳﻦ اﳌﺮاد إﻇﻬﺎرﻫﺎ ﰱ "اﻟﺮﺳﻢ اﻟﺘﺨﻄﻴﻄﻰ" ﰱ ﺟﺪول اﳊﺎﻻت‪.‬‬

‫‪ -٢‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ chart status‬ﳌﻌﺮﻓﺔ اﻟﻘﻴﻤﺔ اﳊﺎﻟﻴﺔ ﻟﻜﻞ ﻋﻨﻮان ﻣﻦ اﳋﻤﺴﺔ ﻋﻨﺎوﻳﻦ اﳌﺬﻛﻮرة ﰱ‬
‫اﳉﺪول‪.‬‬

‫‪ -٣‬ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ trend view‬ﻟﺮأﻳﻪ اﻟﺮﺳﻢ اﻟﺘﺨﻄﻴﻄﻰ ﻟﻜﻞ ﻋﻨﻮان ﻣﻦ اﳋﻤﺴﺔ ﻋﻨﺎوﻳﻦ اﳌﺬﻛﻮرة ﰱ‬
‫اﳉﺪول‪.‬‬

‫‪58‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫اﻟﺒﺎب اﻟﺜﺎﻟﺚ‬

‫ﺟﺪول اﻟﺮﻣﻮز‬
‫• ﺷﺮح ﺟ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺪول اﻟﺮﻣﻮز‪.‬‬

‫• ﻣﺤﺘﻮﻳﺎت ﺟـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺪول اﻟﺮﻣﻮز‪.‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻ ـ ـ ـ ـ ـ ـ ــﻔﺤﺔ اﻟﺮﻣﻮز‪.‬‬

‫• اﻷﺧـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫• اﻟﺘﻌﻠﻴﻘﺎت اﻟﺨﺎﺻﺔ ﺑﺼﻔﺤﺔ ﺟـ ـ ـ ـ ـﺪول اﻟﺮﻣﻮز‪.‬‬

‫• ﺟﺪول اﻟﺮﻣﻮز اﻟﺨﺎص ﺑ ـ ـ ـ ــﺼﻔﺤﺎت اﻟﺒﺮﻣﺠﺔ‪.‬‬

‫• ﻃﺮﻳﻘﺔ اﻟﺒﺮﻣ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺠﺔ ﺑﺎﺳﺘﺨﺪام اﻟﻌﻨﺎوﻳﻦ‪.‬‬

‫• ﻃﺮﻳﻘﺔ اﻟﺒﺮﻣﺠﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻮز‪.‬‬

‫• ﺟـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺪول اﻟـ ‪.S7-200 symbols‬‬

‫‪59‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫ﺟﺪول اﻟﺮﻣﻮز ‪: symbol table‬‬

‫ﺗﺴﺘﺨﺪم ﺻﻔﺤﺔ "ﺟﺪول اﻟﺮﻣﻮز" اﻟـ ‪ Symbol Table‬ﻟﻜﻰ ﻳﻜﻮن‬


‫ﻟﻜﻞ ﻋﻨﻮان ﻣﻦ اﻟﻌﻨﺎوﻳﻦ اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ رﻣﺰ و ﳝﻜﻦ أﻳﻀﺎً ﻛﺘﺎﺑﺔ‬
‫ﺗﻌﻠﻴﻘﺎت ﺧﺎﺻﺔ ﺑﻜﻞ رﻣﺰ ﺣﱴ ﻳﺼﺒﺢ ﻣﻦ اﻟﺴﻬﻞ ﻋﻠﻰ اﳌﱪﻣﺞ اﻟﺘﻌﺮف‬
‫ﻋﻠﻰ وﻇﻴﻔﺔ ﻛﻞ ﻣﻔﺘﺎح‪ ,‬رﻳﻠﻴﻪ‪ ,‬ﺧﺮج‪ ,‬ﻋﺪاد‪ ,‬ﻣﺆﻗﺖ زﻣﲎ‪ ,‬إﱁ‪.‬‬

‫ﻃﺮﻳﻘﺔ اﺳﺘﺨﺪام ﺻﻔﺤﺔ "ﺟﺪول اﻟﺮﻣﻮز"‪:‬‬

‫‪ -‬يمكن عمل البرنامج أوالً ثم إعطاء رموز لكل عنوان‬


‫بواسطة صفحة "جدول الرموز"‪.‬‬

‫‪ -‬يمكن كتابة الرموز أوالً فى صفحة "جدول الرموز"‬


‫ثم عمل البرنامج حسب الرموز المعطاة أو المحددة‬
‫من قبل‪.‬‬

‫‪60‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫اﻷﺧﻄﺎء اﻟﻤﻤﻜﻦ ﺣﺪوﺛﻬﺎ‪:‬‬

‫‪ -١‬ﻛﺘﺎﺑﺔ أى رﻣﺰ ﻳﻜﻮن ﺑﺎﻟﺼﺪﻓﺔ أﺳﻢ ﻣﻦ أﲰﺎء اﻟﻌﻤﻠﻴﺎت اﳌﺘﻌﺎرف ﻋﻠﻴﻬﺎ ﰱ اﻟﱪﳎﺔ‪.‬‬
‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ ﻛﻠﻤﺔ )"‪,"ENI" ,"END" ,"LBL" ,"JMP" ,"R" ,"S" ,"stop‬‬
‫"‪ ("CTUD" ,"CTD" ,"CTU" ,"TONR" ,"TOF" ,"TON‬ﻷن ﻛﻞ ﻫﺬﻩ‬
‫اﻟﻜﻠﻤﺎت ﻫﻰ دوال ﻟﻌﻤﻠﻴﺎت ﺗﺴﺘﺨﺪم ﰱ اﻟﱪﳎﺔ ﻛﻤﺎ ﺳﻴﺘﻢ ﺷﺮﺣﻬﺎ ﻓﻴﻤﺎ ﺑﻌﺪ‪.‬‬

‫‪ -٢‬ﻛﺘﺎﺑﺔ أى رﻣﺰ ﻣﻜﻮن ﻣﻦ ﻛﻠﻤﺘﲔ و ﻳﻜﻮن ﺑﻴﻨﻬﻢ ﻣﺴﺎﻓﺔ‪.‬‬


‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ ﻛﻠﻤﺔ )"‪,"motor right", "second button " ,"first button‬‬
‫"‪.("motor left‬‬

‫‪ -٣‬ﺗﻜﺮار ﻧﻔﺲ اﻟﺮﻣﺰ أﻛﺜﺮ ﻣﻦ ﻣﺮة‪.‬‬


‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ أى رﻣﺰ أﻛﺜﺮ ﻣﻦ ﻣﺮة ﺣﱴ وﻟﻮ ﻛﺎن ﻣﻊ ﻧﻔﺲ اﻟﻌﻨﻮان‪.‬‬

‫‪61‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ :Symbol‬ﺣﻴﺚ ﻳﻜﺘﺐ اﻟﺮﻣﺰ اﳋﺎص ﺑﻜﻞ ﻋﻨﻮان ﺑﺸﺮط ﻋﺪم ﺗﻜﺮار اﻟﺮﻣﺰ ﻣﻊ ﻋﻨﺎوﻳﻦ أﺧﺮى‪.‬‬
‫‪ :Address‬ﺣﻴﺚ ﻳﻜﺘﺐ اﻟﻌﻨﻮان اﳋﺎص ﺑﺎﻟﱪﻧﺎﻣﺞ ﺑﺸﺮط أن ﻳﻜﻮن اﻟﻌﻨﻮان ﻣﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ ﺑﺎﻟﻔﻌﻞ‪.‬‬
‫‪ :Comment‬ﺣﻴﺚ ﺗﻜﺘﺐ اﳌﻼﺣﻈﺎت اﳋﺎص ﺑﻜﻞ ﻋﻨﻮان ﻣﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪ -‬ﰱ ﺣﺎﻟﺔ ﺗﻜﺮار اى ﻋﻨﻮان ﻳﻈﻬﺮ رﻣﺰ ‪<--‬‬

‫‪ -‬ﰱ ﺣﺎﻟﺔ ﻛﺘﺎﺑﺔ اى ﻋﻨﻮان ﻟﻴﺲ ﻣﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ ﻳﻈﻬﺮ رﻣﺰ ‪<--‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ :Symbol‬ﺣﻴﺚ ﺗﻮﺟﺪ اﻟﺮﻣﻮز اﳋﺎﺻﺔ ﺑﺎﻟﺜﻼث أﻣﺎﻛﻦ اﳋﺎﺻﺔ ﺑﺼﻔﺤﺎت اﻟﱪﳎﺔ‪.‬‬
‫‪ :Address‬ﺣﻴﺚ ﺗﻮﺟﺪ اﻟﻌﻨﺎوﻳﻦ اﳋﺎﺻﺔ ﺑﺎﻟﺜﻼث أﻣﺎﻛﻦ اﳋﺎﺻﺔ ﺑﺼﻔﺤﺎت اﻟﱪﳎﺔ‪.‬‬
‫‪ :Comment‬ﺣﻴﺚ ﺗﻮﺟﺪ اﳌﻼﺣﻈﺎت اﳋﺎﺻﺔ ﺑﺎﻟﺜﻼث أﻣﺎﻛﻦ اﳋﺎﺻﺔ ﺑﺼﻔﺤﺎت اﻟﱪﳎﺔ‪.‬‬

‫‪62‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﻻ ﳝﻜﻦ ﺗﻌﺪﻳﻞ اﻟﺮﻣﺰ أو اﻟﻌﻨﻮان أو اﻟﺘﻌﻠﻴﻘﺎت اﳋﺎﺻﺔ ﺑﺼﻔﺤﺎت اﻟﱪﳎﺔ اﻟﺜﻼﺛﺔ‪.‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ إﺿﺎﻓﺔ ﺻﻔﺢ أﺧﺮى ﺧﺎﺻﺔ ﺑﺎﻟﱪﳎﺔ ﻳﻀﺎف اﻟﺮﻣﺰ اﳋﺎص ‪‬ﺎ ﺗﻠﻘﺎﺋﻴﺎ ﰱ ﺻﻔﺤﺔ "ﺟﺪول‬
‫اﻟﺮﻣﻮز"‪.‬‬

‫اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺤﺔ اﻟﺮﻣﻮز‪.‬‬

‫‪:Toggles POU comments -١‬‬


‫‪ -‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﻈﻬﺮ اﻟﺘﻌﻠﻴﻘﺎت اﳋﺎﺻﺔ ﺑﺼﻔﺤﺎت اﻟﱪﳎﺔ‪.‬‬

‫‪:Toggles NETWORK comments -٢‬‬


‫‪ -‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﻈﻬﺮ اﻟﺘﻌﻠﻴﻘﺎت اﳋﺎﺻﺔ ﺑﻔﺮوع اﻟﱪﳎﺔ‪.‬‬

‫‪:Toggles symbol information table -٣‬‬


‫‪ -‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﻈﻬﺮ اﻟﺮﻣﻮز و اﻟﺘﻌﻠﻴﻘﺎت اﳋﺎﺻﺔ ﺑﻜﻞ ﻋﻨﻮان ﰱ ﺟﺪول‪.‬‬

‫‪63‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫‪:Apply all symbols in project -٤‬‬


‫‪ -‬ﰱ ﺣﺎﻟﺔ ﻛﺘﺎﺑﺔ اﻟﺮﻣﻮز ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﱪﳎﺔ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﻟﻜﻰ ﻳﻘﻮم ﺑﺈﻇﻬﺎر اﻟﺮﻣﻮز‬
‫ﲜﻮار اﻟﻌﻨﺎوﻳﻦ‪.‬‬

‫‪:Create table undefined symbols -٥‬‬


‫‪ -‬ﰱ ﺣﺎﻟﻪ ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣﻮز ودون ﻛﺘﺎﺑﺔ أى ﻋﻨﺎوﻳﻦ ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﻟﻜﻰ‬
‫ﻳﻘﻮم اﻟﱪﻧﺎﻣﺞ ﺗﻠﻘﺎﺋﻴﺎ ﺑﺈﻇﻬﺎر اﻟﺮﻣﻮز اﻟﱴ ﻟﻴﺲ ﳍﺎ ﻋﻨﺎوﻳﻦ ﰱ ﺟﺪول ﻟﻜﻲ ﻳﻘﻮم اﳌﱪﻣﺞ ﺑﻜﺘﺎﺑﺔ اﻟﻌﻨﺎوﻳﻦ‪.‬‬

‫ﺗﻮﺟﺪ ﻃﺮﻳﻘﺘﺎن ﻻﺳﺘﺨﺪام ﺟﺪول اﻟﺮﻣﻮز ﻓﻰ اﻟﺒﺮﻣﺠﺔ‪:‬‬


‫‪ -١‬اﻟﱪﳎﺔ ﺑﺎﺳﺘﺨﺪام اﻟﻌﻨﺎوﻳﻦ ﰒ إﻋﻄﺎء رﻣﺰ ﻟﻜﻞ ﻋﻨﻮان‪.‬‬
‫‪ -٢‬اﻟﱪﳎﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣﻮز ﰒ إﻋﻄﺎء ﻋﻨﻮان ﻟﻜﻞ رﻣﺰ‪.‬‬

‫اﻟﻄﺮﻳﻘﺔ اﻷوﻟﻰ‪:‬‬
‫اﻟﱪﳎﺔ ﺑﺎﺳﺘﺨﺪام اﻟﻌﻨﺎوﻳﻦ أوﻻً ﰒ إﻋﻄﺎء رﻣﺰ ﻟﻜﻞ ﻋﻨﻮان‪.‬‬

‫‪ - ١‬رﺳﻢ اﻟﱪﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام اﻟﻌﻨﺎوﻳﻦ‪.‬‬

‫‪64‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫‪ - ٢‬ﻛﺘﺎﺑﺔ رﻣﺰ ﻟﻜﻞ ﻋﻨﻮان‪.‬‬

‫‪- ٣‬اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Apply all symbols in project‬ﻟﺘﻔﻌﻴﻞ اﻟﺘﻐﻴﲑ‪.‬‬

‫اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ‪:‬‬
‫اﻟﱪﳎﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣﻮز أوﻻً ﰒ إﻋﻄﺎء ﻋﻨﻮان ﻟﻜﻞ رﻣﺰ‪.‬‬

‫‪ - ١‬رﺳﻢ اﻟﱪﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣﻮز‪.‬‬

‫‪65‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫‪ - ٢‬ﻛﺘﺎﺑﺔ ﻋﻨﻮان ﻟﻜﻞ رﻣﺰ ﺑﺎﻟﻀﻐﻂ ﻣﺮﺗﲔ ﻋﻠﻰ ﻛﻞ رﻣﺰ‪.‬‬

‫‪- ٣‬ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺮﻣﻮز ﻳﺼﺒﺢ اﻟﱪﻧﺎﻣﺞ ‪‬ﺬا اﻟﺸﻜﻞ‪.‬‬

‫ﻳﻤﻜﻦ أﻇﻬﺎر اﻟﺮﻣﻮز وﺣﺪﻫﺎ أو أﻇﻬﺎر اﻟﺮﻣﻮز و اﻟﻌﻨﺎوﻳﻦ ﻣﻌﺎً‪.‬‬

‫ﺧﺼﺎﺋﺺ‪:‬‬
‫ﻟﻈﻬﻮر اﻟﺮﻣﻮز و اﻟﻌﻨﺎوﻳﻦ ﻣﻌﺎً أو ﻟﻈﻬﻮر‬
‫اﻟﺮﻣﻮز ﻓﻘﻂ ﺑﺪون اﻟﻌﻨﺎوﻳﻦ ﻳﺘﻢ اﻟﻀﻐﻂ‬
‫ﻋﻠﻰ ‪ tools‬ﰒ ‪ options‬ﰒ اﻻﺧﺘﻴﺎر‬
‫ﺑﲔ اﻟﻨﻮﻋﲔ‪:‬‬

‫‪ -۱‬ﻋﺮض اﻟﺮﻣﻮز ﻓﻘﻂ‬


‫‪display symbol only‬‬
‫‪ -٢‬ﻋﺮض اﻟﺮﻣﻮز واﻟﻌﻨﺎوﻳﻦ‬
‫‪display symbol and address‬‬

‫‪66‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ وﺿﻊ اﻟﺮﻣﻮز اﻟﺨﺎﺻﺔ ﺑﻜﻞ ﻋﻨﻮان ﻳﻤﻜﻦ إﻇﻬﺎر اﻟﺮﻣﻮز ﺑﺎﻟﻄﺮﻳﻘﺘﻴﻦ اﻟﺘﺎﻟﻴﺘﻴﻦ‪:‬‬

‫‪ -‬اﻟﻄﺮﻳﻘﺔ اﻷوﻟﻰ‪) :‬اﻟﺮﻣﻮز ﻓﻘﻂ(‬

‫‪ -‬اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ‪) :‬اﻟﺮﻣﻮز و اﻟﻌﻨﺎوﻳﻦ ﻣﻌﺎً(‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬وﻳﺘﻢ ﺗﻄﺒﻴﻖ اﻟﻄﺮﻳﻘﺔ اﻷوﱃ ﺑﺎﺧﺘﻴﺎر ‪ Display Symbol Only‬وﻟﻜﻦ ﻻ ﻳﻔﻀﻞ ﻫﺬﻩ اﻟﻄﺮﻳﻘﺔ‬
‫ﺑﺴﺒﺐ اﻟﺘﺨﺒﻂ اﻟﺬى ﻳﻨﺘﺞ ﺑﺴﺒﺒﻬﺎ‪.‬‬
‫‪ -‬وﻳﺘﻢ ﺗﻄﺒﻴﻖ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ﺑﺎﺧﺘﻴﺎر ‪ Display Symbol And Address‬وﻫﻰ اﻟﻄﺮﻳﻘﺔ‬
‫اﻷﻓﻀﻞ ﰱ ﻋﺮض اﻟﺮﻣﻮز وﺑﺎﻷﺧﺺ ﰱ اﻟﱪاﻣﺞ اﻟﱴ ﲢﺘﻮى ﻋﻠﻰ ﻋﺪد ﻛﺒﲑ ﻣﻦ أﻓﺮع اﻟﱪﳎﺔ‬
‫‪.network‬‬
‫‪ -‬ﻳﺮﺟﻰ ﻋﺪم ﻛﺘﺎﺑﺔ رﻣﻮز ﺗﺘﻜﻮن ﻣﻦ أﺣﺮف ﻛﺜﲑة ﻟﺘﺠﻨﺐ اﻟﺘﺨﺒﻂ ﰱ ﺣﲔ ﺗﻄﺒﻴﻖ اﻟﺮﻣﻮز ﻋﻠﻰ اﻟﱪﻧﺎﻣﺞ‬
‫ﺑﺎﻟﻔﻌﻞ‬

‫‪67‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﻟﺮﻣﻮز‬

‫وﻣﻦ ﺿﻦ اﻷﻋﻤﺎل اﳍﺎﻣﺔ ﻟﺼﻔﺤﺔ "ﺟﺪول اﻟﺮﻣﻮز" أ‪‬ﺎ ﲢﺘﻮى ﻋﻠﻰ ﺟﺪول ﻓﻴﻪ ﻣﺌﺎت اﻟﻌﻨﺎوﻳﻦ اﳋﺎﺻﺔ ﺑﺎﻟﻌﻤﻠﻴﺎت‬
‫اﻷﻛﺜﺮ اﺳﺘﺨﺪاﻣﺎً ﺑﻞ وﻳﻮﺟﺪ أﻳﻀﺎ ﺗﻌﻠﻴﻖ ﺧﺎص ﺑﻜﻞ ﻋﻨﻮان ﻛﻤﺎ ﻫﻰ ﻣﻮﺿﺤﺎً ﺑﺎﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ و ﺳﻮف ﻳﺘﻢ ﺷﺮح‬
‫ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻣﻨﻬﺎ ﺑﺎﻟﻐﺔ اﻟﻌﺮﺑﻴﺔ ﰲ اﻟﻔﺼﻞ اﻟﺘﺎﺳﻊ ﺑﺎﻟﺘﻔﺼﻴﻞ‬

‫‪68‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫اﻟﺒﺎب اﻟﺮاﺑﻊ‬

‫ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬
‫• ﺷﺮح ﺻﻔﺤﺔ اﻟﺒﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎﻧﺎت‪.‬‬

‫• ﻣﺤﺘﻮﻳﺎت ﺻﻔﺤﺔ اﻟﺒﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎﻧﺎت‪.‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺨﺔ اﻟﺒﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎﻧﺎت‪.‬‬

‫• اﻷﺧـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫• اﻟﺘﻌﻠﻴﻘﺎت اﻟﺨﺎﺻﺔ ﺑﺼﻔﺤﺔ اﻟﺒﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎﻧﺎت‪.‬‬

‫• ﻛﻴﻔﻴﺔ ﺗﺨﺰﻳﻦ ﻗﻴﻢ ﻣﺴﺒﻘﺔ ﻋﻠﻰ ﻣﺘﻐﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮات ﺑﺤﺠﻢ ‪.Bit‬‬

‫• ﻛﻴﻔﻴﺔ ﺗﺨﺰﻳﻦ ﻗﻴﻢ ﻣﺴﺒﻘﺔ ﻋﻠﻰ ﻣﺘﻐﻴـ ـ ـ ـ ـ ــﺮات ﺑﺤﺠﻢ ‪.Byte‬‬

‫• ﻛﻴﻔﻴﺔ ﺗﺨﺰﻳﻦ ﻗﻴﻢ ﻣﺴﺒﻘﺔ ﻋﻠﻰ ﻣﺘﻐﻴـ ـ ـ ـﺮات ﺑﺤﺠﻢ ‪.Word‬‬

‫• ﻛﻴﻔﻴﺔ ﺗﺨﺰﻳﻦ ﻗﻴﻢ ﻣﺴﺒﻘﺔ ﻋﻠﻰ ﻣﺘﻐﻴﺮات ﺑﺤﺠﻢ ‪.Dword‬‬

‫• ﺗﻤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪69‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت ‪: Data Block‬‬

‫ﺗﺴﺘﺨﺪم ﺻﻔﺤﺔ " اﻟﺒﻴﺎﻧﺎت" اﻟـ ‪ Data Block‬ﻛﺼﻔﺤﺔ‬


‫ﻟﻠﺘﻌﻠﻴﻘﺎت أو ﻛﺼﻔﺤﺔ ﻟﺘﺤﺪﻳﺪ ﻗﻴﻢ ﻣﺴﺒﻘﺔ ﺧﺎﺻﺔ ﺑﺎﳌﺘﻐﲑات‬
‫ﲜﻤﻴﻊ أﻧﻮﻋﻬﺎ ﺳﻮاء اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ أو ﻏﲑ اﳌﺴﺘﺨﺪﻣﺔ‬
‫ﰱ اﻟﱪﻧﺎﻣﺞ وﻫﺬا ﻷن ﰱ ﲨﻴﻊ اﳊﺎﻻت ﺗﻜﻮن اﻟﻘﻴﻤﺔ اﻷوﻟﻴﺔ‬
‫ﻟﻠﻤﺘﻐﲑات ﻫﻰ ﺻﻔﺮ وﻫﺬا ﻗﺪ ﻳﺴﺒﺐ ﺑﻌﺾ اﳌﺸﺎﻛﻞ وﻫﺬا‬
‫ﳛﺪث أذا ﰎ اﺳﺘﺨﺪام اﳌﺘﻐﲑات ﺑﺎﻟﺘﺤﺪﺑﺪ ﻣﻊ اﳌﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ‪,‬‬
‫ﻣﻊ اﻟﻌﺪادات أو ﺣﱴ ﻣﻊ ﻣﻔﺎﺗﻴﺢ اﳌﻘﺎرﻧﺔ ﻛﻤﺎ ﺳﻮف ﻳﺘﻢ‬
‫اﻟﺘﻮﺿﻴﺢ ﰱ اﻟﺘﻤﺎرﻳﻦ اﻟﻌﻤﻠﻴﺔ ﰱ ﻧﻔﺲ اﻟﻔﺼﻞ‪.‬‬

‫اﺳﺘﺨﺪاﻣﺎت ﺻﻔﺤﺔ " اﻟﺒﻴﺎﻧﺎت"‪:‬‬


‫‪ -‬اﺳﺘﺨﺪام ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت ﻟﻠﺘﻌﻠﻴﻘﺎت‪:‬‬
‫ﳝﻜﻦ ﻛﺘﺎﺑﺔ اﻟﺘﻌﻠﻴﻘﺎت ﻗﺒﻞ أو ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ و ﻫﺬا ﻷن‬
‫اﻟﺘﻌﻠﻴﻘﺎت ﻻ ﺗﻌﲎ أى ﺷﻰء ﺑﺎﻟﻨﺴﺒﺔ ﳉﻬﺎز اﻟـ ‪ ,PLC‬ﻓﻤﺜﻼً‬
‫ﻟﻦ ﻳﺆﺛﺮ ﻋﻠﻰ اﻟﱪﻧﺎﻣﺞ أذا ﻛﺘﺒﺖ ﻛﺘﻌﻠﻴﻖ أن ﲦﻦ اﳌﻔﺘﺎح ﻫﻮ‬
‫ﻋﺸﺮة ﺟﻨﻴﻬﺎت أو أن ﻟﻮن اﳌﻮﺗﻮر أزرق‪.‬‬

‫‪70‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫‪ -‬اﺳﺘﺨﺪام ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت ﻟﻠﻤﺘﻐﲑات‪:‬‬


‫ﳚﺐ ﻛﺘﺎﺑﺔ اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﳌﺘﻐﲑات ﻗﺒﻞ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ و ﻟﻴﺲ ﺑﻌﺪ و ﻫﺬا ﻷن ﺗﻠﻚ اﻟﻘﻴﻢ ﺗﻌﲎ اﻟﻜﺜﲑ ﳉﻬﺎز اﻟـ‬
‫‪ PLC‬ﻷ‪‬ﺎ ﺳﺘﺆﺛﺮ ﻋﻠﻰ اﻟﱪﻧﺎﻣﺞ‪ ,‬ﻓﻤﺜﻼً أذا ﻛﺘﺒﺖ أن ﻗﻴﻤﺔ اﳌﺘﻐﲑ ‪ VW0‬ﻫﻰ ‪ ٤٠٠٠‬ﻓﻤﺜﻼً أذا ﻛﺎن ﻫﺬا‬
‫اﳌﺘﻐﲑ ﻣﺴﺘﺨﺪم ﻣﻊ ﻣﺆﻗﺖ زﻣﲎ ‪ T32‬ﻓﻬﺬا ﻳﻌﲎ أن اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﺳﻮف ﻳﻐﲑ اﻟﻨﻘﻂ اﳋﺎﺻﺔ ﺑﻪ ﺑﻌﺪ أرﺑﻊ ﺛﻮاﱏ‬
‫ﻣﻦ اﻟﺘﺸﻐﻴﻞ‪.‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﻋﺪم ﻛﺘﺎﺑﺔ أى ﻗﻴﻤﺔ ﻣﺴﺒﻘﺔ ﻟﻠﻤﺘﻐﲑات ﻓﻬﺬا ﻳﻌﲎ أن اﻟﻘﻴﻤﺔ اﳊﺎﻟﻴﺔ ﻟﻠﻤﺘﻐﲑات ﺳﺘﻜﻮن ﺻﻔﺮ و ﻗﺪ‬
‫ﻳﺘﺴﺒﺐ ﻫﺬا ﰱ ﺑﻌﺾ اﳌﺸﺎﻛﻞ‪.‬‬
‫‪ -‬ﳝﻜﻦ ﺗﻐﲑ ﻗﻴﻤﺔ أى ﻣﺘﻐﲑ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" ﺣﱴ وﻟﻮ ﻛﺎن ﳍﺬا اﳌﺘﻐﲑ ﻗﻴﻤﺔ ﻣﺴﺒﻘﺔ‪ ,‬وﻳﺘﻢ‬
‫ﻫﺬا ﺑﻮاﺳﻄﺔ أﻣﺮ ‪ write all‬أﻧﻈﺮ ﺻﻔﺤﺔ ‪.٤٢‬‬
‫‪ -‬ﻟﻜﺘﺎﺑﺔ ﺑﻌﺾ اﻟﺘﻌﻠﻴﻘﺎت ﳚﺐ إن ﺗﻜﺘﺐ ﰱ اﻟﺒﺪاﻳﺔ "‪ "//‬ﰒ ﻳﻜﺘﺐ اﻟﺘﻌﻠﻴﻖ اﳌﺮاد ﻛﺘﺎﺑﺘﻪ‪.‬‬
‫‪ -‬ﻟﻜﺘﺎﺑﺔ ﺑﻌﺾ اﳌﺘﻐﲑات ﳚﺐ إن ﻻ ﺗﻜﺘﺐ ﰱ اﻟﺒﺪاﻳﺔ "‪ "//‬ﺑﻞ ﻳﻜﺘﺐ اﳌﺘﻐﲑ اﳌﺮاد ﻛﺘﺎﺑﺘﻪ دون أى‬
‫ﻣﻘﺪﻣﺎت‪.‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ ﻛﺘﺎﺑﺔ أى ﻣﺘﻐﲑات ﺑﻄﺮﻳﻘﺔ ﺧﻄﺎء أو ﻛﺘﺎﺑﺔ أى ﺗﻌﻠﻴﻖ دون "‪ "//‬ﺗﻈﻬﺮ ﺗﻠﻘﺎﺋﻴﺎ ﻋﻼﻣﺔ "‪ "X‬ﻟﻜﻰ‬
‫ﺗﺸﲑ إﱃ أﻧﻪ ﻗﺪ ﰎ ﻛﺘﺎﺑﺔ ﺷﻰء ﻏﲑ ﺻﺤﻴﺢ‪.‬‬
‫‪ -‬اﻟﻄﺮﻳﻘﺔ اﻷﻓﻀﻞ ﻟﺘﻐﻴﲑ ﳏﺘﻮﻳﺎت اﳌﺘﻐﲑات ﺑﻮاﺳﻄﺔ اﻟﱪﻧﺎﻣﺞ ﺗﺘﻢ ﻋﻦ ﻃﺮﻳﻖ ﻋﻤﻠﻴﺎت اﻟﻨﻘﻞ‪ ,‬أﻧﻈﺮ ﺻﻔﺤﺔ‬
‫‪ ٢٠٩‬ﰱ اﳉﺰء اﻷول ﻣﻦ اﻟﻜﺘﺎب‪.‬‬

‫‪71‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫ﺷﻜﻞ ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‪:‬‬

‫اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫• ‪ :Compile all‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﻳﻘﻮم اﻟﱪﻧﺎﻣﺞ ﲟﺮاﺟﻌﺔ ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت ﻹﻇﻬﺎر‬
‫اﻷﺧﻄﺎء أذا وﺟﺪت‪.‬‬

‫• ‪ :Download‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﻳﻘﻮم ﺑﺘﺤﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ﻛﻤﺎ ﺳﺒﻖ و ﲢﻤﻴﻞ ﺻﻔﺤﺔ‬
‫اﻟﺒﻴﺎﻧﺎت أﻳﻀﺎً‪.‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ﺻﻔﺤﺔ "ﺟﺪول اﻟﻤﺮﺟﻊ"‪:‬‬


‫ﳏﺮك ﻳﻌﻤﻞ ﳝﻴﻨﺎً ﻟﻮﻗﺖ ﰒ ﻳﻘﻒ ﻟﻮﻗﺖ ﰒ ﻳﻌﻤﻞ ﺗﻠﻘﺎﺋﻴﺎً ﻟﻠﻴﺴﺎر ﻟﻮﻗﺖ أﺧﺮ ﰒ ﻳﻘﻒ ﻟﻮﻗﺖ و ﻫﻜﺬا‬
‫ﺑﺸﺮط أن ﻳﻜﻮن ﻫﻨﺎك أﻣﻜﺎﻧﻴﺔ ﻟﺘﻐﲑ اﻟﺰﻣﻦ‪.‬‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫أسم المتغيرات‬ ‫نوع المتغيرات‬ ‫عدد المتغيرات‬
‫‪T200/VW0‬‬ ‫‪<=I‬‬ ‫‪١‬‬
‫‪72‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫‪T200/ VW2‬‬ ‫‪>=I‬‬ ‫‪٢‬‬


‫‪T200/VW4‬‬ ‫‪<=I‬‬ ‫‪٣‬‬
‫‪T200/ VW6‬‬ ‫‪<=I‬‬ ‫‪٤‬‬
‫أسم المتغيرات‬ ‫نوع المتغيرات‬ ‫عدد المتغيرات‬
‫‪VW0‬‬ ‫‪Word‬‬ ‫‪١‬‬
‫‪VW2‬‬ ‫‪Word‬‬ ‫‪٢‬‬
‫‪VW4‬‬ ‫‪Word‬‬ ‫‪٣‬‬
‫‪VW6‬‬ ‫‪Word‬‬ ‫‪٤‬‬
‫أسم الريليھات‬ ‫نوع الريليھات‬ ‫عدد الريليھات‬
‫‪M0.0‬‬ ‫‪Bit‬‬ ‫‪١‬‬
‫عدد المؤقتات الزمنية نوع المؤقتات الزمنية أسم المؤقتات الزمنية‬
‫‪T200‬‬ ‫‪TON‬‬ ‫‪١‬‬
‫أسم الخرج‬ ‫نوع الخرج‬ ‫عدد الخرج‬
‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.2/K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬

‫اﻟﺸﺮح‪:‬‬
‫‪ :Network1‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﻳﻌﻤﻞ اﻟﺮﻳﻠﻴﻪ ‪ M0.0‬ﺑﺸﺮط أن ﻳﻜﻮن ‪ I0.0‬ﻣﻐﻠﻖ‪.‬‬

‫‪ :Network2‬ﻳﻌﻤﻞ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ‪ T96‬ﻟﺰﻣﻦ ﻣﺘﻐﲑ ﺑﻘﻴﻤﺔ ﻣﺴﺒﻘﺔ ﺛﺎﻧﻴﺘﺎن ﰒ ﻳﻘﻒ ﻟﻴﺒﺪأ ﻣﻦ ﺟﺪﻳﺪ‪.‬‬

‫‪ :Network3‬ﻳﻌﻤﻞ اﶈﺮك ﳝﻴﻨﺎً ﻟﺰﻣﻦ ﻣﺘﻐﲑ ﺑﻘﻴﻤﺔ ﻣﺴﺒﻘﺔ ﺛﺎﻧﻴﺘﺎن ﰒ ﻳﻘﻒ ﻟﺰﻣﻦ ﻣﺘﻐﲑ ﺑﻘﻴﻤﺔ ﻣﺴﺒﻘﺔ ﺛﺎﻧﻴﺘﺎن‬
‫أﻳﻀﺎً‪.‬‬

‫‪ :Network4‬ﻳﻌﻤﻞ اﶈﺮك ﻳﺴﺎراً ﻟﺰﻣﻦ ﻣﺘﻐﲑ ﺑﻘﻴﻤﺔ ﻣﺴﺒﻘﺔ ﺛﺎﻧﻴﺘﺎن ﰒ ﻳﻘﻒ ﻟﺰﻣﻦ ﻣﺘﻐﲑ ﺑﻘﻴﻤﺔ ﻣﺴﺒﻘﺔ ﺛﺎﻧﻴﺘﺎن‬
‫أﻳﻀﺎً‪.‬‬

‫‪73‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪74‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫ﰎ ﲢﺪﻳﺪ ﻗﻴﻢ اﳌﺘﻐﲑات ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت ﻛﻤﺎ ﺳﺒﻖ وﺷﺮﺣﻨﺎ‪.‬‬

‫ﺑﻞ ﳝﻜﻦ أﻳﻀﺎً ﺗﻐﲑ ﻗﻴﻢ اﳌﺘﻐﲑات ﻣﺮة أﺧﺮى ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ "ﺟﺪول اﳊﺎﻻت" ﺑﻮاﺳﻄﺔ أﻣﺮ ‪.write all‬‬

‫‪75‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت‬

‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح ‪ Compile all‬ﻳﻘﻮم اﻟﱪﻧﺎﻣﺞ ﲟﺮاﺟﻌﺔ ﺻﻔﺤﺔ اﻟﺒﻴﺎﻧﺎت ﻹﻇﻬﺎر اﻷﺧﻄﺎء أذا وﺟﺪت‪.‬‬

‫‪76‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫اﻟﺒﺎب اﻟﺨﺎﻣﺲ‬

‫ﺟﺪول اﻟﻤﺮﺟﻊ‬
‫• ﺷﺮح ﺟﺪول اﻟﻤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮﺟﻊ‪.‬‬

‫• ﻣﺤﺘﻮﻳﺎت ﺟﺪول اﻟﻤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮﺟﻊ‪.‬‬

‫• ﺻـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻔﺤﺔ ‪.Cross Reference‬‬

‫• ﺻ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻔﺤﺔ ‪.Byte Usage‬‬

‫• ﺻـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻔﺤﺔ ‪.Bit Usage‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺟﺪول اﻟﻤﺮﺟ ـﻊ‪.‬‬

‫• اﻷﺧـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫• ﺗﻤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪77‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫ﺟﺪول اﻟﻤﺮﺟﻊ ‪: Cross Reference‬‬

‫ﺗﺴﺘﺨﺪم ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ" اﻟـ ‪ Cross Reference‬ﻟﻜﻰ‬


‫ﺗﺴﺘﺨﺪم ﻛﻤﺮﺟﻊ ﻟﻜﻞ اﻟﻌﻨﺎوﻳﻦ اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ ﲜﻤﻴﻊ أﻧﻮﻋﻬﺎ‪.‬‬
‫ﺣﻴﺚ ﺗﻨﻘﺴﻢ ﻫﺬﻩ اﻟﺼﻔﺤﺔ إﱃ ﺛﻼث ﺻﻔﺤﺎت ﻓﺮﻋﻴﺔ‪:‬‬

‫اﻟﺼﻔﺤﺔ اﻟﻔﺮﻋﻴﺔ اﻷوﻟﻰ ﺗﺴﺘﺨﺪم ﻟﻌﺮض ﲨﻴﻊ اﻟﻌﻨﺎوﻳﻦ ﻣﺜﻞ‪:‬‬


‫اﳌﺪاﺧﻞ‪ ,‬اﳌﺨﺎرج‪ ,‬اﻟﺮﻳﻠﻴﻬﺎت‪ ,‬اﳌﺘﻐﲑات‪ ,‬اﻟﻌﺪادات‪ ,‬اﳌﺆﻗﺘﺎت‪,‬‬
‫اﱁ‪.....‬‬

‫اﻟﺼﻔﺤﺔ اﻟﻔﺮﻋﻴﺔ اﻟﺜﺎﻧﻴﺔ ﺗﺴﺘﺨﺪم ﻟﻌﺮض ﺑﻌﺾ اﻟﻌﻨﺎوﻳﻦ ﻣﺜﻞ‪:‬‬


‫اﳌﺘﻐﲑات‪ ,‬اﻟﻌﺪادات و اﳌﺆﻗﺘﺎت‪.‬‬

‫اﻟﺼﻔﺤﺔ اﻟﻔﺮﻋﻴﺔ اﻟﺜﺎﻟﺜﺔ ﺗﺴﺘﺨﺪم ﻟﻌﺮض ﻋﻨﺎوﻳﻦ ﲝﺠﻢ ‪ bit‬ﻣﺜﻞ‪:‬‬


‫اﳌﺪاﺧﻞ‪ ,‬اﳌﺨﺎرج و اﻟﺮﻳﻠﻴﻬﺎت‪.‬‬

‫ﻃﺮق اﺳﺘﺨﺪام ﺻﻔﺤﺔ "ﺟﺪول اﻟﻤﺮﺟﻊ"‪:‬‬


‫‪ -‬ﻳﺘﻢ ﻋﻤﻞ اﻟﱪﻧﺎﻣﺞ أوﻻً ﰒ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ﰒ ﻓﺘﺢ ﺻﻔﺤﺔ "ﺟﺪول‬
‫اﳌﺮﺟﻊ"‪.‬‬
‫‪ -‬ﻳﺘﻢ ﻋﻤﻞ اﻟﱪﻧﺎﻣﺞ أوﻻً ﰒ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ compile‬ﰒ ﻓﺘﺢ ﺻﻔﺤﺔ‬
‫"ﺟﺪول اﳌﺮﺟﻊ"‪.‬‬

‫‪78‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﰱ ﺣﺎﻟﻪ رﺳﻢ اﻟﱪﻧﺎﻣﺞ ﰒ ﻓﺘﺢ ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ" ﻣﺒﺎﺷﺮ دون ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ أو اﻟﻀﻐﻂ ﻋﻠﻰ‬
‫‪ compile‬ﺗﻈﻬﺮ ﻫﺬﻩ اﻟﺮﺳﺎﻟﺔ‪:‬‬

‫أى أﻧﻪ ﳚﺐ اﻟﻀﻐﻂ ﻋﻠﻰ ‪ compile‬ﻹﻇﻬﺎر ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ"‪.‬‬

‫ﺷﻜﻞ ﺻﻔﺤﺔ "ﺟﺪول اﻟﻤﺮﺟﻊ"‪:‬‬

‫اﻟﺼﻔﺤﺔ اﻟﻔﺮﻋﻴﺔ اﻷوﻟﻰ ‪ Cross Reference‬ﺗﺤﺘﻮى ﻋﻠﻰ‪:‬‬


‫‪Element – Block – Location – Contexet‬‬

‫‪ :Element-١‬ﺣﻴﺚ ﺗﻈﻬﺮ ﻛﻞ اﻟﻌﻨﺎوﻳﻦ اﻟﱴ اﺳﺘﺨﺪﻣﺖ ﰱ اﻟﱪﻧﺎﻣﺞ و أذا ﻗﺪ اﺳﺘﺨﺪم اﻟﻌﻨﻮان أﻛﺜﺮ ﻣﻦ‬
‫ﻣﺮة ﻓﺄﻧﻪ ﻳﻈﻬﺮ ﺑﻨﻔﺲ ﻋﺪد اﳌﺮات اﻟﱴ ﺗﻜﺮر ‪‬ﺎ ﰱ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪ :Block-٢‬ﺣﻴﺚ ﻳﻈﻬﺮ ﻟﻚ ﰱ أى ﺻﻔﺤﺔ ﺑﺮﳎﺔ )‪ MAIN‬أو ‪ SBR‬أو ‪ (INT‬ﻳﻮﺟﺪ ﻫﺬا اﻟﻌﻨﻮان‪.‬‬

‫‪79‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫‪ :Location-٣‬ﺣﻴﺚ ﻳﺸﲑ ﰱ أى ﻓﺮع ﻣﻦ ﻓﺮوع )‪ network 1‬أو ‪ network 2‬أو ‪ (.....‬اﻟﱪﻧﺎﻣﺞ‬


‫ﻗﺪ اﺳﺘﺨﺪم ﻫﺬا اﻟﻌﻨﻮان‪.‬‬

‫‪ :Context-٤‬ﺣﻴﺚ ﻳﻀﻴﻒ ﺑﻌﺾ اﻟﺘﻮﺿﻴﺤﺎت اﳋﺎﺻﺔ ﺑﺎﻟﻌﻨﻮان‪ ,‬ﻓﻤﺜﻼً أذا ﻛﺎن اﻟﻌﻨﻮان ﻣﻔﺘﺎح ﻓﺄﻧﻪ ﻳﻮﺿﺢ‬
‫أذا ﻛﺎن ﻣﻔﺘﻮح أو ﻣﻐﻠﻖ أو ﻣﻔﺘﺎح ﻣﻘﺎرﻧﺔ‪ ,‬أو أذا ﻛﺎن اﻟﻌﻨﻮان ﻫﻮ ﳌﺆﻗﺖ زﻣﲎ ﻓﺄﻧﻪ ﻳﻮﺿﺢ أذا ﻛﺎن ﻧﻮﻋﻪ‬
‫‪ TON‬أو ‪ TOF‬أو ‪ ,TONR‬أو أذا ﻛﺎن اﻟﻌﻨﻮان ﻫﻮ ﻟﻌﺪاد ﻓﺄﻧﻪ ﻳﻮﺿﺢ أذا ﻛﺎن ﻧﻮﻋﻪ ‪ CTU‬أو‬
‫‪ CTD‬أو ‪ CTUD‬وﻫﻜﺬا‪....‬‬

‫اﻟﺼﻔﺤﺔ اﻟﻔﺮﻋﻴﺔ اﻟﺜﺎﻧﻴﺔ ‪:Byte Usage‬‬


‫ﺗﺴﺘﺨﺪم ﻹﻇﻬﺎر أﺳﻢ اﻟﻌﺪادات و اﳌﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ و ﻳﺸﲑ أﻳﻀﺎً إﱃ ﳎﻤﻮﻋﺔ اﻟـ ‪ byte‬اﳌﺴﺘﺨﺪﻣﺔ ﺳﻮاء‬
‫ﻟﻠﻤﺘﻐﲑات أو ﻟﻠﺮﻳﻠﻴﻬﺎت‬

‫اﻟﺼﻔﺤﺔ اﻟﻔﺮﻋﻴﺔ اﻟﺜﺎﻟﺜﺔ ‪:Bit Usage‬‬


‫ﺣﻴﺚ ﻳﺴﺘﺨﺪم ﻹﻇﻬﺎر أﺳﻢ اﳌﺪاﺧﻞ‪ ,‬اﳌﺨﺎرج أو اﻟﺮﻳﻠﻴﻬﺎت وﻟﻜﻦ ﻛﻞ ﻋﻨﻮان ﻋﻠﻰ ﺣﺪا‬

‫‪80‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫ﺣﻴﺚ ﻳﺴﺘﺨﺪم ﻹﻇﻬﺎر أﺳﻢ اﻟﻌﻨﺎوﻳﻦ اﻟﱴ ﻫﻲ ﻣﺜﻞ‪ :‬اﻟﺪﺧﻞ‪ ,‬اﳋﺮج‪ ,‬اﻟﺮﻳﻠﻴﻪ أو اﳌﺘﻐﲑ‪ .‬أى أﻧﻪ ﻳﺸﲑ إﱃ ﻋﻨﺎوﻳﻦ‬
‫ﲝﺠﻢ ‪.bit‬‬

‫اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺤﺔ اﻟﺮﻣﻮز‪.‬‬

‫‪ :Compile‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﺼﺒﺢ ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ" ﻣﺘﺎﺣﺔ‪.‬‬

‫‪ Compile all‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح أﻳﻀﺎً ﺗﺼﺒﺢ ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ" ﻣﺘﺎﺣﺔ‪.‬‬

‫‪ :Download‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﻳﻘﻮم ﺑﺘﺤﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ﻛﻤﺎ ﺳﺒﻖ و ﺷﺮﺣﻨﺎ و ﺗﺼﺒﺢ ﺻﻔﺤﺔ‬
‫"ﺟﺪول اﳌﺮﺟﻊ" ﻣﺘﺎﺣﺔ‪.‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ﺻﻔﺤﺔ "ﺟﺪول اﻟﻤﺮﺟﻊ"‪:‬‬


‫ﳏﺮك ﻳﻌﻤﻞ ﳝﻴﻨﺎً ﻟﻮﻗﺖ ﰒ ﻳﻘﻒ ﻟﻮﻗﺖ ﰒ ﻳﻌﻤﻞ ﺗﻠﻘﺎﺋﻴﺎً ﻟﻠﻴﺴﺎر ﻟﻮﻗﺖ أﺧﺮ ﰒ ﻳﻘﻒ ﻟﻮﻗﺖ و ﻫﻜﺬا‪.‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫ﻋﺪد اﻟﻤﺘﻐﻴﺮات ﻧﻮع اﻟﻤﺘﻐﻴﺮات أﺳﻢ اﻟﻤﺘﻐﻴﺮات‬
‫‪T96‬‬ ‫‪>=I‬‬ ‫‪١‬‬
‫‪T96‬‬ ‫‪<=I‬‬ ‫‪٢‬‬
‫‪T96‬‬ ‫‪<=I‬‬ ‫‪٣‬‬

‫‪81‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫‪T96‬‬ ‫‪<>I‬‬ ‫‪٤‬‬


‫أﺳﻢ اﻟﺮﻳﻠﻬﺎت‬ ‫ﻧﻮع اﻟﺮﻳﻠﻬﺎت‬ ‫ﻋﺪد اﻟﺮﻳﻠﻬﺎت‬
‫‪M0.0‬‬ ‫‪Bit‬‬ ‫‪١‬‬
‫ﻋﺪد اﻟﻤﺆﻗﺘﺎت ﻧﻮع اﻟﻤﺆﻗﺘﺎت أﺳﻢ اﻟﻤﺆﻗﺘﺎت‬
‫‪T96‬‬ ‫‪TON‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.2/K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪82‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫اﻟﺸﺮح‪:‬‬

‫‪:Network1‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ I0.1‬ﻳﻌﻤﻞ اﻟﺮﻳﻠﻴﻪ ‪ M0.0‬ﺑﺸﺮط أن ﻳﻜﻮن ‪ I0.0‬ﻣﻐﻠﻖ‪.‬‬
‫‪:Network2‬‬
‫ﻳﻌﻤﻞ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ‪ T96‬ﳌﺪة ﲦﺎن ﺛﻮاﱏ ﰒ ﻳﻘﻒ ﻟﻴﺒﺪأ ﻣﻦ ﺟﺪﻳﺪ‪.‬‬
‫‪:Network3‬‬
‫ﻳﻌﻤﻞ اﶈﺮك ﳝﻴﻨﺎً ﳌﺪة ﺛﺎﻧﻴﺘﺎن )ﻣﻦ ﺻﻔﺮ إﱃ أﺛﻨﲔ( ﰒ ﻳﻘﻒ ﳌﺪة ﺛﺎﻧﻴﺘﺎن أﺧﺮﺑﺘﺎن )ﻣﻦ أﺛﻨﲔ إﱃ أرﺑﻌﺔ(‪.‬‬
‫‪:Network4‬‬
‫ﻳﻌﻤﻞ اﶈﺮك ﻳﺴﺎراً ﳌﺪة ﺛﺎﻧﻴﺘﺎن )ﻣﻦ أرﺑﻌﺔ إﱃ ﺳﺘﺔ( ﰒ ﻳﻘﻒ ﳌﺪة ﺛﺎﻧﻴﺘﺎن أﺧﺮﺑﺘﺎن )ﻣﻦ ﺳﺘﺔ إﱃ ﲦﺎﻧﻴﺔ(‪.‬‬

‫ﺻﻔﺤﺔ ‪ Cross Reference‬اﻟﺨﺎﺻﺔ ﺑﻬﺬا اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪83‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫ﺻﻔﺤﺔ ‪ Byte Usage‬اﻟﺨﺎﺻﺔ ﺑﻬﺬا اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫⇐ ﲢﺘﻮى ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻋﻠﻰ ﻣﺴﻤﻴﺎت اﳌﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﻧﺎﻣﺞ‪ ,‬ﲝﻴﺚ ﻳﻜﺘﺐ اﻻﺳﻢ‬
‫ﺑﻄﺮﻳﻘﺔ ﺧﺎﺻﺔ ﻓﺘﻜﺘﺐ ﻣﺴﻤﻴﺎت اﳌﺆﻗﺘﺎت ﺑﺪاﻳﺎً ﻣﻦ ﺻﻔﺮ إﱃ أن ﻳﺼﻞ إﱃ أﺳﻢ اﳌﺆﻗﺖ اﳌﺴﺘﺨﺪم‬
‫ﻓﻌﻼً و ﺗﺸﲑ أﻳﻀﺎً إﱃ أﻧﻪ أﺳﺘﺨﺪم اﻟﺮﻳﻠﻴﻪ اﻷول‪.‬‬

‫⇐ ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ذاﻛﺮة "ﻣﺘﻐﲑات" ﲝﺠﻢ ‪ word‬ﻣﺜﻼً ﻓﺄﻧﻪ ﻳﺘﻢ اﻹﺷﺎرة إﱃ اﻟـ ‪ bytes‬اﳌﻜﻮﻧﺔ ﳍﺬا‬
‫اﻟـ ‪ word‬ﻓﻤﺜﻼً أذا ﻛﺎن اﳌﺘﻐﲑ اﳌﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ ﻫﻮ ‪ VW4‬ﻓﺄﻧﺔ ﻳﺸﲑ إﱃ ﻫﺬﻩ اﻟﺬاﻛﺮة‬
‫داﺧﻞ ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ" ﺑﻮاﺳﻄﺔ ﻛﺘﺎﺑﺔ ﺣﺮف اﻟـ ‪ W‬أﻣﺎم اﻟـ ‪ byte4‬واﻟـ ‪ byte5‬ﻟﻴﺸﲑ إﱃ‬
‫أﻧﺔ ﰎ اﺳﺘﺨﺪام اﻟـ ‪ byte4‬واﻟـ ‪ byte5‬وﻟﻜﻦ ﻋﻦ ﻃﺮﻳﻖ اﻟـ ‪.word4‬‬

‫‪84‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺟﺪول اﳌﺮﺟﻊ‬

‫⇐ ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ذاﻛﺮة "ﻣﺘﻐﲑات" ﲝﺠﻢ ‪ Dword‬ﻣﺜﻼً ﻓﺄﻧﻪ ﻳﺘﻢ اﻹﺷﺎرة إﱃ اﻟـ ‪ bytes‬اﳌﻜﻮﻧﺔ‬
‫ﳍﺬا اﻟـ ‪ Dword‬ﻓﻤﺜﻼً أذا ﻛﺎن اﳌﺘﻐﲑ اﳌﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ ﻫﻮ ‪ VD0‬ﻓﺄﻧﺔ ﻳﺸﲑ إﱃ ﻫﺬﻩ‬
‫اﻟﺬاﻛﺮة داﺧﻞ ﺻﻔﺤﺔ "ﺟﺪول اﳌﺮﺟﻊ" ﺑﻮاﺳﻄﺔ ﻛﺘﺎﺑﺔ ﺣﺮف اﻟـ ‪ D‬أﻣﺎم اﻟـ ‪ byte0‬واﻟـ ‪ byte1‬واﻟـ‬
‫‪ byte2‬واﻟـ ‪ byte3‬ﻟﻴﺸﲑ إﱃ أﻧﺔ ﰎ اﺳﺘﺨﺪام ﻛﻞ ﻫﺬﻩ اﻟـ ‪ bytes‬وﻟﻜﻦ ﻋﻦ ﻃﺮﻳﻖ اﻟـ‬
‫‪.Dword0‬‬

‫ﺻﻔﺤﺔ ‪ Bit Usage‬اﻟﺨﺎﺻﺔ ﺑﻬﺬا اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﺗﺸﲑ إﱃ ﻛﻞ اﻟﻌﻨﺎوﻳﻦ اﻟﱴ اﺳﺘﺨﺪﻣﺖ ﰱ اﻟﱪﻧﺎﻣﺞ ﺑﺸﺮط أن ﺗﻜﻮن ﲝﺠﻢ ‪ ,bit‬ﻣﺜﻞ‪:‬‬
‫‪ Q0.2 ,Q0.1 ,I0.1 ,I0.0‬و ‪M0.0‬‬

‫‪85‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫اﻟﺒﺎب اﻟﺴﺎدس‬

‫اﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬
‫• ﺷﺮح اﻟﺒﺮاﻣـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺞ اﻟﻔﺮﻋﻴﺔ‪.‬‬

‫• ﻣﺤﺘﻮﻳﺎت اﻟﺒﺮاﻣ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺞ اﻟﻔﺮﻋﻴﺔ‪.‬‬

‫• اﻟﺠﺪول اﻟﻤﺴﺘﺨﺪم ﻓﻰ اﻟﺒﺮاﻣـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺞ اﻟﻔﺮﻋﻴﺔ‪.‬‬

‫• اﻷﺧﻄﺎء اﻟﻤﻤﻜﻦ ﺣﺪوﺛﻬﺎ ﻓﻰ ﺟﺪول اﻟﺒﺮاﻣـﺞ اﻟﻔﺮﻋﻴﺔ‪.‬‬

‫• اﻟﺘﻌﻠﻴﻘﺎت اﻟﺨﺎﺻﺔ ﺑﺼﻔﺤﺔ اﻟﺒﺮاﻣ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺞ اﻟﻔﺮﻋﻴﺔ‪.‬‬

‫• ﺟﺪول اﻟﺮﻣﻮز اﻟﺨﺎص ﺑـﺼﻔﺤﺎت اﻟﺒﺮﻣﺠ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ‪.‬‬

‫‪87‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫ﺻﻔﺤﺔ اﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﻴﺔ ‪: Subroutine‬‬

‫ﺗﺴﺘﺨﺪم ﻃﺮﻳﻘﺔ "اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ" اﻟـ ‪ Subroutine‬ﰱ‪:‬‬


‫‪ -۱‬اﻟﱪاﻣﺞ اﻟﻜﺒﲑة اﻟﱴ ﲢﺘﻮى ﻋﻠﻰ أﺟﺰاء ﻣﺘﻜﺮرة‪.‬‬
‫‪ -٢‬ﻟﺘﻘﺴﻴﻢ اﻟﱪﻧﺎﻣﺞ اﻟﻜﺒﲑ إﱃ أﺟﺰاء ﺻﻐﲑة ﻟﺴﻬﻮﻟﺔ ﺣﻞ اﻷﻋﻄﺎل‪.‬‬

‫اﻟﺤﺎﻟﺔ اﻷوﻟﻰ‪:‬‬
‫‪ -‬ﰱ ﺣﺎﻟﻪ وﺟﻮد ﻧﻈﺎم اﻹﻧﺬارات اﳋﺎص ﺑﻜﻞ ﻣﻜﻴﻨﺔ ﻓﺄن اﻹﻧﺬارات ﺗﻌﻤﻞ ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ﺣﱴ ﻣﻊ‬
‫اﺧﺘﻼف اﳌﺎﻛﻴﻨﺎت ‪.‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ وﺟﻮد ﳌﺒﺎت أﺷﺎرة ﺗﻀﻰء ﻣﻊ ﻛﻞ ﳏﺮك ﻓﺄن ﳌﺒﺎت ﺗﻌﻤﻞ ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ﺣﱴ ﻣﻊ اﺧﺘﻼف‬
‫اﶈﺮﻛﺎت‪.‬‬

‫‪88‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫‪ -‬ﰱ ﺣﺎﻟﻪ وﺟﻮد ﻓﻼﺷﺮ ﻳﻀﺎء ﺣﺴﺐ ﺷﺮوط ﺧﺎﺻﺔ ﻓﺄن اﻟﻔﻼﺷﺮ ﻳﻌﻤﻞ ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ﺣﱴ ﻣﻊ‬
‫اﺧﺘﻼف اﻟﺸﺮوط ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪:‬‬
‫أى أﻧﺔ ﻣﺜﻼً ﺑﺪﻻً ﻣﻦ ﺗﻜﺮار أى ﺟﺰء ﻋﺸﺮة ﻣﺮات ﻓﺄﻧﺔ ﻳﺮﺳﻢ ﻣﺮة واﺣﺪة ﻓﻘﻂ وﻟﻜﻦ ﻳﺘﻢ أﻋﻄﺎء ﻫﺬا‬
‫اﳉﺰء ﻋﺸﺮة ﻋﻨﺎوﻳﻦ ﳐﺘﻠﻔﺔ ﻛﻤﺎ ﻟﻮ ﻛﺎن ﻣﺮﺳﻮم ﻋﺸﺮة ﻣﺮات ﻓﻌﻼً‪.‬‬

‫اﻟﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﺔ‪:‬‬
‫‪ -‬ﰱ ﺣﺎﻟﻪ وﺟﻮد ﺑﺮﻧﺎﻣﺞ ‪‬ﻤﻮﻋﺔ ﻣﺎﻛﻴﻨﺎت ﳐﺘﻠﻔﺔ ﻓﺄﻧﺔ ﻳﻔﻀﻞ اﺳﺘﺨﺪام ﺻﻔﺤﺎت ﳐﺘﻠﻔﺔ ﻟﻜﻞ ﻣﻜﻴﻨﺔ‬
‫ﺣﻴﺚ أﻧﻪ ﺑﺘﻘﺴﻴﻢ اﻟﱪﻧﺎﻣﺞ ﻳﺴﻬﻞ ﻋﻠﻰ اﳌﱪﻣﺞ اﻟﺘﻮﺻﻞ ﻟﺴﺒﺐ اﻷﻋﻄﺎل ﺑﺴﻬﻮﻟﺔ وﰱ وﻗﺖ ﻗﺼﲑ‪.‬‬

‫ﻃﺮﻳﻘﺔ اﺳﺘﺨﺪام ﺻﻔﺤﺔ "اﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﻴﺔ"‪:‬‬

‫‪ -‬أوﻻً ﻳﺘﻢ رﺳﻢ اﳉﺰء اﻟﺬى ﻛﺎن ﻣﻦ اﳌﻔﺮوض أن ﻳﺘﻜﺮر داﺧﻞ ﺻﻔﺤﺔ " اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ " وﻟﻜﻦ ﻣﺮة‬
‫واﺣﺪة ﻓﻘﻂ ودون أﻋﻄﺎء أى ﻋﻨﺎوﻳﻦ ﳏﺪدة‪.‬‬

‫‪89‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫‪ -‬ﺛﺎﻧﻴﺎً ﻳﺘﻢ ﲢﺪﻳﺪ ﻛﻞ اﳌﺴﻤﻴﺎت اﻟﱴ ﺳﻮف ﺗﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ داﺧﻞ اﳉﺪول اﳋﺎص ﺑﺎﻟﱪاﻣﺞ‬
‫اﻟﻔﺮﻋﻴﺔ ﻣﻊ ﲢﺪﻳﺪ أذا ﻛﺎن ﻫﺬا اﻻﺳﻢ ﻫﻮ ﻟﺪﺧﻞ أو ﳋﺮج أو ‪.......‬‬

‫اﻟﺠﺪول اﻟﺨﺎص ﺑﺎﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﻴﺔ‪.‬‬


‫ﺟﺪول اﻟﺮﻣﻮز ‪ Var Type‬اﳋﺎص ﺑﺼﻔﺤﺔ اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ ﳛﺘﻮى ﻋﻠﻰ‪:‬‬
‫‪ :IN -‬أى أﻧﻪ ﻳﺴﺘﺨﺪم ﰱ اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ ﻛﺪﺧﻞ‪.‬‬
‫‪ :OUT -‬أى أﻧﻪ ﻳﺴﺘﺨﺪم ﰱ اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ ﻛﺨﺮج‪.‬‬
‫‪ :IN_OUT -‬أى أﻧﻪ ﻳﺴﺘﺨﺪم ﰱ اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ ﻛﺪﺧﻞ و ﺧﺮج ﻣﺜﻞ اﻟﺮﻳﻠﻪ‪.‬‬
‫‪ :TEMP -‬أى أﻧﻪ ﻳﺴﺘﺨﺪم ﰱ اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ ﻣﺜﻞ اﳌﺘﻐﲑات‬
‫‪ :BOOL -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ ‪.bit‬‬
‫‪ :BYTE -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ ‪.byte‬‬
‫‪ :WORD -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ )‪.word(unsigned‬‬
‫‪ : :INT -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ )‪.word(signed‬‬
‫‪ :DWORD -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ )‪.Dword(unsigned‬‬
‫‪ :DINT -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ )‪.Dword(signed‬‬
‫‪ :REAL -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ )‪.Dword(real‬‬
‫‪ :STRING -‬ﺗﺴﺘﺨﺪم ﻣﻊ ﻋﻨﺎوﻳﻦ ﲝﺠﻢ ‪.byte‬‬

‫‪90‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫‪ -‬ﺛﺎﻟﺜﺂ ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻷﺳﻢ اﻟﺬى ﰎ ﲢﺪﻳﺪة ﰱ اﻟﱪﻧﺎﻣﺞ ﺑﺪل اﻟﻌﻨﻮان و اﳍﺪف ﻣﻦ ﻫﺬا أﻧﺔ أذا ﻛﺘﺒﻨﺎ ﻋﻨﻮان‬
‫ﻓﻬﺬا ﻳﻌﲎ أﻧﺔ ﰎ اﺧﺘﻴﺎر اﻟﻌﻨﻮان إﱃ اﻷﺑﺪ وﻟﻜﻦ ﰱ ﺣﺎﻟﻪ ﻛﺘﺎﺑﺔ أى رﻣﺰ ﻓﺄﻧﺔ ﳝﻜﻦ ﺑﻜﻞ ﺳﻬﻮﻟﻪ ﰱ ﻣﺎ‬
‫ﺑﻌﺪ أﻋﻄﺎء ﻋﻨﺎوﻳﻦ ﳐﺘﻠﻔﺔ ﻟﻨﻔﺲ اﻟﺮﻣﺰ‪.‬‬

‫‪ -‬راﺑﻌﺎً ﻳﺘﻢ اﻻﺗﺼﺎل ﺑﺼﻔﺤﺔ "اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ" ﻋﻦ ﻃﺮﻳﻖ أﻣﺮ ‪ CALL_SUB‬اﻟﺬى ﻳﻮﺟﺪ ﰱ‬
‫ﺻﻔﺤﺔ "اﻟﱪﻧﺎﻣﺞ اﻟﺮﺋﻴﺴﻴﺔ" ﻣﻊ ﲢﺪﻳﺪ اﻟﻌﻨﻮان اﻟﺬى ﺳﻴﺤﻞ ﳏﻞ اﻟﺮﻣﺰ‪.‬‬

‫‪91‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫اﻷﺧﻄﺎء اﻟﻤﻤﻜﻦ ﺣﺪوﺛﻬﺎ ﻓﻰ ﺟﺪول اﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﻴﺔ‪:‬‬

‫‪ -١‬ﻣﻤﻨﻮع ﻛﺘﺎﺑﺔ أى رﻣﺰ ﻳﻜﻮن ﺑﺎﻟﺼﺪﻓﺔ أﺳﻢ ﻣﻦ أﺳﻤﺎء اﻟﻌﻤﺎﻟﻴﺎت اﻟﻤﺴﺘﺨﺪﻣﺔ‪.‬‬


‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ ﻛﻠﻤﺔ )"‪,"ENI" ,"END" ,"LBL" ,"JMP" ,"R" ,"S" ,"stop‬‬
‫"‪ ("CTUD" ,"CTD" ,"CTU" ,"TONR" ,"TOF" ,"TON‬ﺣﻴﺚ أن ﻛﻞ‬
‫ﻫﺬﻩ اﻟﻜﻠﻤﺎت اﻟﺴﺎﺑﻘﺔ ﲤﺜﻞ ﻋﻤﻠﻴﺎت ﺗﺴﺘﺨﺪم ﰱ ﺟﻬﺎز ال ‪.PLC‬‬

‫‪ -٢‬ﻣﻤﻨﻮع ﻛﺘﺎﺑﺔ أى رﻣﺰ ﻣﻜﻮن ﻣﻦ ﻛﻠﻤﺘﻴﻦ و ﻳﻜﻮن ﺑﻴﻨﻬﻢ ﻣﺴﺎﻓﺔ‪.‬‬


‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ ﻛﻠﻤﺔ )"‪,"motor right", "second button " ,"first button‬‬
‫"‪ ("motor left‬ﺣﻴﺚ أن اﳌﺴﻤﻴﺎت اﳌﻜﺘﻮﺑﺔ ﻫﻰ ﻣﻜﻮﻧﺔ ﻣﻦ ﻛﻠﻤﺘﲔ وﻟﻜﻦ ﳊﻞ ﻫﺬﻩ اﳌﺸﻜﻠﺔ ﻳﺘﻢ‬
‫وﺿﻊ أى رﻣﺰ أو ﻋﻼﻣﺔ ﺑﲔ اﻟﻜﻠﻤﺔ اﻷوﱃ واﻟﻜﻠﻤﺔ اﻷﺧﺮى‪.‬‬

‫‪ -٣‬ﻣﻤﻨﻮع ﺗﻜﺮار ﻧﻔﺲ اﻟﺮﻣﺰ ﻣﻊ ﻋﻨﺎوﻳﻦ ﻣﺨﺘﻠﻔﺔ‪.‬‬


‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ أى رﻣﺰ أﻛﺜﺮ ﻣﻦ ﻣﺮة ﺣﱴ وﻟﻮ ﻛﺎن ﻣﻊ ﻧﻔﺲ اﻟﻌﻨﻮان ﺣﻴﺚ أن ﰱ ﻫﺬﻩ اﳊﺎﻟﺔ‬
‫ﻳﺼﻌﺐ ﻋﻠﻰ ال ‪ PLC‬وﺿﻊ رﻣﺰﻳﻦ ﻣﻊ ﻧﻔﺲ اﻟﻌﻨﻮان ﻓﻴﱰك اﻟﻌﻨﻮان ﺑﺪون رﻣﺰ ‪.‬‬

‫‪ -٤‬اﺧﺘﻼف ﺑﻴﻦ اﻟﺮﻣﻮز اﻟﻤﺤﺪدة ﻓﻰ اﻟﺠﺪول و اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ‪.‬‬


‫‪ -‬أى أﻧﻪ ﻻ ﳝﻜﻦ ﻛﺘﺎﺑﺔ أى أﺳﻢ ﰱ اﳉﺪول ﲝﺮوف ﻛﺒﲑة ﺑﻴﻨﻤﺎ ﻳﻜﺘﺐ ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ ﲝﺮوف‬
‫ﺻﻐﲑة أو ﺣﱴ أن ﻳﻌﺮف اﻟﻌﻨﻮان ﰱ اﳉﺪول ﺑﺄﺳﻢ ‪ IN1‬ﺑﻴﻨﻤﺎ ﻳﺴﺘﺨﺪم ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ ﺑﺄﺳﻢ‬
‫‪ in1‬ﻷن ﺑﺎﻟﻨﺴﺒﺔ ﻟﻮﺣﺪة اﻟﱪﳎﺔ ال ‪ PLC‬ﻳﻮﺟﺪ ﻓﺮق ﻛﺒﲑ ﺑﲔ اﻷﲰﲔ‪.‬‬

‫‪92‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺤﺔ اﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫‪:Program Status -١‬‬


‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﻈﻬﺮ اﳊﺎﻟﺔ اﳋﺎﺻﺔ ﺑﻜﻞ ﻋﻨﻮان‪.‬‬

‫‪:Compile all -٢‬‬


‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﻈﻬﺮ ﻋﺪد اﻷﻋﻄﺎل اﳋﺎﺻﺔ ﺑﺎﻟﱪﻧﺎﻣﺞ‪.‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﳏﺮﻛﲔ ﻳﻌﻤﻞ ﻛﻞ ﳏﺮك ﰱ اﲡﺎﻫﲔ ﲝﻴﺚ أن ﻣﻊ ﻛﻞ أﲡﺎة ﺗﻌﻤﻞ ﳌﺒﺘﺎن ﻛﻔﻼﺷﺮ ﺑﺸﺮط أن اﻟﻠﻤﺒﺎت‬
‫اﳋﺎﺻﺔ ﺑﺎﻷﲡﺎة اﻟﻴﻤﲔ ﳐﺘﻠﻔﺔ ﻋﻦ اﻟﻠﻤﺒﺎت اﳋﺎﺻﺔ ﺑﺎﻻﲡﺎﻩ اﻟﻴﺴﺎر و اﻟﻠﻤﺒﺎت اﳋﺎﺻﺔ ﺑﺎﶈﺮك اﻷول‬
‫ﳐﺘﻠﻔﺔ ﻋﻦ اﶈﺮك اﻟﺜﺎﱏ‪.‬‬
‫المداخل‬

‫أسم الدخل‬ ‫نوع الدخل‬ ‫عدد الدخل‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪I0.2/S3‬‬ ‫‪n.o.‬‬ ‫‪٣‬‬
‫‪I0.3/S4‬‬ ‫‪n.o.‬‬ ‫‪٤‬‬
‫‪I0.4/S5‬‬ ‫‪n.o.‬‬ ‫‪٥‬‬
‫‪I1.1/S6‬‬ ‫‪n.o.‬‬ ‫‪٦‬‬
‫‪I1.2/S7‬‬ ‫‪n.o.‬‬ ‫‪٧‬‬
‫‪I1.3/S8‬‬ ‫‪n.o.‬‬ ‫‪٨‬‬
‫‪I1.4/S9‬‬ ‫‪n.o.‬‬ ‫‪٩‬‬

‫‪93‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫المؤقتات الزمنية‬

‫عدد المؤقتات الزمنية نوع المؤقتات الزمنية أسم المؤقتات الزمنية‬


‫‪T32‬‬ ‫‪TON‬‬ ‫‪١‬‬
‫‪T96‬‬ ‫‪TON‬‬ ‫‪٢‬‬

‫المخارج‬

‫أسم الخرج‬ ‫نوع الخرج‬ ‫عدد الخرج‬


‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.2/K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬
‫‪Q0.3/K3M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٣‬‬
‫‪Q0.4/K4M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٤‬‬
‫‪Q1.1/K5M‬‬ ‫ﳌﺒﺔ‬ ‫‪٥‬‬
‫‪Q2.1/K6M‬‬ ‫ﳌﺒﺔ‬ ‫‪٦‬‬
‫‪Q1.2/K7M‬‬ ‫ﳌﺒﺔ‬ ‫‪٧‬‬
‫‪Q2.2/K8M‬‬ ‫ﳌﺒﺔ‬ ‫‪٨‬‬
‫‪Q1.3/K9M‬‬ ‫ﳌﺒﺔ‬ ‫‪٩‬‬
‫‪Q2.3/K10M‬‬ ‫ﳌﺒﺔ‬ ‫‪١٠‬‬
‫‪Q1.4/K11M‬‬ ‫ﳌﺒﺔ‬ ‫‪١١‬‬
‫‪Q2.4/K12M‬‬ ‫ﳌﺒﺔ‬ ‫‪١٢‬‬

‫‪94‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﻴﺴﻰ‪:‬‬

‫‪95‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫‪96‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ‪:‬‬

‫‪97‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱪاﻣﺞ اﻟﻔﺮﻋﻴﺔ‬

‫‪ -‬ﺷﺮح اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﻴﺴﻰ‪:‬‬

‫‪ :Network1‬اﳉﺰء اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻷول ﻟﻠﻴﻤﲔ‬


‫‪ :Network2‬اﳉﺰء اﳋﺎص ﺑﺎﻹﺗﺼﺎل ﺑﺎﻟﻔﻼﺷﺮ اﳌﻮﺟﻮد ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻷول‬
‫ﻟﻠﻴﻤﲔ‪.‬‬
‫‪ :Network3‬اﳉﺰء اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻷول ﻟﻠﻴﺴﺎر‬
‫‪ :Network4‬اﳉﺰء اﳋﺎص ﺑﺎﻹﺗﺼﺎل ﺑﺎﻟﻔﻼﺷﺮ اﳌﻮﺟﻮد ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻷول‬
‫ﻟﻠﻴﺴﺎر‪.‬‬
‫‪ :Network5‬اﳉﺰء اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻟﺜﺎﱏ ﻟﻠﻴﻤﲔ‬
‫‪ :Network6‬اﳉﺰء اﳋﺎص ﺑﺎﻹﺗﺼﺎل ﺑﺎﻟﻔﻼﺷﺮ اﳌﻮﺟﻮد ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻟﺜﺎﱏ‬
‫ﻟﻠﻴﻤﲔ‪.‬‬
‫‪ :Network7‬اﳉﺰء اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻟﺜﺎﱏ ﻟﻠﻴﺴﺎر‬
‫‪ :Network8‬اﳉﺰء اﳋﺎص ﺑﺎﻹﺗﺼﺎل ﺑﺎﻟﻔﻼﺷﺮ اﳌﻮﺟﻮد ﰱ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ اﳋﺎص ﲝﺮﻛﺔ اﶈﺮك اﻟﺜﺎﱏ‬
‫ﻟﻠﻴﺴﺎر‪.‬‬

‫‪ -‬ﺷﺮح اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ‪:‬‬

‫‪ :Network1‬اﳉﺰء اﳋﺎص ﺑﺎﻟﻠﻤﺒﺔ اﻷوﱃ‪.‬‬


‫‪ :Network2‬اﳉﺰء اﳋﺎص ﺑﺎﳌﺆﻗﺖ اﻟﺰﻣﲎ ‪.T32‬‬
‫‪ :Network3‬اﳉﺰء اﳋﺎص ﺑﺎﻟﻠﻤﺒﺔ اﻟﺜﺎﻧﻴﺔ‪.‬‬
‫‪ :Network4‬اﳉﺰء اﳋﺎص ﺑﺎﳌﺆﻗﺖ اﻟﺰﻣﲎ ‪.T96‬‬

‫ﻣﻼﺣﻈﺔ‪.‬‬
‫ﺑﺎﺳﺘﺨﺪام اﻟـ ‪ subroutine‬أﺻﺒﺢ ﻋﺪد اﻟﻔﺮوع ‪۱٢‬ﺑﺪﻻً ﻣﻦ ‪٢٠‬‬

‫‪98‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫اﻟﺒﺎب اﻟﺴﺎﺑﻊ‬

‫اﻟﺒﻮاﺑﺎت‬
‫• ﺷﺮح اﻟﺒﻮاﺑ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت‪.‬‬

‫• ﺑﻮاﺑـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت "و"‪.‬‬

‫• ﺑﻮاﺑ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت "أو"‪.‬‬

‫• ﺑﻮاﺑـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت "ﻧﻔﻰ"‪.‬‬

‫• أﺣﺠﺎم اﻟﺒﻮاﺑـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت‪.‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻊ اﻟﺒﻮاﺑـﺎت‪.‬‬

‫• اﻷﺧ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫• ﺗﻮﺿﻴﺤﺎت ﺑﺎﻟﺮﺳ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻢ‪.‬‬

‫• ﺗﻤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎرﻳﻦ ﻋﻤﻠﻴﺔ‪.‬‬

‫‪99‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫اﻟﺒﻮاﺑﺎت اﻟﻤﻨﻄﻘﻴﺔ‪:‬‬

‫ﺗﺴﺘﺨﺪم اﻟﺒﻮاﺑﺎت ﰱ اﻟﱪاﻣﺞ اﻟﻌﺎدﻳﺔ أو ﺣﱴ اﻟﱴ ﲢﺘﻮى ﻋﻠﻰ ﻋﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ‪.‬‬

‫أﻧﻮاع اﻟﺒﻮاﺑﺎت‪:‬‬
‫‪,WAND_W ,WAND_B ,INV_DW ,INV_W ,INV_B‬‬
‫‪,WXOR_B ,WOR_DW ,WOR_W ,WOR_B ,WAND_DW‬‬
‫‪.WXOR_DW ,WXOR_W‬‬

‫ﺑﻮاﺑﺎت اﻟﻨﻔﻰ "‪:"INVERT‬‬


‫ﺗﻘﻮم ﺑﺘﺤﻮﻳﻞ اﻟﺼﻔﺮ إﱃ واﺣﺪ و اﻟﻮاﺣﺪ إﱃ ﺻﻔﺮ و ﺗﺘﻮاﺟﺪ ﻫﺬﻩ اﻟﻌﻤﻠﻴﺔ ﲝﺠﻢ ‪Word ,Byte‬‬
‫و ‪.Dword‬‬

‫‪100‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﺑﻮاﺑﺎت "‪:"AND‬‬
‫ﺗﻘﻮم ﺑﺘﻄﺒﻴﻖ اﻟﺒﻮاﺑﺔ اﳌﻨﻄﻘﻴﺔ "و" ﺑﲔ ﳎﻤﻮﻋﺘﲔ و ﺗﺘﻮاﺟﺪ ﻫﺬﻩ اﻟﻌﻤﻠﻴﺔ ﲝﺠﻢ ‪ Word ,Byte‬و‬
‫‪.Dword‬‬

‫ﺑﻮاﺑﺎت "‪:"OR‬‬
‫ﺗﻘﻮم ﺑﺘﻄﺒﻴﻖ اﻟﺒﻮاﺑﺔ اﳌﻨﻄﻘﻴﺔ "أو" ﺑﲔ ﳎﻤﻮﻋﺘﲔ و ﺗﺘﻮاﺟﺪ ﻫﺬﻩ اﻟﻌﻤﻠﻴﺔ ﲝﺠﻢ ‪ Word ,Byte‬و‬
‫‪Dword‬‬

‫‪101‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﺑﻮاﺑﺎت "‪:"XOR‬‬
‫ﺗﻘﻮم ﺑﺘﻄﺒﻴﻖ اﻟﺒﻮاﺑﺔ اﳌﻨﻄﻘﻴﺔ "‪ "XOR‬ﺑﲔ ﳎﻤﻮﻋﺘﲔ و ﺗﺘﻮاﺟﺪ ﻫﺬﻩ اﻟﻌﻤﻠﻴﺔ ﲝﺠﻢ ‪,Byte‬‬
‫‪ Word‬و ‪.Dword‬‬

‫ﺷﺮح اﻟﺒﻮاﺑﺎت‪:‬‬

‫بوابات ‪:INV‬‬

‫‪Input Output‬‬

‫‪A‬‬ ‫)‪INV(A‬‬

‫‪1‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪1‬‬

‫اﻟﺒﻮاﺑﺔ "ﻧﻔﻰ" ﺗﻘﻮم ﺑﺘﺤﻮﻳﻞ اﻟﻮاﺣﺪ إﱃ ﺻﻔﺮ و اﻟﺼﻔﺮ إﱃ واﺣﺪ‪.‬‬

‫‪102‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫بوابات ‪:AND‬‬

‫‪Input Output‬‬

‫‪A‬‬ ‫‪B‬‬ ‫‪AxB‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫اﻟﺒﻮاﺑﺔ "و"‪ :‬ﺗﺼﺒﺢ اﻟﻘﻴﻤﺔ واﺣﺪ ﻋﻨﺪﻣﺎ ﺗﺘﺤﻘﻖ ﻛﻞ اﻟﻘﻴﻢ‪.‬‬

‫بوابات ‪:OR‬‬

‫‪Input Output‬‬

‫‪A B‬‬ ‫‪A+B‬‬

‫‪0 0‬‬ ‫‪0‬‬

‫‪0 1‬‬ ‫‪1‬‬

‫‪1 0‬‬ ‫‪1‬‬

‫‪1 1‬‬ ‫‪1‬‬

‫اﻟﺒﻮاﺑﺔ "أو"‪ :‬ﺗﺼﺒﺢ اﻟﻘﻴﻤﺔ واﺣﺪ ﻋﻨﺪﻣﺎ ﺗﺘﺤﻘﻖ ﻗﻴﻤﺔ واﺣﺪة أو ﻛﻞ اﻟﻘﻴﻢ‪.‬‬
‫‪103‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫بوابات ‪:XOR‬‬

‫‪Input Output‬‬

‫‪A B A xor B‬‬

‫‪0 0‬‬ ‫‪0‬‬

‫‪0 1‬‬ ‫‪1‬‬

‫‪1 0‬‬ ‫‪1‬‬

‫‪1 1‬‬ ‫‪0‬‬

‫اﻟﺒﻮاﺑﺔ "أﻛﺴﻮر"‪ :‬ﺗﺼﺒﺢ اﻟﻘﻴﻤﺔ واﺣﺪ ﻋﻨﺪﻣﺎ ﻻ ﺗﺘﺸﺎﺑﻪ ﻛﻞ اﻟﻘﻴﻢ‪.‬‬

‫بوابات ‪:NAND‬‬

‫‪Input‬‬ ‫‪Output‬‬

‫‪A‬‬ ‫‪B‬‬ ‫‪A nand B‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫اﻟﺒﻮاﺑﺔ "ﻧﺎﻧﺪ"‪ :‬ﺗﺼﺒﺢ اﻟﻘﻴﻤﺔ واﺣﺪ ﰱ ﲨﻴﻊ اﻷﺣﻮال ﻣﺎﻋﺪا ﰱ ﺣﺎﻟﺔ اﻟﻮﺣﺎﻳﺪ‪.‬‬
‫‪104‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫بوابات ‪:NOR‬‬

‫‪Input Output‬‬

‫‪A B A nor B‬‬

‫‪0 0‬‬ ‫‪1‬‬

‫‪0 1‬‬ ‫‪0‬‬

‫‪1 0‬‬ ‫‪0‬‬

‫‪1 1‬‬ ‫‪0‬‬

‫اﻟﺒﻮاﺑﺔ "ﻧﻮر"‪ :‬ﺗﺼﺒﺢ اﻟﻘﻴﻤﺔ ﺻﻔﺮ ﰱ ﲨﻴﻊ اﻷﺣﻮال ﻣﺎﻋﺪا ﰱ ﺣﺎﻟﺔ اﻷﺻﻔﺎر‪.‬‬

‫بوابات ‪:XNOR‬‬

‫‪Input‬‬ ‫‪Output‬‬

‫‪A B A xnor B‬‬

‫‪0 0‬‬ ‫‪1‬‬

‫‪0 1‬‬ ‫‪0‬‬

‫‪1 0‬‬ ‫‪0‬‬

‫‪1 1‬‬ ‫‪1‬‬

‫اﻟﺒﻮاﺑﺔ "أﻛﺴﻨﻮر"‪ :‬ﺗﺼﺒﺢ اﻟﻘﻴﻤﺔ واﺣﺪ ﰱ ﺣﺎﻟﺔ ﺗﺸﺎﺑﻪ اﻟﻘﻴﻢ ﻓﻘﻂ أى ﰱ ﺣﺎﻟﺔ اﻟﻮﺣﺎﻳﺪ واﻷﺻﻔﺎر‪.‬‬
‫‪105‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﻻ ﺗﻮﺟﺪ ﺑﻮاﺑﺎت ﻣﺒﺎﺷﺮة ﺑﺄﺳﻢ ‪ ,NAND‬أو ‪ ,NOR‬أو ‪ XOR‬ﻷﻧﻪ ﳝﻜﻦ اﻟﺘﻮﺻﻞ إﻟﻴﻬﺎ ﺑﺎﺳﺘﺨﺪام‬
‫اﻟﺒﻮاﺑﺎت ‪ AND‬أو ‪ OR‬أو ‪ XOR‬ﻣﻊ اﻟﺒﻮاﺑﺔ ‪.INV‬‬

‫اﻟﺸﺮح‪:‬‬

‫الشكل‬ ‫الشرح‬ ‫األسم‬ ‫م‬

‫ﻳﻘﻮم ‪ INV_B‬ﺑﻌﻜﺲ‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bit‬ﻣﻦ اﻟـ‬
‫‪INV_B‬‬ ‫‪١‬‬
‫‪ Byte IN‬إﱃ اﻟـ ‪Byte‬‬
‫‪.OUT‬‬

‫ﻳﻘﻮم ‪ INV_W‬ﺑﻌﻜﺲ‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bit‬ﻣﻦ اﻟـ‬
‫‪INV_W‬‬ ‫‪٢‬‬
‫‪ Word IN‬إﱃ اﻟـ‬
‫‪.Word OUT‬‬

‫ﻳﻘﻮم ‪ INV_DW‬ﺑﻌﻜﺲ‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bit‬ﻣﻦ اﻟـ‬
‫‪INV_DW‬‬ ‫‪٣‬‬
‫‪ Dword IN‬إﱃ اﻟـ‬
‫‪.Dword OUT‬‬

‫ﻳﻘﻮم ‪ AND_B‬ﺑﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﺔ "و" ﺑﲔ ﳏﺘﻮﻳﺎت اﻟـ‬ ‫‪WAND_B‬‬ ‫‪٤‬‬
‫‪ Bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪Byte‬‬

‫‪106‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫‪ IN1‬و ﳏﺘﻮﻳﺎت اﻟـ ‪Bits‬‬


‫اﳋﺎﺻﺔ ﺑﺎﻟـ ‪.Byte IN2‬‬

‫ﻳﻘﻮم ‪ AND_W‬ﺑﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﺔ "و" ﺑﲔ ﳏﺘﻮﻳﺎت اﻟـ‬
‫‪ Bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪Word‬‬ ‫‪WAND_W‬‬ ‫‪٥‬‬
‫‪ IN1‬و ﳏﺘﻮﻳﺎت اﻟـ ‪Bits‬‬
‫اﳋﺎﺻﺔ ﺑﺎﻟـ ‪.Word IN2‬‬

‫ﻳﻘﻮم ‪ AND_DW‬ﺑﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﺔ "و" ﺑﲔ ﳏﺘﻮﻳﺎت اﻟـ‬
‫ﺑﺎﻟـ‬ ‫اﳋﺎﺻﺔ‬ ‫‪Bits‬‬
‫‪WAND_DW‬‬ ‫‪٦‬‬
‫و‬ ‫‪Dword‬‬ ‫‪IN1‬‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬
‫ﺑﺎﻟـ ‪.Dword IN2‬‬

‫ﻳﻘﻮم ‪ WOR_B‬ﺑﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﺔ "أو" ﺑﲔ ﳏﺘﻮﻳﺎت اﻟـ‬
‫‪ Bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪Byte‬‬ ‫‪WOR_B‬‬ ‫‪٧‬‬
‫‪ IN1‬و ﳏﺘﻮﻳﺎت اﻟـ ‪Bits‬‬
‫اﳋﺎﺻﺔ ﺑﺎﻟـ ‪.Byte IN2‬‬

‫‪107‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﻳﻘﻮم ‪ WOR_W‬ﺑﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﺔ "أو" ﺑﲔ ﳏﺘﻮﻳﺎت اﻟـ‬
‫‪ Bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪Word‬‬ ‫‪WOR_W‬‬ ‫‪٨‬‬
‫‪ IN1‬و ﳏﺘﻮﻳﺎت اﻟـ ‪Bits‬‬
‫اﳋﺎﺻﺔ ﺑﺎﻟـ ‪.Word IN2‬‬

‫ﻳﻘﻮم ‪ WOR_DW‬ﺑﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﺔ "أو" ﺑﲔ ﳏﺘﻮﻳﺎت اﻟـ‬
‫ﺑﺎﻟـ‬ ‫اﳋﺎﺻﺔ‬ ‫‪Bits‬‬
‫‪WOR_DW‬‬ ‫‪٩‬‬
‫و‬ ‫‪Dword‬‬ ‫‪IN1‬‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬
‫ﺑﺎﻟـ ‪.Dword IN2‬‬

‫ﻳﻘﻮم ‪ WXOR_B‬ﺑﺘﻨﻔﻴﺬ‬
‫ﺑﲔ‬ ‫"أﻛﺴﻮر"‬ ‫ﻋﻤﻠﻴﺔ‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬
‫‪WXOR_B‬‬ ‫‪١٠‬‬
‫ﺑﺎﻟـ ‪ Byte IN1‬و ﳏﺘﻮﻳﺎت‬
‫اﻟـ ‪ Bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪Byte‬‬
‫‪.IN2‬‬

‫ﻳﻘﻮم ‪ WXOR_W‬ﺑﺘﻨﻔﻴﺬ‬
‫ﺑﲔ‬ ‫"أﻛﺴﻮر"‬ ‫ﻋﻤﻠﻴﺔ‬
‫‪WXOR_W‬‬ ‫‪١١‬‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬
‫ﺑﺎﻟـ ‪ Word IN1‬و‬

‫‪108‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬


‫ﺑﺎﻟـ ‪.Word IN2‬‬

‫‪WXOR_DW‬‬ ‫ﻳﻘﻮم‬
‫ﺑﺘﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ "أﻛﺴﻮر" ﺑﲔ‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬
‫‪WXOR_DW‬‬ ‫‪١٢‬‬
‫ﺑﺎﻟـ ‪ Dword IN1‬و‬
‫ﳏﺘﻮﻳﺎت اﻟـ ‪ Bits‬اﳋﺎﺻﺔ‬
‫ﺑﺎﻟـ ‪.Dword IN2‬‬

‫ﻣﺜﺎل‪:‬‬
‫ﲤﺮﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪.INV_B‬‬

‫‪VB0‬‬

‫‪1 0 1 0 0 0 1 1‬‬

‫‪VB5‬‬

‫‪0 1 0 1 1 1 0 0‬‬

‫‪109‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﻣﺜﺎل‪:‬‬
‫ﲤﺮﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪.INV_W‬‬

‫‪VW2‬‬

‫‪0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1‬‬

‫‪VW4‬‬

‫‪1 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0‬‬

‫ﻣﺜﺎل‪:‬‬
‫ﲤﺮﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪.WAND_B‬‬

‫‪110‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫‪VB0‬‬ ‫‪VB1‬‬

‫‪1 0 1 0 0 0 1 1‬‬ ‫‪1 1 0 0 1 0 1 1‬‬

‫‪VB2‬‬

‫‪1 0 0 0 0 0 1 1‬‬

‫ﻣﺜﺎل‪:‬‬
‫ﲤﺮﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪.WXOR_B‬‬

‫‪VB5‬‬ ‫‪VB7‬‬

‫‪1 0 1 0 0 0 1 1‬‬ ‫‪1 1 0 0 1 0 1 1‬‬

‫‪VB10‬‬

‫‪1 0 0 1 0 1 1 1‬‬

‫‪111‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺒﻮاﺑﺎت‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻗﻢ ﺑﺘﻨﻔﻴﺬ داﺋﺮة ﲢﻜﻢ ﻣﻨﻄﻘﻴﺔ ﶈﺮك ﻳﻌﻤﻞ ﺑﺸﺮط أن ﺗﻜﻮن ﺣﺎﻟﺔ اﳌﻔﺎﺗﻴﺢ ﻛﺎﻷﺗﻰ‪:‬‬

‫‪I0.7 I0.6 I0.5 I0.4 I0.3 I0.2 I0.1 I0.0‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫‪:Network1‬‬
‫ﻳﺘﻢ ﺗﻄﺒﻴﻖ اﻟﻌﻤﻠﻴﺔ "‪ "XOR‬ﺑﲔ ‪ IB0‬و ‪ 2#1001-1110‬و وﺿﻊ اﻟﻨﺘﻴﺠﺔ ﰱ ‪VB0‬‬

‫‪:Network2‬‬
‫ﺗﻌﻤﻞ ‪ Q0.0‬أذا ﻛﺎﻧﺖ ﻗﻴﻤﺔ ‪ VB0‬ﻫﻰ ‪.2#1111-1111‬‬

‫‪112‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫اﻟﺒﺎب اﻟﺜﺎﻣﻦ‬

‫اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬
‫• ﺷﺮح اﻟﻨﻈـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻢ اﻟﻌﻤﻠﻴﺔ‪.‬‬

‫• ﺻﻔﺤ ـ ـ ـﺔ اﻟـ ‪.Communication Ports‬‬

‫• ﺻﻔﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺔ ‪.Retentive Ranges‬‬

‫• ﺻﻔﺤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺔ ‪.Password‬‬

‫• ﺻﻔﺤﺔ ‪.Output Tables DIGITAL‬‬

‫• ﺻﻔﺤ ـ ـ ـ ـ ـ ــﺔ ‪.Input Filters DIGITAL‬‬

‫• ﺻﻔﺤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺔ اﻟـ ‪.Pulse Chatch Bits‬‬

‫• ﺻﻔﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺔ اﻟـ ‪.Background Time‬‬

‫• ﺻﻔﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ اﻟـ ‪.Configure LED‬‬

‫• ﺻﻔﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ اﻟـ ‪.Increase Memory‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺤﺔ اﻟﻨﻈـ ـﻢ اﻟﻌﻤﻠﻴ ـ ـﺔ‪.‬‬

‫• اﻷﺧـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫‪113‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫ﺻﻔﺤﺔ اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‪:‬‬

‫ﺗﺴﺘﺨﺪم ﺻﻔﺤﺔ "اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ" اﻟـ ‪ System Block‬ﻟﺘﺤﺪﻳﺪ ﺑﻌﺾ اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺎﻟﱪﻧﺎﻣﺞ واﻟﱴ‬
‫ﳝﻜﻦ ﳍﺎ أن ﺗﻐﲑ ﰱ ﻃﺒﻴﻌﺔ ﻋﻤﻞ اﻟﱪﻧﺎﻣﺞ ﻣﻦ ﺣﻴﺚ ﻃﺮﻳﻘﺔ اﻟﺘﺸﻐﻴﻞ‪.‬‬

‫ﻃﺮﻳﻘﺔ اﺳﺘﺨﺪام ﺻﻔﺤﺔ "اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ"‪:‬‬

‫‪ -‬ﻳﺘﻢ ﻋﻤﻞ اﻟﱪﻧﺎﻣﺞ أوﻻً وﻟﻜﻦ ﻗﺒﻞ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ﻳﺘﻢ ﲢﺪﻳﺪ‬
‫اﳌﺘﻐﲑات ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ " اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ " وﺑﻌﺪ ذاﻟﻚ ﻳﺘﻢ‬
‫ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬

‫ﰱ ﺣﺎﻟﻪ رﺳﻢ اﻟﱪﻧﺎﻣﺞ و ﲢﻤﻴﻠﻪ ﰒ ﺗﻌﺪﻳﻞ ﺑﻌﺾ اﳌﺘﻐﲑات ﺑﺎﺳﺘﺨﺪام‬


‫ﺻﻔﺤﺔ " اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ " دون ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ﻣﺮة أﺧﺮى ﻓﺄن ﻛﻞ‬
‫اﳌﺘﻐﲑات ﺗﻌﺘﱪ ﻏﲑ ﻓﻌﺎﻟﺔ وﻟﺬاﻟﻚ ﺳﻴﻠﺤﻆ داﺋﻤﺎً ﻇﻬﻮر رﺳﺎﻟﺔ ﰱ ﲨﻴﻊ‬
‫اﻟﺼﻔﺢ اﻟﻔﺮﻋﻴﺔ داﺧﻞ ﺻﻔﺤﺔ "اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ" وﻫﻰ‪:‬‬
‫" ‪Configuration parameters must be‬‬
‫‪"downloaded before they take effect‬‬
‫أى أﻧﻪ "ﻟﻦ ﳛﺪث أى ﺗﻐﲑ ﻗﺒﻞ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ اﻟﺘﺤﻤﻴﻞ"‬

‫‪114‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ﺻﻔﺤﺔ اﻟﺮﻣﻮز‪.‬‬

‫‪:Download‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﻳﺘﻢ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ﻛﻤﺎ ﺳﺒﻖ و ﺷﺮﺣﻨﺎ و ﺗﺼﺒﺢ ﲨﻴﻊ اﳌﺘﻐﲑات اﶈﺪدة‬
‫ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ "اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ" ﻣﺘﺎﺣﺔ‪.‬‬

‫‪Compile all‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻫﺬا اﳌﻔﺘﺎح ﺗﻈﻬﺮ ﻋﺪد اﻷﻋﻄﺎل اﳋﺎﺻﺔ ﺑﺎﻟﱪﻧﺎﻣﺞ ﻟﻜﻰ ﻳﺘﻢ ﲡﻨﺒﻬﺎ ﻗﺒﻞ ﺗﻄﺒﻴﻖ أﻣﺮ‬
‫اﻟﺘﺤﻤﻴﻞ‪.‬‬

‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ compile all‬ﺗﻈﻬﺮ ﻫﺬﻩ اﻟﺮﺳﺎﻟﺔ اﻟﱴ ﺗﻮﺿﺢ اﻷﺧﻄﺎء إذا وﺟﺪت‪:‬‬

‫‪115‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -١‬صفحة ‪.Communication Ports‬‬


‫ﻫﻰ ﺻﻔﺤﺔ ﻟﺘﺤﺪﻳﺪ اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺎﻟﺘﻮاﺻﻞ ﺑﲔ وﺣﺪة اﻟـ ‪ PLC‬و ﺟﻬﺎز اﻟﺘﺤﻜﻢ أى أن ﻛﺎن ﻧﻮﻋﻪ‪.‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Communication Ports‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Port0‬ﻫﻰ اﻟﺒﻴﺎﻧﺎت اﳋﺎﺻﺔ ﺑﻮﺣﺪة اﻟـ ‪.PLC‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Port1‬ﻫﻰ اﻟﺒﻴﺎﻧﺎت اﳋﺎﺻﺔ ﺑﺎﻟﻮﺣﺪة اﻹﺿﺎﻓﻴﺔ‪.‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ PLC Address‬ﻫﻮ اﻟﻌﻨﻮان اﳋﺎص ﺑﻮﺣﺪة اﻟـ ‪ PLC‬وﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮن أﺛﻨﺎن‪.‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Highest Address‬ﻫﻮ أﻗﺼﻰ أﺳﻢ ﻟﻮﺣﺪات اﻟـ ‪ PLC‬ﳝﻜﻦ ﻟﻠﺤﺎﺳﺐ اﻷﱃ‬
‫اﻟﺘﻮاﺻﻞ ﻣﻌﻬﻢ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Baud Rate‬ﻫﻰ ﺳﺮﻋﺔ ﺗﺒﺎدل اﻟﺒﻴﺎﻧﺎت ﺑﲔ اﳊﺎﺳﺐ اﻷﱃ و وﺣﺪة اﻟـ ‪.PLC‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Retry Count‬ﻫﻰ ﻋﺪد ﳏﺎوﻻت أﻋﺎدة اﻟﺘﻮاﺻﻞ ﺑﲔ اﳊﺎﺳﺐ اﻷﱃ و وﺣﺪة اﻟـ‬
‫‪.PLC‬‬
‫‪116‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Gap Update Factor‬ﻫﻰ اﻟﻔﺮاﻏﺎت ﺑﲔ وﺣﺪات اﻟـ ‪ PLC‬وﻳﻔﻀﻞ ﺑﺄن ﻳﻜﻮن‬
‫ﻋﺪد ﻟﻴﺲ ﺑﻜﺒﲑ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Communication Ports‬‬
‫ﻓﻘﻂ إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System Block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -١٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Communication‬‬
‫‪ Ports‬ﻓﻘﻂ‪.‬‬
‫‪ -١٤‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪Communication Ports‬‬
‫ﳚﺐ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪117‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٢‬صفحة ‪.Retentive Ranges‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﺘﻄﺒﻴﻖ أﻣﺮ ‪ Retentive‬ﻋﻠﻰ رﻳﻠﻴﻬﺎت أو ﻣﺆﻗﺘﺎت زﻣﻨﻴﺔ أو ﻋﺪادات ﻟﻜﻰ ﳛﺘﻔﻈﻮا‬
‫ﺑﻘﻴﻤﺘﻬﻢ‪.‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Retentive Ranges‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Range‬ﻫﻰ ا‪‬ﻤﻮﻋﺎت اﻟﱴ ﺳﻮف ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Data Area‬ﻫﻰ اﻟﻘﺎﺋﻤﺔ اﻟﱴ ﲢﺘﻮى ﻋﻠﻰ اﻟﻌﻨﺎوﻳﻦ اﳌﺴﺘﺨﺪﻣﺔ ﰱ ﺻﻔﺤﺔ اﻟـ‬
‫‪.Retentive Ranges‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Offset‬ﻫﻮ أﺳﻢ اﻟﻌﻨﻮان اﻟﺬى ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻖ ﻣﺒﺪأ اﻟـ ‪ Retentive‬ﻋﻠﻴﻪ‪.‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Number of Elements‬ﻫﻰ ﻋﺪد اﻟﻌﻨﺎوﻳﻦ اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻖ ﻣﺒﺪأ اﻟـ‬
‫‪ Retentive‬ﻋﻠﻴﻪ ﺑﺪاﻳﺘﺎً ﻣﻦ اﻟﻌﻨﻮان اﳌﺪون ﰱ اﻟـ ‪.Offset‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Clear‬ﻫﻮ ﳏﻮ ﲨﻴﻊ اﻟﺘﻌﺪﻳﻼت اﳋﺎﺻﺔ ﺑﺎﻟﺼﻒ ا‪‬ﺎور ﳍﺎ‪.‬‬

‫‪118‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Retentive Ranges‬ﻓﻘﻂ إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Retentive Ranges‬‬
‫ﻓﻘﻂ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪Retentive‬‬
‫‪ Ranges‬إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -١٢‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ Retentive Ranges‬ﳚﺐ‬
‫ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪119‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٣‬صفحة ‪.Password‬‬
‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻮﺿﻊ ﻛﻠﻤﺔ ﻣﺮور ﻟﺘﺤﺪﻳﺪ ﺑﻌﺾ اﻷﻋﻤﺎل‪.‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Password‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Full level‬ﻫﻮ أﻗﻞ ﻣﺴﺘﻮى ﻣﻦ ﻣﺴﺘﻮﻳﺎت ﻛﻠﻤﺎت اﳌﺮور ﺣﻴﺚ أﻧﻪ ﻻ ﺗﺄﺛﲑ ﻟﻜﻠﻤﺔ‬
‫اﳌﺮور اﳋﺎﺻﺔ ‪‬ﺬا اﳌﺴﺘﻮى‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Partial level‬ﻫﻮ ﺛﺎﱏ ﻣﺴﺘﻮى ﻣﻦ ﻣﺴﺘﻮﻳﺎت ﻛﻠﻤﺎت اﳌﺮور ﺣﻴﺚ أﻧﻪ ﻻ ﳝﻜﻦ‬
‫ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ أو ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Force‬أﺛﻨﺎء ﺗﻔﻌﻴﻞ ﻛﻠﻤﺔ اﳌﺮور اﳋﺎﺻﺔ ‪‬ﺬا اﳌﺴﺘﻮى‪.‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Minimum level‬ﻫﻮ أﻗﻮى ﻣﺴﺘﻮى ﻣﻦ ﻣﺴﺘﻮﻳﺎت ﻛﻠﻤﺎت اﳌﺮور ﺣﻴﺚ أﻧﻪ ﻻ‬
‫ﳝﻜﻦ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ ‪ download‬أو ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Force‬أو أﻣﺮ ‪ Upload‬أﺛﻨﺎء ﺗﻔﻌﻴﻞ ﻛﻠﻤﺔ اﳌﺮور‬
‫اﳋﺎﺻﺔ ‪‬ﺬا اﳌﺴﺘﻮى‪.‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ‪‬ﺬا اﻟﻔﺮاغ ﻫﻮ اﳌﻜﺎن اﻟﺬى ﻳﺘﻢ ﻛﺘﺎﺑﺔ ﻛﻠﻤﺔ اﳌﺮور ﺑﺪاﺧﻠﻪ ﻣﺮﺗﲔ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Password‬ﻓﻘﻂ إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪120‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Password‬ﻓﻘﻂ‪.‬‬


‫‪ -٨‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ Password‬ﳚﺐ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪ -٤‬صفحة ‪.Output Tables DIGITAL‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻹﺧﺘﻴﺎر اﳌﺨﺮﺟﺎت ‪ Digital‬اﳌﺮاد أن ﲢﺘﻔﻆ ﺑﺄﺧﺮ ﺣﺎﻟﺔ ﳍﺎ ﻋﻨﺪ ﲢﻮﻳﻞ وﺿﻊ وﺣﺪة‬
‫اﻟـ ‪ PLC‬ﻣﻦ ﻋﻤﻞ إﱃ إﻳﻘﺎف‪.‬‬

‫‪121‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Output Tables DIGITAL‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Digital‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺮﻗﻤﻰ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Analog‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺘﻨﺎﻇﺮى‪.‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Freeze Output in last state‬ﻫﻮ ﺗﺜﺒﻴﺖ اﳋﺮج ﻋﻠﻰ أﺧﺮ ﺣﺎﻟﻪ ﻟﻪ‪.‬‬
‫‪Output Tables‬‬ ‫‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ‬ ‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ‬
‫‪ DIGITAL‬ﻓﻘﻂ إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Select All‬ﻫﻮ إﺧﺘﻴﺎر ﲨﻴﻊ اﳌﺨﺮﺟﺎت ﻟﻜﻰ ﻳﻄﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ اﻟﺘﺜﺒﻴﺖ ‪.Freeze‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Clear All‬ﻫﻮ ﻋﺪم إﺧﺘﻴﺎر ﲨﻴﻊ اﳌﺨﺮﺟﺎت ﻟﻜﻰ ﻻ ﻳﻄﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ اﻟﺘﺜﺒﻴﺖ‬
‫‪.Freeze‬‬
‫‪ -٨‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪Output Tables DIGITAL‬‬
‫ﳚﺐ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Output Tables‬‬
‫‪ DIGITAL‬ﻓﻘﻂ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺤﺎت ‪System block‬‬
‫إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪122‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٥‬صفحة ‪.Output Tables ANALOG‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻷﺧﺘﻴﺎر اﳌﺨﺮﺟﺎت اﻟﺘﻨﺎﻇﺮﻳﺔ اﳌﺮاد أن ﲢﺘﻔﻆ ﺑﺄﺧﺮ ﺣﺎﻟﺔ "ﻗﻴﻤﺔ" ﳍﺎ ﻋﻨﺪ ﲢﻮﻳﻞ وﺿﻊ‬
‫وﺣﺪة اﻟـ ‪ PLC‬ﻣﻦ ﻋﻤﻞ إﱃ إﻳﻘﺎف‪.‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Output Tables ANALOG‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Digital‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺮﻗﻤﻰ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Analog‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺘﻨﺎﻇﺮى‪.‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ AQW‬ﻫﻮ أﺳﻢ اﳋﺮج اﻟﺘﻨﺎﻇﺮى‪.‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Freeze Output in last state‬ﻫﻮ ﺗﺜﺒﻴﺖ اﳋﺮج ﻋﻠﻰ أﺧﺮ ﻗﻴﻤﺔ ﻟﻪ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Output Tables Analog‬‬
‫ﻓﻘﻂ إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٧‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪Output Tables ANALOG‬‬
‫ﳚﺐ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪123‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Output Tables‬‬
‫‪ ANALOG‬ﻓﻘﻂ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪ -٦‬صفحة ‪.Input Filters DIGITAL‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻻﺧﺘﻴﺎر زﻣﻦ اﻹﺷﺎرة اﳋﺎﺻﺔ ﺑﺎﳌﺪاﺧﻼت ‪.Digital‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Input Filters DIGITAL‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Digital‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺮﻗﻤﻰ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Analog‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺘﻨﺎﻇﺮى‪.‬‬
‫‪124‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻪ ﳎﻤﻮﻋﺔ ﻣﻦ اﳌﺪﺧﻼات اﻟﱴ ﺳﻮف ﻳﻄﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ ‪.Input Filter‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻪ اﻟﺰﻣﻦ اﳌﺮاد ﺗﻄﺒﻴﻘﻪ‪.‬‬
‫‪ -٦‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪Input Filters DIGITAL‬‬
‫ﳚﺐ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Input Filters DIGITAL‬‬
‫ﻓﻘﻂ إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Input Filters‬‬
‫‪ DIGITAL‬ﻓﻘﻂ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪125‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٧‬صفحة ‪.Input Filters ANALOG‬‬

‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻠﺘﺤﺪﻳﺪ اﳌﺴﺒﻖ ﻟﻘﻴﻤﺔ اﻹﺷﺎرة اﳋﺎﺻﺔ ﺑﺎﳌﺪﺧﻼات اﻟﺘﻨﺎﻇﺮﻳﺔ‪.‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Input Filters ANALOG‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Digital‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج اﻟﺮﻗﻤﻰ‪.‬‬
‫‪.‬‬ ‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Analog‬ﻫﻰ ﺻﻔﺤﺔ ﺧﺎﺻﺔ ﺑﺎﳋﺮج‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻪ ﳎﻤﻮﻋﺔ ﻣﻦ اﳌﺪﺧﻼت اﻟﱴ ﺳﻮف ﻳﻄﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ ‪.Input Filter‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Number of samples‬ﺣﻴﺚ ﳝﻜﻦ ﲢﺪﻳﺪ ﻗﻴﻤﺔ ﻣﺴﺒﻘﺔ ﻟﻠﻤﺪﺧﻼت اﻟﺘﻨﺎﻇﺮﻳﺔ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Deadband‬ﺣﻴﺚ ﻳﺘﻢ ﲢﺪﻳﺪ اﻟﺘﻐﻴﲑ اﻟﺬى ﻳﺴﻤﺢ ﺑﻘﺒﻮﻟﻪ ﻣﻦ اﳌﺪﺧﻼت اﻟﺘﻨﺎﻇﺮﻳﺔ‪.‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Input Filters ANALOG‬‬
‫ﻓﻘﻂ إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Select All‬ﻫﻮ اﺧﺘﻴﺎر ﲨﻴﻊ اﳌﺪﺧﻼت ﻟﻜﻰ ﻳﺘﻢ ﺗﻔﻌﻴﻠﻬﺎ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Clear All‬ﻫﻮ ﻋﺪم اﺧﺘﻴﺎر أى ﻣﻦ اﳌﺪﺧﻼت ﻟﻜﻰ ﻻ ﻳﻄﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ ‪.Filter‬‬

‫‪126‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -١٠‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪Input Filters ANALOG‬‬
‫ﳚﺐ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١١‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Input Filters‬‬
‫‪ ANALOG‬ﻓﻘﻂ‪.‬‬
‫‪ -١٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -١٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪Input Filters‬‬
‫‪ ANALOG‬إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪ -٨‬صفحة ‪.Pulse catch Bits‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻼﺣﺘﻔﺎظ ﺑﺰﻣﻦ اﻹﺷﺎرة اﳋﺎﺻﺔ ﺑﺎﳌﺪﺧﻼت ﺣﱴ ﻳﺴﺘﻜﻤﻞ دورة ﻛﺎﻣﻠﺔ إﺿﺎﻓﻴﺔ‪.‬‬

‫‪127‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Pulse Catch Bits‬‬


‫‪ -٢‬ﺣﻴﺚ ﻳﺘﻢ اﺧﺘﻴﺎر اﳌﺪﺧﻼت اﳌﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Pulse Catch Bits‬ﻓﻘﻂ إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Select All‬ﻫﻮ اﺧﺘﻴﺎر ﲨﻴﻊ اﳌﺪﺧﻼت ﻟﻜﻰ ﻳﺘﻢ ﺗﻔﻌﻴﻠﻬﺎ‪.‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Clear All‬ﻫﻮ ﻋﺪم اﺧﺘﻴﺎر أى ﻣﻦ اﳌﺪﺧﻼت ﻟﻜﻰ ﻻ ﻳﻄﺒﻖ ﻋﻠﻴﻬﺎ أﻣﺮ ‪.Catch‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Pulse Catch Bits‬‬
‫ﻓﻘﻂ‪.‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -١٠‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ Pulse Catch Bits‬ﳚﺐ ﲢﻤﻴﻞ‬
‫اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪128‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٩‬صفحة ‪.Background Time‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻠﺘﺤﻜﻢ ﰱ ﺳﺮﻋﺔ اﻷﻣﺮ اﻟﺘﻮﺿﻴﺤﻰ ‪.program status‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Background Time‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ اﻟﻨﺴﺒﺔ اﳌﺌﻮﻳﺔ ﻟﻠﺘﺤﻜﻢ ﺑﺎﻟﺰﻣﻦ اﻟﻔﻌﻠﻰ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Background Time‬ﻓﻘﻂ‬
‫إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٤‬ﳝﻜﻦ اﻟﺘﺤﻜﻢ ﺑﺎﻟﺰﻣﻦ ﺣﱴ أﻧﻪ ﳝﻜﻦ أﺑﻄﺎء اﻟﺰﻣﻦ اﳊﻘﻴﻘﻰ ﻣﻦ ‪ %٥‬إﱃ ‪.%٥٠‬‬
‫‪ -٥‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ Background Time‬ﳚﺐ‬
‫ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Background‬‬
‫‪ Time‬ﻓﻘﻂ‪.‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪129‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬


‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪ -١٠‬صفحة ‪.EM Configurations‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻠﺘﺤﻜﻢ ﰱ ﺳﺮﻋﺔ اﻷﻣﺮ اﻟﺘﻮﺿﻴﺤﻰ ‪.program status‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.EM Configurations‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ ﺗﺴﻠﺴﻞ وﺣﺪة اﳌﺪﺧﻼت أو اﳌﺨﺮﺟﺎت اﻹﺿﺎﻓﻴﺔ‪.‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ ﺗﻮﺿﻴﺢ أذا ﻛﺎن وﺣﺪة اﳌﺪﺧﻼت أو اﳌﺨﺮﺟﺎت اﻹﺿﺎﻓﻴﺔ ﻣﺴﺘﺨﺪﻣﺔ أم ﻏﲑ ﻣﺴﺘﺨﺪﻣﺔ‪.‬‬
‫‪ -٤‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ EM Configurations‬ﳚﺐ‬
‫ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪130‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪EM‬‬ ‫‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ‬ ‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ‬


‫‪ Configurations‬ﻓﻘﻂ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪ -١١‬صفحة ‪.Configure LED‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻠﺘﺤﻜﻢ ﰱ ﺳﺮﻋﺔ اﻷﻣﺮ اﻟﺘﻮﺿﻴﺤﻰ ‪.program status‬‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Configure LED‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Configure LED‬ﻓﻘﻂ إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪131‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ أﻧﻪ ﺳﻮف ﺗﻀﻰء ﳌﺒﺔ اﻷﻋﻄﺎل ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام أﻣﺮ ‪.Force‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ أﻧﻪ ﺳﻮف ﺗﻀﻰء ﳌﺒﺔ اﻷﻋﻄﺎل ﰱ ﺣﺎﻟﺔ وﺟﻮد أﻋﻄﺎل ﺧﺎﺻﺔ ﺑﺎﳌﺪاﺧﻼت أو ﺑﺎﳌﺨﺮﺟﺎت‪.‬‬
‫‪ -٥‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ Configure LED‬ﳚﺐ ﲢﻤﻴﻞ‬
‫اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٦‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪Configure LED‬‬
‫ﻓﻘﻂ‪.‬‬
‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪ -١٢‬صفحة ‪.Increase Memory‬‬


‫ﺗﺴﺘﺨﺪم ﻫﺬﻩ اﻟﺼﻔﺤﺔ ﻟﻠﺘﺤﻜﻢ ﰱ ﺣﺠﻢ اﻟﺬاﻛﺮة ﺳﻮاء ﺑﺎﻟﺘﻌﺪﻳﻞ ﰱ اﻟﱪﻧﺎﻣﺞ أﺛﻨﺎء ﺗﺸﻐﻴﻞ أو أﺛﻨﺎء إﻳﻘﺎف اﻟـ‬
‫‪:PLC‬‬
‫‪ -‬ﺣﻴﺚ أﻧﺔ ﰱ ﺣﺎﻟﺔ ﺗﻌﺪﻳﻞ اﻟﱪﻧﺎﻣﺞ أﺛﻨﺎء اﻟﻌﻤﻞ ﻓﻬﺬا ﻳﻌﲎ أﻧﻪ ﳚﺐ ﻋﻠﻰ اﻟﺬاﻛﺮة اﺣﺘﻮاء اﻟﱪﻧﺎﻣﺞ اﻟﻘﺪﱘ‬
‫ﺣﱴ ﻳﺘﻢ ﺗﻔﻌﻴﻞ اﻟﱪﻧﺎﻣﺞ اﳉﺪﻳﺪ‪.‬‬
‫‪ -‬ﺣﻴﺚ أﻧﺔ ﰱ ﺣﺎﻟﺔ ﺗﻌﺪﻳﻞ اﻟﱪﻧﺎﻣﺞ أﺛﻨﺎء اﻟﺘﻮﻗﻒ ﻓﻬﺬا ﻳﻌﲎ أﻧﻪ ﳚﺐ ﻋﻠﻰ اﻟﺬاﻛﺮة ﳏﻮ اﻟﱪﻧﺎﻣﺞ اﻟﻘﺪﱘ‬
‫ﰒ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ اﳉﺪﻳﺪ‪.‬‬

‫‪132‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -١‬ﺻﻔﺤﺔ اﻟـ ‪.Increase Memory‬‬


‫‪ -٢‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ ﻋﺪم اﻟﺘﻌﺪﻳﻞ ﰱ اﻟﱪﻧﺎﻣﺞ أﺛﻨﺎء ﻋﻤﻞ وﺣﺪة اﻟـ ‪.PLC‬‬
‫‪ -٣‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﺑﺼﻔﺤﺔ ‪ Increase Memory‬ﻓﻘﻂ‬
‫إﱃ ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬
‫‪ -٤‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ أن اﻟﺘﻌﺪﻳﻞ ﰱ اﻟﱪﻧﺎﻣﺞ أﺛﻨﺎء ﻋﻤﻞ وﺣﺪة اﻟـ ‪ PLC‬ﻳﻮﻓﺮ ﰱ اﻟﺬاﻛﺮة اﳌﺴﺘﺨﺪﻣﺔ ﰱ اﻟﱪﳎﺔ‪.‬‬
‫‪ -٥‬اﳌﻘﺼﻮد ﺑﻪ ﻫﻮ أن اﻟﺘﻌﺪﻳﻞ ﰱ اﻟﱪﻧﺎﻣﺞ أﺛﻨﺎء وﻗﻮف وﺣﺪة اﻟـ ‪ PLC‬ﻻ ﻳﻮﻓﺮ ﰱ اﻟﺬاﻛﺮة اﳌﺴﺘﺨﺪﻣﺔ ﰱ‬
‫اﻟﱪﳎﺔ‪.‬‬
‫‪ -٦‬ﻟﺘﻔﻌﻴﻞ أى ﻣﻦ اﳌﺘﻐﲑات اﻟﱴ ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻘﻬﺎ ﺑﻮاﺳﻄﺔ ﺻﻔﺤﺔ ‪ Increase Memory‬ﳚﺐ‬
‫ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪Increase‬‬ ‫‪ Help‬ﻫﻰ ﺻﻔﺤﺔ ﻟﻠﺘﻮﺿﻴﺢ و اﳌﺴﺎﻋﺪة ﺧﺎﺻﺔ ﺑﺼﻔﺤﺔ‬ ‫‪ -٧‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ‬
‫‪ Memory‬ﻓﻘﻂ‪.‬‬

‫‪133‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻨﻈﻢ اﻟﻌﻤﻠﻴﺔ‬

‫‪ -٨‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Ok‬ﻫﻮ ﺗﻔﻌﻴﻞ ﲨﻴﻊ اﳌﺘﻐﲑات اﻟﱴ ﻧﻔﺬت و ﻟﻜﻦ ﺑﻌﺪ ﲢﻤﻴﻞ اﻟﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -٩‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Cancel‬ﻫﻮ إﻟﻐﺎء اﻟﺘﻌﺪﻳﻼت و ﻏﻠﻖ اﻟﺼﻔﺤﺔ‪.‬‬
‫‪ -١٠‬اﳌﻘﺼﻮد ﺑﻜﻠﻤﺔ ‪ Default All‬ﻫﻰ أﻋﺎدة اﳌﺘﻐﲑات اﳋﺎﺻﺔ ﲜﻤﻴﻊ ﺻﻔﺢ ‪ System block‬إﱃ‬
‫ﻃﺒﻴﻌﺘﻬﺎ‪.‬‬

‫‪134‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﺒﺎب اﻟﺘﺎﺳﻊ‬

‫اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‬
‫• ﺷﺮح اﻟﺮﻳﻠﻴﻬـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت اﻟﺨﺎﺻﺔ‪.‬‬

‫• أﻧﻮاع اﻟﺮﻳﻠﻴﻬ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت اﻟﺨﺎﺻﺔ‪.‬‬

‫• ﺻﻔﺤﺔ اﻟﺮﻳﻠﻴﻬ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت اﻟﺨﺎﺻﺔ‪.‬‬

‫• ﺗﻌﻠﻴﻘﺎت اﻟﺮﻳﻠﻴﻬـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت اﻟﺨﺎﺻﺔ‪.‬‬

‫• رﻣﻮز اﻟﺮﻳﻠﻴﻬـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺎت اﻟﺨﺎﺻﺔ‪.‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻊ اﻟﺮﻳﻠﻴﻬـ ـﺎت اﻟﺨﺎﺻﺔ‪.‬‬

‫• ﺗﻤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪135‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‪:‬‬

‫ﺗﻌﺘﱪ اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ ﻫﻰ ﻋﺒﺎر ﻋﻦ ذاﻛﺮة ﺧﺎﺻﺔ داﺧﻞ وﺣﺪة اﻟـ ‪ PLC‬ﺗﻌﻤﻞ ﺑﻄﺮق ﳐﺘﻠﻔﺔ ﻣﻘﺎرﻧﺔ‬
‫ﺑﻄﺮق ﻋﻤﻞ اﻟﺮﻳﻠﻴﻬﺎت اﻟﺪاﺧﻠﻴﺔ اﻟﻌﺎدﻳﺔ‪.‬‬

‫ﻣﻘﺎرﻧﺔ ﺑﻴﻦ اﻟﻨﻮﻋﻴﻦ‬


‫اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‬ ‫اﻟﺮﻳﻠﻴﻬﺎت اﻟﺪاﺧﻠﻴﺔ اﻟﻌﺎدﻳﺔ‬ ‫م اﻟﻔﺮق‬

‫ﺗﻌﻤﻞ ﺣﺴﺐ ﺷﺮوط وﺿﻌﺖ ﰱ اﻟﻮﺣﺪة وﻏﲑ‬ ‫ﺗﻌﻤﻞ ﺣﺴﺐ ﺷﺮوط وﺿﻌﺖ ﰱ‬ ‫‪ ۱‬ﻛﻴﻔﻴﺔ اﻟﻌﻤﻞ‬
‫ﻗﺎﺑﻠﺔ ﻟﻠﺘﻌﺪﻳﻞ‬ ‫اﻟﱪﻧﺎﻣﺞ‬

‫ﺗﻘﻒ ﺣﺴﺐ ﺷﺮوط وﺿﻌﺖ ﰱ اﻟﻮﺣﺪة وﻏﲑ‬ ‫ﺗﻘﻒ ﺣﺴﺐ ﺷﺮوط وﺿﻌﺖ ﰱ‬ ‫‪ ٢‬ﻛﻴﻔﻴﺔ‬
‫ﻗﺎﺑﻠﺔ ﻟﻠﺘﻌﺪﻳﻞ‬ ‫اﻟﱪﻧﺎﻣﺞ‬ ‫اﻹﻳﻘﺎف‬

‫ﺗﻌﻤﻞ اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ أى اﻟﺮﻳﻠﻴﻬﺎت اﳌﱪﳎﺔ ﺑﻄﺮﻳﻘﺔ ﳏﺪدة ﻣﺴﺒﻘﺎً ﻣﻦ ﻗﺒﻞ وﺣﺪة اﻟﱪﳎﺔ‪ ,‬ﻓﻤﺜﻼً ﺗﻮﺟﺪ‪:‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﻣﺮة ﻛﻞ ﻧﺼﻒ ﺛﺎﻧﻴﺔ‪.‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﳌﺮة واﺣﺪة ﻓﻘﻂ‪.‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﻣﺮة ﻛﻞ دورة ﻟﻠﱪﻧﺎﻣﺞ‪.‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﰱ ﺣﺎﻟﺔ أﻋﻄﺎل‪.‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﻣﺮة ﻛﻞ ﻧﺼﻒ ﺳﺎﻋﺔ‪.‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﰱ ﺣﺎﻟﺔ ﻓﺼﻞ اﻟﺒﻄﺎرﻳﺔ‪.‬‬
‫‪ -‬رﻳﻠﻴﻬﺎت ﺗﻌﻤﻞ ﰱ ﺣﺎﻟﺔ أﺟﺒﺎر أى ﻋﻨﻮان ﻋﻠﻰ اﻟﻌﻤﻞ أو اﻹﻳﻘﺎف‪.‬‬

‫‪136‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫ﺷﺮح ﻟﺒﻌﺾ ﻣﻔﺎﺗﻴﺢ اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‪:‬‬


‫ﺷﺮح ﻃﺮﻳﻘﺔ ﻋﻤﻞ اﻟﺮﻳﻠﻴﻪ اﻟﺨﺎص‬ ‫أﺳﻢ اﻟﺮﻳﻠﻴﻪ‬ ‫م‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح داﺋﻤﺎً‪.‬‬ ‫‪SM0.0‬‬ ‫‪١‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻓﻘﻂ ﰱ أول ‪.Cycle‬‬ ‫‪SM0.1‬‬ ‫‪٢‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﰱ ﺣﺎﻟﺔ ﻓﻘﺪان أى ﻗﻴﻤﺔ ﻣﻦ ﻗﻴﻢ اﻟـ ‪.Retentive‬‬ ‫‪SM0.2‬‬ ‫‪٣‬‬
‫ﻳﻐﻠ ـ ـ ـ ــﻖ ﻫ ـ ـ ـ ــﺬا اﳌﻔﺘ ـ ـ ـ ــﺎح ﻟ ـ ـ ـ ــﺰﻣﻦ ‪ Cycle‬ﻋﻨ ـ ـ ـ ــﺪﻣﺎ ﺗﺘﺤ ـ ـ ـ ــﻮل وﺣ ـ ـ ـ ــﺪة اﻟ ـ ـ ـ ـ ـ ‪ PLC‬إﱃ‬
‫‪SM0.3‬‬ ‫‪٤‬‬
‫اﻟﻌﻤﻞ‪.‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻟﺜﻼﺛﲔ ﺛﺎﻧﻴﺔ وﻳﻔﺘﺢ ﻟﺜﻼﺛﲔ ﺛﺎﻧﻴﺔ أﺧﺮى‪.‬‬ ‫‪SM0.4‬‬ ‫‪٥‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻟﻨﺼﻒ ﺛﺎﻧﻴﺔ وﻳﻔﺘﺢ ﻟﻨﺼﻒ ﺛﺎﻧﻴﺔ أﺧﺮى‪.‬‬ ‫‪SM0.5‬‬ ‫‪٦‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻟﺰﻣﻦ ‪ cycle‬وﻳﻔﺘﺢ ﻟﺰﻣﻦ ‪ cycle‬أﺧﺮ‪.‬‬ ‫‪SM0.6‬‬ ‫‪٧‬‬
‫ﻳﻐﻠ ــﻖ ﻫـ ــﺬا اﳌﻔﺘـ ــﺎح ﻋﻨـ ــﺪﻣﺎ ﻳﻜـ ــﻮن اﳌﻔﺘـ ــﺎح ﰱ وﺿـ ــﻊ ‪ run‬و ﻳﻔـ ــﺘﺢ ﻋﻨـ ــﺪﻣﺎ ﻳﻜـ ــﻮن ﰱ‬
‫‪SM0.7‬‬ ‫‪٨‬‬
‫وﺿﻊ ‪.term‬‬
‫ﻳﻐﻠـ ـ ــﻖ ﻫـ ـ ــﺬا اﳌﻔﺘـ ـ ــﺎح ﻋﻨـ ـ ــﺪﻣﺎ ﻳﻜـ ـ ــﻮن اﻟﻨـ ـ ــﺎﺗﺞ اﳋـ ـ ــﺎص ﺑـ ـ ــﺄى ﻋﻤﻠﻴـ ـ ــﺔ ﺣﺴـ ـ ــﺎﺑﻴﺔ ﻳﺴـ ـ ــﺎوى‬
‫‪SM1.0‬‬ ‫‪٩‬‬
‫ﺻﻔﺮ‪.‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻋﻨﺪﻣﺎ ﻳﻜﻮن اﻟﻨﺎﺗﺞ أﻛﱪ ﻣﻦ ﺣﺠﻢ اﻟﺬاﻛﺮة اﳌﺴﺘﺨﺪﻣﺔ‪.‬‬ ‫‪SM1.1‬‬ ‫‪١٠‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻋﻨﺪﻣﺎ ﻳﻜﻮن اﻟﻨﺎﺗﺞ اﳋﺎص ﺑﺄى ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﺳﺎﻟﺐ‪.‬‬ ‫‪SM1.2‬‬ ‫‪١١‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻋﻨﺪﻣﺎ ﻳﺘﻢ اﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺻﻔﺮ ﰱ أى ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ‪.‬‬ ‫‪SM1.3‬‬ ‫‪١٢‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ Force‬ﻋﻠﻰ أى ﻋﻨﻮان‪.‬‬ ‫‪SM4.7‬‬ ‫‪١٣‬‬
‫ﻳﻐﻠ ـ ـ ــﻖ ﻫ ـ ـ ــﺬا اﳌﻔﺘ ـ ـ ــﺎح ﻋﻨ ـ ـ ــﺪﻣﺎ ﲢ ـ ـ ــﺪث أى أﻋﻄ ـ ـ ــﺎل ﲞﺼ ـ ـ ــﻮص وﺣ ـ ـ ــﺪة اﳌ ـ ـ ــﺪﺧﻼات أو‬
‫‪SM5.0‬‬ ‫‪١٤‬‬
‫اﳌﺨﺮﺟﺎت‪.‬‬
‫ﻳﻐﻠﻖ ﻫﺬا اﳌﻔﺘﺎح ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﲢﻮﻳﻞ رﻗﻢ ‪ BCD‬ﻏﲑ ﺻﺤﻴﺢ إﱃ ‪.Binary‬‬ ‫‪SM1.6‬‬ ‫‪١٥‬‬

‫‪137‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫ﻳﻐﻠـ ـ ــﻖ ﻫـ ـ ــﺬا اﳌﻔﺘـ ـ ــﺎح ﻋﻨـ ـ ــﺪﻣﺎ ﻻ ﳝﻜـ ـ ــﻦ ﲢﻮﻳـ ـ ــﻞ رﻗـ ـ ــﻢ ‪ ASCII‬إﱃ ﻣـ ـ ــﺎ ﳝﺎﺛﻠـ ـ ــﻪ ﰱ اﻟـ ـ ـ ـ‬
‫‪SM1.7‬‬ ‫‪١٦‬‬
‫‪.Hexadecimal‬‬
‫ﲢﺘﻮى ﻋﻠﻰ رﻗﻢ اﻟـ ‪.CPU‬‬ ‫‪SMB6‬‬ ‫‪١٧‬‬
‫ﲢﺘﻮى ﻋﻠﻰ ﻗﻴﻤﺔ اﻟـ ‪ Analog Adjustment‬اﻷول‪.‬‬ ‫‪SMB28‬‬ ‫‪١٨‬‬
‫ﲢﺘﻮى ﻋﻠﻰ ﻗﻴﻤﺔ اﻟـ ‪ Analog Adjustment‬اﻟﺜﺎﱏ‪.‬‬ ‫‪SMB29‬‬ ‫‪١٩‬‬
‫ﳛﺘﻮى ﻋﻠﻰ ﻗﻴﻤﺔ اﻟـ ‪ Scan time‬اﳋﺎﺻﺔ ﺑﺄﺧﺮ ‪.Cycle‬‬ ‫‪SMW22‬‬ ‫‪٢٠‬‬
‫ﳛﺘﻮى ﻋﻠﻰ أﻗﻞ ﻗﻴﻤﺔ ﻟﻠـ ‪ Scan time‬ﰎ اﻟﻮﺻﻮل ﳍﺎ أﺛﻨﺎء اﻟﱪﻧﺎﻣﺞ‪.‬‬ ‫‪SMW24‬‬ ‫‪٢١‬‬
‫ﳛﺘﻮى ﻋﻠﻰ أﻛﱪ ﻗﻴﻤﺔ ﻟﻠـ ‪ Scan time‬ﰎ اﻟﻮﺻﻮل ﳍﺎ أﺛﻨﺎء اﻟﱪﻧﺎﻣﺞ‪.‬‬ ‫‪SMW26‬‬ ‫‪٢٢‬‬

‫ﺗﻤﺎرﻳﻦ ﻋﻤﻠﻴﺔ‪:‬‬
‫‪٢‬‬
‫ص=س ‪٣+‬‬ ‫ﻗﻢ ﺗﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻤﺜﻴﻞ اﳌﻌﺎدﻟﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫ﻻ ﻳﻮﺟﺪ‬ ‫ﻻ ﻳﻮﺟﺪ‬ ‫ﻻ ﻳﻮﺟﺪ‬
‫أﺳﻢ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬ ‫ﻧﻮع اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬ ‫ﻋﺪد اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬
‫‪ADD_R‬‬ ‫‪ADD_R‬‬ ‫‪١‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٢‬‬
‫أﺳﻢ اﻟﻤﺘﻐﻴﺮات‬ ‫ﻧﻮع اﻟﻤﺘﻐﻴﺮات‬ ‫ﻋﺪد اﻟﻤﺘﻐﻴﺮات‬
‫‪) VD0‬س(‬ ‫‪Dword, Real‬‬ ‫‪١‬‬
‫‪) VD4‬ص(‬ ‫‪Dword, Real‬‬ ‫‪٢‬‬
‫‪VD20‬‬ ‫‪Dword, Real‬‬ ‫‪٣‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫ﻻ ﻳﻮﺟﺪ‬ ‫ﻻ ﻳﻮﺟﺪ‬ ‫ﻻ ﻳﻮﺟﺪ‬
‫‪138‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻓﺒﺪﻻً ﻣﻦ وﺿﻊ ﻣﻔﺎﺗﻴﺢ ﳝﻜﻦ اﺳﺘﺨﺪام ﻣﻔﺘﺎح ﻣﻦ ﺿﻤﻦ ﻣﻔﺎﺗﻴﺢ اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ اﻟﺬى ﻳﻐﻠﻖ داﺋﻤﺎً‪.‬‬

‫ﺗﻤﺎرﻳﻦ ﻋﻤﻠﻴﺔ‪:‬‬
‫ﻗﻢ ﺑﺘﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻤﺜﻴﻞ اﳌﻌﺎدﻟﺔ اﻟﺘﺎﻟﻴﺔ ﲝﻴﺚ أن ﺗﻌﻤﻞ اﻷﺻﻮات اﻟﺘﺤﺬﻳﺮﻳﺔ ﺑﻄﺮﻳﻘﺔ ﻣﺘﻘﻄﻌﺔ ﰱ ﺣﺎﻟﺔ‪:‬‬
‫‪ -‬اﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺻــﻔﺮ‪.‬‬
‫‪ -‬ﻧﺎﺗﺞ ﺳﺎﻟـ ــﺐ‪.‬‬
‫‪ -‬ﻧﺎﺗﺞ ﺻ ـ ــﻔﺮ‪.‬‬
‫‪ -‬ﻧﺎﺗﺞ أﻛﱪ ﻣﻦ اﻟﺬاﻛﺮة‪.‬‬

‫‪139‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﻤﻌﺎدﻟﺔ‪:‬‬
‫‪٢‬‬
‫ص = ‪٢‬س ‪٤ +‬س ‪٣ +‬‬

‫اﻟﻤﺪﺧﻼت‪:‬‬
‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬
‫ﻻ ﻳﻮﺟﺪ‬ ‫ﻻ ﻳﻮﺟﺪ‬ ‫ﻻ ﻳﻮﺟﺪ‬

‫اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‪:‬‬
‫أﺳﻢ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬ ‫ﻧﻮع اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬ ‫ﻋﺪد اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ‬
‫‪ADD_R‬‬ ‫‪ADD_R‬‬ ‫‪١‬‬
‫‪MUL_R‬‬ ‫‪MUL_R‬‬ ‫‪٢‬‬

‫اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‪:‬‬
‫أﺳﻢ اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‬ ‫ﻧﻮع اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‬ ‫ﻋﺪد اﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‬
‫‪SM0.0‬‬ ‫‪Bit‬‬ ‫‪١‬‬
‫‪SM0.5‬‬ ‫‪Bit‬‬ ‫‪٢‬‬
‫‪SM1.0‬‬ ‫‪Bit‬‬ ‫‪٣‬‬
‫‪SM1.1‬‬ ‫‪Bit‬‬ ‫‪٤‬‬
‫‪SM1.2‬‬ ‫‪Bit‬‬ ‫‪٥‬‬
‫‪SM1.3‬‬ ‫‪Bit‬‬ ‫‪٦‬‬

‫‪140‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﻤﺘﻐﻴﺮات‪:‬‬
‫أﺳﻢ اﻟﻤﺘﻐﻴﺮات‬ ‫ﻧﻮع اﻟﻤﺘﻐﻴﺮات‬ ‫ﻋﺪد اﻟﻤﺘﻐﻴﺮات‬
‫‪) VD0‬ص(‬ ‫‪Dword, Real‬‬ ‫‪١‬‬
‫‪) VD4‬س(‬ ‫‪Dword, Real‬‬ ‫‪٢‬‬
‫‪) VD8‬س‪(٢‬‬ ‫‪Dword, Real‬‬ ‫‪٣‬‬
‫‪٢) VD12‬س‪(٢‬‬ ‫‪Dword, Real‬‬ ‫‪٤‬‬
‫‪٤) VD16‬س(‬ ‫‪Dword, Real‬‬ ‫‪٥‬‬
‫‪٢) VD20‬س‪٤ + ٢‬س(‬ ‫‪Dword, Real‬‬ ‫‪٦‬‬

‫اﻟﻤﺨﺮﺟﺎت‪:‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.0/K1M‬‬ ‫إﻧﺬار )اﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺻﻔﺮ(‪.‬‬ ‫‪١‬‬
‫‪Q0.1/K2M‬‬ ‫إﻧﺬار )ﻧﺎﺗﺞ ﺳﺎﻟﺐ(‪.‬‬ ‫‪٢‬‬
‫‪Q0.2/K3M‬‬ ‫إﻧﺬار )ﻧﺎﺗﺞ ﺻﻔﺮ(‪.‬‬ ‫‪٣‬‬
‫إﻧـ ـ ـ ـ ــﺬار )ﻧ ـ ـ ـ ـ ــﺎﺗﺞ أﻛـ ـ ـ ـ ــﱪ ﻣـ ـ ـ ـ ــﻦ ‪Q0.3/K4M‬‬ ‫‪٤‬‬
‫اﻟﺬاﻛﺮة(‪.‬‬

‫‪141‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪142‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫‪143‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﺮﻳﻠﻴﻬﺎت اﳋﺎﺻﺔ‬

‫اﻟﺸﺮح‪:‬‬

‫‪ -‬اﻟﺠﺰء اﻟﺨﺎص ﺑﺎﻟﻤﻌﺎدﻟﺔ اﻟﺮﻳﺎﺿﻴﺔ‪:‬‬


‫‪:Network1‬‬
‫ﺣﻴﺚ ﻳﻘﻮم ﺑﻀﺮب ﻗﻴﻤﺔ ‪ VD4‬ﰱ ‪ VD4‬ﰒ ﻳﻀﻊ اﻟﻨﺎﺗﺞ ﰱ ‪.VD8‬‬
‫‪:Network2‬‬
‫ﺣﻴﺚ ﻳﻘﻮم ﺑﻀﺮب ﻗﻴﻤﺔ ‪ VD8‬ﰱ ‪ 2.0‬ﰒ ﻳﻀﻊ اﻟﻨﺎﺗﺞ ﰱ ‪.VD12‬‬
‫‪:Network3‬‬
‫ﺣﻴﺚ ﻳﻘﻮم ﺑﻀﺮب ﻗﻴﻤﺔ ‪ VD4‬ﰱ ‪ 4.0‬ﰒ ﻳﻀﻊ اﻟﻨﺎﺗﺞ ﰱ ‪.VD16‬‬
‫‪:Network4‬‬
‫ﺣﻴﺚ ﻳﻘﻮم ﲜﻤﻊ ﻗﻴﻤﺔ ‪ VD12‬ﻣﻊ ‪ VD16‬ﰒ ﻳﻀﻊ اﻟﻨﺎﺗﺞ ﰱ ‪.VD20‬‬
‫‪:Network5‬‬
‫ﺣﻴﺚ ﻳﻘﻮم ﲜﻤﻊ ﻗﻴﻤﺔ ‪ VD12‬ﻣﻊ ‪ 3.0‬ﰒ ﻳﻀﻊ اﻟﻨﺎﺗﺞ ﰱ ‪.VD0‬‬

‫‪ -‬اﻟﺠﺰء اﻟﺨﺎص ﺑﺎﻟﺮﻳﻠﻴﻬﺎت اﻟﺨﺎﺻﺔ‪:‬‬


‫‪:Network6‬‬
‫ﰱ ﺣﺎﻟﻪ اﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺻﻔﺮ ﺳﻮف ﻳﻌﻤﻞ اﻹﻧﺬار ‪ Q0.0‬ﺑﻄﺮﻳﻘﺔ ﻣﺘﻘﻄﻌﺔ‪.‬‬
‫‪:Network7‬‬
‫ﰱ ﺣﺎﻟﻪ أن اﻟﻨﺎﺗﺞ ﻗﻴﻤﺔ ﺳﺎﻟﺒﺔ ﺳﻮف ﻳﻌﻤﻞ اﻹﻧﺬار ‪ Q0.1‬ﺑﻄﺮﻳﻘﺔ ﻣﺘﻘﻄﻌﺔ‪.‬‬
‫‪:Network8‬‬
‫ﰱ ﺣﺎﻟﻪ أن اﻟﻨﺎﺗﺞ ﻳﺴﺎوى ﺻﻔﺮ ﺳﻮف ﻳﻌﻤﻞ اﻹﻧﺬار ‪ Q0.2‬ﺑﻄﺮﻳﻘﺔ ﻣﺘﻘﻄﻌﺔ‪.‬‬
‫‪:Network9‬‬
‫ﰱ ﺣﺎﻟﻪ ﺧﻄﺎء ﰱ اﻟﻘﻴﻤﺔ اﻟﺮﻗﻤﻴﺔ ﻟﻠﺬاﻛﺮة ﺳﻮف ﻳﻌﻤﻞ اﻹﻧﺬار ‪ Q0.3‬ﺑﻄﺮﻳﻘﺔ ﻣﺘﻘﻄﻌﺔ‪.‬‬

‫‪144‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫اﻟﺒﺎب اﻟﻌﺎﺷﺮ‬

‫ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬
‫• ﺷﺮح ﺑﺮاﻣ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺞ اﻟﺘﺤﻜﻢ‪.‬‬

‫• ﻣﺤﺘﻮﻳﺎت ﺑﺮاﻣ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺞ اﻟﺘﺤﻜﻢ‪.‬‬

‫• ﺷﺮح ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ ‪.END‬‬

‫• ﺷﺮح ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ ‪.STOP‬‬

‫• ﺷﺮح ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ ‪.RET‬‬

‫• ﺷﺮح ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـﺔ ‪.DIAG_LED‬‬

‫• ﺷﺮح ﻋﻤﻠﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺔ ‪.JMP/LBL‬‬

‫• ﺷﺮح ﻋﻤﻠﻴـ ـ ـ ـ ـ ـ ـﺔ ‪.FOR/NEXT‬‬

‫• اﻷﺧ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫• ﺗﻤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪145‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‪:‬‬
‫ﺗﺴﺘﺨﺪم ﺑﻌﺾ اﻷواﻣﺮ اﻟﺘﺎﻟﻴﺔ ﻟﻠﻤﺴﺎﻋﺪة ﰱ اﻟﱪﳎﺔ وﻟﻴﺲ ﺑﺎﻟﺸﺮط ﻛﺠﺰء أﺳﺎﺳﻰ ﰱ اﻟﱪﻧﺎﻣﺞ‪.‬‬

‫‪END – STOP – JMP/LBL – FOR/NEXT – DIAGLED – RET‬‬

‫اﻟﺸﻜﻞ‬ ‫اﻟﺸﺮح‬ ‫م اﻷﺳﻢ‬


‫ﻳﺴﺘﺨﺪم أﻣﺮ ‪ END‬ﻟﻠﺘﺤﻜﻢ‬
‫ﺑﺘﻨﻔﻴﺬ ﺟﺰء ﻣﻌﲔ ﺣﻴﺚ أﻧﻪ‬ ‫‪END‬‬ ‫‪١‬‬
‫ﻳﺘﺤﻜﻢ ﰱ ﺣﺠﻢ اﻟـ ‪.Cycle‬‬

‫ﻳﺴﺘﺨﺪم أﻣﺮ ‪STOP‬‬


‫‪STOP‬‬ ‫‪٢‬‬
‫ﻹﻳﻘﺎف وﺣﺪة اﻟـ ‪.PLC‬‬

‫ﻳﺴﺘﺨﺪم أﻣﺮ ‪DIAG_LED‬‬ ‫‪DIAG_LED‬‬


‫‪٣‬‬
‫ﻟﻠﺘﺤﻜﻢ ﺑﻠﻤﺒﺔ اﻟـ ‪S.F.‬‬

‫‪146‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﻳﺴﺘﺨﺪم أﻣﺮ ‪JMP/LBL‬‬


‫‪JMP/LBL‬‬ ‫‪٤‬‬
‫ﻟﻠﺘﺤﻜﻢ ﺑﺘﻨﻔﻴﺬ أو إﻟﻐﺎء ﺟﺰء‬
‫ﻣﻌﲔ ﰱ وﺳﻂ اﻟـ ‪.Cycle‬‬

‫ﻳﺴﺘﺨﺪم أﻣﺮ ‪FOR/NEXT‬‬


‫ﻟﻠﺘﺤﻜﻢ ﺑﻘﺮاءة ﺟﺰء ﻣﻌﲔ ﰱ‬ ‫‪٥‬‬
‫‪FOR/NEXT‬‬
‫اﻟﱪﻧﺎﻣﺞ أﻛﺜﺮ ﻣﻦ ﻣﺮة ﻗﺒﻞ‬
‫اﻷﻧﺘﻬﺎء ﻣﻦ اﻟـ ‪.Cycle‬‬

‫ﻳﺴﺘﺨﺪم أﻣﺮ ‪ RET‬ﻟﻠﺨﺮوج ﻣﻦ‬


‫ﺻﻔﺤﺔ اﻟﱪﳎﺔ اﻟﻔﺮﻋﻴﺔ ﻗﺒﻞ اﻷﻧﺘﻬﺎء‬ ‫‪RET‬‬ ‫‪٦‬‬
‫ﻣﻦ ﺗﻨﻔﻴﺬ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ ﺑﺎﻟﻜﺎﻣﻞ‪.‬‬

‫ﺷﺮح ﻛﻞ ﻧﻮع ورﺳﻢ ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﻟﻠﺘﻮﺿﻴﺢ‬

‫‪:END -١‬‬
‫ﻛﻤﺎ ﺳﺒﻖ وذﻛﺮﻧﺎ أن أﻣﺮ ‪ END‬ﻳﺴﺘﺨﺪم ﻟﻠﺘﺤﻜﻢ ﺑﺘﻨﻔﻴﺬ ﺟﺰء ﻣﻌﲔ ﰱ اﻟـ ‪ ,Cycle‬ﻓﻤﺜﻼً أذا ﻛﺎن اﻟﱪﻧﺎﻣﺞ‬
‫ﻣﺘﻜﻮن ﻣﻦ أرﺑﻊ أﻓﺮع ﻓﻬﺬا ﻳﻌﲎ أن أﺛﻨﺎء اﻟـ ‪ Cycle‬ﻳﺘﻢ ﻗﺮاءة اﻷرﺑﻊ أﻓﺮع ﺑﺎﻟﻜﺎﻣﻞ وﻟﻜﻦ إذا ﰎ وﺿﻊ أﻣﺮ‬
‫‪ END‬ﰱ اﻟﻔﺮع اﻟﺜﺎﻟﺚ ﻓﻬﺬا ﻳﻌﲎ أن أﺛﻨﺎء اﻟـ ‪ Cycle‬ﻳﺘﻢ ﻗﺮاءة اﻟﺜﻼث أﻓﺮع اﻷوﱃ ﻓﻘﻂ أﻣﺎ ﻗﺮاءة ﻣﺎ ﻳﻮﺟﺪ‬
‫ﰱ اﻟﻔﺮع اﻟﺮاﺑﻊ ﺳﻮف ﻳﺒﻘﻰ ﻣﺮﻫﻮن ﺑﺄﻣﺮ ‪ END‬ﻓﺈذا ﻛﺎن ﻻ ﻳﻌﻤﻞ ﻓﺴﻴﻜﻮن اﻟﱪﻧﺎﻣﺞ ﻃﺒﻴﻌﻰ ﺟﺪاً ﻛﻤﺎ أن أﻣﺮ‬
‫‪ END‬ﱂ ﻳﺮﺳﻢ ﻣﻦ اﻷﺳﺎس إﻣﺎ إذا ﻛﺎن ﻳﻌﻤﻞ ﻓﺴﻴﺒﻘﻰ ﺣﺎﻟﻪ اﻟﱪﻧﺎﻣﺞ اﳌﺮﺳﻮم ﰱ اﻟﻔﺮع اﻟﺮاﺑﻊ ﻋﻠﻰ ﻣﺎ ﻫﻮ ﻋﻠﻴﺔ‬
‫إﱃ أن ﻳﻠﻐﻰ أﻣﺮ ‪ END‬ﻣﺮة أﺧﺮى وﺗﺘﻢ ﻗﺮاءة اﻟﻔﺮع اﻟﺮاﺑﻊ ﻣﺮة أﺧﺮى‪.‬‬
‫‪147‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:END‬‬


‫ﻣﻜﻴﻨﺔ ﺗﻌﻤﻞ ﻣﻦ ﻣﻜﺎن واﺣﺪ وﺗﻮﺟﺪ ﳌﺒﺔ ﺗﻮﺿﺊ ﻓﻮق اﳌﻜﻴﻨﺔ ﺑﺸﺮط أن ﺗﻌﻤﻞ ﻫﺬﻩ اﻟﻠﻤﺒﺔ ﻓﻘﻂ ﰱ اﻟﻠﻴﻞ‪.‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪) I0.4/S3‬ﺧﻠﻴﺔ ﺿﻮﺋﻴﺔ(‬ ‫‪n.o.‬‬ ‫‪٣‬‬
‫أﺳﻢ اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻧﻮع اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻋﺪد اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪END‬‬ ‫‪END‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.5/K2M‬‬ ‫اﻟﻠﻤﺒﺔ‬ ‫‪٢‬‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪148‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﰱ ﺣﻘﻴﻘﺔ اﻷﻣﺮ ﻻ ﳝﻜﻦ أن ﻧﻘﻮل ﺑﺄن أﻣﺮ ‪ END‬ﻳﺘﺤﻜﻢ ﰱ ﺣﺠﻢ اﻟﺪورة ‪ cycle‬ﻷن ﻫﺬا ﺳﻴﺨﺎﻟﻒ ﻣﺎ‬
‫ﻗﺪ ﰎ ﺷﺮﺣﺔ ﰱ اﳉﺰء اﻷول وﻫﻮ ﻣﺎ ﻳﺄﻛﺪ ﺑﺄن اﻟـ ‪ cycle time‬ﺛﺎﺑﺖ ﻻ ﻳﺘﻐﲑ‪ ,‬ﻟﺬاﻟﻚ اﻟﺬى ﺣﺪث ﰱ ﺣﺎﻟﻪ‬
‫اﺳﺘﺨﺪام أﻣﺮ ‪ END‬ﱂ ﻳﻜﻦ ﺳﻮى أن اﻟﱪﻧﺎﻣﺞ ﻗﺪ ﺗﻈﺎﻫﺮ ﺑﺄﻧﺔ ﱂ ﻳﺮى اﻟﻔﺮع اﻟﺮاﺑﻊ ﻟﻜﻨﺔ ﰱ ﺟﻮﻫﺮ اﻷﻣﺮ ﻗﺪ ﻣﺮ‬
‫ﻋﻠﻰ ﲨﻴﻊ اﻷﻓﺮع ﺑﺎﻟﻜﺎﻣﻞ‪.‬‬

‫‪:STOP -٢‬‬
‫ﻛﻤﺎ ﺳﺒﻖ وذﻛﺮﻧﺎ أن أﻣﺮ ‪ STOP‬ﻳﺴﺘﺨﺪم ﻹﻳﻘﺎف وﺣﺪة اﻟـ ‪ ,PLC‬ﻓﺄى أن ﻛﺎن ﻋﺪد اﻷﻓﺮع اﳌﺘﻜﻮن ﻣﻨﻬﺎ‬
‫اﻟﱪﻧﺎﻣﺞ ﻓﺄﻧﻪ ﻳﺘﻢ وﺿﻊ أﻣﺮ ‪ STOP‬ﰱ أى ﻓﺮع ﻣﻦ ﻓﺮوع اﻟﱪﻧﺎﻣﺞ ﻓﺄﻧﻪ ﻳﻮﻗﻒ وﺣﺪة اﻟـ ‪ ,PLC‬ﺣﻴﺚ ﻳﺘﻢ‬
‫اﺳﺘﺨﺪام ﻫﺬا اﻷﻣﺮ ﰱ ﺣﺎﻻت اﻟﻄﻮارئ اﻟﻘﺴﻮة اﻟﱴ ﺗﺴﺘﺪﻋﻰ ﺗﻮﻗﻒ اﻟـ ‪ PLC‬ﺑﺎﻟﻜﺎﻣﻞ‪ ,‬ﻻ ﻳﻬﻢ ﻛﺜﲑاً ﰱ أى‬
‫ﻓﺮع ﺳﻴﺘﻢ وﺿﻊ أﻣﺮ ‪ STOP‬ﻷن ﰱ ﲨﻴﻊ اﻷﺣﻮال ﺳﻮف ﻳﺘﻮﻗﻒ اﻟـ ‪.PLC‬‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:STOP‬‬


‫ﻣﻜﻴﻨﺔ ﺗﻌﻤﻞ ﻣﻦ ﻣﻜﺎن واﺣﺪ وﰱ ﺣﺎﻟﺔ وﺟﻮد ﺣﺮﻳﻖ ﺑﺎﳌﺼﻨﻊ ﳚﺐ ﻟﻮﺣﺪة اﻟـ ‪ PLC‬اﻟﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ‪.‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪) I0.7/S3‬ﺣﺴﺎس ﺣﺮﻳﻖ(‬ ‫‪n.o.‬‬ ‫‪٣‬‬
‫أﺳﻢ اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻧﻮع اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻋﺪد اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪STOP‬‬ ‫‪STOP‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬

‫‪149‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام أﻣﺮ ‪ STOP‬ﳚﺐ اﻟﺘﺄﻛﺪ ﻣﻦ إرﺳﺎل أﺷﺎرة ﻏﲑ ﻣﺴﺘﻤﺮة ﻟﺘﻨﻔﻴﺬ ﻫﺬا اﻷﻣﺮ وذاﻟﻚ ﻷن ﰱ‬
‫ﺣﺎﻟﻪ إرﺳﺎل إﺷﺎرة ﻣﺴﺘﻤﺮة ﻋﻠﻰ ﻫﺬا اﻷﻣﺮ ﻓﻬﺬا ﻳﻌﲎ أن ﻛﻞ ﻣﺮة ﺳﻮف ﺗﻘﻮم ﻓﻴﻪ ﺑﺘﺸﻐﻴﻞ وﺣﺪة اﻟﱪﳎﺔ ﺳﻮف‬
‫ﺗﺘﻮﻗﻒ ﺗﻠﻘﺎﺋﻴﺎً ﻓﻠﺬاﻟﻚ ﻳﻔﻀﻞ وﺿﻊ ﻣﻔﺘﺎح ‪ positive edge‬ﻗﺒﻞ أﻣﺮ ‪ STOP‬ﻣﺒﺎﺷﺮاً ﻟﻀﻤﺎن ﻋﺪم‬
‫اﺳﺘﻤﺮار اﻹﺷﺎرة ﻟﻔﱰة ﻃﻮﻳﻠﺔ‪.‬‬

‫‪:DIAG_LED -٣‬‬
‫ﻛﻤﺎ ﺳﺒﻖ وذﻛﺮﻧﺎ أن أﻣﺮ ‪ DIAG_LED‬ﻳﺴﺘﺨﺪم ﻟﻠﺘﺤﻜﻢ ﺑﻠﻤﺒﺔ اﻟـ ‪,S.F.‬ﻣﻊ ﻣﻼﺣﻈﺔ أن اﻟﻠﻤﺒﺔ ﻗﺪ‬
‫ﺗﺴﺘﺨﺪم ﻣﻦ ﻗﺒﻞ وﺣﺪة اﻟـ ‪ PLC‬ﰱ ﺣﺎﻟﺔ أﻋﻄﺎل ﻓﺎﺿﺤﺔ ﻛﻤﺎ ﺳﻮف ﻧﺸﺮح ﺑﻌﺪ ﻗﻠﻴﻞ وﻗﺪ ﺗﺴﺘﺨﺪم اﻟﻠﻤﺒﺔ‬
‫أﻳﻀﺎً ﻣﻦ ﻗﺒﻞ اﳌﱪﻣﺞ ﻛﻤﺎ ﺳﻮف ﻧﺸﺮح ﰱ اﳌﺜﺎل اﳊﺎﱃ‪.‬‬

‫ﺗﻀﺎء اﻟﻠﻤﺒﺔ ﻓﻘﻂ أذا ﻛﺎﻧﺖ ﻗﻴﻤﺔ اﻟـ ‪ IN‬ﳐﺘﻠﻔﺔ ﻋﻦ ﺻﻔﺮ‪ ,‬ﻓﻤﺜﻼً أذا ﻛﺎﻧﺖ اﻟﻘﻴﻤﺔ ﻫﻰ ‪ ٧‬ﻓﺴﺘﻌﻤﻞ اﻟﻠﻤﺒﺔ‪.‬‬

‫‪150‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:DIAG_LED‬‬


‫ﻣﻜﻴﻨﺔ ﺗﻌﻤﻞ ﻣﻦ ﻣﻜﺎن واﺣﺪ وﰱ ﺣﺎﻟﺔ وﺟﻮد أى أﺷﺎرة ﻣﻦ اﻟـ ‪ Over load‬ﻓﺄﻧﺔ ﻳﻔﺼﻞ اﳌﻜﻴﻨﺔ‬
‫وﻳﻀﻰء ﳌﺒﺔ اﻟـ ‪ S.F.‬ﺑﺎﻟﻠﻮن اﻷﺻﻔﺮ‪.‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪(Over Load)I0.2/S3‬‬ ‫‪n.o.‬‬ ‫‪٣‬‬
‫أﺳﻢ اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻧﻮع اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻋﺪد اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪DIAG_LED‬‬ ‫‪DIAG_LED‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪151‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﺗﻀﺎء اﻟﻠﻤﺒﺔ ﺑﺎﻟﻮن اﻷﺻﻔﺮ ﰱ ﺣﺎﻟﻪ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻦ ﻗﺒﻞ اﳌﱪﻣﺞ ﻛﻤﺎ ﰱ اﻟﺘﻤﺮﻳﻦ اﳊﺎﱃ‪.‬‬
‫‪ -‬ﺗﻀﺎء اﻟﻠﻤﺒﺔ ﺑﺎﻟﻮن اﻷﺻﻔﺮ ﰱ ﺣﺎﻟﻪ ﺗﻄﺒﻴﻖ أﻣﺮ ‪ FORCE‬ﻋﻠﻰ أى ﻋﻨﻮان ﻛﻤﺎ ﺳﺒﻖ وﺷﺮﺣﻨﺎ ﰱ‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﱏ ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب‪.‬‬
‫‪ -‬ﺗﻀﺎء اﻟﻠﻤﺒﺔ ﺑﺎﻟﻮن اﻷﲪﺮ ﰱ ﺣﺎﻟﻪ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻦ ﻗﺒﻞ وﺣﺪة اﻟـ ‪ PLC‬ﰱ ﺣﺎﻟﺔ اﻷﻋﻄﺎل اﻟﻔﺎﺿﺤﺔ‬
‫ﻛﻤﺎ ﺳﻴﺘﻢ اﻟﺘﻮﺿﻴﺢ ﻓﺎﻟﻜﺘﺎب اﻟﺘﺎﱃ اﳋﺎص ﺑﺎﻷﻋﻄﺎل واﻟﺘﻤﺮﻳﻦ اﻟﻌﻤﻠﻴﺔ‪.‬‬

‫‪:JMP/LBL -٤‬‬
‫ﻛﻤﺎ ﺳﺒﻖ وذﻛﺮﻧﺎ أن أﻣﺮ ‪ JMP/LBL‬ﻳﺴﺘﺨﺪم ﻟﻠﺘﺤﻜﻢ ﺑﺘﻨﻔﻴﺬ ﺟﺰء ﻣﻌﲔ ﰱ وﺳﻂ اﻟـ ‪ ,Cycle‬ﲝﻴﺚ ان‬
‫ﻫﺬا اﻷﻣﺮ ﻳﻘﻮم ﺑﺘﻨﻔﻴﺬ ﻛﻞ اﻟﱪﻧﺎﻣﺞ ﻣﺎﻋﺪا اﻷﻓﺮع اﳌﻮﺟﻮدة ﺑﲔ اﻟـ ‪ JMP‬و اﻟـ ‪ LBL‬ﻣﻊ ﻣﻼﺣﻈﺔ أن ﻳﺘﻢ‬
‫ﻛﺘﺎﺑﺔ ﻧﻔﺲ اﻟﺮﻗﻢ ﻋﻠﻰ اﻟـ ‪ JMP‬و اﻟـ ‪.LBL‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﳌﻌﺮﻓﺔ أى ‪ JMP‬ﳜﺺ أى ‪ LBL‬ﻳﻜﺘﺐ ﻧﻔﺲ اﻟﺮﻗﻢ ﻋﻠﻰ اﻷﺛﻨﺎن‪.‬‬
‫‪ -‬اﻷرﻗﺎم اﳌﺴﺘﺨﺪﻣﺔ ﺗﺒﺪأ ﻣﻦ ﺻﻔﺮ إﱃ ‪.٢٥٥‬‬
‫‪ -‬ﳝﻜﻦ أن ﻳﺘﻜﺮر اﻟـ ‪ JMP‬و اﻟـ ‪ LBL‬أﻛﺜﺮ ﻣﻦ ﻣﺮة وﻟﻜﻦ ﻋﺪد اﻟـ ‪ JMP‬ﳚﺐ أن ﻳﺴﺎوى ﻋﺪد اﻟـ‬
‫‪.LBL‬‬
‫‪ -‬ﺷﺮط أن ﻳﻜﻮن اﻟـ ‪ JMP‬ﻓﻮق اﻟـ ‪ LBL‬وﻟﻴﺲ اﻟﻌﻜﺲ‪.‬‬
‫‪ -‬ﳝﻜﻦ ﻟﻠـ ‪ JMP‬و اﻟـ ‪ LBL‬أن ﻳﺘﻜﺮر ﺑﻄﺮق ﳐﺘﻠﻔﺔ‪) :‬ﻣﺘﺘﺎﺑﻌﺔ – ﻣﺘﺸﺎﺑﻜﺔ – ﻣﺘﺪاﺧﻠﺔ(‪.‬‬

‫‪152‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫اﻷﻧﻮاع اﻟﺜﻼﺛﺔ‪ :‬اﳌﺘﺘﺎﺑﻌﺔ – اﳌﺘﺸﺎﺑﻜﺔ – اﳌﺘﺪاﺧﻠﺔ‬

‫ﺛﺎﻧﻴﺎً )اﻟﻤﺘﺸﺎﺑﻜﺔ(‪ :‬ﺛﺎﻟﺜﺎً )اﻟﻤﺘﺪاﺧﻠﺔ(‪:‬‬ ‫أوﻻً )اﻟﻤﺘﺘﺎﺑﻌﺔ(‪:‬‬


‫‪١‬‬ ‫‪١‬‬ ‫‪١‬‬

‫‪٢‬‬

‫‪٣‬‬
‫‪١‬‬
‫‪٢‬‬
‫‪٢‬‬
‫‪١‬‬

‫اﻟﻄﺮﻳﻘﺔ‬
‫‪٣‬‬
‫‪٣‬‬ ‫‪٢‬‬ ‫‪٢‬‬
‫‪٣‬‬
‫‪٢‬‬
‫‪٣‬‬
‫‪١‬‬
‫‪٣‬‬
‫‪٣‬‬

‫‪153‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:JMP-LBL‬‬


‫ﳏﺮك ﻳﻌﻤﻞ ﰱ اﲡﺎﻫﲔ‪ ,‬وﻳﻮﺟﺪ أﻳﻀﺎً ﻓﻼﺷﺮ ﻳﻌﻤﻞ اﺧﺘﻴﺎرﻳﺎً ﻣﻊ اﶈﺮك أى أﻧﻪ ﳝﻜﻦ إﻟﻐﺎء اﻟﻔﻼﺷﺮ‪.‬‬
‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬
‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫‪I1.1/S3‬‬ ‫‪n.o.‬‬ ‫‪٣‬‬
‫‪I2.2/S4‬‬ ‫‪n.c.‬‬ ‫‪٤‬‬
‫أﺳﻢ اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻧﻮع اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻋﺪد اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪4‬‬ ‫‪JMP/LBL‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.1/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q0.2/K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬
‫‪Q1.1/K3M‬‬ ‫ﳌﺒﺔ‬ ‫‪٣‬‬
‫‪Q1.2/K4M‬‬ ‫ﳌﺒﺔ‬ ‫‪٤‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام أﻣﺮ ‪ JMP-LBL‬ﻳﺘﻄﻠﺐ داﺋﻤﺎً أن ﻳﺘﻢ رﺳﻢ اﳉﺰء اﳋﺎص ﺑﺎﻟـ ‪ JMP‬ﻓﻮق‬
‫اﳉﺰء اﳋﺎص ﺑﺎﻟـ ‪ LBL‬وذاﻟﻚ ﻷﻧﻪ ﺣﲔ ﻳﻌﻤﻞ اﻟـ ‪ JMP‬ﻓﺄﻧﻪ ﺳﻴﻘﻔﺰ إﱃ أﺳﻔﻞ ﺣﱴ ﻳﺼﻞ إﱃ اﻟـ‬
‫‪ LBL‬اﳌﻌﻨﻮن ﺑﻨﻔﺲ ﻋﻨﻮان اﻟـ ‪.JMP‬‬
‫‪ -‬ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام أﻣﺮ ‪ JMP-LBL‬وﻟﻜﻦ ﻣﻦ دون اﻷﻟﺘﺰام ﺑﺎﻟﺸﺮوط اﻟﺴﺎﺑﻖ ذﻛﺮﻫﺎ أى أن ﰱ‬
‫ﺣﺎﻟﺔ أن ﻳﺘﻢ رﺳﻢ اﳉﺰء اﳋﺎص ﺑﺎﻟـ ‪ JMP‬أﺳﻔﻞ اﳉﺰء اﳋﺎص ﺑﺎﻟـ ‪ LBL‬ﺳﺘﺤﺪث ﻣﺸﻜﻠﺔ وذاﻟﻚ‬
‫ﻷﻧﻪ ﺣﲔ ﻳﻌﻤﻞ اﻟـ ‪ JMP‬ﻓﺄﻧﻪ ﺳﻴﻘﻔﺰ إﱃ اﻷﻋﻠﻰ ﺣﱴ ﻳﺼﻞ إﱃ اﻟـ ‪ LBL‬اﳌﻌﻨﻮن ﺑﻨﻔﺲ رﻗﻢ اﻟـ‬
‫‪ JMP‬ﻣﻦ ﻣﺎ ﻳﺴﺘﺪﻋﻰ إﱃ اﻟﺪوران ﻋﻜﺲ اﳊﺮﻛﺔ اﻟﻄﺒﻴﻌﻴﺔ ﻟﻠﱪﻧﺎﻣﺞ ﻓﺘﺤﺪث اﳌﺸﻜﻠﺔ وﺳﻮف ﻳﺘﻢ‬
‫ﺷﺮح اﻷﻋﻄﺎل ﺑﺎﻟﺘﻔﺼﻴﻞ ﰱ اﻟﻜﺘﺎب اﻟﺘﺎﱃ اﳋﺎص ﺑﺎﻷﻋﻄﺎل واﻟﺘﻤﺎرﻳﻦ اﻟﻌﻤﻠﻴﺔ‪.‬‬
‫‪154‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪155‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫‪:RET -٥‬‬
‫ﻛﻤﺎ ﺳﺒﻖ وذﻛﺮﻧﺎ أن أﻣﺮ ‪ RET‬ﻳﺴﺘﺨﺪم ﻟﻠﺮﺟﻮع ﻣﻦ ﺻﻔﺤﺔ اﻟﱪﳎﺔ اﻟﻔﺮﻋﻴﺔ إﱃ ﺻﻔﺤﺔ اﻟﱪﳎﺔ اﻟﺮﺋﻴﺴﻴﺔ ﻗﺒﻞ‬
‫اﻷﻧﺘﻬﺎء ﻣﻦ ﺗﻨﻔﻴﺬ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ ﺑﺎﻟﻜﺎﻣﻞ أو ﺣﱴ ﺑﻌﺪ اﻷﻧﺘﻬﺎء ﻣﻦ ﺗﻨﻔﻴﺬ اﻟﱪﻧﺎﻣﺞ ﺑﺎﻟﻜﺎﻣﻞ‪.‬‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:RET‬‬


‫ﲤﺮﻳﻦ ﳛﺘﻮى ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻋﻰ وﰱ ﺣﺎﻟﻪ اﻟﻀﻐﻂ ﻋﻠﻰ اﳌﻔﺘﺎح ‪ I0.1‬ﻓﻴﺨﺮج ﻣﻦ ﺻﻔﺤﺔ اﻟﱪﻧﺎﻣﺞ‬
‫اﻟﻔﺮﻋﻰ إﱃ اﻟﱪﻧﺎﻣﺞ اﻟﺮﺋﻴﺴﻰ ﰱ اﳊﺎل دون أن ﻳﻜﻤﻞ ﺣﱴ ﻳﺼﻞ إﱃ اﻟﻔﺮع اﻷﺧﲑ‪.‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.1/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻧﻮع اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻋﺪد اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪RET‬‬ ‫‪RET‬‬ ‫‪١‬‬

‫‪156‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫ﺗﻮﺿﻴﺢ‪:‬‬
‫ﻟﻴﺲ اﻟﻔﻜﺮة ﰱ اﻟﱪﻧﺎﻣﺞ ﺑﻞ اﻟﻔﻜﺮة ﻫﻰ ﺗﻮﺿﻴﺢ اﻧﻪ ﳝﻜﻦ أن ﻳﺘﻢ اﳋﺮوج ﻣﻦ اﻟﱪﻧﺎﻣﺞ اﻟﻔﺮﻋﻰ دون اﻻﻧﺘﻈﺎر ﺣﱴ‬
‫‪‬ﺎﻳﺔ اﻷﻓﺮع ﺑﺎﻟﻜﺎﻣﻞ وذاﻟﻚ ﳛﺪث ﰱ ﺣﺎﻟﺔ ﺗﺸﻐﻴﻞ أﻣﺮ ‪ RET‬ﻓﻘﻂ‪.‬‬

‫‪157‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫‪:FOR/NEXT -٦‬‬
‫ﻛﻤﺎ ﺳﺒﻖ وذﻛﺮﻧﺎ أن أﻣﺮ ‪ FOR/NEXT‬ﻳﺴﺘﺨﺪم ﻟﻠﺘﺤﻜﻢ ﺑﻘﺮاءة ﺟﺰء ﻣﻌﲔ ﰱ اﻟﱪﻧﺎﻣﺞ أﻛﺜﺮ ﻣﻦ ﻣﺮة ﻗﺒﻞ‬
‫اﻷﻧﺘﻬﺎء ﻣﻦ اﻟـ ‪. Cycle‬‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام أﻣﺮ ‪:FOR/NEXT‬‬


‫ﲤﺮﻳﻦ ﳛﺘﻮى ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ ﻣﻌﲔ وﰱ ﺣﺎﻟﻪ اﻟﻀﻐﻂ ﻋﻠﻰ اﳌﻔﺘﺎح ‪ I0.1‬ﻓﺄﻧﻪ ﻳﺘﻢ ﻗﺮاءة اﻟﻔﺮع اﻟﺜﺎﱏ‬
‫واﻟﺜﺎﻟﺚ ﻋﺸﺮة ﻣﺮات ﻣﺘﺘﺎﻟﻴﺔ ﻗﺒﻞ اﻷﻧﺘﻬﺎء ﻣﻦ اﻟﺪورة ‪.Cycle‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.1/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻧﻮع اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬ ‫ﻋﺪد اﻟﺘﺤﻜﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪FOR/NEXT‬‬ ‫‪FOR/NEXT‬‬ ‫‪١‬‬

‫ﻓﻤﺜﻼً ﰱ اﻟﺘﻤﺮﻳﻦ اﻟﺘﺎﱃ ﰎ ﺗﺴﺠﻴﻞ ﻗﻴﻤﺔ ‪ ۱‬ﰱ ‪ INIT‬ﺑﻴﻨﻤﺎ ﰎ ﺗﺴﺠﻴﻞ ﻗﻴﻤﺔ ‪ ۱٠‬ﰱ ‪ FINAL‬ﻓﺎ ﰱ ﻫﺬﻩ‬
‫اﳊﺎﻟﺔ ﺳﻴﺘﻢ اﳌﺮور ﻋﻠﻰ اﻷﻓﺮع اﳌﺘﻮاﺟﺪة ﺑﲔ ‪ FOR‬و ‪ NEXT‬ﻋﺸﺮة ﻣﺮات ﲝﻴﺚ أن ﻗﻴﻤﺔ ‪INDX‬‬
‫ﺳﻮف ﻳﺒﺪأ ﻣﻦ واﺣﺪ إﱃ ﻋﺸﺮة‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻧﻈﺮاً ﻷن ﻗﻴﻤﺔ ‪ INDX‬ﺳﻮف ﺗﺘﻐﲑ ﻋﺪة ﻣﺮات ﺣﻴﺚ ﺳﻴﻀﺎف ‪ ۱‬إﱃ اﻟﻘﻴﻤﺔ ﻛﻞ دورة ﻓﻠﻬﺬا ﻻ ﳝﻜﻦ ﲢﺪﻳﺪ‬
‫أى ﻗﻴﻤﺔ ﻣﺴﺒﻘﺔ ﰱ ﻫﺬا اﳌﻜﺎن ﺑﻞ ﺳﻴﺘﻢ ﻛﺘﺎﺑﺔ ﻣﺘﻐﲑ ﲝﺠﻢ ‪ word‬ﺣﱴ ﻳﺘﻴﺢ إﱃ اﶈﺘﻮى أن ﻳﺘﻐﲑ ﺑﺴﻬﻮﻟﻪ‪.‬‬
‫ﻋﻨﺪ اﳌﺮور ﻋﻠﻰ أﻣﺮ ‪ FOR‬ﻟﻠﻤﺮة اﻷوﱃ ﺗﻜﻮن ﻗﻴﻤﺔ اﻟـ ‪ [۱]  VW0‬ﰒ ﰱ اﳌﺮة اﻟﺜﺎﱏ ﻳﻀﺎف إﱃ اﻟﺮﻗﻢ‬
‫واﺣﺪ ﻓﺘﺼﺒﺢ ﻗﻴﻤﺔ اﻟـ ‪ [٢]  VW0‬وﻫﻜﺬا]‪[۱٠] ,[٩] ,[۸] ,[٧] ,[٦] ,[٥] ,[٤] ,[٣‬‬

‫‪158‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – ﺑﺮاﻣﺞ اﻟﺘﺤﻜﻢ‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫أى أن ﻛﺎن اﻟﱪﻧﺎﻣﺞ اﳌﺮﺳﻮم ﰱ اﻟﻔﺮع اﻟﺜﺎﱏ واﻟﺜﺎﻟﺚ ﻓﺄﻧﻪ ﰱ ﺣﺎﻟﻪ ﻏﻠﻖ اﳌﻔﺘﺎح ‪ I0.1‬ﺳﻮف ﻳﺘﻢ ﻗﺮاءة اﻷﻓﺮﻋﲔ‬
‫اﻟﺜﺎﱏ واﻟﺜﺎﻟﺚ ﻋﺸﺮة ﻣﺮات ﻗﺒﻞ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺪورة اﻟﻮاﺣﺪة‪.‬‬

‫‪159‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫اﻟﺒﺎب اﻟﺤﺎدى اﻟﻌﺎﺷﺮ‬

‫اﻟﻤﺤﻮﻻت‬
‫• ﺷﺮح اﻟﻤﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻮﻻت‪.‬‬

‫• أﻧﻮاع اﻟﻤﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻮﻻت‪.‬‬

‫• ﻣﺤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻮﻻت ﻟﺘﻐﻴﺮ اﻟﺤﺠﻢ‪.‬‬

‫• ﻣﺤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻮﻻت ﻟﺘﻐﻴﺮ اﻟـ ‪.format‬‬

‫• اﻟﻔـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮق ﺑﻴﻦ ‪ word‬و ‪.integer‬‬

‫• اﻟﻔـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺮق ﺑﻴﻦ ‪ Dword‬و ‪.Dinteger‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻊ اﻟﻤﺤ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻮﻻت‪.‬‬

‫• اﻷﺧﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ ﺑﺎﺳﺘﺨﺪام اﻟﻤﺤ ـﻮﻻت‪.‬‬

‫• ﺗﻤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪161‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫اﻟﻤﺤﻮﻻت‪:‬‬
‫ﺗﺴﺘﺨﺪم اﶈﻮﻻت ﻟﻠﺘﺤﻮﻳﻞ ﺑﺜﻼث ﻃﺮق ﳐﺘﻠﻔﺔ‪:‬‬
‫‪ -‬ﻣﻦ ﺣﺠﻢ إﻟﻰ ﺣﺠﻢ ﻣﺨﺘﻠﻒ‪.‬‬
‫ﻓﻬﺬا ﻳﺘﺤﻘﻖ ﰱ ﺣﺎﻟﺔ اﻟﺘﺤﻮﻳﻞ ﻣﻦ ‪ Byte‬إﱃ ‪ Word‬ﻣﺜﻼً‪ ,‬ﺣﻴﺚ ﻳﺘﻢ ﺗﻐﲑ اﳊﺠﻢ ﻣﻦ ‪8bits‬‬
‫إﱃ ‪.16bits‬‬
‫‪ -‬ﻣﻦ ‪ format‬إﻟﻰ ‪ format‬أﺧﺮ‪.‬‬
‫ﻓﻬﺬا ﻳﺘﺤﻘﻖ ﰱ ﺣﺎﻟﺔ اﻟﺘﺤﻮﻳﻞ ﻣﻦ ‪ Dinteger‬إﱃ ‪ Real‬ﻣﺜﻼً‪ ,‬ﺣﻴﺚ ﻳﺘﻢ ﺗﻐﲑ اﻟـ ‪ format‬ﻣﻦ‬
‫أرﻗﺎم ﺻﺤﻴﺤﺔ إﱃ أرﻗﺎم ﻋﺸﺮﻳﺔ دون ﺗﻐﲑ ﺣﺠﻢ اﻟﺬاﻛﺮة‪.‬‬
‫‪ -‬ﻣﻦ ﺣﺠﻢ و ‪ format‬إﻟﻰ ﺣﺠﻢ و ‪ format‬أﺧﺮ‪.‬‬
‫ﻓﻬﺬا ﻳﺘﺤﻘﻖ ﰱ ﺣﺎﻟﺔ اﻟﺘﺤﻮﻳﻞ ﻣﻦ ‪ Byte‬إﱃ ‪ Integer‬ﻣﺜﻼً ﺣﻴﺚ ﻳﺘﻢ ﺗﻐﲑ اﳊﺠﻢ ﻣﻦ ‪8bits‬‬
‫ﺑﺪون إﺷﺎرة إﱃ ‪16bits‬ﺑﺈﺷﺎرة‪.‬‬

‫اﻟﺘﺤﻮﻳﻼت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ اﻟﺒﺮﻣﺠﺔ‪:‬‬

‫‪162‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﺷﺮح اﻟﺘﺤﻮﻳﻼت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬


‫اﻟﺸﻜﻞ‬ ‫اﻟﺸﺮح‬ ‫اﻷﺳﻢ‬ ‫م‬
‫ﻳﺴﺘﺨﺪم اﻟـ ‪ B_I‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬
‫‪ Byte‬إﱃ ﺣﺠﻢ ‪ Word‬ﻣﻊ اﳊﻔﺎظ‬ ‫‪B_I‬‬ ‫‪١‬‬
‫ﻋﻠﻰ ﻧﻔﺲ اﻟﻘﻴﻤﺔ‪.‬‬
‫ﻳﺴﺘﺨﺪم اﻟـ ‪ I_B‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬
‫‪ Word‬إﱃ ﺣﺠﻢ ‪ Byte‬ﺑﺸﺮط أن ﻻ‬ ‫‪I_B‬‬
‫‪٢‬‬
‫ﺗﻜﻮن اﻟﻘﻴﻤﺔ أﻛﱪ ﻣﻦ أن ﺗﻜﺘﺐ ﻋﻠﻰ‬
‫‪. Byte‬‬
‫‪163‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ I_DI‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪ Word‬إﱃ ﺣﺠﻢ ‪ Dword‬ﻣﻊ‬ ‫‪I_DI‬‬ ‫‪٣‬‬
‫اﳊﻔﺎظ ﻋﻠﻰ ﻧﻔﺲ اﻟﻘﻴﻤﺔ‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ I_S‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪I_S‬‬ ‫‪٤‬‬
‫‪ Word‬إﱃ ﺣﺠﻢ ‪ Byte‬ﲝﻴﺚ ﻳﻘﻮم‬
‫ﺑﺘﺤﻮﻳﻞ اﻷرﻗﺎم إﱃ أﺣﺮف‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ DI_I‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬ ‫‪DI_I‬‬


‫‪ Dword‬إﱃ ﺣﺠﻢ ‪ Word‬ﺑﺸﺮط أن‬ ‫‪٥‬‬
‫ﻻ ﺗﻜﻮن اﻟﻘﻴﻤﺔ أﻛﱪ ﻣﻦ أن ﺗﻜﺘﺐ ﻋﻠﻰ‬
‫‪.Word‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ DI_R‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪ Dword‬إﱃ ﺣﺠﻢ ‪ Dword‬وﻟﻜﻦ‬ ‫‪DI_R‬‬
‫‪٦‬‬
‫ﻳﺘﻢ ﲢﻮﻳﻞ اﻟﻘﻴﻤﺔ ﻣﻦ رﻗﻢ ﺻﺤﻴﺢ إﱃ رﻗﻢ‬
‫ﻋﺸﺮى ‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ DI_S‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪DI_S‬‬ ‫‪٧‬‬
‫‪ Dword‬إﱃ ﺣﺠﻢ ‪ Byte‬ﲝﻴﺚ ﻳﻘﻮم‬
‫ﺑﺘﺤﻮﻳﻞ اﻷرﻗﺎم إﱃ أﺣﺮف‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ BCD_I‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ‬


‫ﺣﺠﻢ ‪ Word‬إﱃ ﺣﺠﻢ ‪Word‬‬ ‫‪BCD_I‬‬
‫‪٨‬‬
‫وﻟﻜﻦ ﻣﻊ ﺗﻐﲑ اﻟﻨﻈﺎم ﻣﻦ ‪ BCD‬إﱃ‬
‫‪.Integer‬‬

‫‪164‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ I_ BCD‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ‬


‫ﺣﺠﻢ ‪ Word‬إﱃ ﺣﺠﻢ ‪Word‬‬ ‫‪I_BCD‬‬
‫‪٩‬‬
‫وﻟﻜﻦ ﻣﻊ ﺗﻐﲑ اﻟﻨﻈﺎم ﻣﻦ ‪ Integer‬إﱃ‬
‫‪.BCD‬‬
‫ﻳﺴﺘﺨﺪم اﻟـ ‪ TRUNC‬ﻟﻠﺘﺤﻮﻳﻞ رﻗﻢ‬
‫‪ ROUND ١٠‬ﻋﺸﺮى ﲝﺠﻢ ‪ Dword‬إﱃ رﻗﻢ‬
‫ﺻﺤﻴﺢ ﲝﺠﻢ ‪ Dword‬وذاﻟﻚ‬
‫ﺑﺎﻟﺘﻘﺮﻳﺐ إﱃ أﻗﺮب رﻗﻢ ﺻﺤﻴﺢ‪.‬‬
‫ﻳﺴﺘﺨﺪم اﻟـ ‪ TRUNC‬ﻟﻠﺘﺤﻮﻳﻞ رﻗﻢ‬
‫‪ TRUNC‬ﻋﺸﺮى ﲝﺠﻢ ‪ Dword‬إﱃ رﻗﻢ‬ ‫‪١١‬‬
‫ﺻﺤﻴﺢ ﲝﺠﻢ ‪ Dword‬وﻟﺬاﻟﻚ ﻳﺘﻢ‬
‫ﻣﺴﺢ اﻟﺮﻗﻢ اﳌﻜﺘﻮب ﺑﻌﺪ اﻟﻌﻼﻣﺔ اﻟﻌﺸﺮﻳﺔ‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ R_S‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ أرﻗﺎم‬


‫‪R_S‬‬ ‫‪١٢‬‬
‫ﻋﺸﺮﻳﺔ ﲝﺠﻢ ‪ Dword‬إﱃ أﺣﺮف‬
‫ﲝﺠﻢ ‪.Byte‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ ITA‬ﻟﺘﺤﻮﻳﻞ ﻣﻦ أرﻗﺎم‬


‫‪ITA‬‬ ‫‪١٣‬‬
‫ﺻﺤﻴﺤﺔ ﲝﺠﻢ ‪ Word‬إﱃ ﻣﺎ ﻳﻌﺎدﳍﺎ‬
‫ﰱ ﺟﺪول ‪ ASCII‬ﲝﺠﻢ ‪.Byte‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ DTA‬ﻟﺘﺤﻮﻳﻞ ﻣﻦ أرﻗﺎم‬


‫‪DTA‬‬ ‫‪١٤‬‬
‫ﺻﺤﻴﺤﺔ ﲝﺠﻢ ‪ Dword‬إﱃ ﻣﺎ ﻳﻌﺎدﳍﺎ‬
‫ﰱ ﺟﺪول ‪ ASCII‬ﲝﺠﻢ ‪.Byte‬‬

‫‪165‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ RTA‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ أرﻗﺎم‬


‫‪RTA‬‬ ‫‪١٥‬‬
‫ﻋﺸﺮﻳﺔ ﲝﺠﻢ ‪ Dword‬إﱃ ﻣﺎ ﻳﻌﺎدﳍﺎ‬
‫ﰱ ﺟﺪول ‪ ASCII‬ﲝﺠﻢ ‪.Byte‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ ATH‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ )أرﻗﺎم‪,‬‬


‫رﻣﻮز أو أﺣﺮف ﰱ ﺟﺪول ‪(ASCII‬‬ ‫‪ATH‬‬
‫ﲝﺠﻢ ‪ Byte‬إﱃ ﻣﺎ ﻳﻌﺎدﳍﺎ ﰱ ﻟﻐﺔ‬ ‫‪١٦‬‬
‫‪ Hexadecimal‬ﲝﺠﻢ ‪Byte‬‬
‫أﻳﻀﺎً‪.‬‬
‫ﻳﺴﺘﺨﺪم اﻟـ ‪ HTA‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ أرﻗﺎم‬
‫ﺑﻠﻐﺔ ‪ Hexadecimal‬و ﲝﺠﻢ‬ ‫‪HTA‬‬
‫‪ Byte‬إﱃ ﻣﺎ ﻳﻌﺎدﳍﺎ ﻣﻦ )أرﻗﺎم‪ ,‬رﻣﻮز أو‬ ‫‪١٧‬‬
‫أﺣﺮف ﰱ ﺟﺪول ‪ (ASCII‬ﲝﺠﻢ‬
‫‪ Byte‬أﻳﻀﺎً‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ S_I‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪S_I‬‬ ‫‪١٨‬‬
‫‪ Byte‬إﱃ ﺣﺠﻢ ‪ Word‬ﲝﻴﺚ ﻳﻘﻮم‬
‫ﺑﺘﺤﻮﻳﻞ اﻷﺣﺮف إﱃ أرﻗﺎم ﺻﺤﻴﺤﺔ‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ S_DI‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪S_DI‬‬ ‫‪١٩‬‬
‫‪ Byte‬إﱃ ﺣﺠﻢ ‪ Dword‬ﲝﻴﺚ ﻳﻘﻮم‬
‫ﺑﺘﺤﻮﻳﻞ اﻷﺣﺮف إﱃ أرﻗﺎم ﺻﺤﻴﺤﺔ‪.‬‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ S_R‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ﺣﺠﻢ‬


‫‪S_R‬‬ ‫‪٢٠‬‬
‫‪ Byte‬إﱃ ﺣﺠﻢ ‪ Dword‬ﲝﻴﺚ ﻳﻘﻮم‬
‫ﺑﺘﺤﻮﻳﻞ اﻷﺣﺮف إﱃ أرﻗﺎم ﻋﺸﺮﻳﺔ‪.‬‬

‫‪166‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻳﺴﺘﺨﺪم اﻟـ ‪ SEG‬ﻹﺿﺎءة اﻟﻠﻤﺒﺎت‬


‫اﳋﺎﺻﺔ ﺑﺎﻟـ )‪SEVEN (SSD‬‬ ‫‪SEG‬‬
‫‪SEGMEND DISPLAY‬‬ ‫‪٢١‬‬
‫ﺣﺴﺐ اﻷرﻗﺎم اﳌﻜﺘﻮﺑﺔ ﰱ ‪ IN‬اﻟﱴ ﻫﻰ‬
‫ﲝﺠﻢ ‪.Byte‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻛﻴﻔﻴﺔ ﻣﻌﺮﻓﺔ أذا ﻛﺎن اﻟﺮﻗﻢ اﻟﺬى ﺳﻴﻜﺘﺐ ﻋﻠﻰ اﻟﺬاﻛﺮة ﻫﻮ رﻗﻢ ﺻﺤﻴﺢ أم رﻗﻢ ﻋﺸﺮى و ﻛﻴﻔﻴﺔ ﻣﻌﺮﻓﺔ اﻟﻨﻈﺎم‬
‫اﻟﺬى ﺳﻴﺴﺘﺨﺪم ﻟﻌﺮض اﻟﻘﻴﻤﺔ‪.‬‬

‫اﻟﺸﺮح‬ ‫اﻟﻤﻘﺼﻮد‬ ‫اﻷﺳﻢ‬ ‫م‬


‫ﻫ ـ ــﺬﻩ اﻟ ـ ــﺬاﻛﺮة ﻣﻜﻮﻧ ـ ــﺔ ﻣ ـ ــﻦ ‪ bits ١٦‬وﻳﻜﺘ ـ ــﺐ ﻋﻠﻴﻬ ـ ــﺎ أرﻗ ـ ــﺎم ﺻ ـ ــﺤﻴﺤﺔ‬ ‫‪WORD‬‬ ‫‪W‬‬ ‫‪١‬‬
‫دون إﺷﺎرة‪.‬‬
‫‪ INTEGER‬ﻫ ـ ــﺬﻩ اﻟ ـ ــﺬاﻛﺮة ﻣﻜﻮﻧ ـ ــﺔ ﻣ ـ ــﻦ ‪ bits ١٦‬وﻳﻜﺘ ـ ــﺐ ﻋﻠﻴﻬ ـ ــﺎ أرﻗ ـ ــﺎم ﺻ ـ ــﺤﻴﺤﺔ‬ ‫‪I‬‬ ‫‪٢‬‬
‫ﺑﺈﺷﺎرة ﻣﻮﺟﺒﺔ أو ﺳﺎﻟﺒﺔ‪.‬‬
‫ﻫ ـ ــﺬﻩ اﻟ ـ ــﺬاﻛﺮة ﻣﻜﻮﻧ ـ ــﺔ ﻣ ـ ــﻦ ‪ bits ٣٢‬وﻳﻜﺘ ـ ــﺐ ﻋﻠﻴﻬ ـ ــﺎ أرﻗ ـ ــﺎم ﺻ ـ ــﺤﻴﺤﺔ‬ ‫‪DWORD‬‬ ‫‪DW ٣‬‬
‫دون إﺷﺎرة‪.‬‬
‫‪ DINTIGER‬ﻫ ـ ــﺬﻩ اﻟ ـ ــﺬاﻛﺮة ﻣﻜﻮﻧ ـ ــﺔ ﻣ ـ ــﻦ ‪ bits ٣٢‬وﻳﻜﺘ ـ ــﺐ ﻋﻠﻴﻬ ـ ــﺎ أرﻗ ـ ــﺎم ﺻ ـ ــﺤﻴﺤﺔ‬ ‫‪DI‬‬ ‫‪٤‬‬
‫ﺑﺈﺷﺎرة ﻣﻮﺟﺒﺔ أو ﺳﺎﻟﺒﺔ‪.‬‬
‫ﻫ ـ ـ ــﺬﻩ اﻟ ـ ـ ــﺬاﻛﺮة ﻣﻜﻮﻧ ـ ـ ــﺔ ﻣ ـ ـ ــﻦ ‪ bits ٣٢‬وﻳﻜﺘ ـ ـ ــﺐ ﻋﻠﻴﻬ ـ ـ ــﺎ أرﻗ ـ ـ ــﺎم ﻋﺸـ ـ ـ ـﺮﻳﺔ‬ ‫‪REAL‬‬ ‫‪R‬‬ ‫‪٥‬‬
‫ﺑﺈﺷﺎرة ﻣﻮﺟﺒﺔ أو ﺳﺎﻟﺒﺔ‪.‬‬
‫ﻫ ـ ـ ــﺬﻩ اﻟ ـ ـ ــﺬاﻛﺮة ﻣﻜﻮﻧ ـ ـ ــﺔ ﻣ ـ ـ ــﻦ ‪ bits ٨‬وﻳﻜﺘ ـ ـ ــﺐ ﻋﻠﻴﻬ ـ ـ ــﺎ أرﻗ ـ ـ ــﺎم ﺻ ـ ـ ــﺤﻴﺤﺔ‬ ‫‪STRING‬‬ ‫‪S‬‬ ‫‪٦‬‬
‫ﻟﺘﻤﺜﻴﻞ ﺣﺮف واﺣﺪ‪.‬‬

‫‪167‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ‪:B_I‬‬

‫ﺗﻮﺿﻴﺢ ﻟﻠﺸﺮح‪:‬‬
‫‪VB0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1 0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪VW6‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫ﱂ ﺗﺘﻐﲑ اﻟﻘﻴﻤﺔ وﻟﻜﻦ ﰎ ﺗﻐﲑ اﳊﺠﻢ ﻣﻦ ‪ Byte‬إﱃ ‪.Word‬‬


‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻛﻞ ﻣﺎ ﻳﻜﺘﺐ ﻋﻠﻰ ‪ byte‬ﳝﻜﻦ أن ﻳﻨﻘﻞ ﻋﻠﻰ ‪ word‬ﻷﻧﻨﺎ ﻧﻨﻘﻞ ﻣﻦ اﳊﺠﻢ اﻷﺻﻐﺮ إﱃ اﳊﺠﻢ اﻷﻛﱪ‬
‫وﻟﻜﻦ اﻟﻌﻜﺲ ﻟﻴﺲ ﲟﻀﻤﻮن ﻷﻧﻪ ﻳﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻘﻴﻤﺔ اﻟﻔﻌﻠﻴﺔ اﳌﺴﺠﻠﺔ داﺧﻞ اﻟﺬاﻛﺮة‪.‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ‪:I_B‬‬

‫‪168‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﺗﻮﺿﻴﺢ ﻟﻠﺸﺮح‪:‬‬
‫‪VW2‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0 1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪VB0‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1 0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫ﱂ ﺗﺘﻐﲑ اﻟﻘﻴﻤﺔ وﻟﻜﻦ ﰎ ﺗﻐﲑ اﳊﺠﻢ ﻣﻦ ‪ Word‬إﱃ ‪.Byte‬‬


‫ﳚﺐ ﻣﺮاﻋﺎة أن ﻻ ﻳﻜﻮن ﳏﺘﻮى اﻟـ ‪ word‬أﻛﱪ ﻣﻦ أن ﻳﻜﺘﺐ ﻋﻠﻰ ‪.byte‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ‪:I_D‬‬

‫ﺗﻮﺿﻴﺢ ﻟﻠﺸﺮح‪:‬‬
‫‪VW0‬‬
‫‪0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1‬‬

‫‪VD8‬‬
‫‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1‬‬

‫ﱂ ﺗﺘﻐﲑ اﻟﻘﻴﻤﺔ وﻟﻜﻦ ﰎ ﺗﻐﲑ اﳊﺠﻢ ﻣﻦ ‪ Word‬إﱃ ‪.Dword‬‬


‫ﻛﻞ ﻣﺎ ﻳﻜﺘﺐ ﻋﻠﻰ ‪ Word‬ﳝﻜﻦ أن ﻳﻨﻘﻞ ﻋﻠﻰ ‪ Dword‬ﻷﻧﻨﺎ ﻧﻨﻘﻞ ﻣﻦ اﳊﺠﻢ اﻷﺻﻐﺮ إﱃ اﳊﺠﻢ اﻷﻛﱪ‪.‬‬

‫‪169‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ‪:DI_R‬‬

‫ﺗﻮﺿﻴﺢ ﻟﻠﺸﺮح‪:‬‬
‫‪VD0‬‬
‫‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1‬‬

‫‪VD4‬‬
‫‪0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬

‫ﱂ ﺗﺘﻐﲑ اﻟﻘﻴﻤﺔ وﱂ ﻳﺘﻐﲑ اﳊﺠﻢ وﻟﻜﻦ ﰎ ﺗﻐﲑ اﻟﻨﻈﺎم ﻣﻦ أرﻗﺎم ﺻﺤﻴﺤﺔ ﻷرﻗﺎم ﻋﺸﺮﻳﺔ‪.‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ‪:ROUND‬‬

‫‪170‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﺗﻮﺿﻴﺢ ﻟﻠﺸﺮح‪:‬‬
‫‪VD0‬‬
‫‪0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1‬‬

‫‪VD4‬‬
‫‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1‬‬

‫أﻣﺮ ‪ ROUND‬ﻳﻘﺮب إﱃ أﻗﺮب رﻗﻢ ﺻﺤﻴﺢ‪.‬‬


‫اﻟﺮﻗﻢ اﳌﻜﺘﻮب ﰱ ‪ VD0‬ﻫﻮ ‪ ٦,٤‬ﺑﻴﻨﻤﺎ اﳌﻜﺘﻮب ﰱ ‪ VD4‬ﻫﻮ ‪٦‬‬

‫ﻣﺜﺎل ﻋﻤﻠﻰ‪:‬‬
‫ﻣﺜﺎل ﻋﻤﻠﻰ ﺑﺎﺳﺘﺨﺪام ‪:TRUNC‬‬

‫ﺗﻮﺿﻴﺢ ﻟﻠﺸﺮح‪:‬‬
‫‪VD0‬‬
‫‪0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1‬‬

‫‪VD4‬‬
‫‪0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0‬‬

‫أﻣﺮ ‪ TRUNC‬ﳝﺴﺢ اﻟﺮﻗﻢ اﳌﻜﺘﻮب ﺑﻌﺪ اﻟﻌﻼﻣﺔ و ﻳﻜﺘﺐ اﻟﺮﻗﻢ اﻟﺼﺤﻴﺢ ﻓﻘﻂ‪.‬‬
‫اﻟﺮﻗﻢ اﳌﻜﺘﻮب ﰱ ‪ VD0‬ﻫﻮ ‪ ٦,٤‬ﺑﻴﻨﻤﺎ اﳌﻜﺘﻮب ﰱ ‪٤ VD4‬‬

‫‪171‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﶈﻮﻻت‬

‫ﻣﺎ اﻟﻔﺎﺋﺪة ﻣﻦ اﺳﺘﺨﺪام اﻟﻤﺤﻮﻻت؟‬

‫‪ -۱‬ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ﻗﻴﻤﺔ ﻣﻦ ﻋﻠﻰ ‪ IB0‬ﻟﻼﺳﺘﺨﺪام ﻣﻊ ﻣﺆﻗﺖ زﻣﲎ أو ﻣﻊ ﻋﺪاد ﻓﺴﻮف ﻧﻼﺣﻆ أﻧﻪ ﺗﻮﺟﺪ‬
‫ﻣﺸﻜﻠﺔ وﻫﻰ أن اﻟﻘﻴﻤﺔ اﳋﺎﺻﺔ ﺑﺎﳌﻔﺎﺗﻴﺢ ﻫﻰ ﻋﻠﻰ ﺣﺠﻢ ‪ byte‬ﺑﻴﻨﻤﺎ اﳌﺆﻗﺖ اﻟﺰﻣﲎ أو اﻟﻌﺪاد ﻳﻌﻤﻞ ﻛﻞ ﻣﻨﻬﻢ‬
‫ﻋﻠﻰ ذاﻛﺮة ﲝﺠﻢ ‪ word‬وﻟﺬاﻟﻚ ﻓﺄﻧﺔ ﻳﺘﻢ اﺳﺘﺨﺪام اﶈﻮﻻت ﻣﻦ ‪ byte‬إﱃ ‪ word‬وذاﻟﻚ ﻋﻦ ﻃﺮﻳﻖ‬
‫اﻟﻌﻤﻠﻴﺔ ‪.B-I‬‬

‫‪ -٢‬ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ﻗﻴﻤﺔ ﻣﻦ ﻋﻠﻰ ﻣﺆﻗﺖ زﻣﲎ أو ﻣﻦ ﻋﻠﻰ ﻋﺪاد ﻟﻼﺳﺘﺨﺪام ﻣﻊ ﻗﻴﻤﺔ أﺧﺮى )ﻣﻌﺎدﻟﺔ‬
‫رﻳﺎﺿﻴﺔ( ﲢﺘﻮى ﻋﻠﻰ أرﻗﺎم ﻋﺸﺮﻳﺔ ﻓﺴﻮف ﻧﻼﺣﻆ أﻧﻪ ﺗﻮﺟﺪ ﻣﺸﻜﻠﺔ وﻫﻰ أن اﻟﻘﻴﻤﺔ اﳋﺎﺻﺔ ﺑﺎﳌﺆﻗﺖ اﻟﺰﻣﲎ أو‬
‫ﺑﺎﻟﻌﺪاد ﻫﻰ ﲝﺠﻢ ‪ word‬ﺑﻴﻨﻤﺎ اﻷرﻗﺎم اﻟﻌﺸﺮﻳﺔ أى اﻷرﻗﺎم ﻏﲑ اﻟﺼﺤﻴﺤﺔ ﺗﻜﺘﺐ ﻋﻠﻰ ذاﻛﺮة ﲝﺠﻢ‬
‫‪ Dword‬وﻟﺬاﻟﻚ ﻓﺄﻧﺔ ﻳﺘﻢ اﺳﺘﺨﺪام‪:‬‬
‫‪ -‬أوﻻً‪ :‬اﶈﻮﻻت ﻣﻦ ‪ word‬إﱃ ‪ Dword‬وذاﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻟﻌﻤﻠﻴﺔ ‪ I-DI‬ﻟﺘﻐﻴﲑ اﳊﺠﻢ ﻣﻊ‬
‫اﻻﺣﺘﻔﺎظ ﺑﻨﻔﺲ اﻟﻘﻴﻤﺔ ‪.‬‬
‫‪ -‬ﺛﺎﻧﻴﺎً‪ :‬اﶈﻮﻻت ﻣﻦ ‪ Dword‬إﱃ ‪ Real‬وذاﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻟﻌﻤﻠﻴﺔ ‪ DI-R‬ﻟﺘﻐﻴﲑ اﻟﻘﻴﻤﺔ‬
‫اﻟﺼﺤﻴﺤﺔ ﻟﻘﻴﻤﺔ ﻋﺸﺮﻳﺔ دون ﺗﻐﻴﲑ اﳊﺠﻢ‪.‬‬

‫‪ -٣‬ﰱ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ﻗﻴﻤﺔ ﻋﺸﺮﻳﺔ ﲝﺠﻢ ‪ Dword‬ﻓﻤﻦ اﳌﺆﻛﺪ أن اﻟﻘﻴﻤﺔ ﻟﻦ ﺗﻜﻮن ﺻﺤﻴﺤﺔ ﺑﻞ ﺳﺘﺤﺘﻮى‬
‫ﻋﻠﻰ أى رﻗﻢ ﺑﻌﺪ اﻟﻌﻼﻣﺔ اﻟﻌﺸﺮﻳﺔ ﺣﱴ وأن ﻛﺎن ﻫﺬا اﻟﺮﻗﻢ ﻫﻮ ﺻﻔﺮ وﺑﻴﻨﻤﺎ ﰱ ﺣﺎﻟﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻋﺪاد ﺳﺘﻜﻮن‬
‫اﳌﺸﻜﻠﺔ ﻟﻴﺴﺖ ﰱ اﳊﺠﻢ ﻓﻘﻂ ﺑﻞ ﰱ اﻟـ ‪ format‬أﻳﻀﺎً ﻓﻠﺬاﻟﻚ ﺳﻴﺴﺘﺨﺪم‪:‬‬
‫‪ -‬أوﻻً‪ :‬أﻣﺮ ‪ TRUNC‬ﳊﺬف أى أرﻗﺎم ﺑﻌﺪ اﻟﻌﻼﻣﺔ اﻟﻌﺸﺮﻳﺔ دون اﻟﺘﻐﲑ ﰱ اﳊﺠﻢ‪.‬‬
‫‪ -‬ﺛﺎﻧﻴﺎً‪ :‬اﶈﻮﻻت ﻣﻦ ‪ Dword‬إﱃ ‪ Word‬وذاﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻟﻌﻤﻠﻴﺔ ‪ DI-I‬ﻟﺘﻐﻴﲑ اﳊﺠﻢ دون‬
‫ﺗﻐﲑ اﻟﻘﻴﻤﺔ‪.‬‬

‫‪172‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺒﺎب اﻟﺜﺎﻧﻰ ﻋﺸﺮ‬

‫اﻟﺘﺮﺣﻴﻞ و اﻟﺪوران‬
‫• ﺷﺮح اﻟﺘﺮﺣﻴـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻞ ‪.SHIFT‬‬

‫• اﻷﺣﺠﺎم اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﺘﺮﺣﻴ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﻞ‪.‬‬

‫• ﺷﺮح اﻟـ ـ ـ ـ ـ ـ ـ ـ ـﺪوران ‪.ROTATE‬‬

‫• اﻷﺣﺠﺎم اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـﺪوران‪.‬‬

‫• اﻟﻔﺮق ﺑﻴﻦ اﻟﺘﺮﺣﻴ ـ ـ ـ ـ ــﻞ ﻳﻤﻴﻨﺎً وﻳﺴﺎراً‪.‬‬

‫• اﻟﻔﺮق ﺑﻴﻦ اﻟ ـ ـ ـ ـ ــﺪوران ﻳﻤﻴﻨﺎً وﻳﺴﺎراً‪.‬‬

‫• اﻷﺧـ ـ ـ ـ ـ ـ ـ ـ ــﻄﺎء اﻟﻤﻤﻜﻦ اﻟﺘﻌﺮض ﻟﻬﺎ‪.‬‬

‫• ﺗﻤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪173‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺘﺮﺣﻴﻞ و اﻟﺪوران‪:‬‬

‫اﻟﺘﺮﺣﻴﻞ‪:‬‬
‫ﻳﻘﻮم ﺑﱰﺣﻴﻞ ﳏﺘﻮﻳﺎت اﻟـ ‪ bits‬ﻟﻠﻴﻤﲔ أو ﻟﻠﻴﺴﺎر ﺣﺴﺐ اﻟﻨﻮع‪ ,‬ﲝﻴﺚ أن ﳏﺘﻮى اﻟـ ‪ bits‬اﻟﱴ ﲣﺮج ﻋﻦ ﺣﺪود‬
‫اﻟﺬاﻛﺮة ﲤﺴﺢ ﺗﻠﻘﺎﺋﻴﺎً‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪SHL_B‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1 0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬

‫ﺣﻴﺚ ﰎ ﻣﺴﺢ ﻗﻴﻤﺔ أﺧﺮ ‪.bit‬‬


‫ﻣﺜﺎل أﺧﺮ‪:‬‬
‫‪SHL_B‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1 1 1‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫ﺣﻴﺚ ﰎ ﻣﺴﺢ ﻗﻴﻤﺔ أﺧﺮ ‪.bit‬‬


‫ﻣﺜﺎل‪:‬‬
‫‪SHR_W‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1 0 1 1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0 1 0 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬
‫ﰎ ﻣﺴﺢ ﻗﻴﻤﺔ أول ‪.bit‬‬

‫‪174‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺪوران‪:‬‬
‫ﻳﻘﻮم ﺑﺪوران ﳏﺘﻮﻳﺎت اﻟـ ‪ bits‬ﻟﻠﻴﻤﲔ أو ﻟﻠﻴﺴﺎر ﺣﺴﺐ اﻟﻨﻮع‪ ,‬وﻟﻜﻦ ﳏﺘﻮى اﻟـ ‪ bits‬اﻟﱴ ﲣﺮج ﻣﻦ اﳊﺠﻢ‬
‫اﻟﺬى ﻧﺘﻌﺎﻣﻞ ﻣﻌﻪ ﻻ ﲤﺴﺢ ﺑﻞ ﺗﻌﻮد ﻟﻨﻔﺲ اﻟﺬاﻛﺮة ﻣﻦ اﻟﻨﺎﺣﻴﺔ اﻷﺧﺮى‪.‬‬

‫ﻣﺜﺎل‪:‬‬
‫‪ROL_B‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0 1 0 1‬‬ ‫‪1‬‬


‫ﰎ ﻧﻘﻞ ﻗﻴﻤﺔ أﺧﺮ ‪.bit‬‬
‫ﻣﺜﺎل أﺧﺮ‪:‬‬
‫‪ROL_B‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0 0 0 1‬‬ ‫‪1‬‬


‫ﰎ ﻧﻘﻞ ﻗﻴﻤﺔ أﺧﺮ ‪.bit‬‬

‫ﻣﺜﺎل‪:‬‬
‫‪ROR_W‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1 1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0 1 0 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬
‫ﰎ ﻧﻘﻞ ﻗﻴﻤﺔ أول ‪.bit‬‬

‫‪175‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺘﺮﺣﻴﻞ‪:‬‬

‫اﻟﺪوران‬

‫‪176‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫ﺷﺮح أﻧﻮاع اﻟﺘﺮﺣﻴﻞ واﻟﺪوران‬


‫اﻟﺸﻜﻞ‬ ‫اﻟﺸﺮح‬ ‫اﻷﺳﻢ‬ ‫م‬
‫ﻳﻘﻮم ‪ SHR_B‬ﺑﱰﺣﻴﻞ‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪SHR_B‬‬
‫‪١‬‬
‫داﺧﻞ اﻟـ ‪ BYTE‬ﻣﻦ‬
‫اﻟﻴﺴﺎر إﱃ اﻟﻴﻤﲔ ‪.‬‬
‫ﻳﻘﻮم ‪ SHR_W‬ﺑﱰﺣﻴﻞ‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪SHR_W‬‬
‫‪٢‬‬
‫داﺧﻞ اﻟـ ‪ WORD‬ﻣﻦ‬
‫اﻟﻴﺴﺎر إﱃ اﻟﻴﻤﲔ ‪.‬‬
‫‪SHR_DW‬‬ ‫ﻳﻘﻮم‬
‫ﺑﱰﺣﻴﻞ اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ‬ ‫‪SHR_DW‬‬
‫اﻟـ‬ ‫داﺧﻞ‬ ‫‪BITS‬‬ ‫‪٣‬‬
‫‪ DWORD‬ﻣﻦ اﻟﻴﺴﺎر‬
‫إﱃ اﻟﻴﻤﲔ ‪.‬‬
‫ﻳﻘﻮم ‪ SHL_B‬ﺑﱰﺣﻴﻞ‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪SHL_B‬‬
‫‪٤‬‬
‫داﺧﻞ اﻟـ ‪ BYTE‬ﻣﻦ‬
‫اﻟﻴﻤﲔ إﱃ اﻟﻴﺴﺎر‪.‬‬

‫‪177‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫ﻳﻘﻮم ‪ SHL_W‬ﺑﱰﺣﻴﻞ‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪SHL_W‬‬
‫‪٥‬‬
‫داﺧﻞ اﻟـ ‪ WORD‬ﻣﻦ‬
‫اﻟﻴﻤﲔ إﱃ اﻟﻴﺴﺎر‪.‬‬
‫‪SHL_DW‬‬ ‫ﻳﻘﻮم‬
‫ﺑﱰﺣﻴﻞ اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ‬ ‫‪SHL_DW‬‬
‫اﻟـ‬ ‫داﺧﻞ‬ ‫‪BITS‬‬ ‫‪٦‬‬
‫‪ DWORD‬ﻣﻦ اﻟﻴﻤﲔ‬
‫إﱃ اﻟﻴﺴﺎر‪.‬‬
‫ﻳﻘﻮم ‪ ROR_B‬ﺑﺪوران‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪ROR_B‬‬
‫‪٧‬‬
‫داﺧﻞ اﻟـ ‪ BYTE‬ﻣﻦ‬
‫اﻟﻴﺴﺎر إﱃ اﻟﻴﻤﲔ ‪.‬‬
‫ﻳﻘﻮم ‪ ROR_W‬ﺑﺪوران‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪ROR_W‬‬
‫‪٨‬‬
‫داﺧﻞ اﻟـ ‪ WORD‬ﻣﻦ‬
‫اﻟﻴﺴﺎر إﱃ اﻟﻴﻤﲔ ‪.‬‬
‫‪ROR_DW‬‬ ‫ﻳﻘﻮم‬
‫ﺑﺪوران اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ‬ ‫‪ROR_DW‬‬
‫اﻟـ‬ ‫داﺧﻞ‬ ‫‪BITS‬‬ ‫‪٩‬‬
‫‪ DWORD‬ﻣﻦ اﻟﻴﻤﲔ‬
‫إﱃ اﻟﻴﺴﺎر‪.‬‬

‫‪178‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫ﻳﻘﻮم ‪ ROL_B‬ﺑﺪوران‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪ROL_B‬‬
‫‪١٠‬‬
‫داﺧﻞ اﻟـ ‪ BYTE‬ﻣﻦ‬
‫اﻟﻴﻤﲔ إﱃ اﻟﻴﺴﺎر‪.‬‬
‫ﻳﻘﻮم ‪ ROL_W‬ﺑﺪوران‬
‫اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ ‪BITS‬‬ ‫‪ROL_W‬‬
‫‪١١‬‬
‫داﺧﻞ اﻟـ ‪ WORD‬ﻣﻦ‬
‫اﻟﻴﻤﲔ إﱃ اﻟﻴﺴﺎر‪.‬‬
‫‪ROL_DW‬‬ ‫ﻳﻘﻮم‬
‫ﺑﺪوران اﻟﻘﻴﻢ اﳋﺎﺻﺔ ﺑﺎﻟـ‬ ‫‪ROL_DW‬‬
‫اﻟـ‬ ‫داﺧﻞ‬ ‫‪BITS‬‬ ‫‪١٢‬‬
‫‪ DWORD‬ﻣﻦ اﻟﻴﻤﲔ‬
‫إﱃ اﻟﻴﺴﺎر‪.‬‬

‫رﺳﻢ ﺗﻮﺿﻴﺤﻰ ﻟﻠﺘﻤﺮﻳﻦ اﻟﻌﻤﻠﻰ‪:‬‬

‫‪179‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺘﻤﺮﻳﻦ ﻋﻤﻠﻰ‪:‬‬
‫ﻣﻜﻴﻨﺔ ﺗﻘﻮم ﺑﻠﺤﺎم اﻷﻃﺮاف اﻟﺪاﺧﻠﻴﺔ اﳌﺜﺒﺘﺔ ﰱ اﻟﻘﻌﺪة اﳋﺎﺻﺔ ﺑﺎﻟﻠﻤﺒﺔ و ﻟﻜﻦ ﻧﻈﺮاً ﻟﺸﺪة درﺟﺔ اﳊﺮارة‬
‫ﺑﺎﻟﻘﺮب ﻣﻦ ﻣﻜﻴﻨﺔ اﻟﻠﺤﺎم ﺳﻮف ﻳﺘﻢ و ﺿﻊ اﳊﺴﺎس ﺑﻌﻴﺪاً ﻋﻦ ﻣﻜﺎن ﻣﻜﻴﻨﺔ اﻟﻠﺤﺎم‪ ,‬اﳌﺴﺎﻓﺔ ﺑﲔ‬
‫اﻟﻠﻤﺒﺎت ﻣﺘﺴﺎوﻳﺔ وﻫﻰ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺣﺮﻛﺔ اﻟﺴﲑ ﻓﻬﻮ ﻳﺘﺤﺮك ﻧﺼﻒ ﺛﺎﻧﻴﺔ وﻳﻘﻒ ﻧﺼﻒ ﺛﺎﻧﻴﺔ‪.‬‬

‫أﺳﻢ اﻟﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺪﺧﻞ‬ ‫ﻋﺪد اﻟﺪﺧﻞ‬


‫‪I0.0/S1‬‬ ‫‪n.c.‬‬ ‫‪١‬‬
‫‪I0.1/S2‬‬ ‫‪n.o.‬‬ ‫‪٢‬‬
‫أﺳﻢ اﻟﻤﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ‬ ‫ﻧﻮع اﻟﻤﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ‬ ‫ﻋﺪد اﻟﻤﺆﻗﺘﺎت اﻟﺰﻣﻨﻴﺔ‬
‫‪T32‬‬ ‫‪TON‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﻤﺘﻐﻴﺮات‬ ‫ﻧﻮع اﻟﻤﺘﻐﻴﺮات‬ ‫ﻋﺪد اﻟﻤﺘﻐﻴﺮات‬
‫‪VB0‬‬ ‫‪Byte‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺘﺮﺣﻴﻞ‬ ‫ﻧﻮع اﻟﺘﺮﺣﻴﻞ‬ ‫ﻋﺪد اﻟﺘﺮﺣﻴﻞ‬
‫‪VB0‬‬ ‫‪SHL_B‬‬ ‫‪١‬‬
‫‪VB0‬‬ ‫‪SHR_B‬‬ ‫‪٢‬‬
‫أﺳﻢ ﻣﻔﺎﺗﻴﺢ اﻟﻤﻘﺎرﻧﺔ‬ ‫ﻧﻮع ﻣﻔﺎﺗﻴﺢ اﻟﻤﻘﺎرﻧﺔ‬ ‫ﻋﺪد ﻣﻔﺎﺗﻴﺢ اﻟﻤﻘﺎرﻧﺔ‬
‫‪VB0‬‬ ‫‪==B‬‬ ‫‪١‬‬
‫أﺳﻢ اﻟﺨﺮج‬ ‫ﻧﻮع اﻟﺨﺮج‬ ‫ﻋﺪد اﻟﺨﺮج‬
‫‪Q0.0/K1M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪١‬‬
‫‪Q1.1/K2M‬‬ ‫ﻛﻮﻧﺘﻜﺘﻮر‬ ‫‪٢‬‬

‫‪180‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫‪181‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﱰﺣﻴﻞ واﻟﺪوران‬

‫اﻟﺸﺮح‪:‬‬

‫‪:Network1‬‬
‫ﺳﻮف ﻳﻌﻤﻞ اﻟﺴﲑ ﻃﺎﳌﺎ ﻗﻴﻤﺔ اﻟـ ‪ VB0‬ﳐﺘﻠﻔﺔ ﻋﻦ ‪.١٦‬‬

‫‪:Network2‬‬
‫ﰱ أول ‪ Cycle‬ﺳﻮف ﺗﻜﻮن ﻗﻴﻤﺔ ‪ VB0‬ﻫﻰ ‪ ١‬أى أن ﻗﻴﻤﺔ ‪ V0.0‬ﻫﻲ ‪.١‬‬

‫‪:Network3‬‬
‫ﻛﻞ ﻣﺮة ﲤﺮ اﻟﻠﻤﺒﺔ أﻣﺎم اﳊﺴﺎس ﺳﻮف ﻳﺘﻢ ﺗﻄﺒﻴﻖ ﻣﺒﺪأ ﺗﺮﺣﻴﻞ اﻟـ ‪ bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪ Byte VB0‬ﻟﻠﻴﺴﺎر‪.‬‬

‫‪:Network4‬‬
‫ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﻗﻴﻤﺔ اﻟـ ‪ VB0‬ﻫﻰ ‪ ١٦‬ﻫﺬا ﻳﻌﲎ أﻧﻪ ﺗﻮﺟﺪ اﻵن ﳌﺒﺔ أﻣﺎم ﻣﻜﻴﻨﺔ اﻟﻠﺤﺎم‪.‬‬

‫‪:Network5‬‬
‫ﺳﻮف ﻳﻌﻤﻞ اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﻟﻜﻰ ﻳﻘﻮم ﺑﻔﺼﻞ ﻣﻜﻴﻨﺔ اﻟﻠﺤﺎم ﺗﻠﻘﺎﺋﻴﺎً‪.‬‬

‫‪:Network6‬‬
‫ﻓﻴﻘﻮم اﳌﺆﻗﺖ اﻟﺰﻣﲎ ﺑﱰﺣﻴﻞ اﻟـ ‪ bits‬اﳋﺎﺻﺔ ﺑﺎﻟـ ‪ Byte VB0‬ﻟﻠﻴﻤﲔ ﻓﻴﻌﻤﻞ اﻟﺴﲑ اﻟﺬى ﳛﻤﻞ اﻟﻠﻤﺒﺎت ﻣﺮة‬
‫أﺧﺮى‪ ,‬وﻫﻜﺬا‪.‬‬

‫‪182‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻼﻣﺎت‬

‫اﻟﺒﺎب اﻟﺜﺎﻟﺚ ﻋﺸﺮ‬

‫اﻟﻌﻼﻣﺎت‬
‫• ﺷﺮح اﻟﻌـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻼﻣﺎت‪.‬‬

‫• اﻟﻬﺪف ﻣﻦ اﺳﺘﺨﺪام اﻟﻌ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﻼﻣﺎت‪.‬‬

‫• ﻛﻴﻔﻴﺔ اﻟﺘﻨﻘﻞ ﺑﻴﻦ اﻷﻓـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺮع ﺑﺴﺮﻋﺔ‪.‬‬

‫• اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻊ اﻟﻌ ـ ـ ــﻼﻣﺎت‪.‬‬

‫• ﺗﻤـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــﺎرﻳﻦ ﻋﻤﻠﻴﺔ ﻟﻠﺘﻮﺿﻴﺢ‪.‬‬

‫‪183‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻼﻣﺎت‬

‫اﻟﻌﻼﻣﺎت‪:‬‬
‫ﺗﺴﺘﺨﺪم اﻟﻌﻼﻣﺎت ﻟﺘﻤﻴﺰ اﻷﻓﺮع ﻋﻦ ﺑﻌﻀﻬﺎ و ﻟﻠﺘﻨﻘﻞ ﻣﻦ ﻓﺮع إﱃ أﺧﺮ ﺑﺴﻬﻮﻟﺔ ﺧﺎﺻﺔ ﰱ اﻟﱪاﻣﺞ اﻟﻜﺒﲑة ﻋﻨﺪﻣﺎ‬
‫ﺗﻜﻮن ﻫﻨﺎك ﻓﺮوع ﺑﺮﳎﺔ ﻣﺮﺗﺒﻄﺔ ﺑﺒﻌﻀﻬﺎ و ﰱ ﻧﻔﺲ اﻟﻮﻗﺖ ﺗﺒﻌﺪ ﻋﻦ ﺑﻌﻀﻬﺎ ﻣﻦ ﺣﻴﺚ ﺗﻮاﺟﺪﻫﺎ ﰱ اﻟﱪﻧﺎﻣﺞ‪ ,‬ﻗﺪ‬
‫ﳛﺪث ﰱ أى ﺑﺮﻧﺎﻣﺞ إﱃ أن ﻧﻀﻄﺮ إﱃ ﺗﻐﲑ ﺗﺮﺗﻴﺐ أﻣﺎﻛﻦ أﻓﺮع اﻟﱪﳎﺔ ﺣﱴ ﻳﻌﻤﻞ اﻟﱪﻧﺎﻣﺞ ﺑﺼﻮرة ﺻﺤﻴﺤﺔ‬
‫وﻟﻜﻦ ﺣﲔ ﻳﺘﻄﻠﺐ اﳌﻮﺿﻮع إﱃ اﻟﻌﻮدة ﰱ اﳌﺴﺘﻘﺒﻞ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﻧﻔﺲ اﻟﱪﻧﺎﻣﺞ ﻣﺮة أﺧﺮى ﻧﻜﻮن ﱂ ﻧﻌﺪ ﻧﺘﺬﻛﺮ‬
‫ﺑﻌﺪ أى ﻣﻦ أﻓﺮع اﻟﱪﳎﺔ ﻣﺮﺗﺒﻄﺔ ﺑﺒﻌﻀﻬﺎ وﻫﺬا ﻳﺘﻄﻠﺐ وﻗﺖ ﻛﺒﲑ ﻹﻋﺎدة ﻗﺮاءة اﻟﱪﻧﺎﻣﺞ ﺑﺎﻟﻜﺎﻣﻞ ﻣﻦ اﻟﺒﺪاﻳﺔ‪,‬‬
‫اﻷﻣﺮ اﻟﺬى ﻛﺎن ﳝﻜﻦ ﺣﻠﻪ ﻣﻦ اﻟﺒﺪاﻳﺔ ﰱ ﺣﺎﻟﻪ ﰎ اﺳﺘﺨﺪام اﻟﻌﻼﻣﺎت ﻛﻤﺎ ﺳﻨﻮﺿﺢ اﻵن‪.‬‬

‫اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﺴﺘﺨﺪﻣﺔ‪:‬‬

‫‪ -۱‬ﻣﻔﺘﺎح وﺿﻊ اﻟﻌﻼﻣﺎت ‪Toggle bookmark‬‬


‫ﺣﻴﺚ ﻳﺘﻢ اﻟﻮﻗﻮف ﻋﻠﻰ اﻟﻔﺮع اﳌﺮاد ﰒ اﻟﻀﻐﻂ ﻋﻠﻰ اﳌﻔﺘﺎح اﳋﺎص ﺑﻮﺿﻊ اﻟﻌﻼﻣﺎت‪.‬‬

‫‪ -٢‬ﻣﻔﺘﺎح ﻟﻠﺘﻨﻘﻞ ﻟﻠﻌﻼﻣﺎت اﻟﺘﺎﻟﻴﺔ ‪Next bookmark‬‬


‫ﺣﻴﺚ ﻳﺘﻢ اﻟﺘﻨﻘﻞ ﻟﻺﻣﺎم ﻣﺒﺎﺷﺮاً إﱃ اﻟﻔﺮع اﶈﺪد دون ﺿﺮورة اﳌﺮور ﻋﻠﻰ ﺑﺎﻗﻰ اﻷﻓﺮع‪.‬‬

‫‪ -٣‬ﻣﻔﺘﺎح ﻟﻠﺘﻨﻘﻞ ﻟﻠﻌﻼﻣﺎت اﻟﺴﺎﺑﻘﺔ ‪Previous bookmark‬‬


‫ﺣﻴﺚ ﻳﺘﻢ اﻟﺘﻨﻘﻞ ﻟﻠﺨﻠﻒ ﻣﺒﺎﺷﺮاً إﱃ اﻟﻔﺮع اﶈﺪد دون ﺿﺮورة اﳌﺮور ﻋﻠﻰ ﺑﺎﻗﻰ اﻷﻓﺮع‪.‬‬

‫‪ -٤‬ﻣﻔﺘﺎح ﺣﺬف ﲨﻴﻊ اﻟﻌﻼﻣﺎت ‪Remove all bookmarks‬‬


‫ﺣﻴﺚ ﻳﺘﻢ ﺣﺬف ﲨﻴﻊ اﻟﻌﻼﻣﺎت ﻣﻦ ﲨﻴﻊ اﻷﻓﺮع اﳌﻮﺟﻮدة ﺑﺎﻟﱪﻧﺎﻣﺞ‪.‬‬

‫اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻠﻌﻼﻣﺎت‪ ,‬ﻟﻠـ ‪:Bookmarks‬‬

‫‪184‬‬
‫ﺑﺮﻣﺠﺔ اﻟﺘﺤﻜﻢ اﻟﻤﻨﻄﻘﻴﺔ – اﻟﻌﻼﻣﺎت‬

‫اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫ﺗﻮﺿﻴﺢ‪:‬‬
‫ﻟﻴﺲ اﻟﻔﻜﺮة ﰱ اﻟﱪﻧﺎﻣﺞ ﺑﻞ اﻟﻔﻜﺮة اﻧﻪ ﳝﻜﻦ أن ﻳﺘﻢ اﻟﺘﻨﻘﻞ ﻣﻦ اﻟﻔﺮع اﻟﺜﺎﱏ إﱃ اﻟﻔﺮع اﳋﻤﺴﲔ ﰱ اﳊﺎل‪ ,‬ﻓﺒﺎﻟﺮﻏﻢ‬
‫ﻣﻦ أن اﻟﻔﺮع اﳋﻤﺴﲔ ﳛﺘﻮى ﻋﻠﻰ اﳋﺮج اﻟﺬى ﻳﻌﻤﻞ ﺑﻮاﺳﻄﺔ اﳌﺆﻗﺖ اﻟﺰﻣﲎ اﳌﺘﻮاﺟﺪ ﰱ اﻟﻔﺮع اﻟﺜﺎﱏ وﻟﻜﻦ‬
‫ﻟﻈﺮوف ذات ﻋﻼﻗﺔ ﺑﺎﻷوﻟﻮﻳﺎت ﱂ ﻧﺘﻤﻜﻦ ﻣﻦ وﺿﻌﻬﻤﺎ ﺑﺎﻟﻘﺮب ﻣﻦ ﺑﻌﻀﻬﻤﺎ وﻟﻜﻦ ﰎ ﺣﻞ اﳌﺸﻜﻠﺔ ﺑﺎﺳﺘﺨﺪام‬
‫اﻟﻌﻼﻣﺎت ‪.Bookmarks‬‬

‫ﺑﱰﺗﻴﺐ ﻋﻨﺪ اﻷﻓﺮع اﳌﺮﺗﺒﻄﺔ ﺑﺒﻌﻀﻬﺎ‪.‬‬ ‫ﻳﺘﻢ وﺿﻊ ﻫﺬﻩ اﻟﻌﻼﻣﺔ‬

‫‪185‬‬
‫ﺍﻟﻔﻬﺮﺱ‬

‫‪٥‬‬ ‫‪.............................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻷﻭﻝ "ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳊﺴﺎﺑﻴﺔ"‬


‫‪٦‬‬ ‫‪.............................................................‬‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳊﺴﺎﺑﻴﺔ ﻟﻸﺭﻗﺎﻡ ﺍﻟﺼﺤﻴﺤﺔ‬
‫‪۸‬‬ ‫ﻣﻼﺣﻈﺎﺕ ﻫﺎﻣﺔ ﻋﻠﻰ ﺍﻷﺭﻗﺎﻡ ﺍﻟﺼﺤﻴﺤﺔ ‪........................................................‬‬

‫‪۱٣‬‬ ‫ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ ﻋﻠﻰ ﺍﻷﺭﻗﺎﻡ ﺍﻟﺼﺤﻴﺤﺔ ‪.............................................................‬‬

‫‪٢٢‬‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳊﺴﺎﺑﻴﺔ ﻟﻸﺭﻗﺎﻡ ﺍﻟﻌﺸﺮﻳﺔ ‪...............................................................‬‬

‫‪٢٣‬‬ ‫ﻣﻼﺣﻈﺎﺕ ﻫﺎﻣﺔ ﻋﻠﻰ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻌﺸﺮﻳﺔ ‪...........................................................‬‬

‫‪٢٦‬‬ ‫ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ ﻋﻠﻰ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻌﺸﺮﻳﺔ ‪................................................................‬‬

‫‪--------------------------‬‬
‫‪٣٥‬‬ ‫‪..................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺜﺎﱐ "ﺟﺪﻭﻝ ﺍﳊﺎﻻﺕ"‬
‫‪٣۸‬‬ ‫‪............................................................‬‬ ‫ﻣﻔﺎﺗﻴﺢ ﻫﺎﻣﺔ ﺑﺎﻟﻨﺴﺒﺔ ﳉﺪﻭﻝ ﺍﳊﺎﻻﺕ‬
‫‪٣٩‬‬ ‫ﻃﺮﻳﻘﺔ ﺇﻇﻬﺎﺭ ﺣﺎﻟﺔ ﺍﻟﻌﻨﺎﻭﻳﻦ ‪..........................................................................‬‬

‫‪٤٢‬‬ ‫ﺍﻟﺘﻌﺪﻳﻞ ﰱ ﺍﻟﱪﻧﺎﻣﺞ ﺑﻮﺍﺳﻄﺔ ‪..................................................... write all‬‬

‫‪٤٤‬‬ ‫ﲤﺮﻳﻦ ﺗﻄﺒﻴﻘﻰ ﻋﻠﻰ ‪.................................................................. write all‬‬

‫‪٥٠‬‬ ‫ﺍﻟﺘﻌﺪﻳﻞ ﰱ ﺍﻟﱪﻧﺎﻣﺞ ﺑﻮﺍﺳﻄﺔ ‪............................................................ force‬‬

‫‪٥٢‬‬ ‫ﲤﺮﻳﻦ ﺗﻄﺒﻴﻘﻰ ﻋﻠﻰ ‪......................................................................... force‬‬

‫‪٥٧‬‬ ‫ﺍﻟﺮﺳﻢ ﺍﻟﺘﺨﻄﻴﻄﻰ ‪........................................................................ Trend‬‬

‫‪--------------------------‬‬
‫‪٥٩‬‬ ‫‪.................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺜﺎﻟﺚ "ﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ"‬
‫‪٦۱‬‬ ‫ﺍﻷﺧﻄﺎﺀ ﺍﳌﺘﻌﻠﻘﺔ ﲜﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ‬
‫‪....................................................................‬‬

‫‪٦٣‬‬ ‫ﺍﳌﻔﺎﺗﻴﺢ ﺍﳌﺴﺘﺨﺪﻣﺔ ﲜﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ ‪................................................................‬‬

‫‪٦٤‬‬ ‫ﻃﺮﻕ ﺍﺳﺘﺨﺪﺍﻡ ﺻﻔﺤﺔ ﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ ‪..........................................................‬‬


‫ﺍﻟﻔﻬﺮﺱ‬

‫‪٦٦‬‬ ‫ﺧﺼﺎﺋﺺ ﺻﻔﺤﺔ ﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ‬


‫‪..................................................................‬‬

‫‪--------------------------‬‬
‫‪٦٩‬‬ ‫‪.................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺮﺍﺑﻊ "ﺻﻔﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ"‬
‫‪٧٠‬‬ ‫‪............................................................................‬‬ ‫ﺍﺳﺘﺨﺪﺍﻡ ﺻﻔﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ‬
‫‪٧٢‬‬ ‫ﺍﳌﻔﺎﺗﻴﺢ ﺍﳌﺴﺘﺨﺪﻣﺔ ﺑﺼﻔﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪.............................................................‬‬

‫‪٧٢‬‬ ‫ﲤﺮﻳﻦ ﻋﻤﻠﻰ ﻋﻠﻰ ﺻﻔﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪................................................................‬‬

‫‪٧٦‬‬ ‫ﺃﺧﻄﺎﺀ ﺻﻔﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪...............................................................................‬‬

‫‪--------------------------‬‬
‫‪٧٧‬‬ ‫‪.................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﳋﺎﻣﺲ "ﺟﺪﻭﻝ ﺍﳌﺮﺟﻊ"‬
‫‪٧۸‬‬ ‫‪..........................................................‬‬ ‫ﻃﺮﻕ ﺍﺳﺘﺨﺪﺍﻡ ﺻﻔﺤﺔ ﺟﺪﻭﻝ ﺍﳌﺮﺟﻊ‬
‫‪٧٩‬‬ ‫ﺷﻜﻞ ﺻﻔﺤﺔ ﺟﺪﻭﻝ ﺍﳌﺮﺟﻊ ‪.......................................................................‬‬

‫‪۸۱‬‬ ‫ﺍﳌﻔﺎﺗﻴﺢ ﺍﳌﺴﺘﺨﺪﻣﺔ ﲜﺪﻭﻝ ﺍﳌﺮﺟﻊ ‪................................................................‬‬

‫‪۸۱‬‬ ‫ﲤﺮﻳﻦ ﻋﻤﻠﻰ ﻋﻠﻰ ﺻﻔﺤﺔ ﺟﺪﻭﻝ ﺍﳌﺮﺟﻊ ‪.......................................................‬‬

‫‪--------------------------‬‬
‫‪۸٧‬‬ ‫‪.............................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺴﺎﺩﺱ "ﺍﻟﱪﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ"‬
‫‪۸٩‬‬ ‫‪.........................................................‬‬ ‫ﻃﺮﻕ ﺍﺳﺘﺨﺪﺍﻡ ﺻﻔﺤﺔ ﺍﻟﱪﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ‬
‫‪٩٠‬‬ ‫ﺷﺮﺡ ﺟﺪﻭﻝ ﺍﻟـ ‪................................................................. var table‬‬

‫‪٩٢‬‬ ‫ﺍﻷﺧﻄﺎﺀ ﺍﳌﺘﻌﻠﻘﺔ ﺑﺼﻔﺤﺔ ﺍﻟﱪﺍﻣﺞ ﺍﻟﻔﺮﻉ ‪........................................................‬‬

‫‪٩٣‬‬ ‫ﺍﳌﻔﺎﺗﻴﺢ ﺍﳌﺴﺘﺨﺪﻣﺔ ﺑﺼﻔﺤﺔ ﺍﻟﱪﺍﻣﺞ ﺍﻟﻔﺮﻉ ‪....................................................‬‬

‫‪٩٣‬‬ ‫ﲤﺮﻳﻦ ﻋﻤﻠﻰ ﻋﻠﻰ ﺻﻔﺤﺔ ﺍﻟﱪﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ‪......................................................‬‬

‫‪--------------------------‬‬
‫ﺍﻟﻔﻬﺮﺱ‬

‫‪٩٩‬‬ ‫‪.........................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺴﺎﺑﻊ "ﺍﻟﺒﻮﺍﺑﺎﺕ"‬


‫‪۱٠٠‬‬ ‫‪...........................................................................................‬‬ ‫ﺃﻧﻮﺍﻉ ﺍﻟﺒﻮﺍﺑﺎﺕ‬
‫‪۱٠٢‬‬ ‫ﺷﺮﺡ ﺍﻟﺒﻮﺍﺑﺎﺕ ‪...........................................................................................‬‬

‫‪۱٠٩‬‬ ‫ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﻮﺍﺑﺎﺕ ‪.................................................................‬‬

‫‪--------------------------‬‬
‫‪۱۱٣‬‬ ‫‪..................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺜﺎﻣﻦ "ﺍﻟﻨﻈﻢ ﺍﻟﻌﻤﻠﻴﺔ"‬
‫‪۱۱٤‬‬ ‫ﺷﺮﺡ ﺍﻟﻨﻈﻢ ﺍﻟﻌﻤﻠﻴﺔ‬
‫‪....................................................................................‬‬

‫‪۱۱٥‬‬ ‫ﺍﳌﻔﺎﺗﻴﺢ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰱ ﺻﻔﺤﺔ ﺍﻟﻨﻈﻢ ﺍﻟﻌﻤﻠﻴﺔ ‪..................................................‬‬

‫‪۱۱٥‬‬ ‫ﺍﻷﺧﻄﺎﺀ ﺍﳌﻤﻜﻦ ﺍﻟﺘﻌﺮﺽ ﳍﺎ ‪........................................................................‬‬

‫‪۱۱٦‬‬ ‫ﺻﻔﺤﺔ ﺍﻟـ ‪........................................... Communication Ports‬‬

‫‪۱۱۸‬‬ ‫ﺻﻔﺤﺔ ‪............................................................ Retentive Ranges‬‬

‫‪۱٢٠‬‬ ‫ﺻﻔﺤﺔ ‪............................................................................... Password‬‬

‫‪۱٢۱‬‬ ‫ﺻﻔﺤﺔ ‪.................................................... Output Tables digital‬‬

‫‪۱٢٣‬‬ ‫ﺻﻔﺤﺔ ‪.................................................... Output Tables analog‬‬

‫‪۱٢٤‬‬ ‫ﺻﻔﺤﺔ ‪........................................................ Input Filters digital‬‬

‫‪۱٢٦‬‬ ‫ﺻﻔﺤﺔ ‪........................................................ Input Filters analog‬‬

‫‪۱٢٧‬‬ ‫ﺻﻔﺤﺔ ﺍﻟـ ‪...................................................... Pulse chatch Bits‬‬

‫‪۱٢٩‬‬ ‫ﺻﻔﺤﺔ ﺍﻟـ ‪.................................................... Background Time‬‬

‫‪۱٣٠‬‬ ‫ﺻﻔﺤﺔ ﺍﻟـ ‪................................................... EM Configurations‬‬

‫‪۱٣۱‬‬ ‫ﺻﻔﺤﺔ ﺍﻟـ ‪.............................................................. Configure led‬‬

‫‪۱٣٢‬‬ ‫ﺻﻔﺤﺔ ﺍﻟـ ‪...................................................... Increase Memory‬‬


‫ﺍﻟﻔﻬﺮﺱ‬

‫‪۱٣٥‬‬ ‫‪.........................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺘﺎﺳﻊ "ﺍﻟﺮﻳﻠﻴﻬﺎﺕ ﺍﳋﺎﺻﺔ"‬


‫‪۱٣٦‬‬ ‫ﺍﻟﺮﻳﻠﻴﻬﺎﺕ ﺍﳋﺎﺻﺔ‬
‫‪.......................................................................................‬‬

‫‪۱٣٧‬‬ ‫ﺷﺮﺡ ﻟﺒﻌﺾ ﻣﻔﺎﺗﻴﺢ ﺍﻟﺮﻳﻠﻴﻬﺎﺕ ﺍﳋﺎﺻﺔ ‪.........................................................‬‬

‫‪۱٣۸‬‬ ‫ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺮﻳﻠﻴﻬﺎﺕ ﺍﳋﺎﺻﺔ ‪....................................................‬‬

‫‪--------------------------‬‬
‫‪۱٤٥‬‬ ‫‪.............................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﻌﺎﺷﺮ "ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻜﻢ "‬
‫‪۱٤٦‬‬ ‫ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻜﻢ‬
‫‪............................................................................................‬‬

‫‪۱٤۸‬‬ ‫ﺷﺮﺡ ﺃﻣﺮ ‪...................................................................................... END‬‬

‫‪۱٥٠‬‬ ‫ﺷﺮﺡ ﺃﻣﺮ ‪.................................................................................... STOP‬‬

‫‪۱٥۱‬‬ ‫ﺷﺮﺡ ﺃﻣﺮ ‪...................................................................... DIAG-LED‬‬

‫‪۱٥٢‬‬ ‫ﺷﺮﺡ ﺃﻣﺮ ‪........................................................................... JMP-LBL‬‬

‫‪۱٥٦‬‬ ‫ﺷﺮﺡ ﺃﻣﺮ ‪....................................................................................... RET‬‬

‫‪۱٥۸‬‬ ‫ﺷﺮﺡ ﺃﻣﺮ ‪..................................................................... FOR-NEXT‬‬

‫‪--------------------------‬‬
‫‪۱٦۱‬‬ ‫‪................................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﳊﺎﺩﻯ ﻋﺸﺮ "ﺍﶈﻮﻻﺕ"‬
‫‪۱٦٢‬‬ ‫ﺍﶈﻮﻻﺕ‬
‫‪.....................................................................................................‬‬

‫‪۱٦٣‬‬ ‫ﺷﺮﺡ ﺍﻟﺘﺤﻮﻳﻼﺕ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰱ ﺍﻟﱪﻧﺎﻣﺞ ‪......................................................‬‬

‫‪۱٦٧‬‬ ‫ﺍﻟﻨﻈﺎﻡ ﺍﳌﺴﺘﺨﺪﻡ ﻟﻌﺮﺽ ﺍﻟﻘﻴﻤﺔ ‪.....................................................................‬‬

‫‪۱٦۸‬‬ ‫ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺰﻻﺕ ‪..................................................................‬‬

‫‪۱٧٢‬‬ ‫ﺍﻟﻔﺎﺋﺪﺓ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﶈﻮﻻﺕ ‪......................................................................‬‬

‫‪۱٧٣‬‬ ‫‪..................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺜﺎﱏ ﻋﺸﺮ "ﺍﻟﺘﺮﺣﻴﻞ ﻭ ﺍﻟﺪﻭﺭﺍﻥ"‬


‫ﺍﻟﻔﻬﺮﺱ‬

‫‪۱٧٤‬‬ ‫ﺍﻟﺘﺮﺣﻴﻞ ﻭ ﺍﻟﺪﻭﺭﺍﻥ‬


‫‪......................................................................................‬‬

‫‪۱٧٧‬‬ ‫ﺷﺮﺡ ﺃﻧﻮﺍﻉ ﺍﻟﺘﺮﺣﻴﻞ ﻭﺍﻟﺪﻭﺭﺍﻥ ‪....................................................................‬‬

‫‪۱٧٩‬‬ ‫ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻨﻮﻋﲔ ‪....................................................................‬‬

‫‪--------------------------‬‬
‫‪۱۸٣‬‬ ‫‪..............................................................‬‬ ‫ﺍﻟﺒﺎﺏ ﺍﻟﺜﺎﻟﺚ ﻋﺸﺮ "ﺍﻟﻌﻼﻣﺎﺕ"‬
‫‪۱۸٤‬‬ ‫ﺍﻟﻌﻼﻣﺎﺕ‬
‫‪...................................................................................................‬‬

‫‪۱۸٤‬‬ ‫ﺍﳌﻔﺎﺗﻴﺢ ﺍﳌﺴﺘﺨﺪﻣﺔ ﻣﻊ ﺍﻟﻌﻼﻣﺎﺕ ‪..................................................................‬‬

‫‪۱۸٥‬‬ ‫ﺗﻮﺿﻴﺢ ﻋﻤﻠﻰ ﻋﻠﻰ ﺍﻟﻌﻼﻣﺎﺕ ‪......................................................................‬‬


‫ﺍﻟﻜﺘﺐ ﺍﻟﺘﻲ ﺻﺪﺭﺕ ﻋﻦ ﻣﻌﻬﺪ ﺍﻟﺴﺎﻟﺰﻳﺎﻥ ﺍﻹﻳﻄﺎﻟﻰ‬
‫"ﺩﻭﻥ ﺑﻮﺳﻜﻮ"‬

‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﳏﺮﻛﺎﺕ‪ ,‬ﻣﻮﻟﺪﺍﺕ ﻭ ﳏﻮﻻﺕ ﺍﻟﺘﻴﺎﺭ ﺍﳌﺘﺮﺩﺩ‬


‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﺩﻭﺍﺋﺮ ﺍﻟﺘﺤﻜﻢ ﺍﻵﱄ ﺍﳉﺰﺀ ﺍﻷﻭﻝ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﺩﻭﺍﺋﺮ ﺍﻟﺘﺤﻜﻢ ﺍﻵﱄ ﺍﳉﺰﺀ ﺍﻟﺜﺎﱐ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﺍﻟﻐﺴﺎﻟﺔ ﺍﻟﻔﻮﻝ ﺃﻭﺗﻮﻣﺎﺗﻚ ﺍﳉﺰﺀ ﺍﻷﻭﻝ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﺍﻟﻐﺴﺎﻟﺔ ﺍﻟﻔﻮﻝ ﺃﻭﺗﻮﻣﺎﺗﻚ ﺍﳉﺰﺀ ﺍﻟﺜﺎﱐ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﺍﻟﺪﻭﺍﺋﺮ ﺍﻟﻌﻤﻠﻴﺔ ﻟﻠﻀﻐﻮﻁ ﺍﳍﻮﺍﺋﻴﺔ ﻭ ﺍﻟﻜﻬﺮﻭﻫﻮﺍﺋﻴﺔ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﻏﺴﺎﻟﺔ ﺍﻷﻃﺒﺎﻕ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﺯﺍﻧﻮﺳﻰ ﺍﳌﻮﺩﻳﻼﺕ ﺍﻟﻘﺪﳝﺔ ‪18-16-14‬ﺑﺮﻭﺟﺮﺍﻡ‬
‫ﻭﺟﻴﻪ ﺟﺮﺟﺲ‬ ‫ ﻣﻮﺩﻳﻼﺕ ﺍﻟﻐﺴﺎﻟﺔ ﻛﺮﻳﺎﺯﻯ‬
‫ﻧﺒﻴﻞ ﺭﺯﻕ‬ ‫ ﺍﻟﺪﻭﺍﺋﺮ ﺍﻟﻜﻬﺮﺑﺎﺋﻴﺔ ﻟﻠﺘﺮﻛﻴﺒﺎﺕ ﺍﳌﱰﻟﻴﺔ‬
‫ﻧﺒﻴﻞ ﺭﺯﻕ‬ ‫ ﺻﻴﺎﻧﺔ ﻭﺇﺻﻼﺡ ﺍﻷﺟﻬﺰﺓ ﺍﳌﱰﻟﻴﺔ‬
‫ﺇﻣﻴﻞ ﻓﺘﺢ ﺍﷲ‬ ‫ ﺃﻓﻜﺎﺭ ﺍﻟﺘﻜﻴﻒ ﻭ ﺍﻟﺘﱪﻳﺪ ﻟﻠﺪﻭﺍﺋﺮ ﺍﳌﻴﻜﺎﻧﻴﻜﻴﺔ‬
‫ﺇﻣﻴﻞ ﻓﺘﺢ ﺍﷲ‬ ‫ ﺃﻓﻜﺎﺭ ﺍﻟﺘﻜﻴﻒ ﻭ ﺍﻟﺘﱪﻳﺪ ﻟﻠﺪﻭﺍﺋﺮ ﺍﻟﻜﻬﺮﺑﺎﺋﻴﺔ‬
‫ﺇﻣﻴﻞ ﻓﺘﺢ ﺍﷲ‬ ‫ ﺃﻓﻜﺎﺭ ﺍﻟﺘﻜﻴﻒ ﻭ ﺍﻟﺘﱪﻳﺪ ﺍﳋﺪﻣﺔ ﻭﺍﻷﻋﻄﺎﻝ‬
‫ﺭﳝﻮﻥ ﻛﻤﺎﻝ‬ ‫ ﺑﺮﳎﺔ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻲ ‪ P.L.C.‬ﺍﳉﺰﺀ ﺍﻷﻭﻝ‬
‫ﺭﳝﻮﻥ ﻛﻤﺎﻝ‬ ‫ ﺑﺮﳎﺔ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻲ ‪ P.L.C.‬ﺍﳉﺰﺀ ﺍﻟﺜﺎﱐ‬
‫ﲢﺖ ﺍﻟﺘﺤﻀﲑ‬ ‫ ﺑﺮﳎﺔ ﺍﻟﺘﺤﻜﻢ ﺍﳌﻨﻄﻘﻲ ‪ P.L.C.‬ﺇﻋﻄﺎﻝ ﻭ ﲤﺎﺭﻳﻦ ﻋﻤﻠﻴﺔ‬

You might also like