Download as pdf or txt
Download as pdf or txt
You are on page 1of 60

‫‪MODBUS‬‬ ‫ﺷﺒﻜﻪ‬

‫ﻣﺸﺘﻤﻞ ﺑﺮ ‪:‬‬

‫‪ 1-4‬ﻣﻘﺪﻣﻪ‬

‫‪Modbus RTU/ASCII‬‬ ‫‪2-4‬‬


‫‪ 1-2-4‬ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ‬

‫‪ Modbus‬ﺑﺼﻮرت ‪RS485‬‬ ‫‪ 2-2-4‬اﺗﺼﺎل‬

‫‪ Modbus‬ﺑﺼﻮرت ‪RS232‬‬ ‫‪ 3-2-4‬اﺗﺼﺎل‬

‫‪ 4-2-4‬ﻻﻳﻪ دﻳﺘﺎ ﻟﻴﻨﻚ )ﻻﻳﻪ دوم(‬

‫‪Modbus Plus‬‬ ‫‪3-4‬‬


‫)‪ (Logic‬در ﺷﺒﻜﻪ ‪Modbus Plus‬‬ ‫‪ 1-3-4‬ارﺗﺒﺎط ﻣﻨﻄﻘﻲ‬

‫‪Modbus Plus‬‬ ‫‪ 2-3-4‬ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ ﺷﺒﻜﻪ‬

‫‪Modbus TCP/IP‬‬ ‫‪4-4‬‬

‫ﻣﺤﻤﺪرﺿﺎ ﻣﺎﻫﺮ‬
‫‪1384‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪2‬‬

‫‪ 1-4‬ﻣﻘﺪﻣﻪ‬
‫‪Schneider Electric‬‬ ‫‪ Modbus‬ﻳﻚ ﭘﺮوﺗﻜﻞ ارﺗﺒﺎﻃﻲ اﺳﺖ و اﺑﺘﺪا در ﺳﺎل ‪ 1979‬ﺗﻮﺳﻂ ‪ Modicon‬ﻛﻪ اﻣﺮوزه‬
‫آﻧﺮا در ﺑﺮ ﮔﺮﻓﺘﻪ ﻋﺮﺿﻪ ﺷﺪ‪ .‬ﻛﺎرﺑﺮد اوﻟﻴﻪ آن ﺑﺮاي اﺳﺘﻔﺎده در ‪ PLC‬ﻫﺎ ﺑﻮد وﻟﻲ ﺑﺘﺪرﻳﺞ ﺑﻌﻨﻮان ﻳﻚ اﺳﺘﺎﻧﺪارد‬
‫‪Modbus‬‬ ‫ارﺗﺒﺎﻃﻲ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪ و ﺑﺴﻴﺎري از ﺳﺎزﻧﺪﮔﺎن ﺗﺠﻬﻴﺰات اﺗﻮﻣﺎﺳﻴﻮن آن را ﭘﺸﺘﻴﺒﺎﻧﻲ ﻛﺮدﻧﺪ ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ‬
‫ﺑﺼﻮرت ﻳﻚ اﺳﺘﺎﻧﺪارد ﺑﺎز در آﻣﺪ ﺑﮕﻮﻧﻪ اي ﻛﻪ ﻣﺤﺼﻮﻻت ﺳﺎزﻧﺪﮔﺎن ﻣﺨﺘﻠﻒ ﺑﺴﻬﻮﻟﺖ ﺗﻮﺳﻂ اﻳﻦ ﭘﺮوﺗﻜﻞ ﺑﺎ‬
‫ﻳﻜﺪﻳﮕﺮ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻛﺮدﻧﺪ‪ .‬ﺳﺎزﻧﺪﮔﺎن وﺳﺎﻳﻞ ﻛﻮﭼﻚ ﻧﻴﺰ ﺗﺮﺟﻴﺢ دادﻧﺪ اﻳﻦ ﭘﺮوﺗﻜﻞ را ﺑﺎ ارﺗﺒﺎط ‪ RS232‬ﻳﺎ‬
‫‪ RS485‬روي وﺳﺎﻳﻞ ﺧﻮد ﺑﻜﺎر ﺑﺒﺮﻧﺪ ﺗﺎ اﺳﺘﻔﺎده از آﻧﻬﺎ در ﭘﺮوژه ﻫﺎي ﺑﺰرگ ﻣﻴﺴﺮ ﮔﺮدد‪.‬‬
‫‪ Modbus‬ﺑﻪ دﻟﻴﻞ اﺳﺘﻔﺎده از ﻟﻴﻨﻚ ﻫﺎي ﺳﺮﻳﺎل ‪ RS232/RS485‬داراي ﻣﺤﺪودﻳﺖ ﻫﺎي ﺷﺪ ﻛﻪ ﺑﻪ ﺑﺮﺧﻲ از آﻧﻬﺎ‬
‫اﺷﺎره ﻣﻴﮕﺮدد‪:‬‬
‫ﻛﻨﺪ ﺑﻮدن ﺧﻄﻮط ﺳﺮﻳﺎل ﻛﻪ ﺑﻴﻦ ‪ 9600‬ﺗﺎ ‪115000‬ﺑﻴﺖ در ﺛﺎﻧﻴﻪ ﻛﺎر ﻣﻴﻜﻨﻨﺪ ﻳﻌﻨﻲ در ﻣﺎﻛﺰﻳﻤﻢ ﺣﺎﻟﺖ‬ ‫‪‬‬

‫‪ 0.115 Mbps‬ﻛﻪ اﻳﻦ ﺳﺮﻋﺖ در ﻣﻘﺎﻳﺴﻪ ﺑﺎ ﺷﺒﻜﻪ ﻫﺎي ارﺗﺒﺎﻃﻲ اﻣﺮوزي ﻛﻪ ‪ 100Mbps‬ﻳﺎ ﺣﺘﻲ ﭼﻨﺪ ‪Gbps‬‬

‫ﺳﺮﻋﺖ دارﻧﺪ ﭘﺎﻳﻴﻦ اﺳﺖ‪.‬‬


‫از آﻧﺠﺎ ﻛﻪ ﺗﻮﺳﻂ ‪ RS232‬ﻓﻘﻂ دو وﺳﻴﻠﻪ و ﺗﻮﺳﻂ ‪ RS485‬ﺑﻴﻦ ‪ 20‬ﺗﺎ ‪ 30‬وﺳﻴﻠﻪ اﻣﻜﺎن ارﺗﺒﺎط دارﻧﺪ از‬ ‫‪‬‬

‫اﻳﻨﺮو ﺑﺮاي ارﺗﺒﺎط دادن ﺗﻌﺪاد زﻳﺎدي وﺳﺎﻳﻞ ﻣﺜﻼً ‪ 500‬وﺳﻴﻠﻪ ﻧﻴﺎز ﺑﻪ ارﺗﺒﺎﻃﺎت ﭘﻴﭽﻴﺪه درﺧﺘﻲ ﺷﻜﻞ اﺳﺖ‪.‬‬
‫ارﺗﺒﺎط ﺳﺮﻳﺎل ‪ Modbus‬ﺑﺼﻮرت ‪ Master/Slave‬اﺳﺖ ﺑﺪﻳﻦ ﻣﻌﻨﻲ ﻛﻪ روي ﺑﺎس ﻓﻘﻂ ﻳﻚ وﺳﻴﻠﻪ‬ ‫‪‬‬

‫)‪ (Master‬اﺟﺎزه ﺻﺤﺒﺖ ﺑﺎ ﮔﺮوﻫﻲ از ‪ Slave‬ﻫﺎ را دارد‪.‬‬

‫ﺑﺎ وﺟﻮد اﻳﻦ ﻣﺤﺪودﻳﺖ ﻫﺎ ﭘﺮوﺗﻜﻞ ‪ Modbus‬در ﻋﺮﺻﻪ اﺗﻮﻣﺎﺳﻴﻮن ﺟﺎﻳﮕﺎه وﻳﮋه ﺧﻮد را ﭘﻴﺪا ﻛﺮد‪.‬‬
‫‪3‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﺑﺮﺧﻲ از وﻳﮋﮔﻴﻬﺎي ﭘﺮوﺗﻜﻞ ‪ Modbus‬ﻧﻈﻴﺮ ﻓﺮﻣﺖ ﻓﺮﻳﻢ ﻫﺎ و ﺗﻮاﻟﻲ آﻧﻬﺎ و ﻓﺎﻧﻜﺸﻦ ﻫﺎي ﻛﺎرﺑﺮدي ﻓﻴﻜﺲ ﻫﺴﺘﻨﺪ‬
‫ﺑﺮﺧﻲ دﻳﮕﺮ ﻣﺎﻧﻨﺪ وﺳﻴﻠﻪ و ﻣﺪ اﻧﺘﻘﺎل ﺗﻮﺳﻂ ﻛﺎرﺑﺮ ﻗﺎﺑﻞ اﻧﺘﺨﺎب ﻫﺴﺘﻨﺪ‪.‬اﻳﻦ وﻳﮋﮔﻴﻬﺎ وﻗﺘﻲ ﺳﻴﺴﺘﻢ در ﺣﺎل ﻛﺎر‬
‫اﺳﺖ ﻗﺎﺑﻞ ﺗﻐﻴﻴﺮ ﻧﻤﻲ ﺑﺎﺷﻨﺪ‪.‬‬
‫‪ Modbus‬داراي ﺳﻪ ﻧﺴﺨﻪ اﺻﻠﻲ زﻳﺮ اﺳﺖ ﻛﻪ وﻳﮋﮔﻲ ﻫﺎي آﻧﻬﺎ ﺑﺎ ﻫﻢ ﻣﺘﻔﺎوﺗﻨﺪ‪:‬‬
‫‪ Modbus RTU/ASCII‬ﻛﻪ ﺑﺼﻮرت ﺳﺮﻳﺎل روي ‪ RS485‬ﻳﺎ ‪ RS232‬ﻛﺎر ﻣﻴﻜﻨﺪ‪.‬‬ ‫‪‬‬

‫‪ Modbus TCP/IP‬ﻛﻪ روي اﺗﺮﻧﺖ ﻛﺎر ﻣﻴﻜﻨﺪ‪.‬‬ ‫‪‬‬

‫‪ Modbus Plus‬ﻛﻪ ﺑﺼﻮرت ‪ Token Pass‬و ﺑﺎ ﺳﺮﻋﺖ ﺑﺎﻻ ﻃﺮاﺣﻲ ﺷﺪه اﺳﺖ‪.‬‬ ‫‪‬‬

‫ﺷﻜﻞ زﻳﺮ ﻧﻤﻮﻧﻪ اي از ﺷﺒﻜﻪ ‪ Modbus‬ﻛﻪ در آن ﻫﺮ ﺳﻪ ﻧﻮع ﭘﺮوﺗﻜﻞ ﻓﻮق اﻟﺬﻛﺮ ﺑﻜﺎر رﻓﺘﻪ اﻧﺪ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪:‬‬

‫ﺷﻜﻞ زﻳﺮ ﻣﺪل ‪ OSI‬را ﺑﺮاي اﻧﻮاع ﭘﺮوﺗﻜﻞ ﻫﺎي ‪ Modbus‬ﻧﺸﺎن ﻣﻲ دﻫﺪ‪.‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪4‬‬

‫‪Modbus RTU/ASCII‬‬ ‫‪2-4‬‬


‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ اﺷﺎره ﺷﺪ ﻳﻜﻲ از ﭘﺮوﺗﻜﻞ ﻫﺎي ‪ Modbus‬ﺑﺮاي ﻛﺎرﺑﺮد در ارﺗﺒﺎط ﺳﺮﻳﺎل ﻃﺮاﺣﻲ ﺷﺪه اﺳﺖ‪ .‬اﻳﻦ‬
‫ﭘﺮوﺗﻜﻞ ﻛﻪ ﻧﺴﺨﻪ ﭘﺎﻳﻪ اﺳﺖ از دو ﻣﺪ اﻧﺘﻘﺎل ‪ ASCII‬و ‪ RTU‬اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﺪ‬
‫‪ ASCII‬ﻗﺎﺑﻞ ﺧﻮاﻧﺪن ﻛﻪ ﺑﻌﻨﻮان ﻣﺜﺎل ﺑﺮاي ﺗﺴﺖ ﺑﻜﺎر ﻣﻴﺮود) ﻓﺮﻣﺖ ‪(ASCII‬‬ ‫‪‬‬

‫‪ RTU‬ﻓﺸﺮده و ﺳﺮﻳﻊ ﻛﻪ ﺑﺮاي ﻛﺎر ﻧﺮﻣﺎل ﺑﻜﺎر ﻣﻴﺮود‪) .‬ﻓﺮﻣﺖ ﻫﮕﺰادﺳﻴﻤﺎل(‬ ‫‪‬‬

‫ﻣﺪ ‪ RTU‬ﻛﻪ ﺑﻌﻀﺎً ﺑﻪ آن ‪ Modbus-B‬ﺑﻌﻨﻮان ‪ Modbus Binary‬ﮔﻔﺘﻪ ﻣﻴﺸﻮد ﻣﺪ اﺻﻠﻲ اﺳﺖ‪.‬ﻣﺪ ‪ ASCII‬ﻛﻪ‬
‫ﺑﻌﻀﺎً ﺑﻪ آن ‪ Modbus-A‬ﻧﻴﺰﮔﻔﺘﻪ ﻣﻴﺸﻮد ﺑﺮاي ﺑﺮﺧﻲ ﭘﻴﻐﺎم ﻫﺎ ﺑﻜﺎر ﻣﻴﺮود اﻳﻦ ﭘﻴﻐﺎم ﻫﺎ ﻃﻮل ﺷﺎن دوﺑﺮاﺑﺮ ﭘﻴﻐﺎم ﻫﺎي‬
‫‪ RTU‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫اﻳﻦ ﭘﺮوﺗﻜﻞ از ﻻﻳﻪ ﻫﺎي ‪ 1‬و‪ 2‬و‪ 7‬ﻣﺪل ‪ OSI‬اﺳﺘﻔﺎده ﻣﻴﻜﻨﺪ‪ .‬ﻛﻪ در اﻳﻨﺠﺎ ﺑﻪ ﺗﺸﺮﻳﺢ آﻧﻬﺎ ﻣﻲ ﭘﺮدازﻳﻢ‪.‬‬
‫‪ 1-2-4‬ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ‬
‫در ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ ‪ Modbus‬از ‪ RS232 , RS485‬اﺳﺘﻔﺎده ﻣﻴﻜﻨﺪ ‪ RS232 .‬ﺑﺼﻮرت ﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ ‪ P-t-P‬ﺑﺴﺘﻪ‬
‫ﻣﻴﺸﻮد وﻟﻲ ‪ RS485‬ﻋﻼوه ﺑﺮ ‪ P-t-P‬ﻣﻴﺘﻮاﻧﺪ ﺑﺼﻮرت ‪ Multipoint‬ﻧﻴﺰ ﺑﺴﺘﻪ ﺷﻮد ﻳﻌﻨﻲ ﭼﻨﺪﻳﻦ دﺳﺘﮕﺎه روي ﻳﻚ‬
‫‪5‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﺑﺎس ﻗﺮار ﮔﻴﺮﻧﺪ‪ .‬در اﻳﻨﺤﺎﻟﺖ ﺑﺎس ﻣﻌﻤﻮﻻً ‪ 2‬ﺳﻴﻤﻪ اﺳﺖ اﮔﺮﭼﻪ اﻣﻜﺎن اﺗﺼﺎل ‪ 4‬ﺳﻴﻤﻪ ﻧﻴﺰ وﺟﻮد دارد ﻛﻪ ﺗﺸﺮﻳﺢ‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ Modbus‬ﺑﺼﻮرت ‪RS485‬‬ ‫‪ 2-2-4‬اﺗﺼﺎل‬
‫در اﻳﻦ ﺣﺎﻟﺖ وﺳﺎﻳﻞ ﺑﺼﻮرت ﻣﻮازي روي ﻛﺎﺑﻞ ‪) Trunk‬ﺑﺎس اﺻﻠﻲ ﺷﺒﻜﻪ( ﺑﻪ ﻳﻜﻲ از ﺳﻪ ﺻﻮرت زﻳﺮ ﺑﺴﺘﻪ‬
‫ﻣﻴﺸﻮﻧﺪ‪:‬‬
‫ﺑﺼﻮرت ‪Daisy Chain‬‬ ‫‪.1‬‬
‫ﺑﺼﻮرت ‪ Passive Tap‬و از ﻃﺮﻳﻖ ﻛﺎﺑﻞ اﻧﺸﻌﺎﺑﻲ )‪ (Derivation Cable‬وﻗﺘﻲ وﺳﻴﻠﻪ ﻣﺠﻬﺰ ﺑﻪ‬ ‫‪.2‬‬
‫اﻳﻨﺘﺮﻓﻴﺲ ‪ Modbus‬ﺑﺎﺷﺪ‬
‫ﺑﺼﻮرت ‪ Active Tap‬و ﺑﺎ ﻛﺎﺑﻞ ‪ AUI‬وﻗﺘﻲ وﺳﻴﻠﻪ ﻣﺠﻬﺰ ﺑﻪ اﻳﻨﺘﺮﻓﻴﺲ ‪ Modbus‬ﻧﺒﺎﺷﺪ‬ ‫‪.3‬‬
‫ﺷﻜﻞ زﻳﺮ ﺳﻪ ﻧﻮع ارﺗﺒﺎط ذﻛﺮ ﺷﺪه را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪:‬‬

‫در اﻳﻦ ﺷﻜﻞ‪:‬‬


‫‪Trunk Interface‬‬ ‫‪ : ITr‬اﻳﻨﺘﺮﻓﻴﺲ ﺑﻴﻦ وﺳﻴﻠﻪ و ﻛﺎﺑﻞ ‪ Trunk‬اﺳﺖ ‪.‬‬
‫‪Derivation Interface‬‬ ‫‪ : IDv‬اﻳﻨﺘﺮﻓﻴﺲ ﺑﻴﻦ وﺳﻴﻠﻪ ‪ Passive Tap‬اﺳﺖ ‪.‬‬
‫‪Attachment Unit Interface‬‬ ‫‪ : AUI‬اﻳﻨﺘﺮﻓﻴﺲ ﺑﻴﻦ وﺳﻴﻠﻪ و ‪ Active Tap‬اﺳﺖ ‪.‬‬
‫‪Line Termination‬‬ ‫‪ : LT‬ﺗﺮﻣﻴﻨﻴﺘﻮر ﺧﻂ اﺳﺖ ‪.‬‬
‫ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ‪:‬‬
‫در ﺑﺮﺧﻲ ﻣﻮارد ﻣﻤﻜﻦ اﺳﺖ ‪ Tap‬ﺑﺼﻮرت ﻣﺴﺘﻘﻴﻢ و ﺑﺪون ﻛﺎﺑﻞ اﻧﺸﻌﺎﺑﻲ ﺑﻪ ﺳﻮﻛﺖ ‪ IDv‬ﻳﺎ ﺳﻮﻛﺖ‬ ‫‪‬‬

‫‪ AUI‬ﻣﺘﺼﻞ ﺷﺪه ﺑﺎﺷﺪ‪.‬‬


‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪6‬‬

‫ﻳﻚ ‪ Tap‬ﻣﻤﻜﻦ اﺳﺖ داراي ﭼﻨﺪﻳﻦ ﺳﻮﻛﺖ ‪ IDv‬ﺑﺮاي اﺗﺼﺎل ﭼﻨﺪ وﺳﻴﻠﻪ ﺑﺎﺷﺪ ﻛﻪ دراﻳﻨﺤﺎﻟﺖ ﺑﻪ‬ ‫‪‬‬

‫آن ‪ Distributor‬ﻧﻴﺰ ﻣﻲ ﮔﻮﻳﻨﺪ‪.‬‬


‫وﻗﺘﻲ از ‪ Active Tap‬اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻣﻤﻜﻦ اﺳﺖ ﺗﻐﺬﻳﻪ آن از ﻃﺮﻳﻖ ‪ ITr‬ﻳﺎ ‪ AUI‬ﺑﺮﻗﺮار ﺷﻮد‪.‬‬ ‫‪‬‬

‫اﺗﺼﺎل‪ RS485‬ﻣﻴﺘﻮاﻧﺪ دوﺳﻴﻤﻪ ﻳﺎ ﭼﻬﺎر ﺳﻴﻤﻪ ﺑﺎﺷﺪ‪ ).‬ﺷﻜﻞ ﺻﻔﺤﻪ ﺑﻌﺪ ( اﺗﺼﺎل ‪ 4‬ﺳﻴﻤﻪ اﺧﺘﻴﺎري )‪ (optional‬اﺳﺖ‬
‫‪Master‬‬ ‫در اﻳﻨﺤﺎﻟﺖ ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ از ‪ 5‬رﺷﺘﻪ ﻛﺎﺑﻞ‪ 2 ،‬رﺷﺘﻪ )ﻳﻚ زوج( ﻣﺮﺑﻮط ﺑﻪ‬
‫اﺳﺖ ﻛﻪ ‪ RXD0 , RXD1‬ﻧﺎﻣﻴﺪه ﻣﻴﺸﻮد‪ Slave .‬دﻳﺘﺎي ‪ Master‬را از ﻃﺮﻳﻖ اﻳﻦ دو رﺷﺘﻪ درﻳﺎﻓﺖ ﻣﻴﻜﻨﺪ‪ .‬ﭘﺎﺳﺦ‬
‫‪ Slave‬از ﻃﺮﻳﻖ دو ﺳﻴﻢ دﻳﮕﺮ ‪ TXD1‬و ‪ TXD0‬ﺑﻪ ‪ Master‬ارﺳﺎل ﻣﻴﮕﺮدد‪ .‬رﺷﺘﻪ ﭘﻨﺠﻢ ﻧﻴﺰ ﺑﺮاي اﺗﺼﺎل ﻣﺸﺘﺮك‬
‫)‪ (Common‬اﺳﺘﻔﺎده ﻣﻲ ﮔﺮدد‪.‬‬
7 MODBUS ‫ﺷﺒﻜﻪ‬

:‫ ﺳﻴﻤﻪ در ﺟﺪاول ﺑﻌﺪ آورده ﺷﺪه اﺳﺖ‬4 ‫ ﺳﻴﻤﻪ و‬2 ‫وﺿﻌﻴﺖ ﺧﻄﻮط ﺳﻴﮕﻨﺎل ﺑﺮاي اﺗﺼﺎل‬

Required Circuits For Required EIA/TIA-


Description
on ITr on IDv device on device 485 name
Transceiver terminal 1, V1
D1 D1 I/O X B/B’ Voltage ( V1 > V0 for binary 1
[OFF] state )
Transceiver terminal 0, V0
D0 D0 I/O X A/A’ Voltage ( V0 > V1 for binary 0
[ON] state )
Signal and optional Power Supply
Common Common -- X C/C’
Common

Required Circuits For Required EIA/TIA-


Description for IDv
on ITr on IDv device on device 485 name
Generator terminal 1, Vb
Voltage ( Vb > Va for binary 1
TXD1 TXD1 Out X B [OFF] state )
Generator terminal 0, Va
Voltage ( Va > Vb for binary 0
TXD0 TXD0 Out X A [ON] state )
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪8‬‬

‫’‪Receiver terminal 1, Vb‬‬


‫‪RXD1‬‬ ‫‪RXD1‬‬ ‫‪In‬‬ ‫)‪(1‬‬ ‫’‪B‬‬ ‫‪Voltage ( Vb’ > Va’ for binary‬‬
‫) ‪1 [OFF] state‬‬
‫’‪Receiver terminal 0, Va‬‬
‫‪RXD0‬‬ ‫‪RXD0‬‬ ‫‪In‬‬ ‫)‪(1‬‬ ‫’‪A‬‬ ‫‪Voltage ( Va’ > Vb’ for binary‬‬
‫) ‪0 [ON] state‬‬
‫‪Signal and optional Power‬‬
‫‪Common‬‬ ‫‪Common‬‬ ‫‪--‬‬ ‫‪X‬‬ ‫’‪C/C‬‬
‫‪Supply Common‬‬

‫در اﺗﺼﺎل ‪ 4‬ﺳﻴﻤﻪ ﻛﺎﺑﻞ اﻧﺸﻌﺎب ﺑﺼﻮرت ‪ Cross‬ﻣﺘﺼﻞ ﻣﻴﺸﻮد )ﻣﻄﺎﺑﻖ ﺟﺪول زﻳﺮ(‪ .‬ﺑﻬﺘﺮﻳﻦ روش اﺗﺼﺎل در ‪4‬‬
‫ﺳﻴﻤﻪ اﺳﺘﻔﺎده از ‪ Tap‬ﻫﺎﻳﻲ اﺳﺖ ﻛﻪ روي ﺧﻮدﺷﺎن اﺗﺼﺎﻻت را ‪ Cross‬ﻛﺮده اﻧﺪ‪.‬‬
‫در اﺗﺼﺎل ‪ 2‬ﺳﻴﻤﻪ ﻛﺎﺑﻞ اﻧﺸﻌﺎﺑﻲ ﻧﺒﺎﻳﺪ ‪ Cross‬ﺑﺴﺘﻪ ﺷﻮد‪.‬‬

‫‪Signal on Master IDv‬‬ ‫‪EIA/TIA-‬‬


‫‪Circuit on ITr‬‬
‫‪Name‬‬ ‫‪Type‬‬ ‫‪485 Name‬‬
‫‪RXD1‬‬ ‫‪In‬‬ ‫’‪B‬‬ ‫‪TXD1‬‬
‫‪Slave Pair‬‬
‫‪RXD0‬‬ ‫‪In‬‬ ‫’‪A‬‬ ‫‪TXD0‬‬

‫‪TXD1‬‬ ‫‪Out‬‬ ‫‪B‬‬ ‫‪RXD1‬‬


‫‪Master Pair‬‬
‫‪TXD0‬‬ ‫‪Out‬‬ ‫‪A‬‬ ‫‪RXD0‬‬

‫‪Common‬‬ ‫‪--‬‬ ‫’‪C/C‬‬ ‫‪Common‬‬

‫ﺑﻴﻦ ﺳﻴﺴﺘﻢ ‪ 4‬ﺳﻴﻤﻪ و ‪ 2‬ﺳﻴﻤﻪ ﻣﻲ ﺗﻮان ﺳﺎزﮔﺎري ﺑﺮﻗﺮار ﻛﺮد‪ .‬دو ﺣﺎﻟﺖ زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪:‬‬
‫ﺣﺎﻟﺖ اول ‪ :‬اﮔﺮ ﺳﻴﺴﺘﻢ ‪ 4‬ﺳﻴﻤﻪ اي از ﻗﺒﻞ ﻣﻮﺟﻮد ﺑﺎﺷﺪ و ﺑﺨﻮاﻫﻴﻢ از آن ﺑﻌﻨﻮان ‪ 2‬ﺳﻴﻤﻪ اﺳﺘﻔﺎده ﻛﻨﻴﻢ ﻻزم اﺳﺖ‬
‫ﺳﻴﻢ ﻫﺎي ﺳﻴﮕﻨﺎل ‪ TXD0‬و ‪ RXD0‬را ﺑﻪ ﻫﻢ ﺑﺒﻨﺪﻳﻢ ﺗﺎ ﺧﻂ ‪ D0‬اﻳﺠﺎد ﺷﻮد ‪.‬‬ ‫‪‬‬

‫ﺳﻴﻢ ﻫﺎي ﺳﻴﮕﻨﺎل ‪ TXD1‬و ‪ RXD1‬را ﺑﻪ ﻫﻢ ﺑﺒﻨﺪﻳﻢ ﺗﺎ ﺧﻂ ‪ D1‬اﻳﺠﺎد ﺷﻮد ‪.‬‬ ‫‪‬‬

‫اﺗﺼﺎل ﺗﺮﻣﻴﻨﻴﺘﻮر ﻫﺎ را از ﻧﻮ آراﻳﺶ دﻫﻴﻢ‪.‬‬ ‫‪‬‬


‫‪9‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﺣﺎﻟﺖ دوم ‪ :‬اﮔﺮ ﺳﻴﺴﺘﻢ ‪ 2‬ﺳﻴﻤﻪ اي از ﻗﺒﻞ ﻣﻮﺟﻮد ﺑﺎﺷﺪ و ﺑﺨﻮاﻫﻴﻢ وﺳﻴﻠﻪ اي ‪ 4‬ﺳﻴﻤﻪ را ﺑﻪ آن ﻣﺘﺼﻞ ﻛﻨﻴﻢ ﻻزم‬
‫اﺳﺖ روي وﺳﻴﻠﻪ ‪:‬‬
‫ﺳﻴﻢ ﻫﺎي ﺳﻴﮕﻨﺎل ‪ TXD0‬و ‪ RXD0‬را ﺑﻪ ﺳﻴﻢ ‪ D0‬ﺑﺒﻨﺪﻳﻢ‪.‬‬ ‫‪‬‬

‫ﺳﻴﻢ ﻫﺎي ﺳﻴﮕﻨﺎل ‪ TXD1‬و ‪ RXD1‬را ﺑﻪ ﺳﻴﻢ ‪ D1‬ﺑﺒﻨﺪﻳﻢ‪.‬‬ ‫‪‬‬

‫در اﺗﺼﺎل ‪ RS485‬ﭼﻪ ﺑﺼﻮرت ‪ 2‬ﺳﻴﻤﻪ و ﭼﻪ ﺑﺼﻮرت ‪ 4‬ﺳﻴﻤﻪ در ﻧﻈﺮ داﺷﺘﻦ ﻧﻜﺎت زﻳﺮ ﺿﺮوري اﺳﺖ‪:‬‬
‫ﺑﻄﻮر ﻣﻌﻤﻮل ﺑﺪون رﻳﭙﻴﺘﺮ ﻣﺎﻛﺰﻳﻤﻢ ‪ 32‬وﺳﻴﻠﻪ را ﻣﻴﺘﻮان روي ‪ Modbus RS485‬ﻣﺘﺼﻞ ﻧﻤﻮد‪.‬‬ ‫‪‬‬

‫ﺗﻮﭘﻮﻟﻮژي اﺗﺼﺎل ﺑﺼﻮرت ‪ Bus‬اﺳﺖ ﻛﻪ ﻣﻴﺘﻮاﻧﺪ ‪ Daisy Chain‬ﻳﺎ ‪ Tap and Drop‬ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬

‫ﻃﻮل ﻛﺎﺑﻞ ‪ Trunk‬ﻣﺤﺪود اﺳﺖ اﻳﻦ ﻣﺤﺪودﻳﺖ ﺑﺴﺘﮕﻲ ﺑﻪ ﺳﺮﻋﺖ اﻧﺘﻘﺎل دﻳﺘﺎ ‪ ،‬ﻣﺸﺨﺼﺎت ﻛﺎﺑﻞ) از‬ ‫‪‬‬

‫ﺟﻤﻠﻪ ﺧﺎزن ﻛﺎﺑﻞ( ‪ ،‬ﺗﻌﺪاد ‪ Node‬ﻫﺎي ﻣﺘﺼﻞ ﺷﺪه ﺑﺼﻮرت ‪ Daisy Chain‬و ﻧﻴﺰ ‪2‬ﺳﻴﻤﻪ ﻳﺎ ‪ 4‬ﺳﻴﻤﻪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪10‬‬

‫ﺑﻮدن ﺳﻴﺴﺘﻢ دارد‪ .‬ﺑﺮاي ﺳﺮﻋﺖ ‪ 9600 bps‬ﺑﺎ ﻛﺎﺑﻞ ‪ AWG26‬ﻳﺎ ﺿﺨﻴﻢ ﺗﺮ و ﺳﻴﺴﺘﻢ ‪ 2‬ﺳﻴﻤﻪ اﻳﻦ ﻃﻮل‬
‫‪ 1000‬ﻣﺘﺮ اﺳﺖ ‪ .‬ﺑﺮاي ﺳﻴﺴﺘﻢ ‪ 4‬ﺳﻴﻤﻪ ﺑﺎ ﻣﺸﺨﺼﺎت ﻓﻮق اﻳﻦ ﻃﻮل ﺑﻪ ﻧﺼﻒ ﻛﺎﻫﺶ ﻣﻲ ﻳﺎﺑﺪ‬
‫ﻃﻮل ﻛﺎﺑﻞ اﻧﺸﻌﺎﺑﻲ ﻛﻮﺗﺎه ﺑﺎﺷﺪ و از ‪ 20‬ﻣﺘﺮ ﺗﺠﺎوز ﻧﻜﻨﺪ‪ .‬ﻛﻼً اﮔﺮ ‪ n‬اﻧﺸﻌﺎب وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺮاي‬ ‫‪‬‬

‫ﺑﺪﺳﺖ آوردن ﻣﺎﻛﺰﻳﻤﻢ ﻃﻮل ﻫﺮ اﻧﺸﻌﺎب ﻋﺪد ‪ 40‬ﻣﺘﺮ را ﺑﺮ ‪ n‬ﺗﻘﺴﻴﻢ ﻣﻴﻜﻨﻴﻢ‪.‬‬


‫ﺳﻴﻢ ﻣﺸﺘﺮك) ‪ GND‬ﻳﺎ‪ (Common‬ﺑﻪ زﻣﻴﻦ )‪ (PE‬ﻣﺘﺼﻞ ﺷﻮد ﺗﺮﺟﻴﺤﺎً در ﻳﻜﻄﺮف و آﻧﻬﻢ در ﺳﻤﺖ‬ ‫‪‬‬
‫‪Master‬‬

‫دوﻃﺮف ﻛﺎﺑﻞ ‪ Trunk‬ﻳﻌﻨﻲ ﺑﺎس اﺻﻠﻲ ﺗﻮﺳﻂ ﺗﺮﻣﻴﻨﻴﺘﻮر ﺑﺴﺘﻪ ﺷﻮد‪ .‬ﻫﺮ زوج ﺳﻴﻢ دﻳﺘﺎ در دوﻃﺮف‬ ‫‪‬‬

‫ﺗﺮﻣﻴﻨﻴﺘﻮر ﻻزم دارد ﭘﺲ در ﺳﻴﺴﺘﻢ ‪ 4‬ﺳﻴﻤﻪ در ﻫﺮ ﻃﺮف ‪ 2‬ﺗﺮﻣﻴﻨﻴﺘﻮر ﻻزم اﺳﺖ‪.‬‬


‫ﻫﻴﭽﮕﺎه از ﺗﺮﻣﻴﻨﻴﺘﻮر روي ﻛﺎﺑﻞ اﻧﺸﻌﺎﺑﻲ اﺳﺘﻔﺎده ﻧﻜﻨﻴﺪ‪.‬‬ ‫‪‬‬

‫ﺗﺮﻣﻴﻨﻴﺘﻮر ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﻣﻘﺎوﻣﺖ ‪ 150‬اﻫﻤﻲ ﺑﺎﺷﺪ‪ .‬در ﺑﺮﺧﻲ ﻛﺎرﺑﺮدﻫﺎ از ﻣﻘﺎوﻣﺖ ‪ 120‬اﻫﻤﻲ ﻛﻪ ﺑﺎ ﺧﺎزن‬ ‫‪‬‬

‫)‪ (1nF , 10V minimum‬ﺳﺮي ﺷﺪه اﺳﺘﻔﺎده ﻣﻲ ﮔﺮدد‪.‬‬


‫ﺑﺮاي ﭘﻼرﻳﺰه ﻛﺮدن ﺧﻂ از ﻳﻚ ﺟﻔﺖ ﻣﻘﺎوﻣﺖ ‪ Pull up‬و ‪ Pull Down‬ﻛﻪ ﻣﻘﺪار آﻧﻬﺎ ﻣﻴﺘﻮاﻧﺪ ﺑﻴﻦ‬ ‫‪‬‬

‫‪ 450‬ﺗﺎ ‪ 650‬اﻫﻢ ﺑﺎﺷﺪ در ﻳﻜﻄﺮف اﺳﺘﻔﺎده ﻣﻴﮕﺮدد‪ .‬ﻣﻨﻈﻮر از ﭘﻼرﻳﺰه ﻛﺮدن ﺧﻂ ﻣﺼﻮن ﻧﮕﻪ داﺷﺘﻦ‬
‫ﺑﺎس از ﺗﺪاﺧﻞ و ﻧﻮﻳﺰ در ﺣﺎﻟﺘﻲ اﺳﺖ ﻛﻪ روي ﺧﻂ ﻫﻴﭻ دﻳﺘﺎﻳﻲ ﺗﺒﺎدل ﻧﻤﻴﺸﻮد ﻻزم اﺳﺖ در اﻳﻨﺤﺎﻟﺖ‬
‫ﮔﻴﺮﻧﺪه ﺣﺎﻟﺖ ﺛﺎﺑﺖ ﺧﻮد را ﺣﻔﻆ ﻛﻨﺪ‪.‬‬
‫ﻣﻘﺎوﻣﺖ ‪ Pull up‬روي ﺧﻂ ‪ D1‬و ﺑﻪ وﻟﺘﺎژ ‪ 5‬وﻟﺖ ﻣﺘﺼﻞ ﻣﻴﮕﺮدد‪.‬‬ ‫‪‬‬

‫ﻣﻘﺎوﻣﺖ ‪ Pull Down‬روي ﺧﻂ ‪ D0‬و ﺑﻪ ﺳﻴﻢ ﻣﺸﺘﺮك )‪ (Common‬ﻣﺘﺼﻞ ﻣﻴﮕﺮدد‪.‬‬ ‫‪‬‬

‫ﭘﻼرﻳﺰاﺳﻴﻮن ﺧﻂ در ﻳﻜﻄﺮف و ﺗﺮﺟﻴﺤﺎً در ﺳﻤﺖ ‪ Master‬اﻧﺠﺎم ﻣﻴﺸﻮد‪.‬‬ ‫‪‬‬

‫ﻣﺎﻛﺰﻳﻤﻢ وﺳﺎﻳﻞ ﻣﺠﺎز روي ‪ Modbus‬ﺑﺎ ﭘﻼرﻳﺰاﺳﻴﻮن ﺑﻪ ﻳﻚ ﭼﻬﺎرم ﺣﺎﻟﺖ ﻧﺮﻣﺎل ﻛﺎﻫﺶ ﻣﻲ ﻳﺎﺑﺪ‪.‬‬ ‫‪‬‬
‫‪11‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫‪ Modbus‬ﺑﺼﻮرت ‪RS232‬‬ ‫‪ 3-2-4‬اﺗﺼﺎل‬


‫اﻳﻦ ارﺗﺒﺎط ﺑﺼﻮرت ﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ اﺳﺖ ﻳﻌﻨﻲ ﻓﻘﻂ دو وﺳﻴﻠﻪ ﻣﻴﺘﻮاﻧﻨﺪ ﺑﺎ ﻫﻢ ارﺗﺒﺎط داﺷﺘﻪ ﺑﺎﺷﻨﺪ ‪.‬‬ ‫‪‬‬

‫ﺑﺮاي ﻣﺴﺎﻓﺖ ﻫﺎي ﻛﻮﺗﺎه )ﻣﻌﻤﻮﻻً( ﻛﻤﺘﺮ از ‪ 20‬ﻣﺘﺮ ﺑﻜﺎر ﻣﻲ رود‪.‬‬ ‫‪‬‬

‫ﺗﺮﻣﻴﻨﻴﺘﻮر ﻧﺪارد‪.‬‬ ‫‪‬‬

‫اﺗﺼﺎل ﺑﻴﻦ دو وﺳﻴﻠﻪ ‪ DCE‬و ‪ DTE‬روي ‪ Modbus RS232‬ﺑﺼﻮرت ﺟﺪول زﻳﺮ اﺳﺖ ‪ .‬در اﻳﻦ‬ ‫‪‬‬

‫ﺟﺪول ﻣﻮاردي ﻛﻪ ﺑﺎ ‪ X‬ﻣﺸﺨﺺ ﺷﺪه ﺑﺮاي اﻳﺠﺎد ارﺗﺒﺎط ﻛﺎﻓﻲ اﺳﺖ ‪.‬‬
‫ﺳﺮ ﺳﻴﻢ ‪ TXD‬از ﻳﻚ ﺳﻤﺖ ﺑﺎ ﺳﺮ ﺳﻴﻢ ‪ RXD‬ﻃﺮف ﻣﻘﺎﺑﻞ ﻣﺮﺗﺒﻂ ﻣﻴﺸﻮد‪.‬‬ ‫‪‬‬

‫ﻣﻤﻜﻦ اﺳﺖ ‪ RTS‬ﺑﻪ ‪ CTS‬ﺳﻤﺖ ﻣﻘﺎﺑﻞ و ‪ DTR‬ﺑﻪ ‪ DSR‬ﺳﻤﺖ ﻣﻘﺎﺑﻞ وﺻﻞ ﺷﻮد‪.‬‬ ‫‪‬‬
‫‪Required on‬‬ ‫‪Required on‬‬
‫‪Signal‬‬ ‫‪For DCE‬‬ ‫)‪DCE (1‬‬ ‫)‪DTE (1‬‬ ‫‪Description‬‬
‫‪Common‬‬ ‫‪--‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪Signal Common‬‬
‫‪CTS‬‬ ‫‪In‬‬ ‫‪Clear to Send‬‬
‫‪DCD‬‬ ‫‪--‬‬ ‫) ‪Data Carrier Detected ( from DCE to DTE‬‬
‫‪DSR‬‬ ‫‪In‬‬ ‫‪Data Set Ready‬‬
‫‪DTR‬‬ ‫‪Out‬‬ ‫‪Data Terminal Ready‬‬
‫‪RTS‬‬ ‫‪Out‬‬ ‫‪Request to Send‬‬
‫‪RXD‬‬ ‫‪In‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪Received Data‬‬
‫‪TXD‬‬ ‫‪Out‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪Transmitted Data‬‬

‫اﺗﺼﺎﻻت و ﻛﺎﻧﻜﺘﻮر ﻫﺎ‬


‫ﻛﺎﻧﻜﺘﻮر ﻣﻲ ﺗﻮاﻧﺪ ‪ RJ45‬ﻳﺎ ‪ D-shell-9 pin‬ﺑﺎﺷﺪ‪ .‬در ﺷﻜﻞ زﻳﺮ اﻳﻦ ﻛﺎﻧﻜﺘﻮرﻫﺎ ﺑﺮاي ﺳﻴﺴﺘﻢ ‪ 2‬ﺳﻴﻤﻪ ﻧﺸﺎن داده‬
‫ﺷﺪه اﻧﺪ‪.‬‬
MODBUS ‫ﺷﺒﻜﻪ‬ 12

.‫ﭘﻴﻦ ﻫﺎي ﻣﺮﺑﻮﻃﻪ ﺑﺮاي ﻛﺎﻧﻜﺘﻮرﻫﺎي ﻓﻮق در ﺟﺪول زﻳﺮ ﻣﺸﺨﺺ ﮔﺮدﻳﺪه اﻧﺪ‬
Pin Pin IDv ITr
on on Level of Circuit Circuit EIA/TIA-
RJ45 D9- Description for IDv
requirement 485 name
shell
3 3 optional PMC -- -- Port Mode Control
4 5 required D1 D1 B/B’ Transceiver terminal 1, V1
Voltage ( V1 > V0 for
binary 1 [OFF] state )
5 9 required D0 D0 A/A’ Transceiver terminal 0, V0
Voltage ( V0 > V1 for
binary 0 [ON] state )
7 Positive 5...24 V D.C.
2 recommended VP -- --
Power Supply
8 1 required Common Common C/C’ Signal and Power Supply
Common
.‫ ﺳﻴﻤﻪ در ﺻﻔﺤﻪ ﺑﻌﺪ آورده ﺷﺪه اﺳﺖ‬4 ‫ﻛﺎﻧﻜﺘﻮرﻫﺎ و ﻣﺸﺨﺼﺎت ﭘﻴﻦ ﻫﺎ ﺑﺮاي ﺳﻴﺴﺘﻢ‬
‫ ﺑﻪ رﻧﮓ زرد ﺑﺎﺷﺪ در‬D1 ‫ ﺳﻴﻢ‬، ‫ ﺑﻪ رﻧﮓ ﻗﻬﻮه اي‬D0 ‫ ﺳﻴﻢ‬،‫ ﺳﻴﻤﻪ‬2 ‫ ﺳﻴﺴﺘﻢ‬Modbus ‫ﭘﻴﺸﻨﻬﺎد ﺷﺪه ﻛﻪ در ﻛﺎﺑﻞ‬
‫ ﺑﻪ رﻧﮓ ﺳﻔﻴﺪ و ﺳﻴﻢ‬RXD0 ‫ ﺑﻜﺎر رﻓﺘﻪ و ﺳﻴﻢ‬TXD1 ‫ و‬TXD0 ‫ ﺳﻴﻤﻪ اﻳﻨﺪو ﺑﺎ ﻫﻤﻴﻦ رﻧﮕﻬﺎ ﺑﺮاي‬4 ‫ﺳﻴﺴﺘﻢ‬
‫ اﺳﺘﻔﺎده از اﻳﻦ رﻧﮓ ﻫﺎ اﻟﺰاﻣﻲ‬.‫ ﺳﻴﻢ ﻣﺸﺘﺮك در ﻫﺮ دو ﺳﻴﺴﺘﻢ ﺧﺎﻛﺴﺘﺮي رﻧﮓ اﺳﺖ‬. ‫ ﺑﻪ رﻧﮓ آﺑﻲ ﺑﺎﺷﺪ‬RXD1
.‫ رﻧﮓ ﺑﻨﺪي ﻣﺘﻔﺎوت ﺧﻮاﻫﺪ ﺑﻮد‬Cate 5 ‫ﻧﻴﺴﺖ ﻛﻤﺎ اﻳﻨﻜﻪ در اﺳﺘﻔﺎده از ﻛﺎﺑﻞ‬
13 MODBUS ‫ﺷﺒﻜﻪ‬

Pin IDv ITr


Pin
on Level of Signal Signal EIA/TIA-
on Description for IDv
D9- requirement 485 name
RJ45
shell
1 8 required RXD0 RXD0 A’ Receiver terminal 0, Va’
Voltage ( Va’ > Vb’ for
binary 0 [ON] state )
2 Receiver terminal 1, Vb’
4 required RXD1 RXD1 B’ Voltage ( Vb’ > Va’ for
binary 1 [OFF] state )
3
3 optional PMC -- -- Port Mode Control

4 Generator terminal 1, Vb
5 required TXD1 TXD1 B Voltage ( Vb > Va for
binary 1 [OFF] state )
5 Generator terminal 0, Va
9 required TXD0 TXD0 A Voltage ( Va > Vb for
binary 0 [ON] state )
7 Positive 5...24 V DC
2 recommended VP -- --
Power Supply
8
Signal and Power Supply
1 required Common Common C/C’
Common
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪14‬‬

‫‪ 4-2-4‬ﻻﻳﻪ دﻳﺘﺎ ﻟﻴﻨﻚ )ﻻﻳﻪ دوم(‬


‫اﻳﻦ ﻻﻳﻪ از ﺗﻜﻨﻴﻚ دﺳﺘﺮﺳﻲ ‪ Master/Slave‬اﺳﺘﻔﺎده ﻣﻴﻜﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ در ﻫﺮ ﻟﺤﻈﻪ ﻓﻘﻂ ﻳﻚ ‪ Master‬ﻣﻴﺘﻮاﻧﺪ‬
‫ﺑﺎس را در اﺧﺘﻴﺎر داﺷﺘﻪ و ﺑﺎ ﻣﺎﻛﺰﻳﻤﻢ ‪ 247‬وﺳﻴﻠﻪ ‪ Slave‬ﻛﻪ ﺑﻪ ﻫﻤﺎن ﺑﺎس ﻣﺘﺼﻞ ﻫﺴﺘﻨﺪ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻛﻨﺪ‪ .‬ﺑﺪﻳﻬﻲ‬
‫اﺳﺖ در اﻳﻦ ﺗﻜﻨﻴﻚ دﺳﺘﺮﺳﻲ ‪ Slave‬ﻫﺎ ﻫﻴﭽﮕﺎه ﺑﺪون درﺧﻮاﺳﺖ ‪ Master‬دﻳﺘﺎﻳﻲ را ﻧﻤﻴﻔﺮﺳﺘﻨﺪ و ﻫﻴﭽﮕﺎه ﻧﻴﺰ ﺑﺎ‬
‫ﻳﻜﺪﻳﮕﺮ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻧﻤﻲ ﻛﻨﻨﺪ‪.‬‬
‫‪ Master‬ﺑﻪ ﻳﻜﻲ از دو روش زﻳﺮ درﺧﻮاﺳﺖ ﺧﻮد را ارﺳﺎل ﻣﻲ ﻧﻤﺎﻳﺪ‪:‬‬
‫ﻣﺪ ‪ : Unicast‬در اﻳﻦ ﺣﺎﻟﺖ ‪ Master‬از ‪ Slave‬ﺧﺎﺻﻲ درﺧﻮاﺳﺖ دﻳﺘﺎ ﻣﻲ ﻧﻤﺎﻳﺪ‪ Slave .‬ﭘﺲ از درﻳﺎﻓﺖ‬ ‫‪.1‬‬
‫‪ Request‬ﭘﻴﺎم ‪ reply‬را ﺑﻪ ‪ Master‬ﻣﻲ ﻓﺮﺳﺘﺪ‪ .‬ﺑﺪﻳﻬﻲ اﺳﺖ ﻫﺮ ‪ Slave‬ﺑﺎﻳﺪ داراي آدرس ﺧﺎص و‬
‫ﻣﻨﺤﺼﺮ ﺑﻔﺮدي ﺑﺎﺷﺪ ﺗﺎ ‪ Master‬ﺑﺘﻮاﻧﺪ ﺑﺎ آن ارﺗﺒﺎط ﺑﺮﻗﺮار ﻛﻨﺪ‪.‬‬

‫ﻣﺪ ‪ : Broadcast‬در اﻳﻦ ﺣﺎﻟﺖ ‪ Master‬ﭘﻴﺎم ﺧﻮد را ﺑﻪ ﺗﻤﺎم ‪ Slave‬ﻫﺎ ﻣﻴﻔﺮﺳﺘﺪ وﻟﻲ ﻫﻴﭻ ﭘﺎﺳﺨﻲ ﺑﻪ‬ ‫‪.2‬‬
‫‪ Master‬ﺑﺮ ﻧﻤﻴﮕﺮدد‪ .‬اﻳﻦ ﻣﺪ از ﺟﻤﻠﻪ ﺑﺮاي ﻧﻮﺷﺘﻦ ﻓﺮاﻣﻴﻦ )‪ (Writing Commands‬ﺑﻜﺎر ﻣﻴﺮود‪.‬‬
‫ﺑﺮاي ﻣﺪ ‪ Broadcast‬آدرس ﺻﻔﺮ رزرو ﺷﺪه اﺳﺖ‪.‬‬
‫‪15‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﺑﻄﻮر ﻛﻠﻲ روش آدرس دﻫﻲ در ‪ Modbus‬ﻣﺎﻧﻨﺪ ﺟﺪول ﺑﻌﺪ اﺳﺖ ‪ .‬ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ‪ Master‬ﻧﻴﺎز ﺑﻪ ﻫﻴﭻ‬
‫آدرس ﺧﺎﺻﻲ ﻧﺪارد و ﺻﺮﻓﺎً ‪ Slave‬ﻫﺎ ﻫﺴﺘﻨﺪ ﻛﻪ ﻧﻴﺎز ﺑﻪ آدرس دارﻧﺪ‪.‬‬
‫ﻓﺮﻳﻢ اﻃﻼﻋﺎت‬
‫ﭘﺮوﺗﻜﻞ ‪ Modbus‬داراي ‪ (Protocol Data Unint )PDU‬ﻫﺎي ﺳﺎده اي ﻣﺎﻧﻨﺪ ﺷﻜﻞ زﻳﺮ اﺳﺖ‪.‬‬

‫دﻳﺘﺎﻫﺎي دﻳﮕﺮي ﻧﻴﺰ ﺑﺎ ‪ PDU‬ﺟﻤﻊ ﺷﺪه و ﻓﺮﻳﻢ دﻳﺘﺎ را ﻣﻲ ﺳﺎزﻧﺪ‪ .‬اﻳﻦ ﻓﺮﻳﻢ در ﺳﻤﺖ ‪ Master‬ﺳﺎﺧﺘﻪ ﻣﻴﺸﻮد‬

‫ﻓﻴﻠﺪ ﻫﺎي ﻓﺮﻳﻢ ﻓﻮق ﺑﺸﺮح زﻳﺮ ﻫﺴﺘﻨﺪ‪:‬‬


‫ﻓﻴﻠﺪ آدرس ﺻﺮﻓﺎً ﺣﺎوي آدرس ‪ Slave‬اﺳﺖ و ﻣﻴﺘﻮاﻧﺪ ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ 247‬ﺑﺎﺷﺪ ‪ Master .‬در ارﺗﺒﺎط‬ ‫‪‬‬

‫‪ Unicast‬آدرس را در اﻳﻦ ﻓﻴﻠﺪ ﻗﺮار ﻣﻲ دﻫﺪ و ‪ Slave‬ﻧﻴﺰ وﻗﺘﻲ ﭘﺎﺳﺦ ﻣﻴﺪﻫﺪ آدرس ﺧﻮدش را در‬
‫اﻳﻦ ﻓﻴﻠﺪ ﻣﻲ ﮔﺬارد ﺗﺎ ‪ Master‬ﺑﻔﻬﻤﺪ ﻛﺪام ‪ Slave‬ﭘﺎﺳﺦ داده اﺳﺖ‪.‬‬
‫‪ Function Code‬ﻧﺸﺎن دﻫﻨﺪه ﻋﻤﻠﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ اﻧﺠﺎم ﺷﻮد )‪(Action‬‬ ‫ﻓﻴﻠﺪ‬ ‫‪‬‬

‫ﻓﻴﻠﺪ ‪ CRC‬ﺑﺮاي ‪ Error Checking‬اﺳﺖ ﻛﻪ ﺗﺸﺮﻳﺢ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬ ‫‪‬‬

‫دﻳﺎﮔﺮام وﺿﻌﻴﺖ ‪Master/Slave‬‬


‫ﻻﻳﻪ دﻳﺘﺎ ﻟﻴﻨﻚ داراي دو زﻳﺮ ﻻﻳﻪ اﺳﺖ ﻳﻜﻲ ﭘﺮوﺗﻜﻞ ‪ Master/Slave‬و دﻳﮕﺮي ﻣﺪ اﻧﺘﻘﺎل ﻛﻪ ﻣﻴﺘﻮاﻧﺪ ‪ ASCII‬ﻳﺎ‬
‫‪ RTU‬ﺑﺎﺷﺪ‪ .‬دﻳﺎﮔﺮام ﻛﻠﻲ وﺿﻌﻴﺖ ‪ Master/Slave‬ﺑﺼﻮرت ﺧﻴﻠﻲ ﺳﺎده در ﺷﻜﻞ ﺻﻔﺤﻪ ﺑﻌﺪ آورده ﺷﺪه و در‬
‫ارﺗﺒﺎط ﺑﺎ آن ﻧﻜﺎت زﻳﺮ ﺣﺎﺋﺰ اﻫﻤﻴﺖ اﺳﺖ‪:‬‬
‫وﺿﻌﻴﺖ ‪ Idle‬ﻛﻪ ﺑﻪ ﻣﻌﻨﺎي ﺑﻴﻜﺎر ﺑﻮدن اﺳﺖ وﺿﻌﻴﺖ اوﻟﻴﻪ اﺳﺖ ﻛﻪ ﭘﺲ از وﺻﻞ ﺗﻐﺬﻳﻪ ﺑﻮﺟﻮد ﻣﻲ‬ ‫‪‬‬

‫آﻳﺪ‪.‬در اﻳﻦ وﺿﻌﻴﺖ ‪ Master‬ﭘﻴﺎﻣﻲ را ﺑﺼﻮرت ‪ Broadcast‬ارﺳﺎل ﻣﻲ دارد ﺳﭙﺲ وﺿﻌﻴﺖ ‪ Idle‬را‬
‫ﺗﺮك ﻣﻲ ﻛﻨﺪ‪.‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪16‬‬

‫وﻗﺘﻲ درﺧﻮاﺳﺘﻲ ﺑﺼﻮرت ‪ Unicast‬ﺑﻪ ‪ Slave‬ﺧﺎﺻﻲ ارﺳﺎل ﺷﺪ ‪ Master ،‬ﻣﻨﺘﻈﺮ ﺟﻮاب ﻣﻲ ﻣﺎﻧﺪ اﻣﺎ‬ ‫‪‬‬

‫ﻧﻪ ﺑﻄﻮر ﻧﺎﻣﺤﺪود ﺑﻠﻜﻪ ﺑﺎ ‪ Time out‬ﭼﻚ ﻣﻴﺸﻮد‪.‬‬


17 MODBUS ‫ﺷﺒﻜﻪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪18‬‬

‫وﻗﺘﻲ ﭘﺎﺳﺦ درﻳﺎﻓﺖ ﺷﺪ ‪ Master‬ﻗﺒﻞ از ﭘﺮدازش دﻳﺘﺎ ‪ ،‬ﭘﺎﺳﺦ را ﭼﻚ ﻣﻴﻜﻨﺪ ﻣﻤﻜﻦ اﺳﺖ اﺷﻜﺎﻟﻲ‬ ‫‪‬‬

‫وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﻣﺜﻼً ‪ Slave‬دﻳﮕﺮي ﭘﺎﺳﺦ داده ﺑﺎﺷﺪ ﻳﺎ در ﻓﺮﻳﻢ دﻳﺘﺎي درﻳﺎﻓﺖ ﺷﺪه ﺧﻄﺎﻳﻲ رخ داده‬
‫ﺑﺎﺷﺪ دراﻳﻨﺠﺎ ﻧﻴﺰ ‪ Time out‬ﭼﻚ ﻣﻴﺸﻮد ﺗﺎ ﺑﻠﻜﻪ در زﻣﺎن ﺗﻌﻴﻴﻦ ﺷﺪه ﭘﺎﺳﺦ ﺻﺤﻴﺢ از ‪ Slave‬ﺑﺮﺳﺪ‪ .‬اﮔﺮ‬
‫‪ Master‬ﺑﻪ وﺿﻌﻴﺖ ‪Idle‬‬ ‫ﭘﺎﺳﺨﻲ درﻳﺎﻓﺖ ﻧﺸﺪ و ‪ Time out‬ﺑﻪ ﺳﺮ رﺳﻴﺪ ﺳﻴﮕﻨﺎل ‪ Error‬ﺗﻮﻟﻴﺪ ﻣﻴﺸﻮد و‬
‫ﻣﻴﺮود و ﺗﻼش دوﺑﺎره ﺑﺴﺘﻪ ﺑﻪ ﺗﻨﻈﻴﻤﺎت اﻧﺠﺎم ﺷﺪه روي ‪ Retry‬اﻧﺠﺎم ﻣﻴﺸﻮد‪.‬‬
‫وﻗﺘﻲ درﺧﻮاﺳﺘﻲ ﺑﺼﻮرت ‪ Broadcast‬روي ﺑﺎس ﺳﺮﻳﺎل ارﺳﺎل ﻣﻲ ﺷﻮد ﭘﺎﺳﺨﻲ از ﻃﺮف ‪ Slave‬ﻫﺎ‬ ‫‪‬‬

‫داده ﻧﺸﺪه ﺑﺎ اﻳﻦ وﺟﻮد ‪ Master‬ﺗﺎﺧﻴﺮي را ﺑﺮاي ارﺳﺎل ﭘﻴﺎم ﻣﻮرد ﻧﻈﺮ ﺑﻌﺪي در ﻧﻈﺮ ﻣﻲ ﮔﻴﺮد ﺗﺎ ﻣﻄﻤﺌﻦ‬
‫ﺷﻮد ‪ Slave‬ﻫﺎ ﭘﻴﺎم اوﻟﻴﻪ را ﮔﺮﻓﺘﻪ اﻧﺪ ﺑﻪ اﻳﻦ ﺗﺎﺧﻴﺮ ‪ Turnaround Delay‬ﻣﻴﮕﻮﻳﻨﺪ ‪ Master .‬ﻗﺒﻞ از‬
‫ﺑﺮﮔﺸﺖ ﺑﻪ وﺿﻌﻴﺖ ‪ Idle‬و آﻣﺎدﮔﻲ ﺑﺮاي ارﺳﺎل ﭘﻴﺎم ﺑﻌﺪي ﻟﺤﻈﺎﺗﻲ را ﺑﺼﻮرت اﻧﺘﻈﺎر ﻣﻴﮕﺬراﻧﺪ ﻛﻪ در‬
‫دﻳﺎﮔﺮام ﻓﻮق ﺑﻌﻨﻮان ‪ Waiting Turnaround Delay‬آﻣﺪه اﺳﺖ اﻳﻦ زﻣﺎن ﻻزم اﺳﺖ ﺑﻪ ﺣﺪ ﻛﺎﻓﻲ‬
‫ﻃﻮﻻﻧﻲ ﺑﺎﺷﺪ ﺗﺎ ‪ Slave‬ﻫﺎ ﻓﺮﻣﺎن را ﭘﺮدازش ﻛﺮده و ﺑﺮاي ﮔﺮﻓﺘﻦ دﻳﺘﺎي ﺑﻌﺪي آﻣﺎده ﺷﻮﻧﺪ‪.‬‬
‫در ﺣﺎﻟﺖ ‪ Unicast‬زﻣﺎن ‪ Time out‬ﺑﺎﻳﺴﺘﻲ در ﺣﺪ ﻣﻨﺎﺳﺐ و ﻛﺎﻓﻲ ﺗﻨﻈﻴﻢ ﺷﺪه ﺑﺎﺷﺪ ﺗﺎ ‪Slave‬ﺑﺘﻮاﻧﺪ در‬ ‫‪‬‬

‫ﻃﻮل آن ﻣﺪت درﺧﻮاﺳﺖ را ﭘﺮدازش ﻛﺮده و ﺟﻮاب را اراﺋﻪ دﻫﺪ ﻣﻌﻤﻮﻻً اﻳﻦ زﻣﺎن ﻛﻪ ﺑﻪ آن‬
‫‪ Response Time‬ﻣﻴﮕﻮﻳﻨﺪ ﺑﺮاي ﺳﺮﻋﺖ ‪ 9600 bps‬ﺑﻴﻦ ﻳﻚ ﺗﺎ ﭼﻨﺪ ﺛﺎﻧﻴﻪ ﺗﻨﻈﻴﻢ ﻣﻲ ﺷﻮد‪.‬‬
‫زﻣﺎن ‪ Turnaround Delay‬ﺑﺎﻳﺴﺘﻲ ﻛﻤﺘﺮ از زﻣﺎن ‪ Response Time‬ﺑﺎﺷﺪ‪ .‬اﻳﻦ ﺗﺎﺧﻴﺮ ﺑﺮاي ﺳﺮﻋﺖ‬ ‫‪‬‬

‫‪ 9600bps‬ﺣﺪود ‪ 100‬ﺗﺎ ‪ 200‬ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ اﺳﺖ‪.‬‬


‫ﺑﺮاي ﺗﺎﻣﻴﻦ اﻣﻨﻴﺖ ﻓﺮﻳﻢ از دو ﺗﻜﻨﻴﻚ اﺳﺘﻔﺎده ﻣﻴﺸﻮد اول ﺗﻜﻨﻴﻚ ‪ Parity‬ﻛﻪ ﺑﺮاﺳﺎس ﺑﻴﺘﻬﺎي ﻳﻚ دﻳﺘﺎ‬ ‫‪‬‬

‫ﻣﻘﺪار ﻣﻲ ﮔﻴﺮد دوم ﭼﻚ ‪ Redundancy‬ﺑﺮاي ﻛﻞ دﻳﺘﺎي داﺧﻞ ﻓﺮﻳﻢ ‪ .‬اﻳﻦ ﻣﻮارد ﺑﻌﺪاً ﺗﺸﺮﻳﺢ ﺧﻮاﻫﻨﺪ‬
‫ﺷﺪ‪.‬‬
‫دﻳﺎﮔﺮام وﺿﻌﻴﺖ ‪Slave‬‬
‫رﻓﺘﺎر ‪ Slave‬در دﻳﺎﮔﺮام زﻳﺮ آﻣﺪه اﺳﺖ ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻴﺸﻮد در اﻳﻨﺠﺎ ﻧﻴﺰ وﺿﻌﻴﺖ ‪ Idle‬وﺿﻌﻴﺖ اوﻟﻴﻪ‬
‫ﭘﺲ از وﺻﻞ ﺗﻐﺬﻳﻪ اﺳﺖ‪ .‬وﻗﺘﻲ درﺧﻮاﺳﺖ درﻳﺎﻓﺖ ﺷﺪ ‪ Slave‬ﺑﺴﺘﻪ دﻳﺘﺎ را ﻗﺒﻞ از اﻳﻨﻜﻪ ‪Action‬ﻣﻮرد‬
‫درﺧﻮاﺳﺖ در آن را اﻧﺠﺎم دﻫﺪ ﭼﻚ ﻣﻴﻜﻨﺪ‪ .‬در ﺻﻮرﺗﻲ ﻛﻪ اﺷﻜﺎﻻﺗﻲ ﻣﺎﻧﻨﺪ اﺷﻜﺎل در ﻓﺮﻣﺖ ﻓﺮﻳﻢ درﺧﻮاﺳﺖ ﻳﺎ‬
‫‪ Action‬ﻧﺎﺷﻨﺎﺧﺘﻪ و اﻣﺜﺎل آن وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﭘﺎﺳﺨﻲ ﻛﻪ ﻧﺸﺎن دﻫﻨﺪه وﺟﻮد اﺷﻜﺎل اﺳﺖ ﺑﻪ ‪ Master‬اﻋﻼم‬
‫ﻣﻴﮕﺮدد‪ .‬در ﻏﻴﺮ اﻳﻨﺼﻮرت ‪ Action‬را اﻧﺠﺎم داده و ﺳﭙﺲ ﭘﻴﺎم ﻣﻮرد ﻧﻴﺎز را ﺑﻪ ‪ Master‬ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ‪.‬‬
‫‪19‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫دﻳﺎﮔﺮام زﻣﺎﻧﻲ ارﺗﺒﺎط ‪ Master /Slave‬ﻛﻪ ﺳﻪ ﺳﻨﺎرﻳﻮي ﻣﺨﺘﻠﻒ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ در ﺻﻔﺤﻪ ﺑﻌﺪ آﻣﺪه اﺳﺖ‪ .‬ﺗﻮﺟﻪ‬
‫داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﻃﻮل ﻣﺪت ﻓﺎزﻫﺎي ‪ Request‬و ‪ Reply‬و ‪ Broadcast‬ﺑﺴﺘﮕﻲ ﺑﻪ ﻣﺸﺨﺼﺎت ارﺗﺒﺎﻃﻲ از ﺟﻤﻠﻪ‬
‫‪Slave‬‬ ‫ﻃﻮل ﻓﺮﻳﻢ دارد ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻃﻮل ﻓﺎزﻫﺎي ‪ Wait‬و ‪ Treatment‬ﺑﺴﺘﮕﻲ ﺑﻪ زﻣﺎن ﭘﺮدازش درﺧﻮاﺳﺖ ﺗﻮﺳﻂ‬
‫دارد‪.‬‬
MODBUS ‫ﺷﺒﻜﻪ‬ 20
‫‪21‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﻣﺪ ﻫﺎي اﻧﺘﻘﺎل ﺳﺮﻳﺎل‬


‫دو ﻣﺪ در اﻧﺘﻘﺎل ﺳﺮﻳﺎل ‪ Modbus‬وﺟﻮد دارد ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از ‪ RTU :‬و ‪ .ASCII‬اﻳﻦ ﻣﺪ ﻫﺎ وﺿﻌﻴﺖ ﺑﻴﺖ ﻫﺎي ﭘﻴﺎم‬
‫و ﻧﺤﻮه ﺑﺴﺘﻪ ﺑﻨﺪي و ﺑﺎز ﺷﺪن ﺑﺴﺘﻪ ﭘﻴﺎم را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪ .‬ﺗﻤﺎم وﺳﺎﻳﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﻨﺪ ﻣﺪ ‪ RTU‬را ﻛﻪ ﻣﺪ ﭘﻴﺶ ﻓﺮض‬
‫اﺳﺖ ﺑﻜﺎر ﺑﺒﺮﻧﺪ وﻟﻲ ﻣﺪ ‪ ASCII‬اﺧﺘﻴﺎري اﺳﺖ‪.‬‬

‫‪Remote Terminal Unit‬‬ ‫ﻣﺪ ‪ RTU‬ﻳﺎ‬


‫در اﻳﻦ ﻣﺪ ﻫﺮ ‪ 8‬ﺑﻴﺖ از ﺑﺎﻳﺖ ﭘﻴﺎم ﺷﺎﻣﻞ دو ﻛﺎراﻛﺘﺮ ‪ 4‬ﺑﻴﺘﻲ ﻫﮕﺰا دﺳﻴﻤﺎل اﺳﺖ‪ .‬اﻳﻦ وﻳﮋﮔﻲ ﭼﮕﺎﻟﻲ دﻳﺘﺎ را‬
‫اﻓﺰاﻳﺶ داده و ﺑﺎﻋﺚ ﻣﻲ ﺷﻮد ﻛﻪ ﻧﺴﺒﺖ ﺑﻪ ﻣﺪ ‪ ASCII‬ﻧﺮخ ﺗﺒﺎدل دﻳﺘﺎ ﺑﻬﺘﺮ ﺑﺎﺷﺪ‪ .‬ﻫﺮ ﭘﻴﺎم ﺑﺼﻮرت رﺷﺘﻪ اي از‬
‫ﻛﺎراﻛﺘﺮﻫﺎ ارﺳﺎل ﻣﻴﮕﺮدد ‪ .‬ﻓﺮﻣﺖ ‪ 11‬ﺑﻴﺖ ﺑﺴﺘﻪ دﻳﺘﺎ در ﻣﺪ ‪ RTU‬ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫‪ 1‬ﺑﻴﺖ ﺑﺮاي ﺷﺮوع دﻳﺘﺎ‬ ‫‪‬‬

‫‪Start‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪Par‬‬ ‫‪Stop‬‬ ‫‪ 8‬ﺑﻴﺖ ﺑﺮاي دﻳﺘﺎ‬ ‫‪‬‬

‫‪Parity‬‬ ‫‪ 1‬ﺑﻴﺖ ﺑﺮاي‬ ‫‪‬‬

‫‪ 1‬ﺑﻴﺖ ﺑﺮاي ﭘﺎﻳﺎن دﻳﺘﺎ‬ ‫‪‬‬

‫ﻣﻌﻤﻮﻻً ‪ Parity‬زوج ﺑﺼﻮرت ﭘﻴﺶ ﻓﺮض ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻴﮕﻴﺮد اﮔﺮﭼﻪ ‪ Parity‬ﻓﺮد ﻳﺎ ﺣﺘﻲ ﺑﺪون ﭼﻚ‬
‫‪ Parity‬ﻧﻴﺰ ﻣﻴﺘﻮاﻧﺪ ﺑﻜﺎر رود‪ .‬ﺣﺎﻟﺖ اﺧﻴﺮ ﺑﺮاي اﻃﻤﻴﻨﺎن از ﻣﺎﻛﺰﻳﻤﻢ ﺳﺎزﮔﺎري ﺑﺎ ﻣﺤﺼﻮﻻت ﻣﺨﺘﻠﻒ ﭘﻴﺸﻨﻬﺎد‬
‫ﻣﻴﺸﻮد در اﻳﻦ ﺣﺎﻟﺖ ‪ 2‬ﺑﻴﺖ ﭘﺎﻳﺎﻧﻲ ﻣﻮرد ﻧﻴﺎز اﺳﺖ ﺷﻜﻞ زﻳﺮ‪:‬‬

‫‪Start‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪Stop‬‬ ‫‪Stop‬‬

‫ﻓﺮﻣﺖ ﻛﻠﻲ ﻓﺮﻳﻢ ﻛﻪ ﺷﺎﻣﻞ ﻛﺎراﻛﺘﺮﻫﺎي ﻣﺨﺘﻠﻒ اﺳﺖ در ﻣﺪ ‪ RTU‬ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪ .‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﺸﺎﻫﺪه‬
‫ﻣﻴﺸﻮد ﻣﺎﻛﺰﻳﻤﻢ ﻃﻮل ﻓﺮﻳﻢ در اﻳﻦ ﻣﺪ ﺑﺮاﺑﺮ ‪ 256‬ﺑﺎﻳﺖ ﻣﻴﺒﺎﺷﺪ و ﻣﺎﻛﺰﻳﻤﻢ ﻣﻘﺪار دﻳﺘﺎ ‪ 253‬ﺑﺎﻳﺖ اﺳﺖ‪.‬‬

‫ﺑﻴﻦ ﻓﺮﻳﻢ ﻫﺎ ﻳﻚ ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ وﺟﻮد دارد ﻛﻪ ﺣﺪاﻗﻞ ﺑﻪ اﻧﺪازه ‪ 3.5‬ﻛﺎراﻛﺘﺮ اﺳﺖ و ﺑﻪ آن ﻓﺎﺻﻠﻪ ﺧﺎﻣﻮﺷﻲ ﻧﻴﺰ‬
‫ﻣﻴﮕﻮﻳﻨﺪ‪( Silent Interval ).‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪22‬‬

‫اﮔﺮ ﺑﻴﻦ دو ﻛﺎراﻛﺘﺮ ﻣﺘﻮاﻟﻲ ﻳﻚ ﻓﺮﻳﻢ ﺗﺎﺧﻴﺮي ﺑﻴﺶ از ‪ 1.5‬ﻛﺎراﻛﺘﺮ ﭘﻴﺶ ﺑﻴﺎﻳﺪ ﻧﺸﺎن دﻫﻨﺪه اﺷﻜﺎل اﺳﺖ‪.‬‬

‫اﻳﻦ ﻓﻮاﺻﻞ زﻣﺎﻧﻲ ﻛﻪ ﺑﻪ ﺗﺎﻳﻤﺮﻫﺎي ‪ t1.5‬و ‪ t3.5‬ﻧﻴﺰ ﻣﻌﺮوف اﺳﺖ ﺑﺮاي ﻛﻨﺘﺮل ﻧﻴﺎز ﺑﻪ وﻗﻔﻪ ﻫﺎي زﻳﺎد دارد ﻛﻪ در‬
‫ﺳﺮﻋﺘﻬﺎي ﺑﺎﻻ ﺑﺎر زﻳﺎدي را ﺑﻪ ‪ CPU‬ﺗﺤﻤﻴﻞ ﻣﻴﻜﻨﺪ و ﺑﻬﺘﺮ اﺳﺖ در ﺳﺮﻋﺘﻬﺎي ﺑﺎﻻ زﻣﺎن اﻳﻦ ﺗﺎﻳﻤﺮﻫﺎ ﻓﻴﻜﺲ‬
‫ﺷﻮﻧﺪ‪.‬ﭘﻴﺸﻨﻬﺎد ﻣﻴﺸﻮد ﺑﺮاي ‪ t1.5‬زﻣﺎن ‪ 750‬ﻣﻴﻜﺮوﺛﺎﻧﻴﻪ و ﺑﺮاي ‪ t3.5‬زﻣﺎن ‪ 1750‬ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺑﻜﺎر ﺑﺮده ﺷﻮد‪.‬‬
‫دﻳﺎﮔﺮام وﺿﻌﻴﺖ ﻣﺪ ‪ RTU‬در ﺷﻜﻞ ﺑﻌﺪ آﻣﺪه اﺳﺖ ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﺸﺎﻫﺪه ﻣﻴﺸﻮد ‪:‬‬
‫ﮔﺬر از وﺿﻌﻴﺖ ‪ initial‬ﺑﻪ ‪ Idle‬ﻧﻴﺎز ﺑﻪ ﮔﺬﺷﺖ زﻣﺎن ‪ t3.5‬دارد ﺗﺎ ﺗﺎﺧﻴﺮ ﻻزم ﺑﻮﺟﻮد آﻳﺪ‪.‬‬ ‫‪‬‬

‫وﺿﻌﻴﺖ ‪ Idle‬وﻗﺘﻲ ﻛﻪ ارﺳﺎل ﻳﺎ درﻳﺎﻓﺘﻲ اﻧﺠﺎم ﻧﻤﻴﺸﻮد ﺑﻌﻨﻮان وﺿﻌﻴﺖ ﻧﺮﻣﺎل ﺗﻠﻘﻲ ﻣﻴﺸﻮد‪.‬‬ ‫‪‬‬

‫وﻗﺘﻲ ﺳﻴﺴﺘﻢ در وﺿﻌﻴﺖ ‪ Idle‬اﺳﺖ ﻫﺮ ﻛﺎراﻛﺘﺮي ﻛﻪ ﭘﺲ از آن ارﺳﺎل ﺷﻮدﺑﻌﻨﻮان ﺷﺮوع ﻓﺮﻳﻢ‬ ‫‪‬‬

‫ﻣﺤﺴﻮب ﺷﺪه و ﺳﻴﺴﺘﻢ را ﺑﻪ ﺣﺎﻟﺖ ‪ Active‬ﻣﻲ ﺑﺮد‪.‬ﺳﭙﺲ اﮔﺮ ﺑﺎ ﮔﺬﺷﺖ زﻣﺎن ‪ t3.5‬ﻛﺎراﻛﺘﺮي‬
‫ارﺳﺎل ﻧﺸﺪ ﺑﻌﻨﻮان ﭘﺎﻳﺎن ﻓﺮﻳﻢ ﺗﻠﻘﻲ ﻣﻲ ﮔﺮدد‪.‬‬
‫ﭘﺲ از آﺷﻜﺎر ﺷﺪن ﭘﺎﻳﺎن ﻓﺮﻳﻢ ﻓﻴﻠﺪ ‪CRC‬ﭼﻚ ﻣﻴﺸﻮد و ﺑﺪﻧﺒﺎل آن ﻓﻴﻠﺪ آدرس آﻧﺎﻟﻴﺰ ﻣﻴﺸﻮد ﺗﺎ‬ ‫‪‬‬

‫ﻣﺸﺨﺺ ﺷﻮد ﻛﻪ ﻓﺮﻳﻢ ﻣﺮﺑﻮط ﺑﻪ ﻫﻤﻴﻦ وﺳﻴﻠﻪ اﺳﺖ ﻳﺎ ﺧﻴﺮ‪ .‬اﮔﺮ ﺗﻄﺎﺑﻖ ﻧﺪاﺷﺖ ﻓﺮﻳﻢ ﺣﺬف ﻣﻴﺸﻮد‪.‬‬
‫ﺑﺮاي ﻛﺎﻫﺶ زﻣﺎن ﭘﺮدازش ﻓﻴﻠﺪ آدرس ﻣﻴﺘﻮاﻧﺪ ﺑﻪ ﻣﺤﺾ درﻳﺎﻓﺖ ﻓﺮﻳﻢ و ﺑﺪون اﻧﺘﻈﺎر ﺑﺮاي ﭘﺎﻳﺎن آن‬
‫آﻧﺎﻟﻴﺰ ﺷﻮدﺑﺪﻳﻬﻲ اﺳﺖ ‪ CRC‬درﺻﻮرﺗﻲ ﻣﺤﺎﺳﺒﻪ و ﭼﻚ ﻣﻴﺸﻮد ﻛﻪ ﻓﺮﻳﻢ ﻣﺮﺑﻮط ﺑﻪ ﻫﻤﻴﻦ وﺳﻴﻠﻪ ﺑﺎﺷﺪ‪.‬‬
23 MODBUS ‫ﺷﺒﻜﻪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪24‬‬

‫‪Cyclic Redundancy Check‬‬ ‫ﭼﻚ ‪ CRC‬ﻳﺎ‬


‫‪CRC‬‬ ‫ﻓﻴﻠﺪ ‪ CRC‬ﻣﺤﺘﻮﻳﺎت داﺧﻞ ﭘﻴﺎم را ﭼﻚ ﻣﻴﻜﻨﺪ و ﻣﺴﺘﻘﻞ از ﭼﻚ ‪ Parity‬ﻣﺮﺑﻮط ﺑﻪ ﻛﺎراﻛﺘﺮﻫﺎ ﻋﻤﻞ ﻧﻤﺎﻳﺪ‪.‬‬
‫از ‪ 16‬ﺑﻴﺖ ﻳﻌﻨﻲ دو ﺑﺎﻳﺖ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﺪ ﻛﻪ اﻳﻦ دوﺑﺎﻳﺖ ﺑﻪ اﻧﺘﻬﺎي ﭘﻴﺎم اﻓﺰوده ﻣﻴﺸﻮﻧﺪ‪ .‬ﻣﻘﺪار ‪ CRC‬ﺑﻪ روﺷﻲ‬
‫ﻛﻪ ﺑﻴﺎن ﺧﻮاﻫﺪ ﺷﺪ در ﻣﻮﻗﻊ ارﺳﺎل ﺗﻮﺳﻂ ﻓﺮﺳﺘﻨﺪه ﻣﺤﺎﺳﺒﻪ و ﺑﻪ ﭘﻴﺎم اﺿﺎﻓﻪ ﻣﻴﺸﻮد ﮔﻴﺮﻧﺪه ﻧﻴﺰ ﭘﺲ از درﻳﺎﻓﺖ ﭘﻴﺎم‬
‫ﻣﻘﺪار ‪ CRC‬را ﺑﻪ ﻫﻤﺎن روش از ﻧﻮ ﻣﺤﺎﺳﺒﻪ ﻣﻴﻜﻨﺪ‪ .‬اﮔﺮ ﻣﻘﺪار ﻣﺤﺎﺳﺒﻪ ﺷﺪه ﺑﺎ آﻧﭽﻪ در ﻓﺮﻳﻢ دﻳﺘﺎ ﻣﻮﺟﻮد اﺳﺖ‬
‫ﺗﻨﺎﻗﺾ داﺷﺖ ﺳﻴﮕﻨﺎل ﺧﻄﺎ آﺷﻜﺎر ﻣﻴﮕﺮدد‪ CRC .‬ﺑﺮ اﺳﺎس ‪ 8‬ﺑﻴﺖ دﻳﺘﺎي ﻣﻮﺟﻮد در ﺑﺴﺘﻪ دﻳﺘﺎ ﺳﺎﺧﺘﻪ ﻣﻴﺸﻮد و ﺑﻪ‬
‫ﺑﻴﺘﻬﺎي ‪ Start‬و ‪ Stop‬و ‪ Parity‬ﻛﺎري ﻧﺪارد‪ .‬ﺑﻄﻮر ﺧﻼﺻﻪ ﻣﺮاﺣﻞ اﻳﺠﺎد ‪ CRC‬ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫‪ -1‬ﺑﺎر ﻛﺮدن ﻣﻘﺪار ‪ FFFF‬ﻫﮕﺰ ﺑﻪ رﺟﻴﺴﺘﺮ ‪ CRC‬ﻳﻌﻨﻲ ﻫﻤﻪ ﺑﻴﺘﻬﺎ ﻳﻚ ﺷﻮﻧﺪ‪.‬‬
‫‪ XOR‬ﻛﺮدن ‪ 8‬ﺑﻴﺖ ﻣﺮﺑﻮط ﺑﻪ ﺑﺎﻳﺖ ﭘﻴﻐﺎم ﺑﺎ ‪ 8‬ﺑﻴﺖ ﻣﺮﺑﻮط ﺑﻪ ﺑﺎﻳﺖ ﺑﺎ ارزش ﻛﻤﺘﺮ از ‪ 16‬ﺑﻴﺖ رﺟﻴﺴﺘﺮ‬ ‫‪-2‬‬
‫‪ CRC‬ﻳﻌﻨﻲ ‪ 8‬ﺑﻴﺖ ﺳﻤﺖ راﺳﺖ و ﻗﺮار دادن ﻧﺘﻴﺠﻪ در ‪CRC‬‬

‫‪MSB‬‬ ‫‪ -3‬ﺷﻴﻔﺖ داد ن رﺟﻴﺴﺘﺮ ‪ CRC‬ﻳﻚ ﺑﻴﺖ ﺑﻪ راﺳﺖ و وارد ﻛﺮدن ﺻﻔﺮ از ﺳﻤﺖ دﻳﮕﺮ ﻳﻌﻨﻲ ﺳﻤﺖ‬
‫ﻳﺎ ‪Most Significant Bit‬‬

‫‪ -4‬ﭼﻚ ﻛﺮدن آﻧﭽﻪ از ‪ LSB‬ﻳﺎ ‪ Least Significant Bit‬ﺑﻴﺮون ﻣﻲ اﻓﺘﺪ ‪.‬‬


‫‪ -5‬اﮔﺮ ‪ LSB‬ﺻﻔﺮ ﺑﻮدﺗﻜﺮار ﻗﺪم ﺳﻮم‪ .‬و اﮔﺮ ‪ LSB‬ﻳﻚ ﺑﻮد ‪ XOR‬ﻛﺮدن ‪ CRC‬ﺑﺎ ﻣﻘﺪار ﻫﮕﺰ‬
‫‪ 0XA001‬ﻳﻌﻨﻲ ﺑﺎ ‪1010 0000 0000 0001‬‬
‫‪ -6‬ﺗﻜﺮار ﻗﺪم ﻫﺎي ‪ 2‬ﺗﺎ ‪ 5‬ﺑﺮاي ‪ 8‬ﺑﻴﺖ ﺑﻌﺪي از ﺑﺎﻳﺖ ﻫﺎي ﭘﻴﺎم ﺗﺎ اﻳﻨﻜﻪ اﻳﻨﻜﺎر روي ﺗﻤﺎم ﺑﺎﻳﺖ ﻫﺎ اﻧﺠﺎم‬
‫ﺷﻮد‪.‬‬
‫ﻧﻬﺎﻳﺘﺎً آﻧﭽﻪ در رﺟﻴﺴﺘﺮ ‪ CRC‬ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﺪﻫﻤﺎن ﻣﻘﺪار ﻣﺤﺎﺳﺒﻪ ﺷﺪه ‪ CRC‬اﺳﺖ‪ .‬ﭘﺲ از اﺗﻤﺎم اﻳﻦ ﻛﺎر ﺑﺎﻳﺘﻬﺎي‬
‫ﺑﺎﻻ و ﭘﺎﻳﻴﻦ ‪ CRC‬ﺟﺎﺑﺠﺎ ﺷﺪه و ﺑﻪ ﻓﺮﻳﻢ ﭘﻴﺎم اﺿﺎﻓﻪ ﻣﻴﮕﺮدﻧﺪ‪ .‬در ﻣﺜﺎل ﺷﻜﻞ زﻳﺮ ﻣﻘﺪار ‪ CRC‬ﺑﺮاﺑﺮ ﺑﺎ ‪ 1241‬ﻫﮕﺰ‬
‫ﺑﻮده اﺳﺖ ﻛﻪ ﺑﺎ ﺟﺎﺑﺠﺎ ﺷﺪن دوﺑﺨﺶ آن اﺑﺘﺪا ﻣﻘﺪار ‪ 41‬و ﺳﭙﺲ ﻣﻘﺪار ‪ 12‬ﺑﻪ ﭘﻴﺎم اﺿﺎﻓﻪ ﮔﺮدﻳﺪه اﺳﺖ‪.‬‬

‫ﺑﻄﻮر ﺧﻼﺻﻪ اﻟﮕﻮرﻳﺘﻢ ﻣﺤﺎﺳﺒﻪ ‪ CRC‬در ﺻﻔﺤﻪ ﺑﻌﺪ آورده ﺷﺪه و ﺑﺮﻧﺎﻣﻪ اي ﻧﻴﺰ ﺑﻌﻨﻮان ﻧﻤﻮﻧﻪ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ آن‬
‫ذﻛﺮ ﮔﺮدﻳﺪه اﺳﺖ‪ .‬ﺑﺎز ﺑﺮاي روﺷﻦ ﺷﺪن دﻗﻴﻘﺘﺮ ﻣﻮﺿﻮع ﻣﺜﺎﻟﻲ در اداﻣﻪ آورده ﺷﺪه اﺳﺖ‪.‬‬
25 MODBUS ‫ﺷﺒﻜﻪ‬

BEGIN
ErrorWord = Hex (FFFF)
FOR Each byte in message
ErrorWord = ErrorWord XOR byte in message
FOR Each bit in byte
LSB = ErrorWord AND Hex (0001)
IF LSB = 1 THEN ErrorWord = ErrorWord – 1
ErrorWord = ErrorWord / 2
IF LSB = 1 THEN ErrorWord = ErrorWord XOR Hex (A001)
NEXT bit in byte
NEXT Byte in message
MODBUS ‫ﺷﺒﻜﻪ‬ 26

END
‫‪27‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫‪Ameriican Standard Code for Information Interchange‬‬ ‫ﻣﺪ اﻧﺘﻘﺎل ‪ ASCII‬ﻳﺎ‬


‫‪RTU‬‬ ‫در اﻳﻦ ﻣﺪ ﻫﺮ ‪ 8‬ﺑﻴﺖ از ﺑﺎﻳﺖ ﭘﻴﺎم ﺑﺼﻮرت ‪ 2‬ﻛﺎراﻛﺘﺮ ‪ ASCII‬ارﺳﺎل ﻣﻴﺸﻮد از اﻳﻨﺮو ﺑﺎزدﻫﻲ آن ﻧﺴﺒﺖ ﺑﻪ‬
‫ﻛﻤﺘﺮ اﺳﺖ ﺑﻌﻨﻮان ﻣﺜﺎل در اﻳﻦ ﻣﺪ ﺑﺎﻳﺖ ‪ 0X5B‬ﺑﺼﻮرت دو ﺑﺎﻳﺖ ﻳﻌﻨﻲ ”‪ 0X35=”5‬و ”‪ 0X42=”B‬در ﻣﻲ آﻳﺪ‪.‬‬
‫اﻳﻦ ﻣﺪ در ﺟﺎﻳﻲ ﻛﻪ ﻟﻴﻨﻚ ﻓﻴﺰﻳﻜﻲ ﻳﺎ ﻗﺎﺑﻠﻴﺖ ﻫﺎي وﺳﻴﻠﻪ اﺟﺎزه اﺳﺘﻔﺎده از ﻣﺪ ‪ RTU‬را ﻧﻤﻲ دﻫﺪ )ﺑﻮﻳﮋه از ﻧﻈﺮ‬
‫ﻣﺪﻳﺮﻳﺖ ﺗﺎﻳﻤﺮﻫﺎ( اﺳﺘﻔﺎده ﻣﻴﮕﺮدد‪ .‬در ﻣﺪ ‪ ASCII‬ﻓﺮﻣﺖ ‪ 10‬ﺑﻴﺖ ﻫﺮ ﺑﺴﺘﻪ دﻳﺘﺎ ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫‪ 1‬ﺑﻴﺖ ﺑﺮاي ‪Parity‬‬ ‫‪‬‬ ‫‪ 1‬ﺑﻴﺖ ﺑﺮاي ﺷﺮوع‬ ‫‪‬‬

‫‪ 1‬ﺑﻴﺖ ﺑﺮاي ‪Stop‬‬ ‫‪‬‬ ‫‪ 7‬ﺑﻴﺖ ﺑﺮاي دﻳﺘﺎ‬ ‫‪‬‬

‫‪Start‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪Par‬‬ ‫‪Stop‬‬

‫ﻧﻮع ‪ Parity‬ﺷﺒﻴﻪ آﻧﭽﻪ ﺑﺮاي ‪ RTU‬ذﻛﺮ ﺷﺪ زوج ﺑﻮده وﻟﻲ اﻧﻮاع دﻳﮕﺮ ﻧﻴﺰ ﻗﺎﺑﻞ اﺳﺘﻔﺎده اﺳﺖ‪.‬‬
‫ﻧﺤﻮه ارﺳﺎل ﻧﻴﺰ ﺷﺒﻴﻪ ‪ RTU‬اﺳﺖ ﻳﻌﻨﻲ از ﺑﻴﺖ ‪ LSB‬ﺷﺮوع و ﺗﺎ ﺑﻴﺖ ‪ MSB‬اداﻣﻪ ﻣﻲ ﻳﺎﺑﺪ‪.‬‬
‫ﻓﺮﻳﻢ ﭘﻴﺎم در ﻣﺪ ‪ASCII‬‬
‫ﻫﺮ ﻓﺮﻳﻢ ‪ ASCII‬از ﺑﺨﺸﻬﺎﻳﻲ ﻣﺎﻧﻨﺪ ﺷﻜﻞ زﻳﺮ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ‪:‬‬

‫ﻛﺎراﻛﺘﺮ ﺷﺮوع ﻳﻚ ﻛﺎراﻛﺘﺮ ﻛﻪ ‪) Colon‬ﻳﻌﻨﻲ ‪ ( :‬اﺳﺖ و ﻫﮕﺰ آن ‪ 3A‬اﺳﺖ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺗﺠﻬﻴﺰات ﻣﺘﺼﻞ ﺑﻪ‬
‫ﺑﺎس ﻣﺮﺗﺒﺎً ﺑﺎس را ﺑﺮاي ﻳﺎﻓﺘﻦ اﻳﻦ ﻛﺎراﻛﺘﺮ ﻣﺎﻧﻴﺘﻮر ﻣﻲ ﻛﻨﻨﺪ‪ .‬وﻗﺘﻲ اﻳﻦ ﻛﺎراﻛﺘﺮ درﻳﺎﻓﺖ ﺷﺪ وﺳﻴﻠﻪ ﻛﺎراﻛﺘﺮ ﺑﻌﺪي‬
‫را ﻣﻲ ﮔﻴﺮد ﻛﻪ آدرس را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ و اﮔﺮ آدرس ﺑﻪ او ﻣﺮﺑﻮط ﺑﻮد ﺳﺎﻳﺮ ﻛﺎراﻛﺘﺮﻫﺎ را درﻳﺎﻓﺖ ﻣﻴﻜﻨﺪ ﺗﺎ ﺑﺴﺘﻪ‬
‫ﺑﻪ ﭘﺎﻳﺎن ﺑﺮﺳﺪ ‪ .‬ﻛﺎراﻛﺘﺮ ﭘﺎﻳﺎﻧﻲ ‪ Carriage Retun-Line Feed‬ﻳﺎ ‪ CRLF‬اﺳﺖ ﻛﻪ ﻛﺪ اﺳﻜﻲ آن ‪ 0D‬و ﻛﺪ ﻫﮕﺰ‬
‫آن ‪ 0A‬ﻣﻴﺒﺎﺷﺪ‪.‬‬
‫ﺑﻴﻦ رﺷﺘﻪ ﻛﺎراﻛﺘﺮﻫﺎي داﺧﻞ ﭘﻴﺎم ﻣﻤﻜﻦ اﺳﺖ ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺗﺎ ﻳﻚ ﺛﺎﻧﻴﻪ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻛﺎرﺑﺮ ﺑﺎ ﭘﻴﻜﺮﺑﻨﺪي‬
‫‪ Time out‬ﻣﻴﺘﻮاﻧﺪ ﻣﺸﺨﺺ ﻛﻨﺪ ﻛﻪ اﮔﺮ زﻣﺎن ﺑﻴﺶ از ﻳﻚ ﺛﺎﻧﻴﻪ ﺑﺎﺷﺪ ﭘﻴﺎم ﺧﻄﺎ اﻋﻼم ﺷﻮد‪.‬ﺑﺮﺧﻲ از ﺷﺒﻜﻪ ﻫﺎي‬
‫وﺳﻴﻊ ﻣﻤﻜﻦ اﺳﺖ ﺑﻪ ‪ time out‬ﺑﻴﻦ ‪ 4‬ﺗﺎ ‪ 5‬ﺛﺎﻧﻴﻪ ﻧﻴﺎز داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫ﻫﺮ ﺑﺎﻳﺖ دﻳﺘﺎ ﻧﻴﺎز ﺑﻪ ‪ 2‬ﻛﺎراﻛﺘﺮ ﺑﺮاي ﻛﺪ ﻛﺮدن دﻳﺘﺎ داردﺑﻨﺎﺑﺮاﻳﻦ ﺑﺮاي اﻃﻤﻴﻨﺎن از ﺳﺎزﮔﺎري ﺑﻴﻦ ﻣﺪﻫﺎي ‪ ASCII‬و‬
‫‪ RTU‬ﻣﺎﻛﺰﻳﻤﻢ ﺳﺎﻳﺰ اﺧﺘﺼﺎص ﻳﺎﻓﺘﻪ ‪ 2x252‬ﻛﺎراﻛﺘﺮ اﺳﺖ ﻳﻌﻨﻲ دو ﺑﺮاﺑﺮﺳﺎﻳﺰ دﻳﺘﺎي ‪ . RTU‬ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ ﺳﺎﻳﺰ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪28‬‬

‫ﻛﻞ ﻓﺮﻳﻢ ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﺑﺎﻻ ‪ 513‬ﻛﺎراﻛﺘﺮ ﺧﻮاﻫﺪ ﺑﻮد‪.‬ﻛﻨﺘﺮل ﺧﻄﺎ در اﻳﻦ ﻣﺪ ﺗﻮﺳﻂ ‪ LRC‬اﻧﺠﺎم ﻣﻴﺸﻮد ﻛﻪ ﺗﺸﺮﻳﺢ‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫دﻳﺎﮔﺮام وﺿﻌﻴﺖ ﻣﺪ اﻧﺘﻘﺎل ‪ASCII‬‬
‫اﻳﻦ دﻳﺎﮔﺮام ﻛﻪ ﻫﻢ وﺿﻌﻴﺖ ‪ Master‬و ﻫﻢ وﺿﻌﻴﺖ ‪ Slave‬را ﻧﺸﺎن ﻣﻴﺪﻫﺪ در ﺷﻜﻞ زﻳﺮ آﻣﺪه اﺳﺖ‪.‬‬
‫‪:‬‬ ‫وﺿﻌﻴﺖ ‪ Idle‬وﺿﻌﻴﺘﻲ اﺳﺖ ﻛﻪ در آن ﻫﻴﭻ ارﺳﺎل ﻳﺎ درﻳﺎﻓﺘﻲ روي ﺑﺎس اﻧﺠﺎم ﻧﻤﻴﺸﻮد‪ .‬درﻳﺎﻓﺖ ﻫﺮ ﻛﺎراﻛﺘﺮ‬
‫ﺑﻪ ﻣﻌﻨﻲ ﺷﺮوع ﭘﻴﺎم ﺟﺪﻳﺪ اﺳﺖ‪ .‬اﮔﺮ ﭘﻴﺎﻣﻲ ﻫﻨﻮز ﺗﻤﺎم ﻧﺸﺪه ﻣﺠﺪداً ﻛﺎراﻛﺘﺮ ‪ :‬ﺑﺮﺳﺪ در اﻳﻨﺼﻮرت ﭘﻴﺎم ﻗﺒﻠﻲ ﻣﻨﺘﻔﻲ‬
‫ﺗﻠﻘﻲ ﻣﻴﮕﺮدد‪ .‬ﺑﺎ درﻳﺎﻓﺖ ﺷﺪن ﻛﺎراﻛﺘﺮ ﭘﺎﻳﺎﻧﻲ ﻳﻌﻨﻲ ‪ ، CRLF‬ﻣﺤﺎﺳﺒﻪ و ﭼﻚ ‪ LRC‬ﺷﺮوع ﻣﻴﺸﻮد‪.‬‬
‫‪29‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫‪Longitudinal Redundancy Check‬‬ ‫ﻣﺤﺎﺳﺒﻪ و ﭼﻚ ‪ LRC‬ﻳﺎ‬


‫ﭼﻚ ‪ LRC‬ﻓﻘﻂ روي ﺧﻮد دﻳﺘﺎ اﻧﺠﺎم ﻣﻴﺸﻮد ﭘﺲ ﺑﻴﺖ ﻫﺎي ﺷﺮوع و ﭘﺎﻳﺎن و ‪ Parity‬در ﻣﺤﺎﺳﺒﻪ ﻣﻨﻈﻮر‬
‫ﻧﻤﻴﮕﺮدﻧﺪ‪ LRC .‬ﻳﻚ ﺑﺎﻳﺖ اﺳﺖ )‪ 8‬ﺑﻴﺖ( ﻛﻪ ﺑﺼﻮرت ‪ 2‬ﻛﺎراﻛﺘﺮ اﺳﻜﻲ در ﻣﻲ آﻳﺪ اﻳﻦ ﻣﻘﺪار در ﺳﻤﺖ‬
‫ﻓﺮﺳﺘﻨﺪه ﺑﻪ روﺷﻲ ﻛﻪ ﮔﻔﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ ﻣﺤﺎﺳﺒﻪ و ﺑﻪ ﭘﻴﺎم اﺿﺎﻓﻪ ﻣﻲ ﮔﺮدد‪ .‬ﮔﻴﺮﻧﺪه ﭘﺲ از درﻳﺎﻓﺖ ﭘﻴﺎم ﻧﻴﺰ ﺷﺨﺼﺎً‬
‫ﻣﺒﺎدرت ﺑﻪ ﻣﺤﺎﺳﺒﻪ ‪ LRC‬ﺑﻪ ﻫﻤﺎن روش ﻣﻴﻜﻨﺪ و در ﺻﻮرﺗﻲ ﻛﻪ ﻣﻘﺪار ﻣﺤﺎﺳﺒﻪ ﺷﺪه ﺑﺎ ‪ LRC‬ﻣﻮﺟﻮد در ﺑﺴﺘﻪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪30‬‬

‫ﻳﻜﻲ ﺑﻮد آﻧﺮا ﺑﻌﻨﻮان ﻳﻚ ﭘﻴﺎم ﺻﺤﻴﺢ ﻣﻲ ﭘﺬﻳﺮد‪ LRC.‬ﺑﺎ ﺟﻤﻊ ﻛﺮدن ﺗﻤﺎم ﺑﺎﻳﺘﻬﺎي داﺧﻞ ﭘﻴﺎم ﺑﺪون ﺑﻴﺖ ﻫﺎي ذﻛﺮ‬
‫ﺷﺪه وﺳﭙﺲ ﻣﺘﻤﻢ دو ﻛﺮدن ﻧﺘﻴﺠﻪ ﻣﺤﺎﺳﺒﻪ ﻣﻴﺸﻮد ﻃﺒﻖ ﻗﺪم ﻫﺎي زﻳﺮ‪:‬‬
‫‪ -1‬ﺟﻤﻊ ﻛﺮدن ﺑﺎﻳﺘﻬﺎي ﭘﻴﺎم و رﻳﺨﺘﻦ آﻧﻬﺎ در ﻓﻴﻠﺪ ‪ 8‬ﺑﻴﺘﻲ ﺑﺪﻳﻬﻲ اﺳﺖ اﮔﺮ ‪ Carry‬ﺗﻮﻟﻴﺪ ﺷﻮد از ﺑﻴﻦ‬
‫ﻣﻴﺮود‪.‬‬
‫‪ -2‬ﻛﻢ ﻛﺮدن ﻣﻘﺪار ﻣﻨﺘﺠﻪ از ﻣﻘﺪار ﻫﮕﺰ ‪ FF‬ﻳﻌﻨﻲ از ‪ 1111 1111‬ﺑﺮاي ﺗﻮﻟﻴﺪ ﻣﺘﻤﻢ ﻳﻚ‬
‫‪ -3‬اﺿﺎﻓﻪ ﻛﺮدن ﻳﻚ ﺑﻪ ﻣﻘﺪار ﺣﺎﺻﻞ از ﻗﺪم دوم ﺗﺎ ﻣﺘﻤﻢ دو ﺑﺪﺳﺖ آﻳﺪ‪.‬‬
‫ﻣﻘﺪار ﻣﻨﺘﺠﻪ ﺑﺼﻮرت دو ﻛﺎراﻛﺘﺮ ﺑﻪ ﭘﻴﺎم اﺿﺎﻓﻪ ﻣﻴﺸﻮد‪ .‬در اﻳﻨﺤﺎﻟﺖ ﺑﺮﺧﻼف ‪ CRC‬اﺑﺘﺪا ﻛﺎراﻛﺘﺮ ﺑﺎ ارزش ﺑﺎﻻﺗﺮ‬
‫و ﺳﭙﺲ ﻛﺎراﻛﺘﺮ ﺑﺎ ارزش ﭘﺎﻳﻴﻦ ﺗﺮ ﺑﻌﺪ از دﻳﺘﺎ ﻗﺮار ﻣﻴﮕﻴﺮد ﻣﺜﻼً اﮔﺮ ﻣﻘﺪار ﻣﻨﺘﺠﻪ ‪ 61‬ﻫﮕﺰ ﻳﻌﻨﻲ ‪ 0110 0001‬ﺑﺎﺷﺪ‬
‫ﺷﻜﻞ زﻳﺮ را ﺧﻮاﻫﻴﻢ داﺷﺖ‪:‬‬

‫ﻓﺎﻧﻜﺸﻦ ﻛﺪﻫﺎي ‪Modbus‬‬


‫در ارﺗﺒﺎط ‪ Modbus‬ﻧﻮع ﻋﻤﻠﻲ ﻛﻪ ﺑﺎﻳﺪ اﻧﺠﺎم ﺷﻮد ﺗﻮﺳﻂ ﻓﺎﻧﻜﺸﻦ ﻛﺪﻫﺎ ﻣﺸﺨﺺ ﻣﻴﮕﺮدد‪ .‬ﺑﻌﻨﻮان ﻣﺜﺎل وﻗﺘﻲ‬
‫‪ Master‬ﻛﻪ ﺑﻌﻀﺎً ﺑﻪ آن ‪ Client‬ﻫﻢ ﮔﻔﺘﻪ ﻣﻴﺸﻮد ﺑﺨﻮاﻫﺪ از روي ‪ Slave‬ﻛﻪ ﻣﻤﻜﻦ اﺳﺖ ‪ Server‬ﻫﻢ ﻧﺎﻣﻴﺪه‬
‫ﺷﻮد ‪ I/O‬ﺧﺎﺻﻲ را ﺑﺨﻮاﻧﺪ اﻳﻦ ﻋﻤﻞ را ﺗﻮﺳﻂ ﻛﺪ ﺧﺎﺻﻲ ﻛﻪ در ﻓﻴﻠﺪ ﻓﺎﻧﻜﺸﻦ ﻛﺪ از ﻓﺮﻳﻢ دﻳﺘﺎ ﻗﺮار ﻣﻲ دﻫﺪ‬
‫درﺧﻮاﺳﺖ ﻣﻴﻜﻨﺪ‪ .‬اﻳﻦ ﻛﺪ ﺑﺮاي ‪ Slave‬ﻧﻴﺰ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ از اﻳﻨﺮو اﻃﻼﻋﺎت ﻣﻮرد ﻧﻈﺮ را ﺑﺎ ﻫﻤﺎن ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬
‫ﺑﻪ ‪ Master‬ﺑﺮ ﻣﻴﮕﺮداﻧﺪ‪.‬‬
‫‪Modbus‬‬ ‫ﻗﺒﻞ از اﻳﻨﻜﻪ ﺑﻪ ﺗﺸﺮﻳﺢ ﻓﺎﻧﻜﺸﻦ ﻛﺪﻫﺎ ﺑﭙﺮدازﻳﻢ ﻻزم اﺳﺖ ﻧﺤﻮه ﺗﺒﺎدل ﻳﺎ ‪ Transaction‬دﻳﺘﺎ روي ﺷﺒﻜﻪ‬
‫ﺗﺎ ﺣﺪي روﺷﻦ ﺷﻮدﺗﺎ ﺟﺎﻳﮕﺎه ﻓﺎﻧﻜﺸﻦ ﻛﺪﻫﺎ ﺑﻬﺘﺮ ﻣﺸﺨﺺ ﮔﺮدد‪ .‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻗﺒﻼً ﻧﻴﺰ اﺷﺎره ﺷﺪ در ﻓﺮﻳﻢ دﻳﺘﺎ‬
‫ﻋﻼوه ﺑﺮ ﻓﻴﻠﺪ دﻳﺘﺎ ﻓﻴﻠﺪ ﻫﺎي دﻳﮕﺮي ﻧﻴﺰ وﺟﻮد دارﻧﺪ‪ .‬اﮔﺮ ﻓﻴﻠﺪﻫﺎي ﺷﺮوع و ﭘﺎﻳﺎن وﻓﻴﻠﺪ آدرس را در ﻧﻈﺮ ﻧﮕﻴﺮﻳﻢ‬
‫ﺑﺎ ﺑﺴﺘﻪ ‪ PDU‬ﻣﺨﻔﻒ ‪ Protocol Data Unit‬و ﺑﺴﺘﻪ ‪ ADU‬ﻣﺨﻔﻒ‪ Application Data Unit‬ﻣﺎﻧﻨﺪ ﺷﻜﻞ زﻳﺮ‬
‫ﺳﺮو ﻛﺎر دارﻳﻢ‪.‬‬
‫‪31‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﻓﻴﻠﺪ ‪ Function Code‬ﻳﻚ ﺑﺎﻳﺖ اﺳﺖ ﻛﻪ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ 255‬دﺳﻴﻤﺎل ﺑﺎﺷﺪ‪ .‬ﻛﺪﻫﺎي ‪ 1‬ﺗﺎ ‪ 127‬ﺑﺮاي ﻛﺎر‬
‫ﻧﺮﻣﺎل و ﻛﺪﻫﺎي ‪ 128‬ﺗﺎ ‪ 255‬ﺑﺮاي ﭘﺎﺳﺦ ﻫﺎي ‪ Exception‬ﻛﻪ ﺑﺮاي ﺷﺮاﻳﻂ ﺧﻄﺎ ﻃﺮاﺣﻲ ﺷﺪه ﺑﻜﺎر ﻣﻴﺮود‪ .‬ﻓﻴﻠﺪ‬
‫‪ Data‬در ﺑﺮﺧﻲ درﺧﻮاﺳﺖ ﻫﺎي ﺧﺎص ﻣﻤﻜﻦ اﺳﺖ ﺧﺎﻟﻲ ﺑﺎﺷﺪ ) ﻃﻮل ﺻﻔﺮ( اﻳﻦ در ﻣﻮاردي اﺳﺖ ﻛﻪ ارﺳﺎل‬
‫‪ Action‬ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﺑﺮاي ‪ Slave‬ﻛﻔﺎﻳﺖ ﻣﻴﻜﻨﺪ و اﻃﻼﻋﺎت اﺿﺎﻓﻲ ﻣﻮرد ﻧﻴﺎز ﻧﻴﺴﺖ‪.‬‬
‫وﻗﺘﻲ ﺧﻄﺎﻳﻲ وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ‪ Slave‬درﺧﻮاﺳﺖ ‪ Master‬را اﻧﺠﺎم داده و در ﭘﺎﺳﺦ ﺧﻮد ﺑﻪ ﻫﻤﺎن ﻛﺪ ﻓﺎﻧﻜﺸﻦ‬
‫‪Slave‬‬ ‫اﺷﺎره ﻣﻴﻜﻨﺪ اﺻﻄﻼﺣﺎً ﮔﻔﺘﻪ ﻣﻴﺸﻮد ﻛﻪ ﻛﺪﻓﺎﻧﻜﺸﻦ اﻛﻮ ﺷﺪه اﺳﺖ‪ .‬وﻟﻲ وﻗﺘﻲ اﺷﻜﺎﻟﻲ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ و‬
‫ﻧﺘﻮاﻧﺪ ﻋﻤﻞ ﻣﻮرد درﺧﻮاﺳﺖ ‪ Master‬را اﻧﺠﺎم دﻫﺪ در اﻳﻦ ﺣﺎﻟﺖ ﭘﺎﺳﺨﻲ ﻛﻪ در آن ﺑﺠﺎي ﻛﺪﻓﺎﻧﻜﺸﻦ ﻛﺪ‬
‫‪ Exception‬آﻣﺪه ﺑﺮﮔﺸﺖ داده ﻣﻴﺸﻮد ﺗﺎ ‪ Master‬از ﺑﺮوز ﺧﻄﺎ ﻣﻄﻠﻊ ﺷﻮد‪.‬‬
‫ﺷﻜﻞ ﻫﺎي ﺑﻌﺪ اﻳﻦ دو ﺣﺎﻟﺖ را ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ‪.‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪32‬‬

‫‪PDU‬‬ ‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻮﺿﻴﺤﺎت ﻓﻮق و ﺗﻮﺟﻪ ﺑﻪ ﻧﻮع ﻓﺎﻧﻜﺸﻦ ﻫﺎ ﻣﺘﻮﺟﻪ ﻣﻲ ﺷﻮﻳﻢ ﻛﻪ در ﭘﺮوﺗﻜﻞ ‪ Modbus‬ﺳﻪ ﻧﻮع‬
‫زﻳﺮ وﺟﻮد دارد‪:‬‬
‫‪Request PDU‬‬ ‫‪‬‬
‫‪Response PDU‬‬ ‫‪‬‬
‫‪Exception Response PDU‬‬ ‫‪‬‬
‫ﺑﺮ اﻳﻦ اﺳﺎس دﻳﺎﮔﺮام ﺗﺒﺎدل دﻳﺘﺎ روي ‪ Modbus‬ﺑﺼﻮرت ﻧﺸﺎن داده در ﺷﻜﻞ ﺻﻔﺤﻪ ﺑﻌﺪ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬

‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ ﻫﺎ را ﻣﻴﺘﻮان ﺑﻪ ‪ 2‬دﺳﺘﻪ ﻛﻠﻲ ﺗﻘﺴﻴﻢ ﻛﺮد‪:‬‬


‫‪ -1‬ﻓﺎﻧﻜﺸﻦ ﻫﺎي ﻋﻤﻮﻣﻲ )‪ (Public‬اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﻫﺎ ﺑﺼﻮرت اﺳﺘﺎﻧﺪارد از ﻗﺒﻞ ﺗﻌﺮﻳﻒ ﺷﺪه ﻫﺴﺘﻨﺪ و ﺑﺮاي‬
‫ﻣﻘﺎﺻﺪ ﻣﺸﺨﺺ ﺑﻜﺎر ﻣﻴﺮوﻧﺪ‪.‬‬
‫‪ -2‬ﻓﺎﻧﻜﺸﻦ ﻫﺎي ﺧﺎص )‪ (User Defined‬اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﻫﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ ﺗﻮﺳﻂ ﻛﺎرﺑﺮ ﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ و ﻧﻴﺎزي ﺑﻪ‬
‫ﺗﺎﻳﻴﺪ ﻣﻮﺳﺴﻪ ‪ Modbus.org‬ﻧﺪارﻧﺪ وﻟﻲ ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ﻛﺪ ﻫﺎي رزرو ﺷﺪه را ﺑﺮاي اﻳﻦ‬
‫ﻓﺎﻧﻜﺸﻨﻬﺎ ﻧﻤﻴﺘﻮان اﺳﺘﻔﺎده ﻛﺮد‪ .‬ﻛﺪ ﻓﺎﻧﻜﺸﻨﻬﺎي ﻛﺎرﺑﺮ ﻣﻴﺘﻮاﻧﺪ در ﻣﺤﺪوده ‪ 65‬ﺗﺎ ‪ 72‬ﻳﺎ ‪ 100‬ﺗﺎ ‪110‬‬
‫ﺑﺎﺷﺪ‪.‬‬

‫‪-3‬‬
33 MODBUS ‫ﺷﺒﻜﻪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪34‬‬

‫ﻓﺎﻧﻜﺸﻨﻬﺎي ﻋﻤﻮﻣﻲ‬
‫ﺷﻜﻞ زﻳﺮ ﻓﺎﻧﻜﺸﻨﻬﺎي ﻋﻤﻮﻣﻲ ﻗﺎﺑﻞ اﺳﺘﻔﺎده در ‪ Modbus‬را ﻧﺸﺎن ﻣﻲ دﻫﺪ ﻛﻪ ﺑﺮﺧﻲ از آﻧﻬﺎ در اداﻣﻪ ﺗﺸﺮﻳﺢ‬
‫ﺧﻮاﻫﻨﺪ ﺷﺪ‪.‬‬

‫ﻫﺮ وﺳﻴﻠﻪ ﻛﻪ روي ﺷﺒﻜﻪ ‪ Modbus‬ﻗﺮار ﻣﻴﮕﻴﺮد داراي ﻳﻚ ﺟﺪول آدرس ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫‪Primary tables‬‬ ‫‪Object type‬‬ ‫‪Type of access‬‬
‫‪Discretes Input‬‬ ‫‪Single bit‬‬ ‫‪Read-Only‬‬
‫‪Coils‬‬ ‫‪Single bit‬‬ ‫‪Read-Write‬‬
‫‪Input Registers‬‬ ‫‪16-bit word‬‬ ‫‪Read-Only‬‬
‫‪Holding Registers‬‬ ‫‪16-bit word‬‬ ‫‪Read-Write‬‬
‫در ﺣﺎﻓﻈﻪ وﺳﻴﻠﻪ ﻣﻤﻜﻦ اﺳﺖ ﻣﻮارد ﻓﻮق در ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺑﻼك ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع وﺳﻴﻠﻪ ﻣﻮﺟﻮد ﺑﺎﺷﻨﺪ ﺷﻜﻞ ﻫﺎي زﻳﺮ‪:‬‬
‫‪35‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫‪ 01‬ﻳﺎ ‪Read Coils‬‬ ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬


‫اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﺑﺮاي ﺧﻮاﻧﺪن وﺿﻌﻴﺖ ‪ 1‬ﺗﺎ ‪ 2000‬ﺧﺮوﺟﻲ از روي وﺳﻴﻠﻪ ﻣﺘﺼﻞ ﺑﻪ ﺑﺎس ﺷﺒﻜﻪ ﺑﻜﺎر ﻣﻴﺮود‪ .‬در ﺑﺴﺘﻪ‬
‫‪ PDU‬ﻋﻼوه ﺑﺮ ﻛﺪ ‪ 01‬آدرس اوﻟﻴﻦ ﺧﺮوﺟﻲ و ﺗﻌﺪاد آﻧﻬﺎ داده ﻣﻲ ﺷﻮد‪ .‬آدرس ﺧﺮوﺟﻲ از ﺻﻔﺮ ﺷﺮوع ﻣﻲ‬
‫ﺷﻮد ﻳﻌﻨﻲ ﻣﺜﻼً ﺧﺮوﺟﻲ ﻫﺎي ‪ 1‬ﺗﺎ ‪ 16‬ﺑﺼﻮرت ‪ 0‬ﺗﺎ ‪ 15‬آدرس ﻣﻲ ﮔﻴﺮﻧﺪ‪.‬ﺑﻨﺎﺑﺮ اﻳﻦ ‪ PDU‬ﻣﺮﺑﻮط ﺑﻪ درﺧﻮاﺳﺖ‬
‫ﺑﺼﻮرت ﺷﻜﻞ زﻳﺮ ﺧﻮاﻫﺪ ﺑﻮد‪:‬‬
‫‪Request‬‬
‫‪Function code‬‬ ‫‪1 Byte‬‬ ‫‪0x01‬‬

‫‪Starting Address‬‬ ‫‪2 Bytes‬‬ ‫‪0x0000 to 0xFFFF‬‬


‫‪Quantity of coils‬‬ ‫‪2 Bytes‬‬ ‫)‪1 to 2000 (0x7D0‬‬

‫‪LSB‬‬ ‫در ﭘﺎﺳﺦ وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ﻛﻪ ‪ 1‬ﺑﺮاي ‪ ON‬و ‪ 0‬ﺑﺮاي ‪ Off‬اﺳﺖ ﺗﻮﺳﻂ ﺑﻴﺘﻬﺎي دﻳﺘﺎ ﻣﺸﺨﺺ ﻣﻴﮕﺮدد‪ .‬ﺑﻴﺖ‬
‫وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ﺑﺎ آدرس ﭘﺎﻳﻴﻦ ﺗﺮ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ و ﻫﻤﻴﻦ ﻃﻮر ﺳﺎﻳﺮ ﺑﻴﺘﻬﺎ ﺑﺘﺮﺗﻴﺐ وﺿﻌﻴﺖ ﺳﺎﻳﺮ ﺧﺮوﺟﻲ ﻫﺎ‬
‫را ﻣﺸﺨﺺ ﻣﻲ ﻧﻤﺎﻳﻨﺪ‪ .‬اﮔﺮ ﺗﻌﺪاد ﺧﺮوﺟﻲ ﻫﺎ ﻣﻀﺮﺑﻲ از ‪ 8‬ﻧﺒﺎﺷﺪ در اﻳﻨﺼﻮرت در ﺑﺎﻳﺖ آﺧﺮ ﺳﺎﻳﺮ ﺑﻴﺘﻬﺎي ﺑﺎﻗﻲ‬
‫ﻣﺎﻧﺪه ﺑﺎ ﺻﻔﺮ ﭘﺮ ﻣﻴﺸﻮﻧﺪ وﻟﻲ از آﻧﺠﺎ ﻛﻪ ﺗﻌﺪاد ﺧﺮوﺟﻲ ﻫﺎ ﻧﻴﺰ ﺑﺮﮔﺮداﻧﺪه ﻣﻲ ﺷﻮد ‪ Master‬ﻣﺘﻮﺟﻪ ﻣﻴﺸﻮد ﻛﻪ ﺗﺎ‬
‫ﻛﺠﺎ ﻣﺮﺑﻮط ﺑﻪ ﺧﺮوﺟﻲ ﻫﺎﺳﺖ‪.‬‬
‫‪Response‬‬
‫‪Function code‬‬ ‫‪1 Byte‬‬ ‫‪0x01‬‬
‫‪Byte count‬‬ ‫‪1 Byte‬‬ ‫*‪N‬‬
‫‪Coil Status‬‬ ‫‪n Byte‬‬ ‫‪n = N or N+1‬‬
‫‪*N= Quantity of Outputs / 8, if the remainder is different of 0‬‬ ‫‪N = N+1‬‬

‫اﮔﺮ ‪ Error‬ﭘﻴﺶ ﺑﻴﺎﻳﺪ ﻛﺪ ﻫﺎ ﺑﺼﻮرت زﻳﺮ ﺧﻮاﻫﻨﺪ ﺑﻮد‪:‬‬


‫‪Function code‬‬ ‫‪1 Byte‬‬ ‫‪Function code + 0x80‬‬

‫‪Exception code‬‬ ‫‪1 Byte‬‬ ‫‪01 or 02 or 03 or 04‬‬

‫ﻣﺜﺎل ‪ : 1‬در ﺟﺪول ﺻﻔﺤﻪ ﺑﻌﺪ ﻣﺜﺎﻟﻲ ﺑﺮاي ﺧﻮاﻧﺪن ﺧﺮوﺟﻲ ﻫﺎي ‪ 20‬ﺗﺎ ‪ 38‬ﻳﻌﻨﻲ ﺟﻤﻌﺎً ‪ 19‬ﺧﺮوﺟﻲ آﻣﺪه اﺳﺖ‪.‬‬
‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﭘﺎﺳﺦ ﻣﺸﺎﻫﺪه ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﻧﺘﻴﺠﻪ در ﺳﻪ ﺑﺎﻳﺖ رﻳﺨﺘﻪ ﺷﺪه اﺳﺖ‪:‬‬
‫ﺑﺎﻳﺖ اول‪ :‬ﻧﺸﺎن دﻫﻨﺪه آدرس ﻫﺎي ‪ 27-20‬از ﭼﭗ ﺑﻪ راﺳﺖ اﺳﺖ ﻛﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ﻫﺎ‬
‫‪LSB‬‬ ‫‪ 11001101‬ﻳﻌﻨﻲ ﻣﻌﺎدل ‪ CD‬ﻫﮕﺰ ﺑﻮده اﺳﺖ در اﻳﻦ ﺑﺎﻳﺖ ﺑﻴﺖ ‪ MSB‬وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ‪ 27‬و ﺑﻴﺖ‬
‫وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ‪ 20‬را ﻧﺸﺎن ﻣﻲ دﻫﺪ‪.‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪36‬‬

‫‪Request‬‬ ‫‪Response‬‬
‫‪Field Name‬‬ ‫)‪(Hex‬‬ ‫‪Field Name‬‬ ‫)‪(Hex‬‬
‫‪Function‬‬ ‫‪01‬‬ ‫‪Function‬‬ ‫‪01‬‬
‫‪Starting Address Hi‬‬ ‫‪00‬‬ ‫‪Byte Count‬‬ ‫‪03‬‬
‫‪Starting Address Lo‬‬ ‫‪13‬‬ ‫‪Outputs status 27-20‬‬ ‫‪CD‬‬
‫‪Quantity of Outputs Hi Quantity of‬‬ ‫‪00‬‬ ‫‪Outputs status 35-28 Outputs status‬‬ ‫‪6B‬‬
‫‪Outputs Lo‬‬
‫‪13‬‬ ‫‪38-36‬‬ ‫‪05‬‬

‫ﺑﺎﻳﺖ دوم ‪ :‬ﻧﺸﺎن دﻫﻨﺪه آدرس ﻫﺎي ‪ 35-28‬از ﭼﭗ ﺑﻪ راﺳﺖ اﺳﺖ ‪ .‬ﻛﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ﻫﺎ ﻣﻌﺎدل‬
‫ﻫﮕﺰ آن ‪ 6B‬اﺳﺖ‪.‬‬
‫ﺑﺎﻳﺖ ﺳﻮم ‪ :‬ﻧﺸﺎن دﻫﻨﺪه آدرس ﻫﺎي ‪ 38-36‬ﻛﻪ ﻓﻘﻂ ‪ 3‬ﺑﻴﺖ ﻫﺴﺘﻨﺪ ﻣﻲ ﺑﺎﺷﺪ ﺳﺎﻳﺮ ﺑﻴﺖ ﻫﺎ ﺑﺎ ﺻﻔﺮ ﭘﺮ ﺷﺪه اﻧﺪ و‬
‫ﻣﻌﺎدل ﻫﮕﺰ ‪ 8‬ﺑﻴﺖ ﻋﺪد ‪ 05‬اﺳﺖ ﻳﻌﻨﻲ ‪0000 0101‬‬
‫ﻓﻠﻮﭼﺎرت ﺻﻔﺤﻪ ﺑﻌﺪ ﻧﺤﻮه ﻋﻤﻠﻜﺮد ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 01‬را ﺑﺮاي ﺧﻮاﻧﺪن ﺧﺮوﺟﻲ ﻧﺸﺎن ﻣﻲ دﻫﺪ ﻫﻤﺎﻧﻄﻮر ﻛﻪ‬
‫ﻣﻼﺣﻈﻪ ﻣﻴﺸﻮد در ﻫﺮ ﻣﺮﺣﻠﻪ اﮔﺮ ﺧﻄﺎﻳﻲ ﭘﻴﺶ ﺑﻴﺎﻳﺪ ﻛﺪ ‪ Exception‬ﻣﺮﺑﻮﻃﻪ ﮔﺰارش ﻣﻴﺸﻮد‪.‬‬

‫ﻣﺜﺎل ‪ : 2‬در اﻳﻦ ﻣﺜﺎل ‪ Master‬وﺿﻌﻴﺖ دو ﺧﺮوﺟﻲ ﻳﻜﻲ ﺧﺮوﺟﻲ ﻫﮕﺰ ‪ 000A‬ﻛﻪ ﺧﺮوﺟﻲ ﻳﺎزدﻫﻢ اﺳﺖ‬
‫)ﭼﻮن از ﺻﻔﺮ ﺷﺮوع ﺷﺪه( و ﻧﻴﺰ وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ‪ 000B‬ﻛﻪ ﺧﺮوﺟﻲ دوازدﻫﻢ اﺳﺖ را از ‪ Slave‬ﻛﻪ آدرس‬
‫آن روي ﺑﺎس ‪ 01‬اﺳﺖ درﺧﻮاﺳﺖ ﻣﻴﻜﻨﺪ ‪ Slave .‬در ﭘﺎﺳﺦ ﺧﻮد اﻋﻼم ﻣﻲ ﻧﻤﺎﻳﺪ ﻛﻪ اﻳﻦ دو ﺧﺮوﺟﻲ روﺷﻦ‬
‫ﻫﺴﺘﻨﺪ ﻳﻌﻨﻲ ﻛﺪ ‪ 0000 0011‬ﻛﻪ ﻣﻌﺎدل ﻫﮕﺰ آن ‪ 03‬اﺳﺖ‪ .‬ﺑﺪﻳﻬﻲ اﺳﺖ اﮔﺮ ﻣﺜﻼً ﭘﺎﺳﺦ ﻛﺪ ﻫﮕﺰ ‪ 02‬ﺑﻮد ﻣﻔﻬﻮم‬
‫آن ﺧﺎﻣﻮش ﺑﻮدن اوﻟﻲ و روﺷﻦ ﺑﻮدن دوﻣﻲ ﻣﻴﺸﺪ‪.‬‬
37 MODBUS ‫ﺷﺒﻜﻪ‬

Read Input Discrete ‫ ﻳﺎ‬02 ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬


.‫ ورودي دﻳﺠﻴﺘﺎل از روي وﺳﻴﻠﻪ ﻣﺘﺼﻞ ﺑﻪ ﺑﺎس ﺷﺒﻜﻪ اﺳﺘﻔﺎده ﻣﻴﺸﻮد‬2000 ‫ ﺗﺎ‬1 ‫اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﺑﺮاي ﺧﻮاﻧﺪن ﺗﻌﺪاد‬
‫ ﻣﺜﺎل زﻳﺮ‬.‫ ذﻛﺮ ﺷﺪ ﻣﻲ ﺑﺎﺷﺪ‬01 ‫وﺿﻌﻴﺖ آدرس ﻫﺎ و ﺑﻴﺖ ﻫﺎ ﺷﺒﻴﻪ آﻧﺠﻪ ﺑﺮاي ﺧﺮوﺟﻲ ﻫﺎ در ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬
.‫ ﻧﺸﺎن ﻣﻴﺪﻫﺪ‬197 -218 ‫درﺧﻮاﺳﺖ و ﭘﺎﺳﺦ را ﺑﺮاي ﺧﻮاﻧﺪن ورودي ﻫﺎي‬
Request Response
Field Name (Hex) Field Name (Hex)
Function 02 Function 02
Starting Address Hi 00 Byte Count 03
Starting Address Lo C4 Inputs Status 204-197 AC
Quantity of Inputs Hi Quantity of 00 Inputs Status 212-205 Inputs Status DB
Inputs Lo
16 218-213 35
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪38‬‬

‫ﻓﺎﻧﻜﺸﻦ ﻛﺪﻫﺎي ‪ 03‬و ‪ 04‬ﻧﻴﺰ ﺑﺮاي ﺧﻮاﻧﺪن ورودي ﻫﺎ و ﺧﺮوﺟﻲ ﻫﺎ از روي رﺟﻴﺴﺘﺮ وﺳﻴﻠﻪ ﺑﻜﺎر ﻣﻴﺮوﻧﺪ ﻛﻪ‬
‫اﺻﻮل ﻛﺎر آﻧﻬﺎ ﺑﺎ آﻧﺠﻪ ﺑﺮاي ﻛﺪ ﻓﺎﻧﻜﺸﻦ ﻫﺎي ‪ 01‬و ‪ 02‬ﮔﻔﺘﻪ ﺷﺪ ﻳﻜﻲ اﺳﺖ‪.‬ﻟﺬا از ﺗﺸﺮﻳﺢ آﻧﻬﺎ ﺧﻮد داري ﻣﻲ‬
‫ﻛﻨﻴﻢ و ﺻﺮﻓﺎً ﺑﻪ ذﻛﺮ ﻣﺜﺎﻟﻲ ﺑﺮاي آﻧﻬﺎ ﺑﺴﻨﺪه ﻣﻲ ﻧﻤﺎﻳﻴﻢ‪.‬‬
‫ﻣﺜﺎل زﻳﺮ ﺧﻮاﻧﺪن آدرس ﻫﺎي ‪ 108‬ﺗﺎ ‪ 110‬رﺟﻴﺴﺘﺮ را ﺗﻮﺳﻂ ‪ Master‬ﺑﺎ ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 03‬ﻧﺸﺎن ﻣﻲ دﻫﺪ‪.‬‬

‫‪Request‬‬ ‫‪Response‬‬
‫‪Field Name‬‬ ‫)‪(Hex‬‬ ‫‪Field Name‬‬ ‫)‪(Hex‬‬
‫‪Function‬‬ ‫‪03‬‬ ‫‪Function‬‬ ‫‪03‬‬
‫‪Starting Address Hi‬‬ ‫‪00‬‬ ‫‪Byte Count‬‬ ‫‪06‬‬
‫‪Starting Address Lo‬‬ ‫‪6B‬‬ ‫)‪Register value Hi (108‬‬ ‫‪02‬‬
‫‪No. of Registers Hi‬‬ ‫‪00‬‬ ‫)‪Register value Lo (108‬‬ ‫‪2B‬‬
‫‪No. of Registers Lo‬‬ ‫‪03‬‬ ‫)‪Register value Hi (109‬‬ ‫‪00‬‬
‫)‪Register value Lo (109‬‬ ‫‪00‬‬
‫‪Register value Hi (110) Register‬‬ ‫‪00‬‬
‫)‪value Lo (110‬‬ ‫‪64‬‬

‫ﻣﺤﺘﻮﻳﺎت رﺟﻴﺴﺘﺮ ‪ 108‬ﺑﺎ دو ﺑﺎﻳﺖ ﻛﻪ در آن ﻣﻘﺪار ‪ 022B‬ﻫﮕﺰ آﻣﺪه ﮔﺰارش ﺷﺪه ﻛﻪ ﻣﻌﺎدل ‪ 255‬دﺳﻴﻤﺎل‬
‫اﺳﺖ‪ .‬ﻣﺤﺘﻮﻳﺎت رﺟﻴﺴﺘﺮ ‪109‬ﻣﻌﺎدل ‪ 0000‬ﻫﮕﺰ و رﺟﻴﺴﺘﺮ ‪ 110‬ﻣﻌﺎدل ‪ 0064‬ﻫﮕﺰ ﻳﻌﻨﻲ ‪ 100‬دﺳﻴﻤﺎل ﮔﺰارش‬
‫ﮔﺮدﻳﺪه اﺳﺖ‪.‬‬
‫ﻣﺜﺎل زﻳﺮ ﺧﻮاﻧﺪن ‪ Input Register‬ﺷﻤﺎره ‪ 9‬را ﺗﻮﺳﻂ ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 04‬ﻧﺸﺎن ﻣﻲ دﻫﺪ ‪ .‬ﻣﺤﺘﻮﻳﺎت اﻳﻦ رﺟﻴﺴﺘﺮ‬
‫ﺑﺼﻮرت دو ﺑﺎﻳﺖ ﺣﺎوي ‪ 000A‬ﻫﮕﺰ ﻳﻌﻨﻲ ﻋﺪد ‪ 10‬دﺳﻴﻤﺎل ﮔﺰارش ﺷﺪه اﺳﺖ‪.‬‬

‫‪Request‬‬ ‫‪Response‬‬
‫‪Field Name‬‬ ‫)‪(Hex‬‬ ‫‪Field Name‬‬ ‫)‪(Hex‬‬
‫‪Function‬‬ ‫‪04‬‬ ‫‪Function‬‬ ‫‪04‬‬
‫‪Starting Address Hi‬‬ ‫‪00‬‬ ‫‪Byte Count‬‬ ‫‪02‬‬
‫‪Starting Address Lo‬‬ ‫‪08‬‬ ‫‪Input reg 9 Hi‬‬ ‫‪00‬‬
‫‪Quantity of Input Reg. Hi‬‬ ‫‪00‬‬ ‫‪Input Reg 9 Lo‬‬ ‫‪0A‬‬
‫‪Quantity of Input Reg. Lo‬‬ ‫‪01‬‬
39 MODBUS ‫ﺷﺒﻜﻪ‬

‫ ﻳﺎ ﻧﻮﺷﺘﻦ روي ﻳﻚ ﺧﺮوﺟﻲ‬05 ‫ﻓﺎﻧﻜﺶ ﻛﺪ‬


‫ ﻛﺮدن ﻣﻘﺪار‬ON ‫ ﺑﺮاي‬.‫ روﺷﻦ ﻳﺎ ﺧﺎﻣﻮش ﻛﺮد‬Slave ‫ﺗﻮﺳﻂ اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﻣﻴﺘﻮان ﻳﻚ ﺧﺮوﺟﻲ را روي وﺳﻴﻠﻪ‬
.‫ ارﺳﺎل ﻣﻲ ﮔﺮدد‬0000 ‫ و ﺑﺮاي ﺧﺎﻣﻮش ﻛﺮدن ﻣﻘﺪار‬FF00
Request
Function code 1 Byte 0x05

Output Address 2 Bytes 0x0000 to 0xFFFF


Output Value 2 Bytes 0x0000 or 0xFF00

Response

Function code 1 Byte 0x05


Output Address 2 Bytes 0x0000 to 0xFFFF
Output Value 2 Bytes 0x0000 or 0xFF00

Error
Error code 1 Byte 0x85
Exception code 1 Byte 01 or 02 or 03 or 04

.‫ روﺷﻦ ﻣﻲ ﮔﺮدد‬173 ‫ ﺧﺮوﺟﻲ‬05 ‫ در ﻣﺜﺎل زﻳﺮ ﺗﻮﺳﻂ ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬: 1 ‫ﻣﺜﺎل‬


Request Response
Field Name (Hex) Field Name (Hex)
Function 05 Function 05
Output Address Hi 00 Output Address Hi 00
Output Address Lo AC Output Address Lo AC
Output Value Hi FF Output Value Hi FF
Output Value Lo 00 Output Value Lo 00

‫ ﻣﻨﻈﻮر‬0 ‫ ﻫﮕﺰ ) ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻨﻜﻪ آدرﺳﻬﺎ از‬0A ‫ ﻳﻌﻨﻲ‬11 ‫ ﺑﺮاي ﺧﺮوﺟﻲ ﺷﻤﺎره‬Master ‫ در ﻣﺜﺎل زﻳﺮ‬:2 ‫ﻣﺜﺎل‬
‫ ﺑﺮ ﻣﻲ ﮔﺮدد ﻧﺸﺎن دﻫﻨﺪه ﺧﺎﻣﻮش ﺷﺪن‬Slave ‫ ﻛﻪ ﺗﻮﺳﻂ‬00 ‫ ﭘﺎﺳﺦ‬.‫ﻣﻴﺸﻮﻧﺪ( درﺧﻮاﺳﺖ ﺧﺎﻣﻮش ﺷﺪن ﻣﻴﻜﻨﺪ‬
.‫وﺳﻴﻠﻪ اﺳﺖ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪40‬‬

‫دﻳﺎﮔﺮام ﻧﻮﺷﺘﻦ روي ﺧﺮوﺟﻲ ﻧﻴﺰ در زﻳﺮ ﻣﺜﺎل ﻓﻮق ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬
41 MODBUS ‫ﺷﺒﻜﻪ‬

.‫ وﻟﻲ ﺑﺮاي ﻧﻮﺷﺘﻦ روي ﻳﻚ ﺑﻴﺖ از رﺟﻴﺴﺘﺮ ﺑﻜﺎر ﻣﻴﺮود‬05 ‫ ﺷﺒﻴﻪ‬06 ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬

‫ ﻧﻮﺷﺘﻦ روي ﭼﻨﺪﻳﻦ ﺧﺮوﺟﻲ‬15 ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬


‫ ﺷﺮوع‬0 ‫ ﺧﺮوﺟﻲ ﻫﺎ از آدرس‬. ‫ ﻛﻨﺪ‬Off ‫ ﻳﺎ‬ON ‫اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﻣﻴﺘﻮاﻧﺪ ﺑﻄﻮر ﻫﻤﺰﻣﺎن وﺿﻌﻴﺖ ﭼﻨﺪﻳﻦ ﺧﺮوﺟﻲ را‬
.‫ ﻣﻨﻄﻘﻲ ﺧﺎﻣﻮش ﻣﻴﺸﻮﻧﺪ‬0 ‫ ﻣﻨﻄﻘﻲ روﺷﻦ و ﺑﺎ ارﺳﺎل‬1 ‫ﻣﻴﺸﻮﻧﺪ و ﺑﺎ ارﺳﺎل‬
Request PDU
Function code 1 Byte 0x0F

Starting Address 2 Bytes 0x0000 to 0xFFFF


Quantity of Outputs 2 Bytes 0x0001 to 0x07B0
Byte Count 1 Byte N*
Outputs Value N* x 1 Byte

*N= Quantity of Outputs / 8, if the remainder is different of 0 N = N+1

Response
Function code 1 Byte 0x0F

Starting Address 2 Bytes 0x0000 to 0xFFFF


Quantity of Outputs 2 Bytes 0x0001 to 0x07B0

Error
Error code 1 Byte 0x8F

Exception code 1 Byte 01 or 02 or 03 or 04

‫ ﺧﺮوﺟﻲ ﻛﻪ از آدرس‬10 ‫ روي‬1100110100000001 ‫ ﻫﮕﺰ ﻛﻪ ﻣﻌﺎدل‬CD01 ‫ﺑﻌﻨﻮان ﻣﺜﺎل ﺑﺮاي ارﺳﺎل ﻣﻘﺪار‬
:‫ ﺷﺮوع ﻣﻴﺸﻮﻧﺪ روش ﺑﺼﻮرت زﻳﺮ اﺳﺖ‬20
‫ ﻫﮕﺰ‬CD ‫ ﻫﮕﺰ‬01
Bit: 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1

Output:
27 26 25 24 23 22 21 20 – – – – – –
29 28
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪42‬‬

‫ﺗﻮﺟﻪ ﺷﻮد ﻛﻪ ﻣﻘﺪار ‪ 01‬ﻫﮕﺰ روي آدر ﺳﻬﺎي ‪ 28‬و ‪ 29‬ارﺳﺎل ﻣﻲ ﮔﺮدد و ﺳﺎﻳﺮ ﺑﻴﺘﻬﺎي اﺳﺘﻔﺎده ﻧﺸﺪه ﺑﺎ ﺻﻔﺮ ﭘﺮ‬
‫ﻣﻲ ﺷﻮﻧﺪ‪.‬‬

‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 16‬ﻧﻴﺰ ﺷﺒﻴﻪ ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 15‬وﻟﻲ ﺑﺮاي ﻧﻮﺷﺘﻦ روي ﭼﻨﺪﻳﻦ ﺑﻴﺖ از رﺟﻴﺴﺘﺮ ﺑﻜﺎر ﻣﻴﺮود‪.‬‬

‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 20‬ﺧﻮاﻧﺪن رﻛﻮردﻫﺎﻳﻲ از ﻓﺎﻳﻞ‬


‫در رﺟﻴﺴﺘﺮ ﻫﺮ وﺳﻴﻠﻪ آدرﺳﻬﺎﻳﻲ از ﺣﺎﻓﻈﻪ ﻛﻪ ﺑﻪ آن ﻫﺎ رﻛﻮرد ﻣﻴﮕﻮﻳﻴﻢ وﺟﻮد دارﻧﺪ ‪ .‬ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮردﻫﺎ )‬
‫ﺗﺎ ‪ 10000‬رﻛﻮرد ( ﻳﻚ ﻓﺎﻳﻞ را ﺗﺸﻜﻴﻞ ﻣﻴﺪﻫﻨﺪ اﻳﻦ رﻛﻮردﻫﺎ از آدرس ‪ 0‬ﺗﺎ ‪ 9999‬دﺳﻴﻤﺎل ﻫﺴﺘﻨﺪ ) از ‪ 0000‬ﺗﺎ‬
‫‪ 270F‬ﻫﮕﺰ (‪ .‬ﻓﺎﻧﻜﺸﻦ ﻛﺪ ‪ 20‬ﻣﻴﺘﻮاﻧﺪ ﭼﻨﺪﻳﻦ ﮔﺮوه از رﻛﻮردﻫﺎي ﻣﺨﺘﻠﻒ را از ﻓﺎﻳﻠﻬﺎي ﻣﺨﺘﻠﻒ ﺑﺨﻮاﻧﺪ ‪ .‬ﺑﺮا ي‬
‫اﻳﻦ ﻛﺎر ﻫﺮ ﮔﺮوه ﻧﻴﺎز ﺑﻪ رﻓﺮﻧﺲ ﻫﺎﻳﻲ در ‪ 7‬ﺑﺎﻳﺖ ﺑﺼﻮرت زﻳﺮ دارد‪:‬‬
‫‪ 1‬ﺑﺎﻳﺖ ‪ :‬ﻧﻮع‬ ‫‪‬‬

‫‪ 2‬ﺑﺎﻳﺖ ‪ :‬ﺷﻤﺎره ﻓﺎﻳﻞ‬ ‫‪‬‬

‫‪ 2‬ﺑﺎﻳﺖ ‪ :‬آدرس ﺷﺮوع رﻛﻮردﻫﺎ‬ ‫‪‬‬

‫‪ 2‬ﺑﺎﻳﺖ ‪ :‬ﻃﻮل رﻛﻮردﻫﺎ‬ ‫‪‬‬

‫اﻳﻦ ﻣﻮارد ﻫﻤﺮاه ﺑﺎ ‪ Request‬ارﺳﺎل ﻣﻴﺸﻮﻧﺪ و ﺑﻪ آﻧﻬﺎ ‪ Sub-Request‬ﻣﻴﮕﻮﻳﻨﺪ‪.‬‬


‫‪Request PDU‬‬
‫‪Function code‬‬ ‫‪1 Byte‬‬ ‫‪0x14‬‬

‫‪Byte Count‬‬ ‫‪1 Byte‬‬ ‫‪0x07 to 0xF5 bytes‬‬

‫‪Sub-Req. x, Reference Type‬‬ ‫‪1 Byte‬‬ ‫‪06‬‬

‫‪Sub-Req. x, File Number‬‬ ‫‪2 Bytes‬‬ ‫‪0x0000 to 0xFFFF‬‬

‫‪Sub-Req. x, Record Number‬‬ ‫‪2 Bytes‬‬ ‫‪0x0000 to 0x270F‬‬

‫‪Sub-Req. x, Register Length‬‬ ‫‪2 Bytes‬‬ ‫‪N‬‬


‫‪Sub-Req. x+1, ...‬‬

‫‪Response PDU‬‬
‫‪Function code‬‬ ‫‪1 Byte‬‬ ‫‪0x14‬‬

‫‪Resp. data Length‬‬ ‫‪1 Byte‬‬ ‫‪0x07 to 0xF5‬‬


‫‪Sub-Req. x, File Resp. length‬‬ ‫‪1 Byte‬‬ ‫‪0x07 to 0xF5‬‬
‫‪Sub-Req. x, Reference Type‬‬ ‫‪1 Byte‬‬ ‫‪6‬‬
‫‪Sub-Req. x, Record Data‬‬ ‫‪Nx 2 Bytes‬‬
43 MODBUS ‫ﺷﺒﻜﻪ‬

Sub-Req. x+1, ...

Error
Error code 1 Byte 0x94

Exception code 1 Byte 01 or 02 or 03 or 04 or 08

:‫ درﺧﻮاﺳﺖ ﻣﻴﺸﻮﻧﺪ‬Remote ‫در ﻣﺜﺎل زﻳﺮ دو ﮔﺮوه رﻛﻮرد ﺑﺎ رﻓﺮﻧﺲ ﻫﺎي زﻳﺮ از روي وﺳﻴﻠﻪ‬
.‫ ﺷﺮوع ﻣﻲ ﺷﻮﻧﺪ‬1 ‫ ﻛﻪ از آدرس‬4 ‫ ﺷﺎﻣﻞ دو رﺟﻴﺴﺘﺮ از ﻓﺎﻳﻞ ﺷﻤﺎره‬: 1 ‫ﮔﺮوه‬ 

.‫ ﺷﺮوع ﻣﻲ ﺷﻮﻧﺪ‬9 ‫ ﻛﻪ از آدرس‬2 ‫ ﺷﺎﻣﻞ دو رﺟﻴﺴﺘﺮ از ﻓﺎﻳﻞ ﺷﻤﺎره‬: 2 ‫ﮔﺮوه‬ 

Request Response
Field Name (Hex) Field Name (Hex)
Function 14 Function 14
Byte Count 0C Resp. Data length 0E
Sub-Req. 1, Ref. Type 06 Sub-Req. 1, File resp. length 05
Sub-Req. 1, File Number Hi 00 Sub-Req. 1, Ref. Type 06
Sub-Req. 1, File Number Lo 04 Sub-Req. 1, Record. Data Hi 0D
Sub-Req. 1, Record number Hi 00 Sub-Req. 1, Record. Data Lo FE
Sub-Req. 1, Record number Lo 01 Sub-Req. 1, Record. Data Hi 00
Sub-Req. 1, Record Length Hi 00 Sub-Req. 1, Record. Data Lo 20
Sub-Req. 1, Record Length Lo 02 Sub-Req. 2, File resp. length 05
Sub-Req. 2, Ref. Type 06 Sub-Req. 2, Ref. Type 06
Sub-Req. 2, File Number Hi 00 Sub-Req. 2, Record. Data Hi 33
Sub-Req. 2, File Number Lo 03 Sub-Req. 2, Record. Data Lo CD
Sub-Req. 2, Record number Hi 00 Sub-Req. 2, Record. Data Hi 00
Sub-Req. 2, Record number Lo 09 Sub-Req. 2, Record. Data Lo 40

Sub-Req. 2, Record Length Hi


00

Sub-Req. 2, Record Length Lo


02

‫ ﺑﺮاي ﻧﻮﺷﺘﻦ در رﻛﻮرﻫﺎﻳﻲ از ﻓﺎﻳﻞ‬21 ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬


‫ وﻟﻲ ﺑﺠﺎي ﺧﻮاﻧﺪن ﻛﺎر ﻧﻮﺷﺘﻦ را اﻧﺠﺎم ﻣﻴﺪﻫﺪ‬20 ‫اﻳﻦ ﻓﺎﻧﻜﺸﻦ ﻛﺪ ﺷﻴﺒﻪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪44‬‬

‫ﭘﺎﺳﺦ ﻫﺎي ‪Exception‬‬


‫ﺗﺎﻛﻨﻮن در ﺧﻼل ﺑﺤﺚ ﭼﻨﺪﻳﻦ ﺑﺎر ﺑﻪ ﭘﺎﺳﺦ ﻫﺎي ‪ Exception‬اﺷﺎره و ﻛﺪ ﻫﺎﻳﻲ را ﻧﻴﺰ ﺑﻌﻨﻮان ‪ Error‬در ارﺗﺒﺎط ﺑﺎ‬
‫ﻫﺮ ﻓﺎﻧﻜﺸﻦ ﻛﺪ ذﻛﺮ ﻛﺮده اﻳﻢ‪ .‬ﺑﺮاي روﺷﻦ ﺷﺪن ﻣﻔﻬﻮم اﻳﻨﮕﻮﻧﻪ ﭘﺎﺳﺦ ﻫﺎ ﺣﺎﻻت زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪:‬‬
‫وﻗﺘﻲ وﺳﻴﻠﻪ درﺧﻮاﺳﺘﻲ را از ‪ Master‬ﺑﺪون ﺧﻄﺎي ارﺗﺒﺎﻃﻲ درﻳﺎﻓﺖ ﻣﻴﻜﻨﺪ ﭘﺎﺳﺦ دادن ﺑﻪ آن ﺑﻄﻮر ﻧﺮﻣﺎل‬ ‫‪‬‬

‫اﺳﺖ‪.‬‬
‫وﻗﺘﻲ وﺳﻴﻠﻪ درﺧﻮاﺳﺖ ‪ Master‬را ﺑﺪﻟﻴﻞ وﺟﻮد اﺷﻜﺎل ارﺗﺒﺎﻃﻲ درﻳﺎﻓﺖ ﻧﻤﻴﻜﻨﺪ ﭘﺎﺳﺨﻲ ﻫﻢ ﻧﻤﻲ دﻫﺪ‪ .‬در‬ ‫‪‬‬

‫اﻳﻦ ﺣﺎﻟﺖ در ﺳﻤﺖ ‪ Master‬ﺧﻄﺎ ﺗﻮﺳﻂ ‪ Time Out‬آﺷﻜﺎر ﻣﻴﺸﻮد‪.‬‬


‫‪LRC‬‬ ‫وﻗﺘﻲ وﺳﻴﻠﻪ درﺧﻮاﺳﺖ را درﻳﺎﻓﺖ ﻣﻴﻜﻨﺪ وﻟﻲ در آن ﺧﻄﺎ ﻣﻴﺒﻴﻨﺪ ﻣﺜﻼً ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ‪ Parity‬و ‪ CRC‬ﻳﺎ‬ ‫‪‬‬

‫ﻣﺘﻮﺟﻪ ﻣﻴﺸﻮد ﻛﻪ ﺑﺮﺧﻲ از ﺑﻴﺘﻬﺎ در ﻫﻨﮕﺎم اﻧﺘﻘﺎل ﺧﺮاب ﺷﺪه اﻧﺪ در اﻳﻨﺤﺎﻟﺖ ﻧﻴﺰ ﭘﺎﺳﺨﻲ ﺑﺮﮔﺸﺖ داده‬
‫ﻧﻤﻴﺸﻮد و ﺑﺎز ‪ Master‬ﺑﺎ ‪ Time out‬ﻣﺘﻮﺟﻪ اﺷﻜﺎل ﻣﻴﺸﻮد‪.‬‬
‫وﻗﺘﻲ وﺳﻴﻠﻪ درﺧﻮاﺳﺖ ‪ Master‬را ﺑﺪون ﺧﻄﺎ ﻫﺎي ﻓﻮق درﻳﺎﻓﺖ ﻣﻴﻜﻨﺪ وﻟﻲ ﻧﻤﻲ ﺗﻮاﻧﺪ آﻧﺮا اﻧﺠﺎم دﻫﺪ‬ ‫‪‬‬

‫ﺑﻌﻨﻮان ﻣﺜﺎل درﺧﻮاﺳﺖ ﺑﺮاي ﺧﻮاﻧﺪن از آدرس ﻫﺎﻳﻲ اﺳﺖ ﻛﻪ ﻋﻤﻼً وﺟﻮد ﻧﺪارﻧﺪ در اﻳﻦ ﺣﺎﻟﺖ وﺳﻴﻠﻪ‬
‫ﭘﺎﺳﺦ ‪ Exception‬ﺑﺮ ﻣﻴﮕﺮداﻧﺪ‪ .‬ﭘﺎﺳﺦ ‪ Exception‬ﺑﻪ اﻳﻦ ﻧﺤﻮ اﺳﺖ ﻛﻪ در ‪ PDU‬درﻳﺎﻓﺖ ﺷﺪه ﻛﺪ‬
‫ﻓﺎﻧﻜﺸﻦ ﺑﻪ ﻫﻤﺎن ﺷﻜﻞ ﺑﺮ ﻧﻤﻲ ﮔﺮدد ﺑﻠﻜﻪ وﺳﻴﻠﻪ ﺑﻴﺖ ‪ MSB‬آﻧﺮا ﻛﻪ ﺻﻔﺮ اﺳﺖ ﺑﻪ ﻳﻚ ﺗﺒﺪﻳﻞ ﻣﻴﻜﻨﺪ‬
‫ﺑﻌﺒﺎرت دﻳﮕﺮ آﻧﺮا ﺑﺎ ‪ 80‬ﻫﮕﺰ ﺟﻤﻊ ﻣﻲ ﻛﻨﺪ و ﺳﭙﺲ آﻧﺮا ﺑﻪ ‪ Master‬ﺑﺮ ﻣﻴﮕﺮداﻧﺪ ‪ Master .‬ﺑﺎ درﻳﺎﻓﺖ اﻳﻦ‬
‫ﻛﺪ ﻣﺘﻮﺟﻪ اﺷﻜﺎل ﻣﻴﺸﻮد‪ .‬اﻣﺎ اﻳﻨﻜﻪ ﭼﻪ ﻧﻮع ﺧﻄﺎﻳﻲ رخ داده از روي ﻓﻴﻠﺪ ‪ Data‬ﻣﺘﻮﺟﻪ ﻣﻴﺸﻮد زﻳﺮا وﺳﻴﻠﻪ‬
‫ﻛﺪ ﺧﻄﺎي ‪ Exception‬را ﻧﻴﺰ در اﻳﻦ ﻓﻴﻠﺪ ﻗﺮار ﻣﻴﺪﻫﺪ‪ .‬اﻳﻦ ﻛﺪ ﻫﺎ ﻃﺒﻖ ﺷﻜﻞ زﻳﺮ ﻫﺴﺘﻨﺪ‪:‬‬

‫در ﻣﺜﺎل زﻳﺮ درﺧﻮاﺳﺖ ﺧﻮاﻧﺪن وﺿﻌﻴﺖ ﺧﺮوﺟﻲ ﻫﺎي ‪ 514‬ﺗﺎ ‪ 521‬ﺗﻮﺳﻂ ‪ Master‬ارﺳﺎل ﻣﻴﮕﺮدد وﻟﻲ ﭼﻮن‬
‫اﻳﻦ آدرﺳﻬﺎ ﺗﻮﺳﻂ وﺳﻴﻠﻪ ﺳﺎﭘﻮرت ﻧﻤﻴﺸﻮﻧﺪ درﭘﺎﺳﺦ ﻛﺪ ‪ Exception 02‬ﻛﻪ ﻧﺸﺎن دﻫﻨﺪه ﻧﺎﺷﻨﺎﺧﺘﻪ ﺑﻮدن آدرس‬
‫اﺳﺖ را ﺑﺮﻣﻴﮕﺮداﻧﺪ‪.‬‬
‫‪45‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫‪Modbus Plus‬‬ ‫‪3-4‬‬


‫ﭘﺮوﺗﻜﻞ ‪ Modbus Plus‬ﺑﻤﻨﻈﻮر ﻓﺎﺋﻖ آﻣﺪن ﺑﺮ ﻣﺤﺪودﻳﺖ ﻫﺎﻳﻲ ﻛﻪ در ﻧﺴﺨﻪ ﭘﺎﻳﻪ ‪ Modbus‬وﺟﻮد داﺷﺖ از‬
‫ﺟﻤﻠﻪ ﻣﺤﺪودﻳﺖ ‪ Single Master‬ﺑﻮدن ﺳﻴﺴﺘﻢ و ﻣﺸﻜﻼت ﺳﺎﺧﺘﺎري ﻛﻪ ‪ Modbus‬در ﺷﺒﻜﻪ ﻫﺎي وﺳﻴﻊ ﭘﻴﺪا ﻣﻲ‬
‫ﻛﺮد ﻋﺮﺿﻪ ﺷﺪ‪ Modbus Plus .‬در واﻗﻊ ﺟﺰو ﭘﻴﺸﮕﺎﻣﺎن اﺳﺘﻔﺎده از ﺗﻜﻨﻴﻚ ‪ Token Pass‬روي ﺷﺒﻜﻪ ﺑﻮد‪ .‬وﻟﻲ‬
‫ﺑﺮﺧﻼف ﻧﺴﺨﻪ ﭘﺎﻳﻪ ﺑﻌﻨﻮان ﻳﻚ اﺳﺘﺎﻧﺪارد ﺑﺎز ﻃﺮح ﻧﺸﺪ‪.‬‬
‫در ﺷﺒﻜﻪ ‪ Modbus Plus‬ﻣﺎﻛﺰﻳﻤﻢ ‪ 64‬وﺳﻴﻠﻪ )‪ ( Node‬ﻣﻲ ﺗﻮان روي ﺑﺎس ﻗﺮار داد ﻛﻪ از اﻳﻦ ﺗﻌﺪاد ‪ 32‬ﺗﺎ ﻣﻴﺘﻮاﻧﻨﺪ‬
‫ﺑﺼﻮرت ﻣﺴﺘﻘﻴﻢ ﺑﻪ ﺷﺒﻜﻪ اي ﺑﺎ ﻣﺎﻛﺰﻳﻤﻢ ﻃﻮل ‪ 450‬ﻣﺘﺮ ﻣﺘﺼﻞ ﺷﻮﻧﺪ‪ .‬ﺑﺮاي اﺗﺼﺎل وﺳﺎﻳﻞ ﺑﻴﺸﺘﺮ ﺑﻪ ﺷﺒﻜﻪ ﻳﺎ اﻓﺰاﻳﺶ‬
‫ﻃﻮل ﻻزم اﺳﺖ از رﻳﭙﻴﺘﺮ اﺳﺘﻔﺎده ﮔﺮدد‪.‬ﻛﻪ در اﻳﻨﺼﻮرت ﻣﺎﻛﺰﻳﻤﻢ ‪ 64‬وﺳﻴﻠﻪ روي ﺑﺎس ﺑﺎ ﻃﻮل ﻣﺎﻛﺰﻳﻤﻢ ‪1800‬‬
‫ﻣﺘﺮ ﻗﺎﺑﻞ اﺗﺼﺎل اﺳﺖ‪ .‬ﺑﺎ ﺑﻜﺎر ﺑﺮدن ﻓﻴﺒﺮ ﻧﻮري ﻣﺴﺎﻓﺘﻬﺎي زﻳﺎدﺗﺮ ﻧﻴﺰ ﭘﻮﺷﺶ داده ﻣﻴﺸﻮﻧﺪ‪.‬‬

‫ﻣﻴﺘﻮان ﺑﺎ اﺳﺘﻔﺎده از ‪ Bridge‬ﻣﺨﺼﻮص اﻳﻦ ﺷﺒﻜﻪ ﻛﻪ ﺑﻪ )‪ BP (Bridge Plus‬ﻣﻮﺳﻮم اﺳﺖ ﭼﻨﺪﻳﻦ ﺷﺒﻜﻪ را ﺑﺎﻫﻢ‬
‫ﻟﻴﻨﻚ ﻛﺮد ﺑﻌﻼوه ﻣﻴﺘﻮان ﺑﺎ اﺳﺘﻔﺎده از ‪ Multiplexer‬ﻫﺎي ﻣﺨﺼﻮص ﻛﻪ ﺑﻪ ‪ MP‬ﻣﻮﺳﻮم اﺳﺖ و داراي ﻟﻴﻨﻚ‬
‫ﺳﺮﻳﺎل ‪ RS232/RS485‬ﻣﻲ ﺑﺎﺷﺪ اﺗﺼﺎل ﺑﺎ وﺳﺎﻳﻞ ﻣﺠﻬﺰ ﺑﻪ ﭘﻮرت ﺳﺮﻳﺎل را ﺑﺮﻗﺮار ﻛﺮد‪.‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪46‬‬

‫‪ PLC‬ﻫﺎي ‪ Modicon‬داراي ﭘﻮرت اﺗﺼﺎل ﻣﺴﺘﻘﻴﻢ ﺑﻪ ‪ Modbus Plus‬ﻫﺴﺘﻨﺪ و از ﻃﺮﻳﻖ اﻳﻦ ﭘﻮرت ﻣﻴﺘﻮان‬
‫‪ Distributed I/O‬ﻫﺎﻳﻲ ﻛﻪ ﺷﺒﻜﻪ ﺷﺪه اﻧﺪ را ﺑﻪ ‪ PLC‬ﻣﺘﺼﻞ ﻧﻤﻮد‪.‬در ﻋﻴﻦ ﺣﺎل ﺑﺎ ﻗﺮار دادن ﻛﺎرت ﺷﺒﻜﻪ ﻛﻪ ﺑﻪ‬
‫‪ NOM‬ﻣﺨﻔﻒ ‪ Network Option Module‬اﺳﺖ اﺗﺼﺎل ﺑﻴﻦ ‪ PLC‬و ﺷﺒﻜﻪ ﻣﺰﺑﻮر را ﺑﺮﻗﺮار ﻧﻤﻮد‪.‬‬
‫در ﺷﻜﻞ ﺻﻔﺤﻪ ﺑﻌﺪ ﻧﻤﻮﻧﻪ اي از ﺳﺎﺧﺘﺎر ﺷﺒﻜﻪ ‪ Modbus Plus‬ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪ .‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻴﺸﻮد‬
‫ﺷﺒﻜﻪ ‪ A‬ﺗﻮﺳﻂ رﻳﭙﻴﺘﺮ ﺗﻮﺳﻌﻪ ﭘﻴﺪا ﻛﺮده و ارﺗﺒﺎط ﺑﻴﻦ ﺷﺒﻜﻪ ‪ A‬و ﺷﺒﻜﻪ ‪ B‬از ﻃﺮﻳﻖ ‪ Bridge‬اﻧﺠﺎم ﺷﺪه اﺳﺖ‪.‬‬

‫)‪ (Logic‬در ﺷﺒﻜﻪ ‪Modbus Plus‬‬ ‫‪ 1-3-4‬ارﺗﺒﺎط ﻣﻨﻄﻘﻲ‬


‫در ﺷﺒﻜﻪ ‪ Modbus Plus‬ﻫﺮ ‪ Node‬داراي ﻳﻚ آدرس ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ 64‬اﺳﺖ ﻛﻪ اﻳﻦ آدرس اﻟﺰاﻣﺎً ﻧﺒﺎﻳﺪ ﺑﻪ ﺗﺮﺗﻴﺐ‬
‫ﺑﺎﺷﺪ و رﺑﻄﻲ ﻫﻢ ﺑﻪ ﻣﺤﻞ ﻧﺼﺐ ﻓﻴﺰﻳﻜﻲ وﺳﻴﻠﻪ ﻧﺪارد ﺻﺮﻓﺎً ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﻮدن آن اﻟﺰاﻣﻲ اﺳﺖ‪ .‬ﻫﺮ ‪ Node‬زﻣﺎﻧﻲ‬
‫‪47‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫اﺟﺎزه دﺳﺘﺮﺳﻲ ﺑﻪ ﺑﺎس دارد ﻛﻪ ﻓﺮﻳﻢ ‪ Token‬در اﺧﺘﻴﺎرش ﺑﺎﺷﺪ‪ Token .‬ﮔﺮوﻫﻲ از ﺑﻴﺖ ﻫﺎي ﻣﻨﻄﻘﻲ اﺳﺖ ﻛﻪ‬
‫ﺑﻴﻦ ‪ Node‬ﻫﺎ ﺑﻪ ﺗﺮﺗﻴﺐ آدرس آﻧﻬﺎ ﻣﻲ ﭼﺮﺧﺪ‪ .‬ﻫﺮ ﺷﺒﻜﻪ داراي ‪ Token‬ﻣﺨﺼﻮص ﺑﻪ ﺧﻮد ﻣﻲ ﺑﺎﺷﺪ از اﻳﻨﺮو‬
‫وﻗﺘﻲ ﭼﻨﺪﻳﻦ ﺷﺒﻜﻪ ‪ Modbus Plus‬ﺗﻮﺳﻂ ‪ Bridge‬ﺑﻪ ﻳﻜﺪﻳﮕﺮ ﻣﺘﺼﻞ ﻣﻴﺸﻮﻧﺪ ‪ Token‬در ﻫﺮ ﻗﺴﻤﺖ ﺟﺪاﮔﺎﻧﻪ‬
‫ﻣﻲ ﭼﺮﺧﺪ و ‪ Bridge‬اﺟﺎزه ﻋﺒﻮر آن را ﻧﺨﻮاﻫﺪ داد‪ .‬ﺷﻜﻞ ﺑﻌﺪ دو ﺷﺒﻜﻪ را ﻛﻪ ﺑﺎ ‪ Bridge‬ﺑﻪ ﻫﻢ ﻣﺘﺼﻞ ﺷﺪه اﻧﺪ‬
‫ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪ Token .‬ﻫﺮ ﺷﺒﻜﻪ ﺑﺼﻮرت ﻣﺠﺰا ﺑﻪ ﺗﺮﺗﻴﺐ ﺷﻤﺎره ‪ Node‬ﻫﺎ و ﺑﺼﻮرت ﺻﻌﻮدي ﮔﺮدش ﻣﻴﻜﻨﺪ و‬
‫ﭘﺲ از رﺳﻴﺪن ﺑﻪ ﺑﺎﻻﺗﺮﻳﻦ آدرس ﻣﺠﺪداً ﺑﻪ آدرس ﭘﺎﻳﻴﻦ ﺗﺮ ﺑﺮ ﻣﻴﮕﺮدد‪.‬‬

‫وﻗﺘﻲ ﻳﻚ ‪ Node‬ﺑﺨﻮاﻫﺪ ﺑﻪ ﺗﺒﺎدل دﻳﺘﺎ ﺑﺎ ﺳﺎﻳﺮ ‪ Node‬ﻫﺎ ﺑﭙﺮدازد اﺑﺘﺪا ‪ Token‬را در اﺧﺘﻴﺎر ﮔﺮﻓﺘﻪ و آﻧﺮا ﺑﻤﺪت‬
‫ﺣﺪاﻗﻞ ‪ 530‬ﻣﻴﻜﺮوﺛﺎﻧﻴﻪ ﻧﮕﻪ ﻣﻴﺪارد ﻳﺎ اﺻﻄﻼﺣﺎً ‪ Hold‬ﻣﻴﻜﻨﺪ ﺳﭙﺲ ﻗﺎدر اﺳﺖ ﭘﻴﺎم ﺧﻮد را ارﺳﺎل ﻧﻤﺎﻳﺪ‪ .‬در ﻫﺮ‬
‫)‪(route‬‬ ‫ﭘﻴﺎم آدرس ﮔﻴﺮﻧﺪه و ﻓﺮﺳﺘﻨﺪه ﻣﺸﺨﺺ اﺳﺖ‪ .‬در ﺷﺒﻜﻪ ﻫﺎﻳﻲ ﻛﻪ ﺑﺎ ‪ Bridge‬ﺑﻪ ﻫﻢ ﻣﺘﺼﻞ ﺷﺪه اﻧﺪ ﻣﺴﻴﺮ‬
‫ﻧﻴﺰ در ﭘﻴﺎم ﻣﺸﺨﺺ ﻣﻴﮕﺮدد‪ .‬ﺑﺎ ﻋﺒﻮر ‪ Token‬ﻫﺮ ‪ Node‬ﻣﻴﺘﻮاﻧﺪ در ﻳﻚ دﻳﺘﺎﺑﻴﺲ ﺳﺮاﺳﺮي )‪ (global‬ﻛﻪ ﺑﺼﻮرت‬
‫‪ Broadcast‬ﺑﺮاي ﺗﻤﺎم ‪ Node‬ﻫﺎ ﻣﺤﺴﻮب ﻣﻴﺸﻮد ﭘﻴﺎﻣﻲ را ﺑﻨﻮﻳﺴﺪ‪.‬‬
‫دﻳﺘﺎي ‪ Global‬ﺑﻌﻨﻮان ﻓﻴﻠﺪي در ﻓﺮﻳﻢ ‪ Token‬ﻗﺮار ﻣﻴﮕﻴﺮد و ﻫﻤﺮاه ﺑﺎ آن در ﺷﺒﻜﻪ آزاد ﻣﻲ ﺷﻮد‪ .‬ﺳﺎﻳﺮ ‪ Node‬ﻫﺎ‬
‫ﺑﺎ ﻣﺎﻧﻴﺘﻮر ﻛﺮدن ‪ Token‬ﻓﻴﻠﺪ ‪ Global Data‬را از آن ﺟﺪا ﻛﺮده و ﭘﻴﺎم را ﻣﻴﺨﻮاﻧﻨﺪ‪ .‬اﻳﻦ روش اﻣﻜﺎن اﻧﺘﻘﺎل ﺳﺮﻳﻊ‬
‫آﻻرم ﻫﺎ و ‪ Set Point‬ﻫﺎ و ﺳﺎﻳﺮ دﻳﺘﺎ ﻫﺎي ﻣﻬﻢ را ﻓﺮاﻫﻢ ﻣﻲ ﺳﺎزد ‪ .‬ﺑﺪﻳﻬﻲ اﺳﺖ ﻫﺮ ﺷﺒﻜﻪ ﺑﺮاي ﺧﻮدش داراي‬
‫ﻳﻚ ‪ Global Data‬اﺳﺖ ﻛﻪ ﻧﻤﻴﺘﻮاﻧﺪ از ‪ Bridge‬ﻋﺒﻮر ﻛﺮده و ﺑﻪ ﺳﺎﻳﺮ ﺷﺒﻜﻪ ﻫﺎ ﻣﻨﺘﻘﻞ ﺷﻮد‪.‬‬
‫ﻫﺮ ‪ Bridge‬ﻧﻴﺰ داراي آدرس ‪ Node‬روي ﺷﺒﻜﻪ اﺳﺖ وﻟﻲ از آﻧﺠﺎ ﻛﻪ واﺳﻂ ﺑﻴﻦ دو ﺷﺒﻜﻪ ﻣﻴﺒﺎﺷﺪ ﻣﻴﺘﻮاﻧﺪ روي‬
‫ﻫﺮ ﺷﺒﻜﻪ ﻳﻚ آدرس ‪ Node‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬در ﺷﻜﻞ ﺑﻌﺪ ﻣﻼﺣﻈﻪ ﻣﻴﺸﻮد ﻛﻪ ‪ Bridge‬ﺑﻴﻦ ﺷﺒﻜﻪ ‪ A‬و ‪ B‬از دﻳﺪ‬
‫ﺷﺒﻜﻪ ‪ A‬ﺑﺎ آدرس ‪ 22‬و از دﻳﺪ ﺷﺒﻜﻪ ‪ B‬ﺑﺎ آدرس ‪ 25‬ﺷﻨﺎﺧﺘﻪ ﻣﻴﺸﻮد وﻟﻲ ‪ Bridge‬ﺑﻴﻦ ﺷﺒﻜﻪ ‪ B‬و ‪ C‬از دﻳﺪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪48‬‬

‫ﻫﺮ دو ﺷﺒﻜﻪ ﺑﺎ آدرس ‪ 20‬ﻣﺸﺨﺺ ﻣﻴﺸﻮد ‪ .‬اﮔﺮ ﭘﻴﺎﻣﻲ از ‪ Node‬ﻳﻚ ﺷﺒﻜﻪ ﺑﻪ ‪ Node‬ﺷﺒﻜﻪ دﻳﮕﺮي ﻛﻪ ﺑﺎ‬
‫‪ Bridge‬ﺑﻪ ﻫﻢ ﻣﺘﺼﻞ ﺷﺪه اﻧﺪ ارﺳﺎل ﺷﻮد اﺑﺘﺪا ‪ Bridge‬آﻧﺮا درﻳﺎﻓﺖ ﻛﺮده و ذﺧﻴﺮه ﻣﻲ ﻛﻨﺪ ﺳﭙﺲ ﺑﻪ ﻣﺤﺾ‬
‫اﻳﻨﻜﻪ ‪ Token‬ﺷﺒﻜﻪ دوم را ﮔﺮﻓﺖ ﭘﻴﺎم ﻣﺰﺑﻮر را ﻫﻤﺮاه ﺑﺎ آن ﺑﻪ ‪ Node‬ﻣﻮرد ﻧﻈﺮ ارﺳﺎل ﻣﻲ ﻧﻤﺎﻳﺪ‪ .‬ﻫﺮ ﻓﺮﻳﻢ ﭘﻴﺎم‬
‫ﺷﺎﻣﻞ اﻃﻼﻋﺎت ﻣﺴﻴﺮ )‪ (Route‬اﺳﺖ ﻳﻌﻨﻲ آدرس ‪ Bridge‬ﻫﺎﻳﻲ ﻛﻪ ﻻزم اﺳﺖ ﭘﻴﺎم از آﻧﻬﺎ ﺑﮕﺬرد ﺗﺎ ﺑﻪ ﻣﻘﺼﺪ‬
‫ﺑﺮﺳﺪ در ﻓﻴﻠﺪﻫﺎي ﻣﺮﺑﻮﻃﻪ ﻣﺸﺨﺺ اﺳﺖ‪ .‬ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ ﻓﺮﻳﻢ در ﺻﻔﺤﻪ ﺑﻌﺪ آﻣﺪه اﺳﺖ‪ .‬ﻣﺎﻛﺰﻳﻤﻢ ‪ 4‬آدرس‬
‫‪ Route‬ﻣﻴﺘﻮان در ﻓﺮﻳﻢ ﭘﻴﺎم ﺑﻜﺎر ﺑﺮد‪ .‬ﺑﻌﻨﻮان ﻣﺜﺎل ﻓﺮض ﻛﻨﻴﺪ ﻛﻪ در ﺷﻜﻞ ﺻﻔﺤﻪ ﺑﻌﺪ ‪ Node‬ﺷﻤﺎره ‪ 5‬از ﺷﺒﻜﻪ‬
‫‪ A‬ﺑﺨﻮاﻫﺪ ﭘﻴﺎﻣﻲ را ﺑﻪ ‪ Node‬ﺷﻤﺎره ‪ 12‬ﻛﻪ در ﺷﺒﻜﻪ ‪ B‬ﻗﺮار دارد ﺑﻔﺮﺳﺘﺪ ﺑﺮاي اﻳﻨﻜﺎر‪:‬‬
‫‪ -1‬اوﻟﻴﻦ آدرس ‪ Route‬آدرس ‪ Bridge‬ﺑﻴﻦ ‪ A‬و ‪ B‬ﻳﻌﻨﻲ ‪ 22‬ﻣﻴﺒﺎﺷﺪ‪.‬‬
‫‪ -2‬دوﻣﻴﻦ آدرس ‪ Route‬آدرس ‪ Bridge‬ﺑﻴﻦ ‪ B‬و ‪ C‬ﻳﻌﻨﻲ ‪ 20‬ﻣﻴﺒﺎﺷﺪ‪ .‬ﺗﻮﺟﻪ ﺷﻮد ﻛﻪ آدرس ‪ Bridge‬ﺑﻴﻦ‬
‫‪ A‬و ‪ B‬از دﻳﺪﮔﺎه ﺷﺒﻜﻪ ‪ B‬آدرس ‪ 25‬اﺳﺖ و اﻳﻦ ‪ Bridge‬وﻗﺘﻲ ‪ Token‬را ﺑﺪﺳﺖ ﺑﻴﺎورد ﭘﻴﺎم را ﺑﻪ‬
‫‪ Node‬ﺷﻤﺎره ‪ 20‬روي ﺷﺒﻜﻪ ‪ B‬ﻳﻌﻨﻲ ‪ Bridge‬دﻳﮕﺮ ارﺳﺎل ﻣﻴﺪارد‪.‬‬
‫‪ -3‬ﺳﻮﻣﻴﻦ آدرس ‪ Route‬ﻣﺮﺑﻮط ﺑﻪ آدرس ‪ Node‬ﻣﻘﺼﺪ اﺳﺖ ‪.‬‬
‫‪ -4‬ﺳﺎﻳﺮ ﻓﻴﻠﺪﻫﺎي آدرس ‪ Route‬ﺑﺎ ﺻﻔﺮ ﭘﺮ ﻣﻴﺸﻮﻧﺪ ﻳﻌﻨﻲ ‪ Forwarding‬ﺑﻴﺸﺘﺮي ﻻزم ﻧﻴﺴﺖ‪.‬‬
‫‪49‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫وﻗﺘﻲ ‪ Bridge‬اوﻟﻴﻪ ﻳﻌﻨﻲ ‪ 22‬ﭘﻴﺎم را ﻣﻴﮕﻴﺮد آﻧﺮا ﺑﺮرﺳﻲ ﻣﻴﻜﻨﺪ و از آﻧﺠﺎ ﻛﻪ آدرس ‪ Route‬ﻫﺎي ﺑﻌﺪي ﺻﻔﺮ‬
‫ﻧﻴﺴﺖ ﻣﺘﻮﺟﻪ ﻣﻲ ﺷﻮد ﻛﻪ ﺑﺎﻳﺪ آﻧﺮا ﺑﻪ ﺷﺒﻜﻪ ﺑﻌﺪي ﺑﻔﺮﺳﺘﺪ‪ .‬اﻳﻦ ‪ Bridge‬آدرس ﺧﻮدش را ﺑﺮ ﻣﻲ دارد و آدرس‬
‫‪ Route‬ﻫﺎي ﻣﻮﺟﻮد در ﭘﻴﺎم را ﺑﻪ ﭼﭗ ﺷﻴﻔﺖ داده و ﺑﻴﺘﻬﺎي ﺳﻤﺖ راﺳﺖ را ﺑﺎ ﺻﻔﺮ ﭘﺮ ﻣﻴﻜﻨﺪ ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ آدرس‬
‫‪ 20‬در اوﻟﻴﻦ ﻓﻴﻠﺪ ‪ Route‬ﻗﺮار ﻣﻴﮕﻴﺮد ‪ .‬اﻳﻦ ‪ Bridge‬ﺑﺎ درﻳﺎﻓﺖ ‪ Token‬ﻓﺮﻳﻢ ﻣﺰﺑﻮر را ﺑﻪ ‪ Node‬ﺷﻤﺎره ‪ 20‬ارﺳﺎل‬
‫ﻣﻴﻨﻤﺎﻳﺪ‪.‬ﻋﻤﻠﻜﺮد ‪ Bridge‬ﺷﻤﺎره ‪ 20‬ﺑﺮاي ‪ Routing‬ﻧﻴﺰ ﺑﻪ ﻫﻤﻴﻦ ﻣﻨﻮال اﺳﺖ‪.‬‬

‫ﻻﻳﻪ ﻫﺎي ﭘﺮوﺗﻜﻞ ‪Modbus Plus‬‬


‫ﻻﻳﻪ ﻫﺎي ﭘﺮوﺗﻜﻞ ‪ Modbus Plus‬در ﻣﻘﺎﻳﺴﻪ ﺑﺎ ﻣﺪل‬
‫‪ OSI‬در ﺷﻜﻞ روﺑﺮو آﻣﺪه اﺳﺖ ﻫﻤﺎﻧﻄﻮر ﻛﻪ‬
‫ﻣﻼﺣﻈﻪ ﻣﻴﺸﻮد ﺑﺮاي ﺑﺴﺘﻪ ﺑﻨﺪي ﻳﺎ ﺑﺎز ﻛﺮدن ﭘﻴﺎم از ﺳﻪ‬
‫ﭘﺮوﺗﻜﻠﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬ ‫ﺳﻄﺢ‬
‫‪HDLC‬‬ ‫‪‬‬
‫‪LLC‬‬ ‫‪‬‬
‫‪MAC‬‬ ‫‪‬‬

‫‪HDLC‬‬
‫داراي ﻓﺮﻳﻤﻲ ﺑﺼﻮرت ﺷﻜﻞ زﻳﺮ اﺳﺖ‬ ‫‪ HDLC‬ﻛﻪ ﻣﺨﻔﻒ ‪ High Level Data Link Control‬اﺳﺖ‬

‫‪OPENING‬‬ ‫‪BDCST‬‬ ‫‪MAC / LLC‬‬ ‫‪CLOSING‬‬


‫‪PREAMBLE‬‬ ‫‪FLAG‬‬ ‫‪ADDRESS‬‬ ‫‪FIELD‬‬ ‫‪FCS‬‬ ‫‪FLAG‬‬
‫‪AA‬‬ ‫‪7E‬‬ ‫‪FF‬‬ ‫‪CRC_16‬‬ ‫‪7E‬‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪50‬‬

‫ﻃﻮل‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫ﺑﺎﻳﺖ‬

‫ﻫﺮ ﻓﺮﻳﻢ ‪ HDLC‬ﻣﺘﺸﻜﻞ از ﻓﻴﻠﺪﻫﺎي زﻳﺮ اﺳﺖ‪:‬‬


‫‪ : Preamble‬آﻏﺎز ﻳﺎ ﻣﻘﺪﻣﻪ ﻓﺮﻳﻢ را ﻣﺸﺨﺺ ﻣﻜﻨﺪ و ﻣﻘﺪار ﻫﮕﺰ ‪ AA‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪ : Opening‬ﻧﺸﺎﻧﻪ اﺑﺘﺪاي ﻓﺮﻳﻢ اﺳﺖ وﻣﻘﺪار ﻫﮕﺰ ‪ 7E‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪: Broadcast Address‬اﻳﻦ ﻓﻴﻠﺪ ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ ﻛﻪ آﻳﺎ ﻫﻤﻪ ‪ Node‬ﻫﺎ ﻻزم اﺳﺖ ﭘﻴﺎم را ﺑﮕﻴﺮﻧﺪ ﻳﺎ ﺧﻴﺮ و ﻣﻘﺪار‬
‫آن ‪ FF‬ﻫﮕﺰ اﺳﺖ‪.‬‬
‫‪ : MAC/LLC‬اﻳﻦ ﻓﻴﻠﺪ ﺣﺎوي اﻃﻼﻋﺎت ‪ Token‬و دﻳﺘﺎﺳﺖ و در اداﻣﻪ ﺗﺸﺮﻳﺢ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ Frame Check Sequence : FCS‬ﻓﻴﻠﺪ ﭼﻚ ﻛﺮدن ﺧﻄﺎﺳﺖ ﻛﻪ ﺑﺼﻮرت ‪ CRC‬ﻋﻤﻞ ﻣﻴﻜﻨﺪ‪.‬‬
‫‪ : Closing‬ﻧﺸﺎﻧﻪ اﻧﺘﻬﺎي ﻓﺮﻳﻢ اﺳﺖ وﻣﻘﺪار ﻫﮕﺰ ‪ 7E‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪51‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫‪ Media Access Control Level : MAC Level‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ﻣﺸﺘﻤﻞ ﺑﺮ ﻓﻴﻠﺪﻫﺎي‬
‫زﻳﺮ اﺳﺖ‪:‬‬
‫‪ : Destination Address‬آدرس ﻣﻘﺼﺪ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ ﻛﻪ ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ 64‬اﺳﺖ‪.‬‬
‫‪ : Source Address‬آدرس ﻣﺒﺪا را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ و ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ 64‬اﺳﺖ‪.‬‬
‫‪ : MAC Function‬ﻛﺪي اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ آن ﻣﻘﺼﺪ ﻣﻴﻔﻬﻤﺪ ﭼﻪ ﻛﺎري ﺑﺎﻳﺪ اﻧﺠﺎم دﻫﺪ‪.‬‬
‫‪ : Byte Count‬ﺗﻌﺪاد ﺑﺎﻳﺖ ﻣﻮﺟﻮد در ﺑﺴﺘﻪ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪.‬‬

‫‪LLC Level‬‬
‫ﺣﺎوي ﭘﻴﺎﻣﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ارﺳﺎل ﺷﻮد ﻣﺎﻧﻨﺪ ﻳﻚ ﻓﺮﻣﺎن ‪ Modbus‬ﺑﻌﻼوه اﻳﻦ ﻓﻴﻠﺪ‬ ‫‪Logical Link Control‬‬

‫ﻣﺴﻴﺮﻫﺎي آدرس ‪ Route‬و ﺳﺎﻳﺮ اﻃﻼﻋﺎت ﻣﺮﺗﺒﻂ ﺑﺎ ﭘﻴﺎم را ﻧﻴﺰ در ﺑﺮ ﻣﻴﮕﻴﺮد‪ .‬ﻓﻴﻠﺪﻫﺎي آن ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫‪ : Master Output Path‬ﻣﺴﻴﺮ ﺧﺮوﺟﻲ ﻛﻨﺘﺮﻟﺮ ﻳﻌﻨﻲ ﭘﻮرﺗﻲ ﻛﻪ ﺗﻮﺳﻂ آن ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﻴﻜﻨﺪ را ﻣﺸﺨﺺ‬
‫ﻣﻴﻜﻨﺪ‬
‫‪: Router Counter‬ﺗﻌﺪاد ‪ Bridge Plus‬ﻣﺴﻴﺮ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪.‬‬
‫‪ : Transaction Sequence‬دادو ﺳﺘﺪ ﻳﺎ ﺗﺒﺎدل دﻳﺘﺎ ﺑﻴﻦ ﻣﺒﺪا و ﻣﻘﺼﺪ را ﻧﺸﺎن ﻣﻲ دﻫﺪ‪.‬‬
‫‪ : Routing Path‬ﻣﺴﻴﺮ آدرس را در ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ‪ Bridge‬ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪.‬‬
‫‪Modbus‬‬ ‫‪: Modbus Frame‬ﻓﺮﻣﺎن ﻫﺎي ‪ Modbus Plus‬را درﺑﺮ دارد ﻛﻪ ﻋﻤﺪﺗﺎً ﺷﺒﻴﻪ ﻓﺮﻣﺎﻧﻬﺎي ﻧﺴﺨﻪ ﭘﺎﻳﻪ‬
‫اﺳﺖ‪.‬‬

‫‪Modbus Plus‬‬ ‫‪ 2-3-4‬ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ ﺷﺒﻜﻪ‬


‫در ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ ‪ Node‬ﻫﺎي ﺷﺒﻜﻪ ﺗﻮﺳﻂ ﻳﻚ ﻛﺎﺑﻞ دو رﺷﺘﻪ ﺑﻬﻢ ﺗﺎﺑﻴﺪه ‪ STP‬ﺑﻴﻜﺪﻳﮕﺮ ﻣﺘﺼﻞ ﻣﻴﺸﻮﻧﺪ در ﻋﻴﻦ‬
‫ﺣﺎل ﻣﻴﺘﻮان از ﻓﻴﺒﺮ ﻧﻮري ﻧﻴﺰ اﺳﺘﻔﺎده ﻛﺮد‪ .‬ﻃﻮل ﻛﺎﺑﻞ ﻣﺴﻲ در ﻫﺮ ‪ Section‬ﺣﺪاﻛﺜﺮ ‪ 450‬ﻣﺘﺮ اﺳﺖ اﮔﺮ ﻧﻴﺎز ﺑﻪ‬
‫ﮔﺴﺘﺮش ﺷﺒﻜﻪ ﺑﺎﺷﺪ از رﻳﭙﻴﺘﺮ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﺑﺪﻳﻬﻲ اﺳﺖ ﻃﻮل ‪ Section‬ﺑﻌﺪي ﻧﻴﺰ ‪ 450‬ﻣﺘﺮ ﺧﻮاﻫﺪ ﺑﻮد ‪ .‬ﻣﻴﺘﻮان‬
‫ﺗﻌﺪاد رﻳﭙﻴﺘﺮ ﻫﺎ را آﻧﻘﺪر اﻓﺰاﻳﺶ داد ﺗﺎ ﻧﻬﺎﻳﺘﺎً ﻃﻮل ﻛﻞ ﺷﺒﻜﻪ ﺑﻪ ‪ 1800‬ﻣﺘﺮ ﺑﺮﺳﺪ در اﻳﻨﺤﺎﻟﺖ ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ‪:‬‬
‫ﺑﻴﻦ ﻫﺮ ﺟﻔﺖ ‪ Node‬ﻛﻪ ﻗﺮار اﺳﺖ ﺑﺎ ﻫﻢ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻛﻨﻨﺪ ﻧﺒﺎﻳﺪ ﺑﻴﺶ از ‪ 3‬رﻳﭙﻴﺘﺮ ﻣﻮﺟﻮد ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬

‫ﻃﻮل ﻛﺎﺑﻞ ﺑﻴﻦ دو ‪ Node‬ﻣﺠﺎور ﻧﺒﺎﻳﺪ از ‪ 3‬ﻣﺘﺮ ﻛﻤﺘﺮ ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬

‫ﻫﺮ ‪ Section‬ﺣﺪاﻛﺜﺮ ‪ Node 32‬ﻣﻴﺘﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ‬ ‫‪‬‬

‫ﺗﻌﺪاد ﻛﻞ ‪ Node‬ﻫﺎ ﺣﺪاﻛﺜﺮ ‪ 64‬ﻋﺪد اﺳﺖ‪.‬‬ ‫‪‬‬


‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪52‬‬

‫اﺗﺼﺎل ‪ Node‬ﻫﺎ ﺑﻪ ﻛﺎﺑﻞ اﺻﻠﻲ ﺷﺒﻜﻪ ﺗﻮﺳﻂ ‪ Tap‬ﺻﻮرت ﻣﻴﮕﻴﺮد‪ .‬وﺳﺎﻳﻞ ‪ Tap‬داراي ﺗﺮﻣﻴﻨﻴﺘﻮر داﺧﻠﻲ ﻫﺴﺘﻨﺪ و‬
‫ﺑﺎ اﺳﺘﻔﺎده از ‪ Jumper‬در ﻣﺪار ﻗﺮار ﻣﻴﮕﻴﺮﻧﺪ ﻳﺎ از ﻣﺪار ﺧﺎرج ﻣﻴﺸﻮﻧﺪ‪ .‬ﺑﺪﻳﻬﻲ اﺳﺖ ﺑﺠﺰ در اﺑﺘﺪا و اﻧﺘﻬﺎي ﺑﺎس اﻳﻦ‬
‫ﺗﺮﻣﻴﻨﻴﺘﻮر ﻫﺎ ﻧﺒﺎﻳﺪ در ﻣﺪار ﻗﺮار ﮔﻴﺮﻧﺪ‪.‬‬

‫ﻫﺮ ‪ Tap‬دراي ﻣﺤﻠﻲ ﺑﺮاي اﺗﺼﺎل ﺑﻪ زﻣﻴﻦ اﺳﺖ ﺣﺘﻲ اﮔﺮ وﺳﻴﻠﻪ اي ﺑﻪ ‪ Tap‬ﻣﺘﺼﻞ ﻧﺒﺎﺷﺪ ﻻزم اﺳﺖ اﻳﻦ اﺗﺼﺎل‬
‫زﻣﻴﻦ از ﻃﺮﻳﻖ ﻛﺎﺑﻞ ‪ Drop‬ﺑﺮﻗﺮار ﮔﺮدد‪ .‬ﻛﺎﺑﻞ ‪ Drop‬ﺗﻮﺳﻂ ﻛﺎﻧﻜﺘﻮر ‪ 9‬ﭘﻴﻦ ‪ D-sub‬ﺑﻪ وﺳﻴﻠﻪ ﻣﺘﺼﻞ ﻣﻴﮕﺮدد‪.‬‬

‫در ﺑﺮﺧﻲ ﻛﺎرﺑﺮدﻫﺎ ﺑﺮاي ﻗﺎﺑﻠﻴﺖ اﻃﻤﻴﻨﺎن ﺑﺎﻻﺗﺮ از ﻛﺎﺑﻞ دوﺑﻞ و اﺗﺼﺎل دوﺑﻞ ﺑﺮاي ﺷﺒﻜﻪ ‪ Modbus Plus‬اﺳﺘﻔﺎده‬
‫ﻣﻴﺸﻮد‪ .‬در اﻳﻦ ﺷﺒﻜﻪ ﻛﺎﺑﻞ ﻫﺎ ﺑﺎ اﺳﺎﻣﻲ ‪ A‬و ‪ B‬ﺷﻨﺎﺧﺘﻪ ﻣﻴﺸﻮﻧﺪ در اﻳﻨﺠﺎ ﻧﻴﺰ ﻃﻮل ﻛﺎﺑﻞ ﻫﻤﺎن ﻣﺤﺪودﻳﺘﻬﺎي ذﻛﺮ‬
‫ﺷﺪه را دارد ﺑﻪ اﺿﺎﻓﻪ اﻳﻨﻜﻪ اﺧﺘﻼف ﻃﻮل ﻛﺎﺑﻠﻬﺎ ﺑﻴﻦ ﻫﺮ دو ‪ Node‬ﻣﺠﺎور ﻧﺒﺎﻳﺪ از ‪ 150‬ﻣﺘﺮ ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ‪ .‬ﺷﻜﻞ زﻳﺮ‬
‫اﻳﻦ ﻣﺸﻜﻞ را ﺑﺮاي ﻛﺎﺑﻞ ارﺗﺒﺎﻃﻲ ﺑﻴﻦ ‪ Node‬ﻫﺎي ‪1‬و ‪ 2‬ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬
‫‪53‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﺑﺎ اﺳﺘﻔﺎده از رﻳﭙﻴﺘﺮ ﻣﻲ ﺗﻮان ﺷﺒﻜﻪ را ﺑﺎ ﺗﻮﭘﻮﻟﻮژي ﻫﺎي دﻳﮕﺮي ﻏﻴﺮ از ﺑﺎس ﻣﺎﻧﻨﺪ ‪ Tree‬و ‪ Star‬ﻧﻴﺰ آراﻳﺶ داد ‪.‬‬
‫ﺷﻜﻞ ﺑﻌﺪ ﻧﻤﻮﻧﻪ اي از اﻳﻦ ﺗﻮﭘﻮﻟﻮژي ﻫﺎ را ﻧﺸﺎن ﻣﻲ دﻫﺪ‪ .‬ﻣﺤﺪودﻳﺖ ﻫﺎي ذﻛﺮ ﺷﺪه ﻗﺒﻠﻲ ﺑﺮاي اﻳﻦ ﺳﺎﺧﺘﺎر ﻧﻴﺰ‬
‫وﺟﻮد دارد‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪54‬‬

‫‪ Modbus Plus‬ﺑﺎ وﺳﺎﻳﻞ ﺳﺮﻳﺎل از ﻃﺮﻳﻖ ‪Bridge‬‬ ‫ارﺗﺒﺎط‬


‫ﺑﺎ اﺳﺘﻔﺎده از ‪ Bridge Multiplexer‬ﻳﺎ اﺻﻄﻼﺣﺎً ‪ BM‬ﻣﻴﺘﻮان وﺳﺎﻳﻞ ﺳﺮﻳﺎل را ﺑﻪ ﺷﺒﻜﻪ ‪ Modbus Plus‬ﻣﺘﺼﻞ‬
‫ﻛﺮد‪.‬ﻫﺮ ﻣﺎﻟﺘﻲ ﭘﻠﻜﺴﺮ داراي ‪ 4‬ﭘﻮرت ﺑﺮاي ارﺗﺒﺎط اﻳﻦ وﺳﺎﻳﻞ اﺳﺖ ﻛﻪ ﻫﺮ ﭘﻮرت ﻣﻴﺘﻮاﻧﺪ ﺑﻄﻮر دﻟﺨﻮاه ﭘﻴﻜﺮ ﺑﻨﺪي‬
‫ﺷﻮد‪ Master .‬ﻳﺎ ‪ Slave‬ﺑﻮدن ‪ ،‬اﻧﺘﺨﺎب ﻣﺪ ‪ ASCII‬ﻳﺎ ‪ ، RTU‬ﻧﺮخ ﺗﺒﺎدل دﻳﺘﺎ و اﻣﺜﺎل آن ﻗﺎﺑﻞ ﭘﻴﻜﺮﺑﻨﺪي اﺳﺖ‪.‬‬
‫‪55‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫در اﻳﻦ ﭘﻴﻜﺮ ﺑﻨﺪي ﻫﺮ ‪ Master‬ﻛﻪ ﺑﻪ ﭘﻮرت ﺳﺮﻳﺎل ‪ BM‬ﻣﺘﺼﻞ ﺷﺪه ﺑﺎﺷﺪ اﻣﻜﺎن دﺳﺘﺮﺳﻲ ﺑﻪ ﺳﺎﻳﺮ ‪ Master‬ﻳﺎ‬
‫‪ Slave‬ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﭘﻮرت ﻫﺎي ﺳﺮﻳﺎل دﻳﮕﺮ ﻣﺘﺼﻞ ﻫﺴﺘﻨﺪ را داراﺳﺖ‪ .‬ﺑﻌﻨﻮان ﻣﺜﺎل ﻫﺮ ﻛﺪام از ‪ Master‬ﻫﺎي‬
‫ﻣﺘﺼﻞ ﺑﻪ ﭘﻮرت ‪ 1‬ﻳﺎ ‪ 2‬وﺳﻴﻠﻪ ‪ BM‬در ﺷﻜﻞ ﻓﻮق ﻣﻴﺘﻮاﻧﺪ ﺑﻪ ﻣﻮارد زﻳﺮ دﺳﺘﺮﺳﻲ داﺷﺘﻪ ﺑﺎﺷﺪ‪:‬‬
‫ﺑﻪ ﻫﺮ ﻛﻨﺘﺮﻟﺮ روي ﻛﻞ ﺷﺒﻜﻪ ‪Modbus Plus‬‬ ‫‪‬‬

‫ﺑﻪ ﻫﺮ وﺳﻴﻠﻪ ‪ Slave‬ﻣﺘﺼﻞ ﺑﻪ ﺷﺒﻜﻪ ﻣﺎﻧﻨﺪ ﻫﺮ ﻛﺪام از ‪ Slave 247‬ﻣﺘﺼﻞ ﺷﺪه ﺑﻪ ﭘﻮرت ‪3‬‬ ‫‪‬‬

‫ﺑﻪ ﻛﻨﺘﺮﻟﺮ ‪ Slave‬ﻣﺘﺼﻞ ﺑﻪ ﭘﻮرت ‪4‬‬ ‫‪‬‬

‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ﻣﺸﺨﺺ اﺳﺖ ﻫﺮ دو ﺷﺒﻜﻪ ﻣﺘﺼﻞ ﺑﻪ ﭘﻮرت ﻫﺎي ‪ 1‬و ‪ 3‬ﻣﻴﺘﻮاﻧﻨﺪ داراي آدرس ‪ Node‬ﻫﺎي‬
‫ﻣﺸﺎﺑﻪ ﺑﺎﺷﺪ‪ .‬ﺑﻌﻠﺖ ﻧﻘﺶ ‪ Bridge‬اﻳﻦ آدرس ﻫﺎ ﻣﺠﺰا ﺗﻠﻘﻲ ﺷﺪه و ﻣﻲ ﺗﻮاﻧﻨﺪ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺑﻪ ﺗﺒﺎدل دﻳﺘﺎ ﺑﭙﺮدازﻧﺪ‪.‬‬

‫ﺗﻮﺟﻪ ‪ :‬ﻧﻜﺎﺗﻲ ﻣﺮﺗﺒﻂ ﺑﺎ ﻧﺼﺐ ‪ Modbus Plus‬در ﻓﺎﻳﻞ ‪ Modbus Plus Network‬ص ‪ 151‬ﺑﻪ ﺑﻌﺪ ﻫﺴﺖ‬

‫ﺧﻼﺻﻪ ﺗﻔﺎوﺗﻬﺎي ‪ Modbus‬و ‪ Modbus Plus‬در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ‪:‬‬


‫‪Modbus‬‬ ‫‪Modbus Plus‬‬
‫‪Modbus is a Master/Slave serial‬‬ ‫‪Modbus Plus is a token passing LAN‬‬
‫‪communications command language and‬‬ ‫‪containing Modbus messages as the data‬‬
‫‪protocol.‬‬ ‫‪portion of the Modbus Plus messages.‬‬
‫‪Modbus is an open standard.‬‬ ‫‪Modbus Plus is a proprietary protocol. It may‬‬
MODBUS ‫ﺷﺒﻜﻪ‬ 56

not be used without permission of Schneider


Automation.
The physical medium for Modbus is defined The physical medium for Modbus Plus is
as RS232 standard. However the protocol typically a twisted pair cable or optical fiber.
can be used in a variety of media, including
phone or leased lines, radio transmissions
and other networks.
Modbus is a point to point protocol. Modbus Plus is a networked protocol.
Modbus networks are Master/Slave networks. Modbus Plus networks are peer to peer
networks.

Type of Network
ASCII/RTU Device Bus
ModbusPlus Control Bus

Physical Media Shielded twisted pairs in one shielded cable

Network Topology Bus, tree, star with drops

Maximum Devices
ASCII/RTU One to one communications
ModbusPlus 32 (up to 64 with repeater)

Maximum Distance
ASCII/RTU 350m
ModbusPlus 1500m (6000m with repeaters)
(up to 3 repeaters may be used) (min. 1m between devices)

Communication Methods
ASCII/RTU Master-Slave Query-Response Cycle
(LRC error checking for ASCII)
(CRC error checking for RTU)
ModbusPlus Peer to Peer (Token passing logical ring)

Primary usage
ASCII/RTU Serial Communications for PLC,
Variable Speed Drives, Control Systems, etc.
ModbusPlus linking MODBUS and/or RS232/RS485
devices in a peer-to-peer network

Modbus TCP/IP 4-4


‫ اﺳﺖ ﻛﻪ در‬Modbus ‫ ﻫﻢ ﺧﻮاﻧﺪه ﻣﻲ ﺷﻮد ﻋﻀﻮ دﻳﮕﺮي از ﺧﺎﻧﻮاده‬Modbus TCP ‫ ﻛﻪ‬Modbus TCP/IP
‫ اﺳﺖ( اراﺋﻪ ﮔﺮدﻳﺪ و ﺟﺎﻳﮕﺎه‬Schneider Automation ‫ ) ﻛﻪ اﻣﺮوزه زﻳﺮ ﻣﺠﻤﻮﻋﻪ‬Modin ‫ ﺗﻮﺳﻂ‬1990 ‫ﺳﺎل‬
‫‪57‬‬ ‫ﺷﺒﻜﻪ ‪MODBUS‬‬

‫ﺧﻮد را در ﺳﻄﻮح ‪ Supervision‬و ‪ Control‬از ﻫﺮم اﺗﻮﻣﺎﺳﻴﻮن ﺑﺎز ﻛﺮد‪ PLC .‬ﻫﺎ و ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎ و ﺑﺮﺧﻲ وﺳﺎﻳﻞ‬
‫‪ I/O‬ﻧﻴﺰ ﺗﻮﺳﻂ اﻳﻦ ﺷﺒﻜﻪ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﻣﺮﺗﺒﻂ ﺷﺪﻧﺪ‪.‬‬

‫در ﻧﮕﺎه ﻛﻠﻲ ‪ Modbus TCP/IP‬ﻫﻤﺎن ﭘﺮوﺗﻜﻞ ‪ Modbus RTU‬ﻣﻴﺒﺎﺷﺪ ﻛﻪ ﺑﺎ اﻳﻨﺘﺮﻓﻴﺲ ‪ TCP/IP‬روي ﺷﺒﻜﻪ‬
‫‪ Ethernet‬ﻛﺎر ﻣﻴﻜﻨﺪ و در آن ‪ TCP‬ﺑﺮاي اﻃﻤﻴﻨﺎن از ارﺳﺎل درﺳﺖ دﻳﺘﺎ و ‪ IP‬ﺑﺮاي اﻃﻤﻴﻨﺎن از آدرس دﻫﻲ و‬
‫ﻣﺴﻴﺮ ﻳﺎﺑﻲ ﺻﺤﻴﺢ ﺑﻜﺎر ﻣﻴﺮود‪ .‬ﺗﻔﺴﻴﺮ دﻳﺘﺎ و ﺷﻨﺎﺳﺎﻳﻲ اﺻﻞ ﭘﻴﺎم وﻇﻴﻔﻪ ﭘﺮوﺗﻜﻞ ‪ Modbus‬اﺳﺖ ‪.‬در ﻋﻤﻞ‬
‫‪MBAP‬‬ ‫‪ Modbus TCP/IP‬ﻓﺮﻳﻢ اﺳﺘﺎﻧﺪارد ﭘﻴﺎم ‪ Modbus‬را ﺑﻪ ﻓﺮﻳﻢ اﺳﺘﺎﻧﺪارد ‪ TCP‬ﻛﻪ اﺻﻄﻼﺣﺎً ﺑﻪ آن ﻓﺮﻳﻢ‬
‫ﻣﺨﻔﻒ ‪ ModbBus Application Protocol‬ﻣﻴﮕﻮﻳﻨﺪ ﻣﻄﺎﺑﻖ ﺷﻜﻞ زﻳﺮ ﺗﺒﺪﻳﻞ ﻣﻴﻜﻨﺪ ‪:‬‬

‫ﺷﻜﻞ دﻗﻴﻘﺘﺮ در ﺻﻔﺤﻪ ﺑﻌﺪ آورده ﺷﺪه اﺳﺖ‪.‬‬


‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪58‬‬

‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻲ ﺷﻮد ﻓﻴﻠﺪﻫﺎي ‪ Address‬و ‪ Error Checking‬از ﻓﺮﻳﻢ ﭘﺎﻳﻪ ‪ Modbus‬ﺣﺬف ﺷﺪه و ﺑﻘﻴﻪ‬
‫ﻓﻴﻠﺪﻫﺎ ﻳﻌﻨﻲ ‪ Function Code‬و ‪ Data‬در ﻓﺮﻳﻢ ‪ TCP‬در ﻛﻨﺎر ﻓﻴﻠﺪ ﻫﺎي ﺟﺪﻳﺪي ﻗﺮار ﻣﻴﮕﻴﺮﻧﺪ‪ .‬ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ در‬
‫‪ MBAP‬وﺟﻮد دارﻧﺪ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫‪ : Transaction Identifier‬اﻳﻦ ﻓﻴﻠﺪ ﺑﺮاي ‪ Transaction Pairing‬ﺑﻜﺎر ﻣﻴﺮودﻳﻌﻨﻲ ارﺳﺎل ﭼﻨﺪ ﭘﻴﺎم روي ﻳﻚ‬
‫ارﺗﺒﺎط ‪ TCP‬ﺗﻮﺳﻂ ‪ Client‬ﺑﺪون اﻳﻨﻜﻪ ﻣﻨﺘﻈﺮ ﭘﺎﺳﺦ ﭘﻴﺎﻣﻬﺎي اوﻟﻴﻪ از ﻃﺮف ‪ Server‬ﺑﺎﺷﺪ‪ .‬در ‪ Modbus‬ﺳﺮﻳﺎل‬
‫‪Modbus‬‬ ‫‪ Client‬ﭘﺲ از ارﺳﺎل ﭘﻴﺎم ﺑﺎﻳﺪ ﻣﻨﺘﻈﺮ ﺗﺎﻳﻴﺪ ‪ Server‬ﻣﻴﻤﺎﻧﺪ ﺳﭙﺲ ﭘﻴﺎم ﺑﻌﺪي را ارﺳﺎل ﻣﻴﻜﺮد وﻟﻲ در‬
‫‪ TCP/IP‬ﭼﻨﺪﻳﻦ ﭘﻴﺎم ﻣﻴﺘﻮاﻧﺪ ﺗﻮﺳﻂ ‪ Client‬ﺷﻮد ﺑﺪون اﻳﻨﻜﻪ زﻣﺎﻧﻲ را ﺑﺮاي اﻧﺘﻈﺎر ﭘﺎﺳﺦ ﭘﻴﺎم ﻗﺒﻠﻲ ﺗﻠﻒ ﻛﻨﺪ‪.‬‬
‫ﺗﻌﺪاد اﻳﻨﮕﻮﻧﻪ ﭘﻴﺎم ﻫﺎ ﺑﺴﺘﮕﻲ ﺑﻪ ﻗﺎﺑﻠﻴﺖ و ﻇﺮﻓﻴﺖ ‪ Server‬دارد‪ .‬و ﻣﻴﺘﻮاﻧﺪ ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ 16‬ﺑﺎﺷﺪ‪.‬‬
‫‪ : Protocol Identifier‬اﻳﻦ ﻓﻴﻠﺪ ﺑﺮاي ‪ Modbus‬ﻣﻘﺪار ‪ 0‬را دارد ﺳﺎﻳﺮ ﻣﻘﺎدﻳﺮ ﺑﺮاي آﻳﻨﺪه رزرو ﺷﺪه اﻧﺪ‪.‬‬
‫‪Function Code‬‬ ‫‪: Length‬اﻳﻦ ﻓﻴﻠﺪ ﺗﻌﺪاد ﺑﺎﻳﺖ ﻫﺎي ﻣﻮﺟﻮد در ﻓﻴﻠﺪﻫﺎي ﺑﻌﺪ از ﺧﻮد ﻳﻌﻨﻲ ﺳﻪ ﻓﻴﻠﺪ ‪ Unit ID‬و‬
‫و ‪ Data‬را ﻧﺸﺎن ﻣﻲ دﻫﺪ‪.‬‬
‫‪ : Unit Identifier‬اﻳﻦ ﻓﻴﻠﺪﺑﺮاي ‪ Routing‬اﺳﺖ و وﻗﺘﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻛﻪ ﭘﻴﺎﻣﻲ از روي ‪ Modbus TCP‬ﻻزم‬
‫‪Modbus‬‬ ‫ﺑﺎﺷﺪ ﺑﻪ وﺳﻴﻠﻪ ﻛﻪ روي ‪ Modbus‬ﺳﺮﻳﺎل ﻳﺎ ‪ Modbus Plus‬ﻣﺘﺼﻞ و از ﻃﺮﻳﻖ ‪ Bridge‬ﻳﺎ ‪ Gateway‬ﺑﺎ‬
‫‪ TCP‬ارﺗﺒﺎط دارد ارﺳﺎل ﺷﻮد‪ .‬در اﻳﻨﺤﺎﻟﺖ آدرس ‪ IP‬ﻣﻮﺟﻮد در ﭘﻴﺎم ﻣﺮﺑﻮط ﺑﻪ ‪ Gateway‬ﻳﺎ ‪ Bridge‬اﺳﺖ ﻛﻪ‬
‫ﻛﺎر اﻧﺘﻘﺎل ﭘﻴﺎم ﺑﻪ ﺳﻤﺖ دﻳﮕﺮ را اﻧﺠﺎم ﻣﻴﺪﻫﻨﺪ‪.‬‬
‫در ﺣﺎﻟﺘﻲ ﻛﻪ وﺳﻴﻠﻪ ﻣﻘﺼﺪ روي ‪ TCP/IP‬ﻗﺮار دارد ﻣﻘﺪار اﻳﻦ ﻓﻴﻠﺪ ‪ FF‬ﻫﮕﺰ اﺳﺖ‪.‬‬
59 MODBUS ‫ﺷﺒﻜﻪ‬

‫ ﺑﻪ آﻧﻬﺎ اﺷﺎره ﺷﺪ ﺑﺎ‬Modbus RTU ‫ ﻗﺮار ﻣﻴﮕﻴﺮﻧﺪ ﻫﻤﺎن ﻣﻮاردي ﻫﺴﺘﻨﺪ ﻛﻪ در‬ADU ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪﻫﺎﻳﻲ ﻛﻪ در‬
‫ ﻓﺮض ﻛﻨﻴﺪ ﺗﻮﺳﻂ‬.‫ ﻧﻤﻮﻧﻪ اي ذﻛﺮ ﻣﻴﺸﻮد‬MBAP ‫اﻳﻦ وﺟﻮد ﺑﻤﻨﻈﻮر آﺷﻨﺎﻳﻲ ﺧﻮاﻧﻨﺪه ﻣﺤﺘﺮم ﺑﺎ ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪ ﻫﺎي‬
‫ ﺑﺨﻮاﻧﺪ در‬Server ‫ را از‬0-3 ‫ ﺑﺨﻮاﻫﺪ ﺧﺮوﺟﻲ ﻫﺎي‬Client ‫ ﻛﻪ ﺑﺮاي ﺧﻮاﻧﺪن ﺧﺮوﺟﻲ ﻫﺎﺳﺖ‬01 ‫ﻓﺎﻧﻜﺸﻦ ﻛﺪ‬
:‫ ﺑﺮاي درﺧﻮاﺳﺖ و ﻧﻴﺰ ﺑﺮاي ﭘﺎﺳﺦ در ﺟﺪاول زﻳﺮ اراﺋﻪ ﺷﺪه اﻧﺪ‬ADU ‫اﻳﻨﺤﺎﻟﺖ ﻣﻘﺎدﻳﺮ ﺑﺴﺘﻪ‬

Modbus Request ADU Example - Read Coil Status Query


Field Name Example Decimal (Hexadecimal)
Function Code 1 (01)
Starting Address High Order 0 (00)
Starting Address Low Order 0 (00)
Number Of Points High Order 0 (00)
Number Of Points Low Order 4 (04)

Modbus Response ADU Example Header


MBAP Header Fields Example Decimal (Hexadecimal)
Transaction ID High Order 0 (00) Echoed back, no change
Transaction ID Low Order 1 (01) Echoed back, no change
Protocol Identifier High Order 0 (00) Echoed back, no change
Protocol Identifier Low Order 0 (00) Echoed back, no change
Length High Order 0 (00) Server calculates
Length Low Order 4 (04) Server calculates.
Unit Identifier 255 (FF) or 0 (00) No change

Modbus Response ADU Example - Read Coil Status Response


Field Name Example Decimal (Hexadecimal)
Function Code 1 (01)
Byte Count 1 (01)
Data (Coils 3-0) 10 (0A)

TCP/IP ‫ ﺑﻮد اﻳﻦ ﭘﻴﺎم ﺑﺮاي ارﺳﺎل ﺑﻪ ﺑﺎﻻﺗﺮﻳﻦ ﻻﻳﻪ در ﻣﺪل‬ADU ‫آﻧﭽﻪ ﺗﺎﻛﻨﻮن ﮔﻔﺘﻪ ﺷﺪ ﻣﺮﺑﻮط ﺑﻪ ﻓﺮﻳﻢ ﭘﻴﺎم ﻳﻌﻨﻲ‬
‫ ﺷﻜﻞ ﺑﻌﺪ اﻳﻦ‬.‫ﺗﺤﻮﻳﻞ داده ﻣﻴﺸﻮد ﺳﭙﺲ ﻣﺮﺣﻠﻪ ﺑﻪ ﻣﺮﺣﻠﻪ از ﻻﻳﻪ ﻫﺎي ﭘﺎﻳﻴﻦ ﺗﺮ ﻣﻴﮕﺬرد ﺗﺎ ﺑﻪ ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ ﺑﺮﺳﺪ‬
:‫ﻣﻮﺿﻮع را ﺑﻬﺘﺮ ﻧﺸﺎن ﻣﻴﺪﻫﺪ‬
‫ﺷﺒﻜﻪ ‪MODBUS‬‬ ‫‪60‬‬

‫ﺑﺮﺧﻲ ﻧﻜﺎت ﻣﺮﺑﻮط ﺑﻪ ‪Modbus TCP/IP‬‬


‫ﺑﺪﻟﻴﻞ اﺳﺘﻔﺎده از اﺗﺮﻧﺖ در ﻻﻳﻪ ﻓﻴﺰﻳﻜﻲ داراي ﺳﺮﻋﺖ ﺑﺎﻻﺳﺖ‪.‬‬ ‫‪‬‬

‫ﺑﺪﻟﻴﻞ ﻛﺎرﺑﺮد ﻓﺮاوان ‪ TCP/IP‬زﻳﺎد اﺳﺖ ‪.‬‬ ‫ﺗﻄﺎﺑﻖ و ﺳﺎزﮔﺎري آن ﺑﺎ وﺳﺎﻳﻞ و ﺳﺨﺖ اﻓﺰار ﻫﺎ‬ ‫‪‬‬

‫ﺗﻌﺪاد وﺳﺎﻳﻞ ﻣﺘﺼﻞ ﺑﻪ ﺷﺒﻜﻪ ﺑﺴﻴﺎر زﻳﺎد اﺳﺖ و ﻣﻴﺘﻮاﻧﺪ ﺗﺎ ﺣﺪود ‪ 10,000‬وﺳﻴﻠﻪ را ﭘﻮﺷﺶ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﻴﻜﺮ ﺑﻨﺪي آن ﺳﺎده اﺳﺖ اﺿﺎﻓﻪ ﻛﺮدن وﺳﻴﻠﻪ ﺟﺪﻳﺪ ﺑﻪ اﻳﻦ ﺷﺒﻜﻪ ﭘﻴﭽﻴﺪﮔﻲ ﺧﺎﺻﻲ ﻧﺪارد‪.‬‬ ‫‪‬‬

You might also like