៦.៣. ស៊េរី MODBUS
បណ្តាញ MODBUS ដំបូងគឺផ្អែកលើខ្សែទំនាក់ទំនងសៀរៀលអសមកាល ហើយត្រូវបានគេហៅថា MODBUS RTU និង MODBUS ASCII . បើក កម្រិតរាងកាយពួកគេប្រើចំណុចប្រទាក់សៀរៀលស្តង់ដារជាមួយនឹងរបៀបបញ្ជូនតួអក្សរ (សូមមើលរូប 6.1)។
បច្ចុប្បន្ននេះនៅក្នុង MODBUS-IDA បណ្តាញទាំងនេះត្រូវបានគេហៅថា MODBUS លើបន្ទាត់សៀរៀល និងត្រូវបានពិពណ៌នានៅក្នុងស្តង់ដារពាក់ព័ន្ធ។ វាបញ្ជាក់អំពីច្បាប់ និងការណែនាំសម្រាប់ការប្រើប្រាស់នៅកម្រិតតំណ និងរូបវន្ត។
ដោយសារបណ្តាញ MODBUS RTU/ASCII អាចមាន topology ឡានក្រុង វិធីសាស្ត្រចូលប្រើឡានក្រុងត្រូវបានកំណត់ជាគំរូ Master/Slave។ នៅក្នុងបណ្តាញ MODBUS RTU និង MODBUS ASCII ដំណើរការ Master តែងតែជា Client ហើយ Slave Processes គឺជា Servers ។ នេះមានន័យថាចៅហ្វាយផ្ញើសំណើ ហើយទាសករក៏ចាត់ការទាំងនោះ។ សំណើនេះអាចត្រូវបានដោះស្រាយទៅកាន់ថ្នាំងបុគ្គល ឬទាសករទាំងអស់នៅលើឡានក្រុង (ចាក់ផ្សាយ)។
បើក កម្រិតតំណ MODBUS RTU/ASCII ប្រើអាសយដ្ឋានតម្រង់ទិសលេខសម្គាល់ថ្នាំង។Slave នីមួយៗត្រូវតែមានអាសយដ្ឋានផ្ទាល់ខ្លួន (1-247) ចៅហ្វាយមិនអាចដោះស្រាយបានទេ។ សម្រាប់សំណើបុគ្គល អ្នកដឹកនាំ (ជាមួយដំណើរការអតិថិជន) បង្កើតស៊ុមមួយជាមួយនឹងសារសំណើ ហើយផ្ញើវាតាមរយៈ អាសយដ្ឋានដែលបានបញ្ជាក់. ទាសករ (ជាមួយដំណើរការម៉ាស៊ីនមេ) ទទួលស៊ុមនេះហើយដំណើរការសារ។ បន្ទាប់ពីដំណើរការវា Slave បង្កើតស៊ុមជាមួយនឹងសារឆ្លើយតប ហើយផ្ញើវាត្រឡប់ទៅអ្នកដឹកនាំវិញ។ ស៊ុមដែលមានសារឆ្លើយតបក៏មានមុខងារជាស៊ុមបញ្ជាក់ផងដែរ ដែល Master នឹងរង់ចាំពី Slave សម្រាប់ពេលវេលាដែលកំណត់ដោយអស់ពេល។
សម្រាប់សំណើផ្សាយ អាសយដ្ឋាន 0 ត្រូវបានប្រើ។ សំណើផ្សាយមិនតម្រូវឱ្យមានការទទួលស្គាល់ទេដូច្នេះបន្ទាប់ពីបានផ្ញើស៊ុមការផ្សាយមួយ, អនុបណ្ឌិតមិនរង់ចាំសម្រាប់ស៊ុមការឆ្លើយតប។
6.3.1. ស្រទាប់តំណទិន្នន័យ
រូបភាព 6.11 បង្ហាញ ទម្រង់ទូទៅស៊ុម MODBUS ស៊េរី។ សូមចំណាំថាភាពខុសគ្នារវាងស៊ុមនិងប្រភេទ ឆេកសាំមិនត្រូវបានរាយនៅទីនេះទេព្រោះវាអាស្រ័យលើរបៀបបញ្ជូន ASCII ឬ RTU ។ នៅក្នុងវាលអាសយដ្ឋានឧបករណ៍ មេ (នៅពេលស្នើសុំ) បង្ហាញអាសយដ្ឋានរបស់អ្នកទទួល ហើយ Slave (នៅពេលឆ្លើយតប) - អាសយដ្ឋានរបស់វា។ វាល MODBUS PDU ត្រូវបានពិពណ៌នាខាងលើ។
ដ្យាក្រាមពេលវេលានៅក្នុងរូបភាព 6.12 បង្ហាញបី ស្ថានភាពធម្មតា។ប្រតិបត្តិការនៃគំរូ Master-Slave នៅលើ MODBUS Serial ។ ស្ថានភាពទីមួយគឺជាការផ្លាស់ប្តូរធម្មតានៅក្នុងរបៀប unicast ទីពីរគឺនៅក្នុងរបៀបផ្សាយ ទីបីគឺជាប្រតិកម្មរបស់ Slave ចំពោះកំហុសក្នុងការទំនាក់ទំនង។
6.3.2.
MODBUS RTUរបៀបនេះប្រើទិន្នន័យ 8 ប៊ីតក្នុងនិមិត្តសញ្ញា 11 ប៊ីត ដែលអនុញ្ញាតឱ្យអ្នកផ្ទេរមួយបៃក្នុងមួយនិមិត្តសញ្ញា។ ទ្រង់ទ្រាយតួអក្សរនៅក្នុងរបៀប RTU៖ ប៊ីតចាប់ផ្តើម 1 ប៊ីតទិន្នន័យ 8 ប៊ីត (ប៊ីតទាបបញ្ជូនមុន) ប៊ីត 1 ប៉ារីធី + ប៊ីតឈប់ 1 ប៊ីត ឬគ្មានភាពស្មើគ្នា + ប៊ីតឈប់ 2 ។
ទម្រង់ស៊ុម MODBUS RTU ត្រូវបានបង្ហាញក្នុងរូបភាព 6.13 ។ ភាពខុសគ្នារវាងស៊ុមត្រូវបានធ្វើឡើងដោយប្រើការផ្អាករវាងតួអក្សរ។ ស៊ុមថ្មីមួយមិនគួរលេចឡើងនៅលើឡានក្រុងលឿនជាង 3.5 * Тс ពីលេខមុនដែល Тс គឺជាពេលវេលាបញ្ជូននៃតួអក្សរមួយ។ ប្រសិនបើអវត្ដមាននៃសញ្ញានៅលើបន្ទាត់ (ចន្លោះពេលស្ងាត់) ធំជាង 1.5 * Tc អ្នកទទួលកំណត់ចុងបញ្ចប់នៃស៊ុម។ ម្យ៉ាងវិញទៀតការលេចឡើងនៃស៊ុមថ្មីមុនជាង 3.5 * Tc ក៏នឹងនាំឱ្យមានកំហុសផងដែរ។
វាលកូដអាសយដ្ឋាន និងមុខងារនៅក្នុងរបៀប RTU កាន់កាប់មួយបៃនីមួយៗ ដោយសារបៃនីមួយៗត្រូវបានបញ្ជូនជាតួអក្សរមួយ។ ពីរបៃដែលបានគណនាដោយប្រើក្បួនដោះស្រាយ CRC16 ត្រូវបានប្រើជាមូលប្បទានប័ត្រ។
6.3.3. MODBUS ASCII
IN របៀបនេះ។បៃនីមួយៗនៃសារត្រូវបានបញ្ជូនជាតួអក្សរ ASCII ពីរនៃតំណាងគោលដប់ប្រាំមួយ ពោលគឺឧ។ តម្លៃនៃបៃ 03 16 នឹងត្រូវបានបញ្ជូនជាកូដ ASCII នៃតួអក្សរ "0" និង "3" (0110000 0110011) ដូច្នេះ បៃទិន្នន័យ កូដមុខងារ និងបៃប្រអប់ពិនិត្យនឹងត្រូវបានបញ្ជូនជាកូដ។
តួអក្សរ 0-9, A-F ។ ទ្រង់ទ្រាយតួអក្សរនៅក្នុងរបៀប ASCII៖ ប៊ីតចាប់ផ្តើម 1 ប៊ីតទិន្នន័យ 7 (ប៊ីតដែលសំខាន់តិចបំផុតត្រូវបានបញ្ជូនជាមុន); 1 parity bit + 1 stop bit ឬ no parity + 2 stop bits ។ទម្រង់ស៊ុមត្រូវបានបង្ហាញក្នុងរូបភាព 6.14 ។ ដូចដែលអ្នកអាចឃើញតួអក្សរចាប់ផ្តើម ":" និងលំដាប់បញ្ឈប់ "CR LF" ត្រូវបានប្រើដើម្បីបែងចែករវាងស៊ុម។ អ្នកទទួលនៅលើឡានក្រុងបន្តត្រួតពិនិត្យតួអក្សរ ":" ដែលបង្ហាញដោយឡែកពីការចាប់ផ្តើមនៃស៊ុម។ នៅពេលទទួល អ្នកទទួលចាប់វាលអាសយដ្ឋាន។ល។ នេះគឺជាវិធីសាស្រ្តធ្វើសមកាលកម្មដ៏សាមញ្ញបំផុតដែលអនុញ្ញាតឱ្យអ្នកមិនសំខាន់ចំពោះការផ្អាករវាងតួអក្សរ (រហូតដល់ 1 វិនាទី)។ អាសយដ្ឋាន Slave និងកូដមុខងារនីមួយៗមានតួអក្សរពីរ យោងទៅតាមតម្លៃនៃមួយបៃ។បន្ទាប់មក n * 2 តួអក្សរទិន្នន័យ ដែល n ជាចំនួនបៃនៃទិន្នន័យ។ នៅក្នុងរបៀប ASCII ក្បួនដោះស្រាយ LRC ត្រូវបានប្រើដើម្បីគណនា checksum ។ ជាងនេះទៅទៀត checksum ត្រូវបានអនុវត្តលើបៃទាំងអស់នៃស៊ុម លើកលែងតែសម្រាប់ការចាប់ផ្តើម និងបញ្ឈប់លំដាប់តួអក្សរ។
របៀប ASCII កំណត់តម្រូវការតិចជាងមុនលើផ្នែករឹង ដោយប្រើការចាប់ផ្តើម និងប្រកាសលំដាប់លំដោយដើម្បីកំណត់ស៊ុម ហើយមិនមានប្រតិកម្មចំពោះការផ្អាកសំខាន់ៗរវាងតួអក្សរ។ ប៉ុន្តែគុណសម្បត្តិទាំងនេះត្រូវបានឆ្លុះបញ្ចាំងនៅក្នុងគុណវិបត្តិរបស់វា។ របៀប RTU មានតម្រូវការកាន់តែច្រើននៅលើចន្លោះពេលរវាងស៊ុម ប៉ុន្តែមានផលិតភាពច្រើនជាង
ASCII.ឧទាហរណ៍ 6.4 ។ MODBUS ។ ការគណនាពេលវេលាបោះឆ្នោតទាសករនៅលើ MODBUS-RTU ។
កិច្ចការ . បង្កើតទម្រង់បែបបទនៃសំណើ និងការឆ្លើយតបសម្រាប់ MODBUS RTU ហើយគណនាពេលវេលាបោះឆ្នោតសរុបសម្រាប់អថេរ 16 ប៊ីតអាណាឡូកចំនួន 10 សម្រាប់ 4 slaves (រូបភាព 6.15)។ អត្រាផ្ទេរទិន្នន័យប៊ីត - 19200 bps ។ ដំណើរការម៉ាស៊ីនភ្ញៀវ Master (TSX Premium) និង Slave Server Processes (TSX Micro PLC) ទទួលសារនៅដើមវដ្ត ហើយផ្ញើសារនៅចុងបញ្ចប់នៃវដ្ត។ ពេលវេលាវដ្តមេ = 10 ms, Slave - 5s.
បំពេញកិច្ចការ។
អថេរអាណាឡូកខាងក្នុងរបស់ TSX Micro ត្រូវបានចូលប្រើតាមរយៈមុខងារ 03 ឬ 04 ដូច្នេះទម្រង់ស៊ុមនឹងមើលទៅដូចរូបភាព 6.16។ដោយពិចារណាថារចនាសម្ព័ន្ធនៃស៊ុមផ្សេងទៀតគឺស្រដៀងគ្នា វាគ្មានចំណុចណាក្នុងការបង្ហាញទម្រង់របស់ពួកគេទេ។
ស្រដៀងគ្នាទៅនឹងរូបភាព 6.12 យើងនឹងសាងសង់ដ្យាក្រាមពេលវេលានៃការផ្លាស់ប្តូរ (រូបភាព 6.17) ។
ពីផ្នែកកម្មវិធីអតិថិជន សារសំណើត្រូវបានបង្កើតដោយប្រើមុខងារទំនាក់ទំនង ទិន្នន័យដែលត្រូវបានផ្ញើតាមរយៈច្រកទំនាក់ទំនងនៅចុងបញ្ចប់នៃវដ្តភារកិច្ច និងទទួលបានពីច្រកនៅដើមវដ្ត។ ឥរិយាបទខាងអតិថិជននេះគឺស្របទៅនឹងការអនុវត្តជាច្រើនសម្រាប់ PLCs ផ្សេងៗ។
នៅក្នុងម៉ាស៊ីនមេ TSX Micro MODBUS ត្រូវបានអនុវត្តនៅកម្រិតប្រព័ន្ធប្រតិបត្តិការ។ ភាពជាក់លាក់នៃការអនុវត្តគឺថាប្រព័ន្ធទទួលបានសំណើ MODBUS ពីច្រកទំនាក់ទំនងនៅដើមវដ្ត ហើយផ្ញើសារឆ្លើយតបនៅចុងបញ្ចប់។
វាគួរតែត្រូវបានកត់សម្គាល់ថាការអនុវត្តម៉ាស៊ីនមេ MODBUS អាចត្រូវបានគាំទ្រនៅកម្រិតនៃម៉ូឌុលទំនាក់ទំនងហើយការផ្លាស់ប្តូរទិន្នន័យជាមួយនឹងអង្គចងចាំរបស់ឧបករណ៍ខ្លួនវាត្រូវបានអនុវត្តតាមរយៈសតិបណ្ដោះអាសន្នទំនាក់ទំនង។ ក្នុងករណីនេះ ការឆ្លើយតបរបស់ម៉ាស៊ីនមេ MODBUS នឹងលឿនជាងមុន ហើយនឹងមិនអាស្រ័យលើវដ្តកម្មវិធីនោះទេ។ ដើម្បីគណនាពេលវេលាប្រតិបត្តិការសម្រាប់ប្រភេទប្រព័ន្ធផ្សេងទៀត អ្នកត្រូវស្គាល់ខ្លួនអ្នកជាមួយនឹងព័ត៌មានលម្អិតនៃការអនុវត្តរបស់ពួកគេ។
រូបភាព 6.17 បង្ហាញថាការមកដល់នៃស៊ុមមួយមកដល់កន្លែងណាមួយនៅក្នុងរង្វិលជុំ។ នេះមានន័យថាដំណើរការ និងការបង្កើតការឆ្លើយតបរបស់ពួកគេនឹងចំណាយពេលប្រហែល 1.5 វដ្ត។ វាគួរតែត្រូវបានយល់ថានេះគឺជាតម្លៃមធ្យមសម្រាប់ ការប៉ាន់ស្មានអាក្រក់បំផុត។វាជាការប្រសើរក្នុងការកក់ទុក 2 ដង (ឧ. នៅពេលដែលស៊ុមមកដល់ភ្លាមៗបន្ទាប់ពីបោះឆ្នោតច្រកទំនាក់ទំនង) ។ ដូច្នេះ ពេលវេលាប្រតិបត្តិការសម្រាប់ PLC មួយ ឧទាហរណ៍ PLC1 (TT1) នឹងស្មើនឹង៖
TT1=C5+T1.req+2*C1+T1.res+C5*2 (6.1)
TT1 ត្រូវបានគណនាដោយគិតបញ្ចូលទៅក្នុងគណនី 2 វដ្តចំណាយដោយ Slave ដើម្បីបង្កើតការឆ្លើយតបទៅនឹងសារសំណើ។ ប្រសិនបើប្រតិបត្តិការមិនត្រូវបានអនុវត្តតាមកាលកំណត់ ដូចទៅនឹងលក្ខខណ្ឌនៃកិច្ចការ ប៉ុន្តែនៅពេលកើតឡើងនៃព្រឹត្តិការណ៍ នោះក្នុងអំឡុងពេលប្រតិបត្តិការ វាក៏ចាំបាច់ផងដែរក្នុងការរួមបញ្ចូលវដ្ត Master មួយផ្សេងទៀត។ វាងាយស្រួលក្នុងការបង្ហាញម៉ោងបោះឆ្នោតសម្រាប់ទាសករទាំងអស់៖
ТТall=C5*9+C1*2+C2*2+C3*2+C4*2+T1.req+T1.res+ T2.req+T2.res+ T3.req+T3.res+ T4.req+T4.res (6.2)
ដោយសារវដ្តនៃទាសករគឺដូចគ្នា ហើយស៊ុមសំណើ និងស៊ុមឆ្លើយតបសម្រាប់ទាសករទាំងអស់មានរចនាសម្ព័ន្ធដូចគ្នា រូបមន្តទូទៅនឹងមើលទៅដូចនេះ៖
TTall=C5*9 + C1*8 + (T1.req+T2.req)*4(6.3)
ចូរយើងគណនាពេលវេលា T1.req និង T2.req ។
ពេលវេលាបញ្ជូនស៊ុម (Tframe) អាចត្រូវបានគណនាដោយចំនួននិមិត្តសញ្ញា (Nsymb) នៅក្នុងស៊ុម និងពេលវេលាបញ្ជូននៃនិមិត្តសញ្ញាមួយ (Tsymb)៖Tframe=Nsymb*Tsymb (6.4)
ពេលវេលាបញ្ជូននៃតួអក្សរមួយត្រូវបានគណនា៖
ពេលវេលាបញ្ជូនក្នុងមួយនិមិត្តសញ្ញា = ចំនួនប៊ីតក្នុងមួយនិមិត្តសញ្ញា/អត្រាប៊ីត;
ពេលវេលាបញ្ជូនស៊ុមនឹងស្មើនឹង (div. រូបភាព 6.16 និងរូបភាព 6.17):
T1.req=8*(11/19200)=4.58 ms
T1.res=25*(11/19200)=14.33 ms
TTall=90+40+ (4.58+14.33)*4= 206 ms ។
ដូច្នេះដើម្បីស្ទង់មតិអថេរ 10 ពី 4 Slaves ក្នុងល្បឿន 19200 bps វាត្រូវចំណាយពេលប្រហែល 206 ms ។ ប្រសិនបើត្រូវការការបោះឆ្នោតតាមកាលកំណត់ គួរតែកក់ទុក ពេលវេលាជាក់លាក់ឧទាហរណ៍ 100 ms ផ្សេងទៀត។
ក្នុងករណីខ្លះការអនុវត្តមុខងារម៉ាស៊ីនភ្ញៀវ MODBUS ធ្លាក់លើប្រព័ន្ធប្រតិបត្តិការ ហើយការចូលប្រើពួកវានៅក្នុងកម្មវិធី PLC កើតឡើងតាមរយៈមុខងារទំនាក់ទំនងចំណុចប្រទាក់។ ជាពិសេស នេះគឺជាតួយ៉ាងសម្រាប់ PLC ភាគច្រើនពី Scneider Electric (Momentum, Quantum, TSX Micro, TSX Premium, M340)។ នៅក្នុងប្រព័ន្ធមួយចំនួនផ្សេងទៀត - ផ្នែកអតិថិជននៅលើ កម្រិតកម្មវិធីត្រូវតែបញ្ជាក់យ៉ាងពេញលេញនៅក្នុងកម្មវិធី PLC ហើយចំណុចប្រទាក់ត្រូវបានផ្តល់ជូនសម្រាប់តែការផ្លាស់ប្តូរជាមួយច្រកទំនាក់ទំនងប៉ុណ្ណោះ។ ក្នុងករណីនេះ ប្រព័ន្ធផ្តល់សេវាកម្មសម្រាប់ការផ្ញើ និងទទួលសារ (ដែលត្រូវបានបង្កើត និងវិភាគដោយកម្មវិធីអ្នកប្រើប្រាស់ខ្លួនឯង) និងបង្កើត និងផ្ទៀងផ្ទាត់ checksum។
សូមក្រឡេកមើលឧទាហរណ៍មួយ។.ឧទាហរណ៍ 6.5 ។
MODBUS ។ ការអនុវត្តអតិថិជន MODBUS នៅលើ TSX Twido ។កិច្ចការ
. សរសេរបំណែកកម្មវិធីទៅ Twido PLC ដើម្បីអានការចុះឈ្មោះចំនួន 3 ពី Slave ដែលមានអាសយដ្ឋាន 1 (រូបភាព 6.18) ។ដំណោះស្រាយ . នៅក្នុង Twido ភាគីអតិថិជន MODBUS ចាំបាច់ត្រូវអនុវត្តតាមរយៈ មុខងារសកល EXCHx ដែលផ្ញើ និង/ឬទទួលទិន្នន័យតាមរយៈច្រកទំនាក់ទំនង x ។ ប៉ារ៉ាម៉ែត្រមុខងារគឺជាតារាងពាក្យ (%MW) ដែលមានទិន្នន័យត្រួតពិនិត្យមុខងារ ទិន្នន័យដែលត្រូវផ្ញើ និងសតិបណ្ដោះអាសន្នដែលត្រូវទទួល។ ប្រសិនបើការផ្លាស់ប្តូរកើតឡើងតាមរយៈច្រកទំនាក់ទំនង 2 នោះការហៅមុខងារនឹងមានទម្រង់ដូចខាងក្រោម:
EXCH2 %MWy:n,
ដែល y ជាចំនួននៃអថេរទីមួយនៃតារាងដែលបានជ្រើសរើស n គឺជាចំនួនពាក្យក្នុងតារាង។
ទម្រង់នៃតារាង ពោលគឺទិន្នន័យដែលត្រូវបំពេញ និងតំបន់ទិន្នន័យដែលត្រូវទទួលគឺដូចគ្នាសម្រាប់គ្រប់ប្រភេទនៃការទំនាក់ទំនង។ សម្រាប់មុខងារ 03/04 (អានពាក្យ N) តាមរយៈ MODBUS-RTU តារាងនេះនឹងមានទម្រង់បង្ហាញក្នុងតារាង 6.2)។
តារាងប៉ារ៉ាម៉ែត្រមាន 3 ផ្នែក - តារាងរង។ តារាងត្រួតពិនិត្យមុខងារបញ្ជាក់ប៉ារ៉ាម៉ែត្រនៃមុខងារខ្លួនឯង។ ដូច្នេះនៅក្នុងបៃខ្ពស់នៃពាក្យទី 0 វាត្រូវបានបង្ហាញថាមុខងារនេះដំណើរការក្នុងទិសដៅទាំងពីរពោលគឺឧ។ បន្ទាប់ពីផ្ញើទិន្នន័យ អ្នកត្រូវរង់ចាំការឆ្លើយតប។ បៃទាបនៃពាក្យដូចគ្នាបង្ហាញពីប្រវែងនៃតារាងបញ្ជូន (ក្នុងករណីនេះ 6 បៃ) ដូច្នេះប្រព័ន្ធដឹងអំពីបៃដែលត្រូវបញ្ជូន (ពីពាក្យទី 2 ដល់ទី 4) និងកន្លែងដែលសតិបណ្ដោះអាសន្នទទួលចាប់ផ្តើម (ពីពាក្យទី ៥)
. អុហ្វសិតក្នុងការបញ្ជូន និងទទួលគឺចាំបាច់ដើម្បីតម្រឹមទិន្នន័យនៅក្នុងសតិបណ្ដោះអាសន្នទៅជាពាក្យ។តារាងផ្ទេរមានសំណើដោយខ្លួនវា, i.e. ស៊ុមដោយគ្មានលេខកូដ CRC ។ តារាងទទួលគឺជាបណ្តុំដែលប្រព័ន្ធនឹងបំពេញដោយស៊ុមឆ្លើយតប ប្រសិនបើលទ្ធផលគឺវិជ្ជមាន។ ដូច្នេះ មុននឹងប្រើមុខងារនេះ ចាំបាច់ត្រូវបង្កើតស៊ុមសំណើរ និងការឆ្លើយតប ដោយមិនរាប់បញ្ចូលវាល CRC (រូបភាព 6.19)។
តារាង 6.2
តារាងប៉ារ៉ាម៉ែត្រ
សន្ទស្សន៍ក្នុងតារាង |
បៃខ្ពស់។ |
បៃទាប |
|
តារាងត្រួតពិនិត្យ Comm មុខងារ |
01 (ប្រភេទមុខងារផ្ញើ + ទទួល) |
06 (ប្រវែងតារាងផ្ទេរ) |
|
03 (ភាពលំអៀងក្នុងការទទួលភ្ញៀវ) |
00 (ភាពលំអៀងក្នុងការបញ្ជូន) |
||
តារាងផ្ទេរ |
អាសយដ្ឋានរបស់ទាសករ |
03 (លេខមុខងារ) |
|
អាសយដ្ឋានចុះឈ្មោះចាប់ផ្តើម |
|||
ចំនួននៃការចុះឈ្មោះ |
|||
តារាងទទួលភ្ញៀវ (សារ-ការឆ្លើយតប) |
អាសយដ្ឋានរបស់ទាសករ |
03 (លេខមុខងារ) |
|
00 (បៃសម្រាប់អុហ្វសិត) |
រាប់បៃ |
||
ចុះឈ្មោះដំបូង |
|||
ការចុះឈ្មោះទីពីរ |
|||
… |
... |
||
N+6 |
ការចុះឈ្មោះ Nth |
ដូចដែលអ្នកអាចឃើញសំណើមាន 6 បៃ។ បរិមាណនេះត្រូវតែបញ្ចូលទៅក្នុងបៃទាបនៃពាក្យទី 0 នៃតារាង។ ការឆ្លើយតបត្រូវបានគេរំពឹងថានឹងមាន 9 បៃ។ ប្រសិនបើបៃនៃស៊ុមឆ្លើយតបត្រូវបានដាក់ក្នុងលំដាប់នៃពាក្យ (នៅក្នុង Schneider Electric PLC អង្គចងចាំត្រូវបានដោះស្រាយជាពាក្យ) បន្ទាប់មកបៃខ្ពស់នៃការចុះឈ្មោះដែលទទួលបានដំបូង (យោងទៅតាមលក្ខខណ្ឌនេះគឺជា% MW100) នឹងត្រូវបាន ដែលមានទីតាំងនៅលើបៃទាបនៃពាក្យទី 2 នៃសតិបណ្ដោះអាសន្ន ហើយបៃទាបនៃការចុះឈ្មោះដែលបានទទួលនឹងស្ថិតនៅលើ
បៃខ្ពស់នៃពាក្យទី 3 នៅក្នុងសតិបណ្ដោះអាសន្ន។ ដូច្នេះ ពាក្យដែលទទួលយកទាំងអស់នឹងត្រូវបានផ្លាស់ប្តូរ ហើយនឹងពិបាកអាន។ ដើម្បីដោះស្រាយបញ្ហានេះ តារាងប៉ារ៉ាម៉ែត្រនៃអនុគមន៍មានវាលទទួលអុហ្វសិតដែលបញ្ជាក់លេខបៃក្នុងសតិបណ្ដោះអាសន្នទទួលដែលនឹងផ្លាស់ប្តូរលំដាប់ទាំងមូល។បំណែកកម្មវិធីនឹងមើលទៅដូចក្នុងរូប ៦.២០។
ខ្សែសង្វាក់ LD ខាងលើគឺសម្រាប់បំពេញតារាងត្រួតពិនិត្យមុខងារ និងបំពេញតារាងបញ្ជូន។
នៅក្នុងខ្សែសង្វាក់ទីពីរមុខងារត្រូវបានគេហៅថាដោយផ្ទាល់។ អថេរ %MSG2.D ត្រឡប់ប៊ូលីន "1" នៅពេលដែលអនុគមន៍ EXCH2 ត្រូវបានដំណើរការ ហើយលទ្ធផលត្រូវបានទទួល។ ការប្រើប្រាស់របស់វារារាំងបណ្តាញមិនឱ្យ "ជន់លិច" ជាមួយនឹងចំនួនស៊ុមច្រើនហួសហេតុ ពីព្រោះមិនមានការឆ្លើយតបទៅនឹងសំណើពីមុន ឬអស់ពេលមិនទាន់បានកន្លងផុតទៅ។ សំណើថ្មី។មិនអាចត្រូវបានផ្ញើ។
ខ្សែសង្វាក់ចុងក្រោយត្រូវបានបម្រុងទុកសម្រាប់ការសរសេរលទ្ធផលអានទៅកាន់អថេរ %MW0:3 (តារាងដែលមាន 3 ពាក្យចាប់ផ្តើមពី %MW0)។ អថេរ %MSG2.E នឹងស្មើនឹង 1 នៅពេលមានកំហុសក្នុងការហៅមុខងារ។
6.3.4.
ការអនុវត្តស្រទាប់រូបវន្តសម្រាប់ MODBUS សៀរៀលមិនដូចការបញ្ជាក់ដើមដែលត្រូវបានកំណត់ចំពោះការពិពណ៌នានៃស៊ុមនោះ ស្តង់ដារ MODBUS-IDA ក៏ពណ៌នាអំពីច្បាប់សម្រាប់ការអនុវត្តបណ្តាញនៅស្រទាប់រូបវន្តផងដែរ។ MODBUS លើ Serial Line គឺផ្អែកលើការប្រើប្រាស់ ចំណុចប្រទាក់សៀរៀល RS-485, RS-422 និង RS-232 ។
topology ត្រូវបានកំណត់សម្រាប់ RS-485 - នេះគឺជាឡានក្រុងដែលផ្តល់នូវវិធីបីយ៉ាងក្នុងការភ្ជាប់ឧបករណ៍ (រូបភាព 6.21)៖
-
ដោយផ្ទាល់ទៅខ្សែ trunk, គ្មានសាខា;-
តាមរយៈប្រអប់ភ្ជាប់អកម្មនិងខ្សែសាខា (ដេរីវេ);-
តាមរយៈប្រអប់សកម្មនិងខ្សែសាខាជាក់លាក់។
ចំណុចប្រទាក់រវាងខ្សែនិងធាតុបណ្តាញមានការរចនាដូចខាងក្រោម (សូមមើលរូប 6.21): ITr - ចំណុចប្រទាក់ទៅខ្សែឆ្អឹងខ្នង; IDv - ចំណុចប្រទាក់រវាងឧបករណ៍និងប្រអប់អកម្ម; AUI - ចំណុចប្រទាក់រវាងឧបករណ៍និងប្រអប់សកម្ម; LT - បន្ទាត់បញ្ចប់។
អត្រាប៊ីតត្រូវបានកំណត់ជា 9600 bps និង 19200 bps (លំនាំដើម) ។ ល្បឿនផ្សេងទៀតគឺស្រេចចិត្ត។វិធីសាស្ត្រអ៊ិនកូដ NRZ ត្រូវបានប្រើ។
នៅពេលប្រើ RS-485 ស្តង់ដារកំណត់ច្បាប់សម្រាប់ភ្ជាប់ឧបករណ៍ដោយប្រើគ្រោងការណ៍ 2-wire និង 4-wire ក៏ដូចជាច្បាប់សម្រាប់ភាពឆបគ្នានៃចំណុចប្រទាក់ 2-wire និង 4-wire នៅលើបន្ទាត់តែមួយ។ ខាងក្រោមនេះយើងពិចារណាតែការតភ្ជាប់ 2 ខ្សែប៉ុណ្ណោះ ការគាំទ្រដែលចាំបាច់។
ជាការសំខាន់ ការតភ្ជាប់ 2-wire គឺពិតជាការតភ្ជាប់ 3-wire ចាប់តាំងពីបន្ថែមលើបន្ទាត់ A-( ឃ0 ) និង B+( ឃ១ ) ក៏ត្រូវបានប្រើប្រាស់ផងដែរ។ បន្ទាត់ធម្មតា។គ( ទូទៅ ), ដែលជាកាតព្វកិច្ច (រូបភាព 6.22) ។ចំនួនឧបករណ៍សរុបត្រូវបានកំណត់៖ ឧបករណ៍ចំនួន 32 នៅលើផ្នែក RS-485 មួយដោយគ្មានឧបករណ៍ធ្វើម្តងទៀត (ការប្រើប្រាស់ឧបករណ៍និយាយឡើងវិញត្រូវបានអនុញ្ញាត) ។ ប្រវែងខ្សែអតិបរមាអាស្រ័យលើល្បឿន ប្រភេទខ្សែ ចំនួននៃការផ្ទុក និងការកំណត់បណ្តាញ (ខ្សែ 2 ឬ 4 ខ្សែ)។ សម្រាប់អត្រាប៊ីត 9600 និងខ្សែ AWG26 ប្រវែងអតិបរមាកំណត់ត្រឹម 1000 ម។ ខ្សែទម្លាក់ត្រូវតែខ្លីជាង 20 m ប្រសិនបើប្រអប់ multiport ដែលមានច្រក n ត្រូវបានប្រើ នោះខ្សែទម្លាក់នីមួយៗត្រូវបានកំណត់ត្រឹមប្រវែង 40/n m។
ខ្សែសញ្ញាទូទៅ (Common) ត្រូវតែភ្ជាប់ទៅអេក្រង់នៅចំណុចមួយនៅលើឡានក្រុង ជាធម្មតានៅជិតថ្នាំង Master ឬប្រអប់សាខារបស់វា។
ដើម្បីទប់ស្កាត់ការឆ្លុះបញ្ចាំងរលក ឧបករណ៍បញ្ចប់បន្ទាត់ (LT) ត្រូវបានដំឡើងនៅចុងបន្ទាត់រវាង D1 និង D0។ Terminators ត្រូវបានអនុញ្ញាតឱ្យដំឡើងតែនៅលើខ្សែមេប៉ុណ្ណោះ។
ខាងក្រោមអាចប្រើជាអ្នកបញ្ចប់៖-
ធន់ទ្រាំនឹងតម្លៃបន្ទាប់បន្សំនៃ 150 Ohms និងថាមពលនៃ 0.5 W;-
ស៊េរី capacitor តភ្ជាប់ (1 nF, 10 V អប្បបរមា) និង 120 ohm resistor (0.25 W) ដោយប្រើបន្ទាត់រាងប៉ូលស្តង់ដារ MODBUS Serial កំណត់ច្បាប់សម្រាប់ការអនុវត្តភាពលំអៀងការពារ (ប៉ូលឡាសៀស) ដែលផ្តល់សម្រាប់ការតភ្ជាប់ការផ្គត់ផ្គង់ថាមពល 5 V រវាង D1 និង D0 តាមរយៈឧបករណ៍ទប់ទល់ PullUp និង PullDown ដើម្បីរក្សាឡូជីខល "1" នៅលើបន្ទាត់នៅពេលដែលគ្មានការបញ្ជូន។
តម្លៃ resistor ត្រូវបានជ្រើសរើសពី 450 Ohm ទៅ 650 Ohm អាស្រ័យលើចំនួនឧបករណ៍ (650 Ohm សម្រាប់លេខធំ) ។ ការផ្លាស់ប្តូរផ្នែកការពារត្រូវបានអនុវត្តតែនៅចំណុចមួយនៅលើបន្ទាត់ ជាធម្មតានៅផ្នែកនាំមុខ។ ចំនួនអតិបរមានៃឧបករណ៍ដែលមានបន្ទាត់រាងប៉ូលដែលបានអនុវត្តត្រូវបានកាត់បន្ថយចំនួន 4 បើប្រៀបធៀបទៅនឹងប្រព័ន្ធដែលគ្មានបន្ទាត់រាងប៉ូល។ Polarization គឺស្រេចចិត្ត។ ទោះយ៉ាងណាក៏ដោយ ការទំនាក់ទំនងនៅលើឧបករណ៍អាចនឹងបរាជ័យ ប្រសិនបើមិនមានសញ្ញាតក្កវិជ្ជា។ ប្រសិនបើនេះជាករណី នោះបន្ទាត់រាងប៉ូលត្រូវតែត្រូវបានអនុវត្តដោយឯករាជ្យ ឬប្រើសៀគ្វីដែលមានស្រាប់ ប្រសិនបើផ្តល់ដោយឧបករណ៍។ស្តង់ដារក៏កំណត់ចំណុចប្រទាក់មេកានិចផងដែរ i.e. ប្រភេទនៃឧបករណ៍ភ្ជាប់ ឌុយ និងការឆ្លើយឆ្លងនៃសញ្ញានៅលើទំនាក់ទំនង។ ក្នុងនាមជាស្ថានីយមេកានិច អ្នកអាចប្រើប្លុកស្ថានីយ ការពារ RJ-45 (រូបភាព 6.23) ឬឧបករណ៍ភ្ជាប់ SUB-D9 ដែលមានខែល (រូបភាព 6.24) ។តារាង 6.3 បង្ហាញការចាត់តាំងនៃទំនាក់ទំនងសម្រាប់ឧបករណ៍ភ្ជាប់ជាមួយ 2 ការតភ្ជាប់ខ្សែតាមរយៈ RS-485 និងក្នុងតារាង 6.4 តាមរយៈ RS-232
តារាង 6.3
គោលបំណងនៃទំនាក់ទំនងឧបករណ៍ភ្ជាប់នៅពេលភ្ជាប់តាមរយៈ RS-485
លេខទំនាក់ទំនង |
តម្រូវការភាពអាចរកបាន |
សៀគ្វី IDv |
ខ្សែសង្វាក់ ITR |
ឈ្មោះ RS-485 |
មតិយោបល់ (សូមមើលផ្នែកទី 3) |
|
RJ45 |
SUB-D9 |
|||||
ស្រេចចិត្ត |
P.M.C. |
ការគ្រប់គ្រងរបៀប com ច្រក |
||||
ចាំបាច់ |
ឃ១ |
ខ/ខ" |
វ៉ុល V1, V1> V0 សម្រាប់កំណត់ហេតុ។ "1" |
|||
ចាំបាច់ |
ឃ0 |
A/A" |
វ៉ុល V0, V0>V1 សម្រាប់កំណត់ហេតុ។ "0" |
|||
និយម |
ការផ្គត់ផ្គង់ថាមពល 5…24 VDC |
|||||
ចាំបាច់ |
ទូទៅ |
ទូទៅ |
C/C" |
ថាមពលនិងសញ្ញា |
តារាង 6.4
គោលបំណងនៃទំនាក់ទំនងឧបករណ៍ភ្ជាប់នៅពេលភ្ជាប់តាមរយៈ RS-232
DCE (ម៉ូដឹម) |
សៀគ្វី |
DTE |
||||||
លេខទំនាក់ទំនង |
តម្រូវការភាពអាចរកបាន |
ឈ្មោះ |
មតិយោបល់ (សូមមើលផ្នែកទី 3) |
ប្រភព RS-232 |
តម្រូវការភាពអាចរកបាន |
លេខ ទំនាក់ទំនង |
||
RJ45 |
SUB-D9 |
RJ45 |
SUB-D9 |
|||||
ចាំបាច់ |
TxD |
ទិន្នន័យដែលបានបញ្ជូន |
<< DTE |
ចាំបាច់ |
||||
ចាំបាច់ |
RxD |
ទិន្នន័យដែលទទួលបាន |
ឌីស៊ី >> |
ចាំបាច់ |
||||
ស្រេចចិត្ត |
ស៊ីធីអេស |
ជម្រះដើម្បីផ្ញើ |
ឌីស៊ី >> |
ស្រេចចិត្ត |
||||
ស្រេចចិត្ត |
RTS |
ស្នើសុំផ្ញើ |
<< DTE |
ស្រេចចិត្ត |
||||
ចាំបាច់ |
ទូទៅ |
សញ្ញាទូទៅ |
ចាំបាច់ |
ជាខ្សែសម្រាប់ប្រភេទការតភ្ជាប់ 2 ខ្សែ ស្ដង់ដារកំណត់ខ្សែការពារពីរដងនៃប្រភេទ 4 (រហូតដល់ 600 ម៉ែត្រ) ឬ 5 (រហូតដល់ 1000 ម៉ែត្រ) ដែលមួយគូមានសញ្ញាតុល្យភាព D0 និង D1 ហើយទីពីរមានសញ្ញាទូទៅ ដីសញ្ញា។ ពណ៌ខ្សែដែលបានណែនាំ៖ D1 ពណ៌លឿង; D0 ពណ៌ត្នោត; ពណ៌ប្រផេះទូទៅ។
ឧទាហរណ៍ 6.6 ។
MODBUS ។ ដ្យាក្រាមតភ្ជាប់បណ្តាញ MODBUS RTU ។កិច្ចការ
. គូរដ្យាក្រាមនៃការតភ្ជាប់បណ្តាញសម្រាប់ការអនុវត្ត 2 ខ្សែនៃឡានក្រុង MODBUS RTU ជាមួយនឹងថ្នាំងខាងក្រោម៖-
PLC1: ស៊ីភីយូ VIPA 115SER 6BL32 (ម៉ាស្ទ័រ) តាមរយៈការភ្ជាប់មកជាមួយ ច្រកសៀរៀលម៉ូឌុលដំណើរការ;-
PLC2៖ TSX Twido TWDLMDA40DTK (ទាសករ) តាមរយៈម៉ូឌុលទំនាក់ទំនង TWD NOZ 485T-
PLC3៖ TSX Twido TWDLMDA40DTK (ទាសករ) តាមរយៈម៉ូឌុលទំនាក់ទំនង TWD NOZ 485Tដំណោះស្រាយ
. រូបភាព 6.25 បង្ហាញដ្យាក្រាមនៃការតភ្ជាប់បណ្តាញសម្រាប់ភារកិច្ចដែលបានផ្តល់ឱ្យ។ការបញ្ជាក់នៃគ្រឿងបរិក្ខារបណ្តាញត្រូវបានផ្តល់ឱ្យក្នុងតារាង 6.5 ។ដូចដែលអាចមើលឃើញពីរូបភាព 6.25 PLC1 ត្រូវបានភ្ជាប់ទៅនឹងឡានក្រុងតាមរយៈប្រអប់អកម្ម ឬតាមរយៈប្លុកស្ថានីយ ដែលស្មើនឹងមូលដ្ឋាន។ នេះគឺដោយសារតែការពិតដែលថាការតភ្ជាប់ទៅ PLC ត្រូវបានធ្វើឡើងដោយប្រើឧបករណ៍ភ្ជាប់ SUB-D 9-pin ដែលតម្រូវឱ្យមានការអភិវឌ្ឍន៍ខ្សែផ្ទាល់ខ្លួនរបស់អ្នក ដ្យាក្រាមតភ្ជាប់ (ប្រសព្វ) ដែលទៅនឹងឧបករណ៍ភ្ជាប់ និងប្លុកស្ថានីយត្រូវបានបង្ហាញ។ នៅក្រោមដ្យាក្រាមមេ។
ដូច្នេះខ្សភ្លើងនៃខ្សែ KM2 ត្រូវតែត្រូវបាន soldered ទៅដោត KK1 ។
ការចាត់តាំងម្ជុលនៃរន្ធ SER មិនស្របគ្នានឹងស្តង់ដារទេ។ ម្ជុលលេខ 8 និង 3 (A (D0) និង B (D1 រៀងគ្នា)) ចូលទៅក្នុងគូមួយ បន្ទាប់មកភ្ជាប់ទៅ XT1:1 និង XT1:2; 5 និង 6 (M5V (-5V) និង P5V (+5 V, រៀងគ្នា)) ទៅកាន់ខ្សែ KM2 ពីរគូផ្សេងទៀត។ ការផ្គត់ផ្គង់ 5V ត្រូវបានទាមទារ ដើម្បីអនុវត្តការលំអៀងការពារ ( asymmetry) ស្របតាមស្តង់ដារ។ ក្រៅពីនេះ។M5Vគឺជាដីសញ្ញា (ទូទៅ) ។ខ្សែ KM2 ត្រូវបានភ្ជាប់ទៅ XT1 យោងតាមដ្យាក្រាមដែលបង្ហាញក្នុងរូបភាព 6.25 ។ ប្រឡោះខ្សែត្រូវបានភ្ជាប់ទៅនឹងដីសញ្ញាស្របតាមតម្រូវការនៃស្តង់ដារ។ វាគួរតែត្រូវបានចងចាំក្នុងចិត្តថា VIPA PLC នៅក្នុងប្រព័ន្ធនេះគឺជាម៉ាស្ទ័រ ហេតុដូច្នេះហើយ ការតភ្ជាប់ការពារ និងការពារពីដីទៅដីត្រូវតែអនុវត្តនៅកន្លែងនេះ។ ភាពលំអៀងរបស់ឆ្មាំត្រូវបានផលិតដោយប្រើថាមពល 5V ដែលត្រូវបានយកចេញពីច្រក SER និងឧបករណ៍ទប់ទល់ពីរ។
តារាង 6.5 ។
ការបញ្ជាក់ឧបករណ៍បណ្តាញ
№ |
ការកំណត់ |
ឈ្មោះ |
ឯកសារយោង |
កូលីក |
ចំណាំ |
ភីអិលស៊ី ១ |
PLC VIPA 100 |
ស៊ីភីយូ VIPA 115SER 6BL32 |
1 កុំព្យូទ័រ PC ។ |
វីអាយអេ |
|
PLC2, PLC3 |
Twido PLC |
TWDLMDA40DTK |
2 ភី។ |
Schneider Electric |
|
MK1, MK2 |
ម៉ូឌុលទំនាក់ទំនងសម្រាប់អនុវត្តចំណុចប្រទាក់ RS-485 ការភ្ជាប់វីស |
TWD NOZ 485T |
2 ភី។ |
Schneider Electric |
|
KK1 |
ឧបករណ៍ភ្ជាប់បុរស SUB-D 9-pin |
1 កុំព្យូទ័រ PC ។ |
|||
XT1 |
ប្លុកស្ថានីយ 4-pin |
1 កុំព្យូទ័រ PC ។ |
|||
TL1, TL2 |
បន្ទាត់បញ្ចប់ |
2 ភី |
ត្រូវបានផលិតជាមួយ pos ។ ៧ និង ៨ |
||
Resistor 120 Ohm (0.25 W) |
2 ភី។ |
រួមបញ្ចូលក្នុងធាតុទី 6 |
|||
Capacitor 1 nF (> 10 V) |
2 ភី។ |
ជាផ្នែកមួយនៃ pos |
|||
Ru, ផ្លូវ |
Resistor 500 Ohm (0.25 W) |
2 ភី |
|||
KM1 |
AWG26 |
៣០០ ម។ |
|||
KM2 |
ខ្សែការពារទ្វេ គូរមួលប្រភេទទី 5 AWG26 |
2 ម |
|||
KM3 |
ខ្សែគូភ្លោះដែលមានរបាំងការពារពីរ, ប្រភេទ 5 AWG26 |
៣០០ ម។ |
PLC2 និង PLC3 ត្រូវបានភ្ជាប់ទៅឡានក្រុងដោយប្រើម៉ូឌុលទំនាក់ទំនងដែលមានប្លុកស្ថានីយ។ នេះអនុញ្ញាតឱ្យមានការតភ្ជាប់ដោយគ្មានសាខា។ ទោះជាយ៉ាងណាក៏ដោយប្លុកមិនផ្តល់ចំណុចតភ្ជាប់សម្រាប់ប្រឡោះទេដូច្នេះខ្សែត្រូវបានការពារដោយឡែកពីគ្នា។
បន្ទាត់បញ្ចប់ត្រូវបានអនុវត្ត ការតភ្ជាប់សៀរៀល resistors និង capacitors ដោយសារតែឡានក្រុងមានភាពលំអៀង។
បច្ចុប្បន្ន MODBUS Serial ត្រូវបានប្រើទាំងនៅកម្រិតឧបករណ៍បញ្ជា និងនៅកម្រិតឧបករណ៍ចាប់សញ្ញា (សម្រាប់ឧបករណ៍ចែកចាយ)។ ការប្រើប្រាស់របស់វាមានបញ្ហានៅពេលដែលមានឧបករណ៍ជាច្រើននៅលើឡានក្រុង
SCADA/ HMI, ដែលនៅក្នុង ស្ថាបត្យកម្មម៉ាស៊ីនភ្ញៀវ - ម៉ាស៊ីនមេត្រូវតែជាអតិថិជន ព្រោះនៅលើ MODBUS RTU/ASCII មានតែ Master ប៉ុណ្ណោះដែលអាចក្លាយជាអតិថិជន។ ប៉ុន្តែទោះបីជាស្ថិតក្នុងស្ថានភាពបែបនេះក៏ដោយ វាអាចរៀបចំការបញ្ជូនទិន្នន័យទៅគ្រប់ថ្នាំងដែលត្រូវការ ប្រសិនបើពួកគេគាំទ្ររបៀបនេះ។ដោយផ្អែកលើខាងលើ អ្នកអាចជ្រើសរើសរថយន្តក្រុង MODBUS Serial ប្រសិនបើ៖
-
ឧបករណ៍ម៉ាស៊ីនមេទាំងអស់គាំទ្រ MODBUS RTU / ASCII នៅក្នុងរបៀបទាសករ។-
ត្រូវការតែឧបករណ៍អតិថិជនមួយប៉ុណ្ណោះ ដែលត្រូវការផ្តួចផ្តើមការផ្លាស់ប្តូរនៅលើឡានក្រុង គាំទ្រ MODBUS RTU/ASCII ជាមេ។-
ល្បឿននៃការងើបឡើងវិញទិន្នន័យ- បំពេញលក្ខខណ្ឌនៃបញ្ហា;មិនត្រូវការ
ជាការប្រសើរណាស់, វាជាពេលវេលាដើម្បីពិចារណាពីអ្វីដែលពិធីការ Modbus TCPខុសពីពិធីការ Modbus RTU. ដោយសារមិនមានភាពខុសគ្នាច្រើនទេ អត្ថបទនឹងមិនវែងឆ្ងាយទេ។
ដូច្នេះនៅក្នុងអត្ថបទមុនអំពីមុខងារ Modbus RTUអ្នកអាចស្វែងយល់ថាតើមុខងារអ្វីខ្លះ និងទម្រង់គោលពីររបស់វា។ ឥឡូវនេះវាមានតម្លៃប្រាប់ថាតើវាជាអ្វី Modbus TCPរបៀបដែលវាត្រូវបានគេប្រើ និងរបៀបដែលវាខុសពីស្តង់ដារ Modbus RTU.
ModbusRTUតាមរយៈ TCPសមាសធាតុ
មធ្យោបាយងាយស្រួលបំផុតដើម្បីផ្លាស់ប្តូរ Modbusសារតាមរយៈបណ្តាញ - ងាយស្រួលបញ្ជូន Modbus RTUកញ្ចប់តាមរយៈ រន្ធ TCP(សមាសធាតុ) ។ ក្នុងករណីនេះ ទម្រង់កញ្ចប់ព័ត៌មានគឺដូចគ្នាទៅនឹង Modbus RTUពិធីការ។ ជាគោលការណ៍ នេះអាចជាការបញ្ចប់នៃពិធីការប្រភេទនេះ។
ModbusTCP
សម្រាប់ការផ្លាស់ប្តូរ Modbsuសារនៅលើបណ្តាញបានសម្រេចចិត្តប្រើពិធីការដែលបានកែប្រែ។ យើងបានយកស្តង់ដារមួយ។ Modbus RTUហើយផ្លាស់ប្តូរវាបន្តិច។ ដំបូងយើងដក 2 បៃចុងក្រោយចេញពីវា។ CRC16. ដោយសារកញ្ចប់ TCP/IP នីមួយៗមាន checksum របស់វា យើងបានសម្រេចចិត្តថាមិនចាំបាច់ពិនិត្យមើលវាម្តងទៀតទេ។ លើសពីនេះទៀតបៃដំបូងត្រូវបានដកចេញ លេខសម្គាល់ទាសករ. ជាគោលការណ៍ ដូចដែលនឹងឃើញនៅពេលក្រោយ វាមិនត្រូវបានដកចេញទេ ប៉ុន្តែគ្រាន់តែប្តូរឈ្មោះ។ ទាំងនេះគឺជាបៃដោយគ្មាន លេខសម្គាល់ទាសករនិង CRC16ហៅ PDU - ឯកតាទិន្នន័យពិធីការ.
ជាឧទាហរណ៍ ចូរយើងទទួលយកសំណើ Modbus RTUដែលអានជាច្រើន។ កាន់ចុះឈ្មោះពីឧបករណ៍ #17 (លេខសម្គាល់ទាសករ = 17)
11 03 006B 0003 7687ឥឡូវនេះយើងដក 2 បៃដំបូងនិងចុងក្រោយ។ យើងទទួលបាន PDU!
03 006B 0003អ្វីគ្រប់យ៉ាងហាក់ដូចជាច្បាស់ជាមួយនេះ។ ឥឡូវនេះដើម្បីទទួលបានកញ្ចប់ពេញលេញ Modbus TCPយើងត្រូវបន្ថែមនៅខាងមុខ បឋមកថា MBAP - បឋមកថាកម្មវិធី Modbus. ទាំងនោះ។ យើងត្រូវបន្ថែមបឋមកថា។ បឋមកថានេះរួមបញ្ចូល លេខសម្គាល់ប្រតិបត្ដិការ, លេខសម្គាល់ពិធីការ, ប្រវែងនិង លេខសម្គាល់ឯកតា.
លេខសម្គាល់ប្រតិបត្ដិការ- 2 បៃដែលកំណត់ដោយអតិថិជនដើម្បីកំណត់អត្តសញ្ញាណសំណើនីមួយៗ។ ទាំងនោះ។ វាគ្រាន់តែជាលេខពី 0 ដល់ 65535 ដែលមានតែមួយគត់សម្រាប់សំណើនីមួយៗ។
លេខសម្គាល់ពិធីការ- 2 បៃដែលកំណត់កំណែពិធីការ។ នៅក្នុងការអនុវត្តបច្ចុប្បន្នគួរតែស្មើនឹង 0x00 0x00 ជានិច្ច
ប្រវែង- 2 បៃដែលកំណត់ប្រវែងនៃកញ្ចប់ព័ត៌មាន (មិនរាប់បញ្ចូលបៃ លេខសម្គាល់ពិធីការ, លេខសម្គាល់ប្រតិបត្ដិការនិង ប្រវែង)
លេខសម្គាល់ឯកតា- អាសយដ្ឋានតែមួយគត់នៃឧបករណ៍ដែលត្រូវបានស្ទង់មតិដោយពាក្យបញ្ជានេះ។ ដូចគ្នាបេះបិទ លេខសម្គាល់ទាសករ.
ការយល់ច្រឡំតូចមួយទាក់ទងនឹងការដោះស្រាយ។ នេះអាចហាក់ដូចជាមិនចាំបាច់, ចាប់តាំងពី ការតភ្ជាប់ TCPអាចត្រូវបានកំណត់ទៅអាសយដ្ឋាន IP និងច្រកជាក់លាក់ប៉ុណ្ណោះ។ ទាំងនោះ។ យើងមានអាសយដ្ឋានម៉ាស៊ីនមេជាក់លាក់រួចហើយ ដូច្នេះកិច្ចការ លេខសម្គាល់ឯកតាមិនច្បាស់ទេ។
ប៉ុន្តែតាមពិត វាជារឿងធម្មតាទេដែលនៅទីនោះមានម៉ាស៊ីនមេមួយចំនួនដែលគ្រាន់តែបញ្ជូន Modbus RTUស្នើសុំទៅឧបករណ៍ផ្សេងទៀតដែលត្រូវបានភ្ជាប់ទៅវាតាមរយៈ ឆានែលផ្សេងៗ(LAN, ច្រកសៀរៀល, ចំណុចប្រទាក់ CAN) ដូច្នេះអតិថិជនអាចប្រើបាន។ Modbus TCP server ជា gateway ( ច្រកផ្លូវ) ដើម្បីទំនាក់ទំនងជាមួយឧបករណ៍នៅពីក្រោយវា។
ឧទាហរណ៍នៃម៉ាស៊ីនមេ Modbus TCP ដែលត្រូវបានប្រើជាច្រកផ្លូវដើម្បីបញ្ជូនសំណើទៅកាន់ឧបករណ៍ Modbus RTU
នេះគឺជាឧទាហរណ៍ពីជីវិត។ មានឧបករណ៍ជាក់លាក់មួយផ្អែកលើលីនុច។ ឧបករណ៍នេះលាតសន្ធឹង Modbus TCPម៉ាស៊ីនមេ។ អតិថិជនណាមួយអាចភ្ជាប់ទៅអាសយដ្ឋាន IP សាធារណៈនៅលើច្រក 502 ហើយចាប់ផ្តើម Modbus TCPសមាសធាតុ។ ទៅនេះ។ ឧបករណ៍លីនុចឧបករណ៍ចាប់សញ្ញាត្រូវបានភ្ជាប់ដោយប្រើច្រកសៀរៀល RS485 ។ មានឧបករណ៍ចាប់សញ្ញាជាច្រើន ពួកវាសាមញ្ញណាស់ ហើយមិនអាចភ្ជាប់ទៅអ៊ីនធឺណិតបានទេ ពួកគេមានច្រក RS485 ហើយពួកគេយល់តែប៉ុណ្ណោះ។ Modbus RTU. នោះហើយជាមូលហេតុដែលអតិថិជនផ្ញើ Modbus TCPសំណើពី លេខសម្គាល់ឯកតាឧបករណ៍ចាប់សញ្ញាបើក Modbus TCPម៉ាស៊ីនមេ។ ម៉ាស៊ីនមេឌិកូដ Modbus TCPស្នើសុំហើយបម្លែងវាទៅជា Modbus RTUហើយផ្ញើទៅច្រក RS485 ។ បន្ទាប់ពីឧបករណ៍ចាប់សញ្ញាឆ្លើយតបទៅវា វាបម្លែង Modbus RTUឆ្លើយក្នុង Modbus TCPឆ្លើយ ហើយផ្ញើវាទៅ Modbus TCPដល់អតិថិជនដែលបានផ្តួចផ្តើមការស្នើសុំ។ ដូច្នេះ ដោយគ្រាន់តែមានអាសយដ្ឋាន IP សាធារណៈមួយ អ្នកអាចសួរចម្លើយឧបករណ៍ចាប់សញ្ញារាប់រយនៅលើអ៊ីនធឺណិត ដែលសូម្បីតែមិនអាចភ្ជាប់ទៅអ៊ីនធឺណិត ឬបណ្តាញមូលដ្ឋានក៏ដោយ។
ហើយឥឡូវនេះដ្យាក្រាមដែលមើលឃើញពីរបៀបដែលវាខុសគ្នា Modbus RTUស្នើសុំពី Modbus TCPសំណើ។
សូមក្រឡេកមើលឧទាហរណ៍នៃបៃសម្រាប់សំណើពីរ៖
Modbus RTU: 11 03 006B 0003 7687 Modbus TCP: 0001 0000 0006 11 03 006B 0003ចម្លើយគំរូ៖
Modbus TCP: 0001 0000 0009 11 03 06 AE41 5652 4340 Modbus RTU: 11 03 06 AE41 5652 4340 49ADដូចដែលអ្នកអាចឃើញ បម្លែងសំណើរវាង Modbus RTUនិង Modbus TCPសាមញ្ញណាស់។ ទោះបីជាការអនុវត្ត Modbus RTU TCP អាចហាក់ដូចជាមធ្យោបាយងាយស្រួលបំផុតក្នុងការបញ្ជូនសំណើ ប៉ុន្តែតាមពិត Modbus TCPមានចំណុចវិជ្ជមានមួយចំនួន៖
- មិនចាំបាច់គណនាទេ។ CRC16
- វាអាចធ្វើទៅបានដើម្បីកំណត់អត្តសញ្ញាណការឆ្លើយតប / សំណើគូដោយប្រើ លេខសម្គាល់ប្រតិបត្ដិការ
- អ្នកអាចបន្ថែមកំណែពិធីការផ្ទាល់ខ្លួនរបស់អ្នកបានយ៉ាងងាយស្រួលដោយការផ្លាស់ប្តូរថេរ លេខសម្គាល់ពិធីការ
រចនាសម្ព័ន្ធសារពិធីការ Modbus មានដូចខាងក្រោម៖
- slave address គឺជាអាសយដ្ឋានរបស់ឧបករណ៍ដែល សារនេះ។ពិធីការ Modbus ។ ឧបករណ៍ឆ្លើយតបតែចំពោះសារដែលត្រូវបានផ្ញើជាពិសេសចំពោះពួកគេ។ ការឆ្លើយតបចាប់ផ្តើមដោយអាសយដ្ឋានទាសករ។ អាសយដ្ឋានប្រែប្រួលក្នុងចន្លោះ 1…247។ អាសយដ្ឋាន 0 នៅក្នុងសារពិធីការ Modbus ត្រូវបានបម្រុងទុកសម្រាប់សារផ្សាយ 248..255 គឺជាអាសយដ្ឋានដែលបានបម្រុងទុក។
- លេខមុខងារ - 1 បៃនៃទិន្នន័យ។
- ទិន្នន័យ - វាលនេះមានព័ត៌មានអំពីមុខងារដែលត្រូវអនុវត្ត ឬទិន្នន័យដែល slave ផ្ញើទៅមេពិធីការ Modbus ។
- ប្លុករកឃើញកំហុស (CRC) - មូលប្បទានប័ត្រដែលត្រូវបានគណនាពីបៃមុនទាំងអស់ដោយប្រើក្បួនដោះស្រាយជុំវិលនិងប៊ីត។
សូមចំណាំថានៅពេលអានតាមរយៈពិធីការ Modbus ក្នុងសារមួយ អ្នកអាចអានតម្លៃនៃការបញ្ចូល និងលទ្ធផលដែលដាច់ពីគ្នា ឬអាណាឡូកដែលមានទីតាំងនៅក្នុងជួរ ពោលគឺកំណត់អាសយដ្ឋាននៃតម្លៃដំបូង និងលេខរបស់វា។
សូមក្រឡេកមើលចំណុចសំខាន់ លក្ខណៈស្តង់ដារដោយលេខកូដរបស់ពួកគេ (ជាទម្រង់ទសភាគ និងគោលដប់ប្រាំមួយ)៖
1 (0x01) - អានលទ្ធផលដាច់ដោយឡែកជាច្រើន។
2 (0x02) - អានធាតុបញ្ចូលដាច់ដោយឡែកជាច្រើន។
3 (0x03) - អានការចុះឈ្មោះកម្រិតមធ្យមជាច្រើនឬលទ្ធផលអាណាឡូក
4 (0x04) - អានការបញ្ចូលអាណាឡូកជាច្រើន។
ឧទាហរណ៍ ប្រសិនបើចំនួននៃការបញ្ចូលដាច់ដោយឡែកដែលត្រូវបានបង្កើតក្នុងសំណើមិនមែនជាពហុគុណនៃប្រាំបីទេនោះចំនួនបៃនៃតម្លៃត្រូវបានបង្គត់ទៅ ចំហៀងធំហើយ អាស្រ័យហេតុនេះ ដើម្បីទទួលបានឧទាហរណ៍ តម្លៃនៃធាតុបញ្ចូលដាច់ដោយឡែកចំនួន 15 ចំនួននេះនឹងស្មើនឹងពីរបៃ។
មុនពេលទិន្នន័យសារ Modbus មួយបៃត្រូវបានបញ្ជូនតម្លៃដែលជាចំនួនបៃនៃទិន្នន័យ។
5 (0x05) - កត់ត្រាតម្លៃនៃមួយ។ ទិន្នផលដាច់
6 (0x06) - សរសេរតម្លៃនៃទិន្នផលអាណាឡូកមួយឬចុះឈ្មោះ
ពាក្យបញ្ជា Modbus មានអាសយដ្ឋាន និងតម្លៃពិត (2 បៃ)។ ការឆ្លើយតបធម្មតាគឺជាការស្នើសុំពិធីការ Modbus ម្តងទៀត។
15 (0x0F) - សរសេរតម្លៃទៅលទ្ធផលដាច់ដោយឡែកជាច្រើន។
16 (0x10) - សរសេរតម្លៃនៃលទ្ធផលអាណាឡូក ឬចុះឈ្មោះមួយចំនួន
ការឆ្លើយតបមានអាសយដ្ឋានចាប់ផ្តើមនៃការចុះឈ្មោះនិងចំនួននៃតម្លៃដែលបានផ្លាស់ប្តូរ។
ឧទាហរណ៍សំណើ/ការឆ្លើយតបពិធីការ Modbus៖
កំហុសនៃការបញ្ជូនត្រូវបានបែងចែកជា 2 ប្រភេទ - ការបង្ខូចទ្រង់ទ្រាយនៃការបញ្ជូននិងឡូជីខល។ ការបង្ខូចទ្រង់ទ្រាយត្រូវបានត្រួតពិនិត្យដោយពេលវេលា "ស្ងាត់" ។ ពេលវេលាធម្មតារវាងសារគឺជាពេលវេលាដែលត្រូវការដើម្បីបញ្ជូន 3.5 តួអក្សរ។ ប្រសិនបើការផ្អាកលើសពី 1.5 តួអក្សរកើតឡើងកំឡុងពេលបញ្ជូនសារពិធីការ Modbus នោះកញ្ចប់ព័ត៌មាននឹងត្រូវបោះចោល។
កំហុសឡូជីខលនៅក្នុងពិធីការ Modbus កើតឡើងប្រសិនបើ slave មិនអាចទទួលបានសារទាល់តែសោះ ឬទទួលវា ប៉ុន្តែបង្កើតកំហុសមួយ។ ក្នុងករណីនេះកំហុសត្រូវបានធ្វើរោគវិនិច្ឆ័យដោយការអស់ពេល។ Slave ទទួលយកសំណើ ប៉ុន្តែមិនអាចដំណើរការវាបានទេ (ឧទាហរណ៍ ការចូលទៅកាន់អាសយដ្ឋានដែលមិនមាន) - ក្នុងករណីនេះ សារកំហុសត្រូវបានផ្ញើ។
ឧទាហរណ៍នៃសារកំហុស Modbus សម្រាប់សំណើមួយ៖
កូដកំហុសពិធីការ Modbus ស្តង់ដារ៖
01 - មុខងារមិនអាចដំណើរការលើ slave បានទេ។
02 - អាសយដ្ឋានទិន្នន័យដែលមិនមាន។
03 - តម្លៃនៅក្នុងវាលទិន្នន័យសម្រាប់សំណើនេះគឺមិនត្រឹមត្រូវសម្រាប់ salve ។
04 - កំហុសធ្ងន់ធ្ងរបានកើតឡើងខណៈពេលដែលទាសករកំពុងព្យាយាមធ្វើសកម្មភាពមួយ។
០៥ - ទាសករបានទទួលយកសំណើនេះ ហើយចាប់ផ្តើមដំណើរការវា ប៉ុន្តែវានឹងត្រូវការពេលវេលា។ កូដនេះការពារមេពីការបោះចោលកំហុសពេលអស់ពេល។
០៦ - ទាសករកំពុងរវល់ដំណើរការបញ្ជា ចៅហ្វាយត្រូវបញ្ជូនសារឡើងវិញនៅពេលក្រោយ ពេលទាសករទំនេរ។
០៧ - ទាសករមិនអាចប្រតិបត្តិមុខងារពីសំណើបានទេ។ មេត្រូវផ្ញើសំណើសម្រាប់ ព័ត៌មានរោគវិនិច្ឆ័យឬទទួលព័ត៌មានកំហុសពីទាសករ។
08 - ទាសករព្យាយាមអានកន្លែងចងចាំ ប៉ុន្តែរកឃើញកំហុសស្មើភាព។ ចៅហ្វាយនាយអាចស្នើសុំឡើងវិញបាន ប៉ុន្តែជាធម្មតាក្នុងករណីបែបនេះ ការជួសជុលត្រូវបានទាមទារ។
រចនាសម្ព័ន្ធស៊ុម Modbus TCP៖
កន្លែងណា៖
លេខសម្គាល់ប្រតិបត្តិការ - ពីរបៃ
លេខសម្គាល់ពិធីការ - ពីរបៃ (បួនសូន្យ)
ប្រវែងកញ្ចប់ - ពីរបៃទំហំនៃវាលសារជាបន្តបន្ទាប់
អាសយដ្ឋានទាសករ - អាសយដ្ឋានរបស់ទាសករដែលសំណើពិធីការ Modbus ត្រូវបានដោះស្រាយ។
លក្ខណៈពិសេសពិសេសនៃពិធីការ Modbus TCP គឺអវត្តមាននៃមូលប្បទានប័ត្រចាប់តាំងពី កម្រិតដឹកជញ្ជូនពិធីការ TCP ពិនិត្យ CRC ។ ដូច្នេះការពិនិត្យមើល checksum ក្នុងទម្រង់ RTU មិនសមហេតុផលទេ។
នៅក្នុងអត្ថបទនេះ អ្នកនឹងរៀនអំពីពិធីការ Modbus TCP ដែលជាការវិវត្តនៃពិធីការ Modbus RTU ។ កំណែជាភាសាអង់គ្លេសអត្ថបទមាននៅ ipc2u.com ។
កន្លែងដែលត្រូវផ្ញើពាក្យបញ្ជា Modbus TCP?
នៅលើបណ្តាញអ៊ីសឺរណិត អាសយដ្ឋានរបស់ឧបករណ៍គឺជាអាសយដ្ឋាន IP របស់វា។ ជាធម្មតា ឧបករណ៍មានទីតាំងនៅលើបណ្តាញរងដូចគ្នា ដែលអាសយដ្ឋាន IP ខុសគ្នា លេខចុងក្រោយ 192.168.1.20 នៅពេលប្រើរបាំងបណ្ដាញរងទូទៅបំផុត 255.255.255.0 ។
ចំណុចប្រទាក់គឺជាបណ្តាញ អ៊ីសឺរណិតពិធីការផ្ទេរទិន្នន័យ - TCP/IP.
ច្រក TCP បានប្រើ៖ 502 .
ការពិពណ៌នាអំពីពិធីការ Modbus TCP
ពាក្យបញ្ជា Modbus TCP មានផ្នែកសារ Modbus RTU និងបឋមកថាពិសេស។
ពីសារ Modbus RTU អាសយដ្ឋាន SlaveID នៅដើមដំបូង និង CRC checksum នៅចុងបញ្ចប់ត្រូវបានដកចេញ ដែលបង្កើតជា PDU, Protocol Data Unit។
ខាងក្រោមនេះជាឧទាហរណ៍នៃសំណើ Modbus RTU ដើម្បីទទួលបានតម្លៃនៃទិន្នផលអាណាឡូក AO (ការចុះបញ្ជីការកាន់កាប់) ពីការចុះឈ្មោះ #40108 ដល់ 40110 ជាមួយនឹងអាសយដ្ឋានឧបករណ៍ 17 ។
11 03 006B 0003 7687
យើងបោះបង់អាសយដ្ឋានឧបករណ៍ SlaveID និងមូលប្បទានប័ត្រ CRC ហើយទទួលបាន PDU៖
03 006B 0003
បឋមកថា 7-byte ថ្មីដែលហៅថា MBAP Header (Modbus Application Header) ត្រូវបានបន្ថែមទៅការចាប់ផ្តើមនៃសារ PDU លទ្ធផល។ បឋមកថានេះមានទិន្នន័យដូចខាងក្រោមៈ
អត្តសញ្ញាណប្រតិបត្តិការ៖ 2 បៃត្រូវបានកំណត់ដោយ Master ដើម្បីកំណត់អត្តសញ្ញាណសំណើនីមួយៗ។ អាចជាណាមួយ។ បៃទាំងនេះនឹងត្រូវបានធ្វើម្តងទៀតដោយ Slave ក្នុងការឆ្លើយតប ពីព្រោះការឆ្លើយតបរបស់ Slave ប្រហែលជាមិនតែងតែត្រូវបានទទួលក្នុងលំដាប់ដូចគ្នានឹងសំណើនោះទេ។
កម្មវិធីកំណត់អត្តសញ្ញាណពិធីការ៖ 2 bytes ត្រូវបានកំណត់ដោយ Master, will always = 00 00, ដែលត្រូវគ្នាទៅនឹង Modbus protocol ។
ប្រវែង៖ 2 បៃត្រូវបានកំណត់ដោយ Master ដោយកំណត់ចំនួនបៃក្នុងសារដែលបន្ទាប់មក។ រាប់ចាប់ពីឯកតាកំណត់អត្តសញ្ញាណរហូតដល់ចុងបញ្ចប់នៃសារ។
ឧបករណ៍កំណត់អត្តសញ្ញាណ៖ 1 បៃត្រូវបានកំណត់ទៅជា Master ។ ធ្វើម្តងទៀតដោយឧបករណ៍ Slave ដើម្បីកំណត់អត្តសញ្ញាណឧបករណ៍ Slave ដាច់ដោយឡែក។
សរុបមកយើងទទួលបាន៖
Modbus RTU | លេខសម្គាល់ទាសករ | ស្នើសុំ | កាកបាទក្រហមកម្ពុជា |
---|---|---|---|
Modbus RTU | 11 | 03 006B 0003 | 7687 |
0001 0000 0006 11 | 03 006B 0003 | ||
PDU | |||
ADU ទិន្នន័យកម្មវិធីឯកតា |
ជាការឆ្លើយតបពី Modbus TCP ឧបករណ៍ទាសករយើងនឹងទទួលបាន៖
0001 0000 0009 11 03 06 022B 0064 007F
0001 | លេខសម្គាល់ប្រតិបត្ដិការ | អត្តសញ្ញាណប្រតិបត្តិការ |
0000 | លេខសម្គាល់ពិធីការ | កម្មវិធីកំណត់អត្តសញ្ញាណពិធីការ |
0009 | ប្រវែង(9 បៃធ្វើតាម) | ប្រវែងសារ |
11 | អាសយដ្ឋានឧបករណ៍(17 = 11 hex) | ឧបករណ៍កំណត់អត្តសញ្ញាណ |
03 | លេខកូដមុខងារ(អានការចុះបញ្ជីការរក្សាទុកទិន្នផលអាណាឡូក) | កូដមុខងារ |
06 | ចំនួនបៃបន្ថែមទៀត(6 បៃធ្វើតាម) | រាប់បៃ |
02 | (02 hex) | តម្លៃចុះឈ្មោះ Hi (AO0) |
2B | (2B hex) | តម្លៃចុះឈ្មោះ Lo (AO0) |
00 | តម្លៃនៃប៊ីតដ៏សំខាន់បំផុតនៃការចុះឈ្មោះ(00 hex) | តម្លៃចុះឈ្មោះ Hi (AO1) |
64 | ចុះឈ្មោះតម្លៃ LSB(៦៤ ឆកោន) | តម្លៃចុះឈ្មោះ Lo (AO1) |
00 | តម្លៃនៃប៊ីតដ៏សំខាន់បំផុតនៃការចុះឈ្មោះ(00 hex) | តម្លៃចុះឈ្មោះ Hi (AO2) |
7F | ចុះឈ្មោះតម្លៃ LSB(7F hex) | តម្លៃចុះឈ្មោះ Lo (AO2) |
ការចុះឈ្មោះលទ្ធផលអាណាឡូក AO0 មានតម្លៃ 02 2B HEX ឬ 555 ជាទសភាគ។
ការចុះឈ្មោះលទ្ធផលអាណាឡូក AO1 មានតម្លៃ 00 64 HEX ឬ 100 នៅក្នុងប្រព័ន្ធទសភាគ។
ការចុះឈ្មោះលទ្ធផលអាណាឡូក AO2 មានតម្លៃ 00 7F HEX ឬ 127 នៅក្នុងប្រព័ន្ធទសភាគ។
ប្រភេទពាក្យបញ្ជា Modbus TCP
នេះគឺជាតារាងដែលមានលេខកូដមុខងារសម្រាប់អាន និងសរសេរការចុះឈ្មោះ Modbus TCP ។
លេខកូដមុខងារ | តើមុខងារធ្វើអ្វី | ប្រភេទតម្លៃ | ប្រភេទចូលប្រើ | |
---|---|---|---|---|
01 (0x01) | ការអាន DO | អានស្ថានភាព Coil | ផ្តាច់មុខ | ការអាន |
០២ (០x០២) | ការអាន DI | អានស្ថានភាពបញ្ចូល | ផ្តាច់មុខ | ការអាន |
០៣ (០x០៣) | ការអាន AO | អានការចុះបញ្ជីការកាន់កាប់ | ១៦ ប៊ីត | ការអាន |
០៤ (០x០៤) | ការអាន AI | អានការចុះឈ្មោះបញ្ចូល | ១៦ ប៊ីត | ការអាន |
០៥ (០x០៥) | សរសេរ DO មួយ។ | បង្ខំ Single Coil | ផ្តាច់មុខ | កត់ត្រា |
០៦ (០x០៦) | ថតមួយ AO | កំណត់ជាមុនការចុះឈ្មោះតែមួយ | ១៦ ប៊ីត | កត់ត្រា |
15 (0x0F) | ថត DOs ច្រើន។ | បង្ខំ Coils ច្រើន។ | ផ្តាច់មុខ | កត់ត្រា |
16 (0x10) | ថត AOs ច្រើន។ | កំណត់ជាមុនការចុះឈ្មោះច្រើន។ | ១៦ ប៊ីត | កត់ត្រា |
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីអានលទ្ធផលដាច់ដោយឡែក? ពាក្យបញ្ជា 0x01
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីអាន DO តម្លៃលទ្ធផលឌីជីថល។
សំណើ PDU បញ្ជាក់អាសយដ្ឋានចាប់ផ្តើមនៃការចុះឈ្មោះ DO ដំបូង និងចំនួនជាបន្តបន្ទាប់នៃតម្លៃ DO ដែលត្រូវការ។ នៅក្នុង PDUs តម្លៃ DO ត្រូវបានដោះស្រាយដោយចាប់ផ្តើមពីសូន្យ។
តម្លៃ DO នៅក្នុងការឆ្លើយតបគឺក្នុងមួយបៃហើយត្រូវគ្នាទៅនឹងអត្ថន័យនៃប៊ីត។
តម្លៃប៊ីតត្រូវបានកំណត់ជា 1 = ON និង 0 = OFF ។
ប៊ីតសំខាន់តិចបំផុតនៃបៃទិន្នន័យដំបូងមានតម្លៃ DO ដែលអាសយដ្ឋានត្រូវបានបញ្ជាក់នៅក្នុងសំណើ។ តម្លៃ DO ដែលនៅសេសសល់បន្តក្នុងលំដាប់ឡើងទៅតម្លៃបៃដ៏សំខាន់បំផុត។ ទាំងនោះ។ ពីស្តាំទៅឆ្វេង។
ប្រសិនបើតម្លៃ DO តិចជាងប្រាំបីត្រូវបានស្នើសុំ ប៊ីតដែលនៅសល់ក្នុងការឆ្លើយតបនឹងត្រូវបានបំពេញដោយសូន្យ (បៃពីតិចទៅទិសដៅបៃខ្ពស់)។ វាលរាប់បៃ ចំនួនបៃបន្ថែមទៀតបង្ហាញពីចំនួនបៃនៃទិន្នន័យពេញលេញនៅក្នុងការឆ្លើយតប។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
06 | 04 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
01 | លេខកូដមុខងារ | 01 | លេខកូដមុខងារ |
00 | 01 | ចំនួនបៃបន្ថែមទៀត | |
00 | 02 | តម្លៃចុះឈ្មោះ DO 0-1 | |
00 | ចំនួនចុះឈ្មោះ Hi bytes | ||
02 | ចំនួនចុះឈ្មោះ Lo bytes |
ស្ថានភាពនៃលទ្ធផល DO0-1 ត្រូវបានបង្ហាញជាតម្លៃនៃបៃ 02 hex ឬនៅក្នុង ប្រព័ន្ធគោលពីរ 0000 0010.
តម្លៃ DO1 នឹងស្ថិតនៅទីពីរពីខាងស្តាំ ហើយតម្លៃ DO0 នឹងជាតម្លៃទីមួយពីខាងស្តាំ (LSB)។
ប្រាំមួយប៊ីតដែលនៅសល់ត្រូវបានបំពេញដោយសូន្យទៅបៃពេញ ពីព្រោះ ពួកគេមិនត្រូវបានស្នើសុំទេ។
ម៉ូឌុលលទ្ធផលមិនដាច់៖ ioLogik E1211, ET-7060, ADAM-6060
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីអានការបញ្ចូលដាច់ដោយឡែក? ពាក្យបញ្ជា 0x02
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីអានតម្លៃ DI ។
សំណើ និងការឆ្លើយតបសម្រាប់ DI គឺស្រដៀងនឹងសំណើសម្រាប់ DO ។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
06 | 04 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
02 | លេខកូដមុខងារ | 02 | លេខកូដមុខងារ |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte | 01 | ចំនួនបៃបន្ថែមទៀត |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes | 03 | តម្លៃចុះឈ្មោះ DI 0-1 |
00 | ចំនួនចុះឈ្មោះ Hi bytes | ||
02 | ចំនួនចុះឈ្មោះ Lo bytes |
ស្ថានភាពនៃលទ្ធផល DI 0-1 ត្រូវបានបង្ហាញជាតម្លៃនៃបៃ 03 hex ឬក្នុងគោលពីរ 0000 0011 ។
តម្លៃនៃ DI1 នឹងស្ថិតនៅទីពីរពីខាងស្តាំ ហើយតម្លៃនៃ DI0 នឹងស្ថិតនៅទីមួយពីខាងស្តាំ (LSB)។
ប្រាំមួយប៊ីតដែលនៅសល់ត្រូវបានបំពេញដោយសូន្យ។
ម៉ូឌុលបញ្ចូលដាច់ដោយឡែក៖ ioLogik E1210, ET-7053, ADAM-6050
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីអានលទ្ធផលអាណាឡូក? ពាក្យបញ្ជា 0x03
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីអានតម្លៃនៃលទ្ធផលអាណាឡូក AO ។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
06 | 07 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
03 | លេខកូដមុខងារ | 03 | លេខកូដមុខងារ |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte | 04 | ចំនួនបៃបន្ថែមទៀត |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes | 02 | តម្លៃចុះឈ្មោះសួស្តី (AO0) |
00 | ចំនួនចុះឈ្មោះ Hi bytes | 2B | តម្លៃចុះឈ្មោះ Lo (AO0) |
02 | ចំនួនចុះឈ្មោះ Lo bytes | 00 | តម្លៃចុះឈ្មោះសួស្តី (AO1) |
64 | តម្លៃចុះឈ្មោះ Lo (AO1) |
ស្ថានភាពទិន្នផល AO0 ត្រូវបានបង្ហាញជាតម្លៃនៃ byte 02 2B hex ឬ 555 decimal ។
ស្ថានភាពទិន្នផល AO1 ត្រូវបានបង្ហាញជាតម្លៃបៃ 00 64 hex ឬ 100 ទសភាគ។
ម៉ូឌុលបញ្ចូលដាច់ដោយឡែក៖ ioLogik E1210, ET-7053, ADAM-6050
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីអានការបញ្ចូលអាណាឡូក? ពាក្យបញ្ជា 0x04
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីអានតម្លៃនៃការបញ្ចូលអាណាឡូក AI ។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
06 | 07 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
04 | លេខកូដមុខងារ | 04 | លេខកូដមុខងារ |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte | 04 | ចំនួនបៃបន្ថែមទៀត |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes | 00 | តម្លៃចុះឈ្មោះសួស្តី (AI0) |
00 | ចំនួនចុះឈ្មោះ Hi bytes | 0 ក | តម្លៃចុះឈ្មោះ Lo (AI0) |
02 | ចំនួនចុះឈ្មោះ Lo bytes | 00 | តម្លៃចុះឈ្មោះសួស្តី (AI1) |
64 | តម្លៃចុះឈ្មោះ Lo (AI1) |
ស្ថានភាពទិន្នផល AI0 ត្រូវបានបង្ហាញជាតម្លៃបៃ 00 0A hex ឬ 10 ទសភាគ។
ស្ថានភាពទិន្នផល AI1 ត្រូវបានបង្ហាញជាតម្លៃបៃ 00 64 hex ឬ 100 ទសភាគ។
ម៉ូឌុលបញ្ចូលអាណាឡូក៖ ioLogik E1240, ET-7017-10, ADAM-6217
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីសរសេរលទ្ធផលដាច់ដោយឡែក? ពាក្យបញ្ជា 0x05
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីសរសេរតម្លៃ DO មួយ។
តម្លៃ FF 00 hex កំណត់ទិន្នផលទៅ ON ។
តម្លៃ 00 00 hex កំណត់លទ្ធផលទៅជា OFF ។
តម្លៃផ្សេងទៀតទាំងអស់គឺមិនត្រឹមត្រូវទេ ហើយនឹងមិនប៉ះពាល់ដល់ស្ថានភាពទិន្នផលទេ។
ការឆ្លើយតបធម្មតាចំពោះសំណើបែបនេះគឺជាអេកូ (ការស្នើសុំម្តងទៀតក្នុងការឆ្លើយតប) ត្រឡប់មកវិញបន្ទាប់ពីស្ថានភាព DO ត្រូវបានផ្លាស់ប្តូរ។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
06 | 06 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
05 | លេខកូដមុខងារ | 05 | លេខកូដមុខងារ |
00 | សួស្តីចុះឈ្មោះអាសយដ្ឋាន byte | 00 | សួស្តីចុះឈ្មោះអាសយដ្ឋាន byte |
01 | ចុះឈ្មោះអាសយដ្ឋាន Lo byte | 01 | ចុះឈ្មោះអាសយដ្ឋាន Lo byte |
អេហ្វ | សួស្តីតម្លៃបៃ | អេហ្វ | សួស្តីតម្លៃបៃ |
00 | តម្លៃ Lo byte | 00 | តម្លៃ Lo byte |
ម៉ូឌុលលទ្ធផលមិនដាច់៖ ioLogik E1211, ET-7060, ADAM-6060
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីសរសេរលទ្ធផលអាណាឡូក? ពាក្យបញ្ជា 0x06
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីសរសេរតម្លៃមួយនៃទិន្នផលអាណាឡូក AO ។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
06 | 06 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
06 | លេខកូដមុខងារ | 06 | លេខកូដមុខងារ |
00 | សួស្តីចុះឈ្មោះអាសយដ្ឋាន byte | 00 | សួស្តីចុះឈ្មោះអាសយដ្ឋាន byte |
01 | ចុះឈ្មោះអាសយដ្ឋាន Lo byte | 01 | ចុះឈ្មោះអាសយដ្ឋាន Lo byte |
55 | សួស្តីតម្លៃបៃ | 55 | សួស្តីតម្លៃបៃ |
អេហ្វ | តម្លៃ Lo byte | អេហ្វ | តម្លៃ Lo byte |
ស្ថានភាពទិន្នផល AO0 បានផ្លាស់ប្តូរទៅជា 55 FF hex ឬ 22015 ជាទសភាគ។
ម៉ូឌុលទិន្នផលអាណាឡូក៖ ioLogik E1241, ET-7028, ADAM-6224
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីសរសេរម្ជុលឌីជីថលច្រើន? ពាក្យបញ្ជា 0x0F
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីសរសេរតម្លៃ DO ច្រើន។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
08 | 06 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
0F | លេខកូដមុខងារ | 0F | លេខកូដមុខងារ |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte | 00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes | 00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes |
00 | ចំនួនចុះឈ្មោះ Hi bytes | 00 | |
02 | ចំនួនចុះឈ្មោះ Lo bytes | 02 | |
01 | ចំនួនបៃបន្ថែមទៀត | ||
02 | តម្លៃបៃ |
ស្ថានភាពលទ្ធផល DO1 បានផ្លាស់ប្តូរពី OFF ទៅ ON ។
ស្ថានភាពលទ្ធផល DO0 នៅតែបិទ។
ម៉ូឌុលលទ្ធផលមិនដាច់៖ ioLogik E1211, ET-7060, ADAM-6060
តើធ្វើដូចម្តេចដើម្បីផ្ញើពាក្យបញ្ជា Modbus TCP ដើម្បីសរសេរម្ជុលអាណាឡូកច្រើន? ពាក្យបញ្ជា 0x10
ពាក្យបញ្ជានេះត្រូវបានប្រើដើម្បីសរសេរតម្លៃទិន្នផលអាណាឡូក AO ច្រើន។
បៃ | ស្នើសុំ | បៃ | ចម្លើយ |
---|---|---|---|
(ហេក) | ឈ្មោះវាល | (ហេក) | ឈ្មោះវាល |
01 | លេខសម្គាល់ប្រតិបត្ដិការ | 01 | លេខសម្គាល់ប្រតិបត្ដិការ |
02 | 02 | ||
00 | លេខសម្គាល់ពិធីការ | 00 | លេខសម្គាល់ពិធីការ |
00 | 00 | ||
00 | ប្រវែងសារ | 00 | ប្រវែងសារ |
0 ខ | 06 | ||
01 | អាសយដ្ឋានឧបករណ៍ | 01 | អាសយដ្ឋានឧបករណ៍ |
10 | លេខកូដមុខងារ | 10 | លេខកូដមុខងារ |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte | 00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Hi byte |
00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes | 00 | អាសយដ្ឋាននៃការចុះឈ្មោះដំបូង Lo bytes |
00 | ចំនួនចុះឈ្មោះ Hi bytes | 00 | ចំនួននៃការកត់ត្រា reg ។ សួស្តី byte |
02 | ចំនួនចុះឈ្មោះ Lo bytes | 02 | ចំនួននៃការកត់ត្រា reg ។ ឡូយបៃ |
04 | ចំនួនបៃបន្ថែមទៀត | ||
00 | សួស្តីតម្លៃ AO0 បៃ | ||
0 ក | Lo តម្លៃ AO0 បៃ | ||
01 | សួស្តីតម្លៃ AO1 បៃ | ||
02 | Lo តម្លៃ AO1 បៃ |
ស្ថានភាពនៃលទ្ធផល AO0 បានផ្លាស់ប្តូរទៅជា 00 0A hex ឬ 10 ក្នុងទសភាគ។
នៅក្នុងមេរៀនទី 48 ខ្ញុំបានបង្ហាញពីឧទាហរណ៍នៃពិធីការផ្លាស់ប្តូរទិន្នន័យមិនស្តង់ដារតាមរយៈចំណុចប្រទាក់ UART ។ ដូចសព្វមួយដង អ្វីគ្រប់យ៉ាងដែលមិនមានលក្ខណៈស្តង់ដារអនុញ្ញាតឱ្យអ្នកបង្កើនប្រសិទ្ធភាពការប្រតិបត្តិភារកិច្ច ហើយអ្វីគ្រប់យ៉ាងជាសកលជួយសម្រួលដល់ការអភិវឌ្ឍន៍កិច្ចការ។
មានពិធីការទំនាក់ទំនង ModBus ដ៏សាមញ្ញ និងជាសកល ដែលទិន្នន័យ និងមុខងារលែងត្រូវការតទៅទៀតត្រូវបានរក្សាទុកឱ្យតិចបំផុត។ នេះប្រហែលជាពិធីការទូទៅបំផុតសម្រាប់រៀបចំប្រព័ន្ធចែកចាយតូចៗ។ នៅក្នុងមេរៀនជាបន្តបន្ទាប់ ខ្ញុំនឹងអនុវត្តការផ្លាស់ប្តូរទិន្នន័យរវាងឧបករណ៍ដោយប្រើពិធីការនេះ។
ការពិពណ៌នាទូទៅនៃពិធីការ។
ModBus ពិធីការបើកការផ្លាស់ប្តូរទិន្នន័យនៅក្នុងបណ្តាញមូលដ្ឋានតូច។ តាមក្បួនវាត្រូវបានប្រើដើម្បីបញ្ជូនទិន្នន័យតាមរយៈចំណុចប្រទាក់ RS-232, RS-485, RS-422 នៅក្នុងបណ្តាញ TCP/IP, UDP ។ ដោយសារតែភាពសាមញ្ញ និងភាពបត់បែនរបស់វា ModBus បានរីករាលដាល ហើយបានក្លាយជាស្តង់ដារជាក់ស្តែងនៅក្នុងប្រព័ន្ធកុំព្យូទ័រចែកចាយតូចៗ។ ឧបករណ៍បញ្ជាទំនើបស្ទើរតែទាំងអស់គាំទ្របណ្តាញ ModBus ។
នៅក្នុងបណ្តាញ ModBus ឧបករណ៍បញ្ជាត្រូវបានភ្ជាប់ជាធម្មតាដោយប្រើ "Common Bus" topology ។ អន្តរកម្មនៃឧបករណ៍បញ្ជាកើតឡើងស្របតាមគំរូមេ - ទាសករ (មេ - ទាសករ) ។
មានឧបករណ៍សំខាន់មួយនៅក្នុងបណ្តាញ - មេ។ ហើយក៏មានឧបករណ៍ទាសករជាច្រើនផងដែរ - ទាសករ។ ការផ្លាស់ប្តូរអាចត្រូវបានផ្តួចផ្តើមដោយឧបករណ៍មេប៉ុណ្ណោះ។
ប្រតិបត្តិការមួយ (លំដាប់នៃប្រតិបត្តិការកំឡុងពេលផ្លាស់ប្តូរទិន្នន័យ) មានសំណើ និងការឆ្លើយតប។
ឧបករណ៍មេអាចដោះស្រាយសំណើទៅកាន់ឧបករណ៍បញ្ជាទាសករ ឬផ្តួចផ្តើមគំនិត សារផ្សាយសម្រាប់ឧបករណ៍ទាសករទាំងអស់ក្នុងពេលដំណាលគ្នា។
ឧបករណ៍ទាសករ ដោយបានកំណត់អាសយដ្ឋានរបស់វានៅក្នុងសំណើ បង្កើតការឆ្លើយតប។
សំណើពីឧបករណ៍មេត្រូវតែមានលេខកូដមុខងារ ពោលគឺឧ។ អ្វីដែលត្រូវធ្វើ។ ដូចគ្នានេះផងដែរ អាស្រ័យលើមុខងារ សំណើអាចមានទិន្នន័យ។
មាន 3 វ៉ារ្យ៉ង់នៃពិធីការ ModBus ។
- ModBus ASCII - ពិធីការអត្ថបទ។ វាប្រើតែ តួអក្សរ ASCII. បៃនីមួយៗត្រូវបានបញ្ជូនជាតួអក្សរគោលដប់ប្រាំពីរ។
- ModBus RTU គឺជាពិធីការលេខ។ ទិន្នន័យត្រូវបានផ្ទេរទៅ គោលពីរ. បៃដែលបញ្ជូនតាមបណ្តាញគឺជាលេខពិធីការ។
- ModBus TCP គឺជាពិធីការសម្រាប់ការបញ្ជូនទិន្នន័យនៅក្នុងបណ្តាញ TCP/IP ។
លេខនិង ពិធីការអត្ថបទខ្ញុំបានប្រៀបធៀបត្រឡប់មកវិញ។ នៅក្នុងលក្ខខណ្ឌនៃការអនុវត្ត និងល្បឿនផ្លាស់ប្តូរ ពិធីការលេខពិតជាមានអត្ថប្រយោជន៍មួយ។ នៅក្នុងមេរៀននាពេលខាងមុខ យើងនឹងប្រើ ModBus RTU ។ ព័ត៌មានខាងក្រោមនៅក្នុងមេរៀននេះត្រូវបានឧទ្ទិសដល់ជម្រើសនេះ។
ពិធីការ ModBus RTU ។
ឧបករណ៍ (ឧបករណ៍បញ្ជា) ត្រូវបានភ្ជាប់ទៅបណ្តាញដោយប្រើ "Common Bus" topology ។ ស្តង់ដារ ModBus អនុញ្ញាត ធ្វើការជាមួយគ្នាឧបករណ៍បញ្ជារហូតដល់ 247 ។
តាមពិតឧបករណ៍បញ្ជានីមួយៗមានទិន្នន័យដែលឧបករណ៍ផ្លាស់ប្តូរ។
ស្តង់ដារ ModBus កំណត់ប្រភេទទិន្នន័យចំនួន 4 ។
ប្រភេទទិន្នន័យ | ទំហំ | ប្រតិបត្តិការដែលមានសុពលភាព |
ការចុះឈ្មោះទង់ជាតិ (Coils) | 1 ប៊ីត | សរសេរនិងអាន |
ធាតុបញ្ចូលដាច់ដោយឡែក | 1 ប៊ីត | ការអាន |
ការចុះបញ្ជីការកាន់កាប់ | ១៦ ប៊ីត | សរសេរនិងអាន |
ការចុះឈ្មោះបញ្ចូល | ១៦ ប៊ីត | ការអាន |
ការបំបែកមុខងារនេះនៃទិន្នន័យត្រូវបានលុប ហើយមិនត្រូវបានអនុវត្តទេ។ ទិន្នន័យទាំងអស់ត្រូវបានអាននៅទីបំផុតពីអង្គចងចាំរបស់ឧបករណ៍បញ្ជា ហើយវាមិនសំខាន់ប៉ុន្មានទេ ដែលជាកន្លែងដែលពួកគេបានចូលទៅក្នុងវាពីធាតុបញ្ចូល ឬពីបញ្ជីបញ្ចូល។
នៅក្នុងការអនុវត្ត មានតែការចុះបញ្ជីការកាន់កាប់ទាំងនេះប៉ុណ្ណោះដែលត្រូវបានប្រើប្រាស់។ ទិន្នន័យត្រូវបានចូលប្រើតាមរយៈអាសយដ្ឋាន 16 ប៊ីត។ នៅទីបំផុត៖
- ទិន្នន័យនៅក្នុងឧបករណ៍បញ្ជានីមួយៗគឺជាតារាងនៃការចុះឈ្មោះ 16 ប៊ីត។
- តារាងទិន្នន័យអាចមានរហូតដល់ 65536 ធាតុ;
- លេខនៃធាតុចាប់ផ្តើមពី 0 ។
ឧបករណ៍មេចាប់ផ្តើមប្រតិបត្តិការ - ការផ្លាស់ប្តូរទិន្នន័យ។ ប្រតិបត្តិការអាចជាបុគ្គល (ការស្នើសុំការឆ្លើយតប) ឬការចាក់ផ្សាយ (ឧបករណ៍ទាសករទាំងអស់ត្រូវបានដោះស្រាយក្នុងពេលដំណាលគ្នា)។ ប្រតិបត្តិការមួយមានស៊ុមសំណើមួយ និងស៊ុមឆ្លើយតបមួយ។ នៅក្នុងប្រតិបត្តិការផ្សាយ មានតែស៊ុមសំណើប៉ុណ្ណោះដែលត្រូវបានប្រើប្រាស់។
ទិន្នន័យស៊ុមត្រូវបានបញ្ជូនជាស្ទ្រីមបន្ត។ ការផ្អាករវាងការបញ្ជូនទិន្នន័យមិនគួរលើសពីពេលបញ្ជូន 1.5 តួអក្សរទេ។ សញ្ញានៃស៊ុមថ្មីគឺអវត្តមាននៃការផ្លាស់ប្តូរនៅក្នុងបណ្តាញ (ស្ងាត់) ក្នុងអំឡុងពេលដែលត្រូវការសម្រាប់ការបញ្ជូន 3.5 តួអក្សរ។ ប្រសិនបើក្នុងអំឡុងពេលនេះខ្សែបណ្តាញស្ថិតក្នុងស្ថានភាពអសកម្ម នោះឧបករណ៍ទាសករយល់ឃើញថាទិន្នន័យដែលទទួលបានដំបូងជាការចាប់ផ្តើមនៃស៊ុម។
ជាទូទៅ ស៊ុមសំណើមានទម្រង់ដូចខាងក្រោម។
អាស័យដ្ឋាន (8 ប៊ីត) ។
ស៊ុមចាប់ផ្តើមដោយវាលអាសយដ្ឋានដែលមាន 8 ប៊ីត។ មានអាសយដ្ឋានរបស់ឧបករណ៍ទាសករ ដែលសារពីមេគឺមានបំណង។ ឧបករណ៍ទាសករនីមួយៗត្រូវតែមានអាសយដ្ឋានតែមួយគត់ពីលេខ 1 ដល់លេខ 247។ ហើយមានតែឧបករណ៍ slave ដែលមានអាសយដ្ឋានប៉ុណ្ណោះដែលត្រូវឆ្លើយតបទៅនឹងសំណើរបស់មេ។ ចម្លើយប្រាប់ម្ចាស់ថាទាសករណាកំពុងទាក់ទង។
អាសយដ្ឋាន 0 ត្រូវបានប្រើក្នុងរបៀបផ្សាយ។ ទាសករទាំងអស់អនុវត្តមុខងារដែលបានបញ្ជាក់នៅក្នុងសំណើ ប៉ុន្តែកុំផ្ញើការទទួលស្គាល់។
មុខងារ (៨ ប៊ីត) ។
វាលមុខងារប្រាប់ slave ដែលបានអាសយដ្ឋានថាតើប្រតិបត្តិការណាដែលត្រូវអនុវត្ត។
ប៊ីតអនុគមន៍ដែលសំខាន់បំផុតត្រូវបានកំណត់ទៅ 1 ក្នុងការឆ្លើយតបរបស់ទាសករ ដើម្បីប្រាប់មេថាប្រតិបត្តិការត្រូវបានបញ្ចប់ដោយកំហុស។ ប្រសិនបើប្រតិបត្តិការបានជោគជ័យ ប៊ីតដ៏សំខាន់បំផុតគឺ 0 ។
- ពាក្យបញ្ជាស្តង់ដារ។ កូដដែលកំណត់ដោយស្តង់ដារពិធីការ ModBus ។
- ពាក្យបញ្ជាផ្ទាល់ខ្លួន។ សម្រាប់លេខកូដ 65...72 និង 100...110 អ្នកប្រើប្រាស់អាចកំណត់មុខងារតាមអំពើចិត្ត។
- ក្រុមដែលបានបម្រុងទុក។ ទាំងនេះគឺជាលេខកូដដែលមិនត្រូវបានកំណត់ពីដំបូងដោយស្តង់ដារ ប៉ុន្តែត្រូវបានប្រើប្រាស់រួចហើយនៅក្នុងឧបករណ៍ពីក្រុមហ៊ុនផលិតផ្សេងៗគ្នា។
ឧបករណ៍បញ្ជា ModBus ភាគច្រើនប្រើតែ 3 មុខងារប៉ុណ្ណោះ។
ទម្រង់ឆ្លើយតបអាស្រ័យលើមុខងារ។ ក្នុងករណីជាច្រើន ការឆ្លើយតបធម្មតាធ្វើឡើងវិញនូវសំណើទាំងមូល ឬមួយផ្នែក។
ទិន្នន័យ (N * 8 ប៊ីត) ។
វាលទិន្នន័យមានព័ត៌មានដែលត្រូវការដោយឧបករណ៍បញ្ជា slave ដើម្បីអនុវត្ត មុខងារដែលបានផ្តល់ឱ្យឬវាលមានទិន្នន័យបញ្ជូនដោយឧបករណ៍ទាសករតាមសំណើរបស់មេ។ ប្រវែង និងទម្រង់នៃវាលទិន្នន័យអាស្រ័យលើកូដមុខងារ។ សារខ្លះអាចបាត់ទិន្នន័យ។
ទិន្នន័យនីមួយៗមាន 16 ប៊ីត (2 បៃ)។ ទិន្នន័យត្រូវបានបញ្ជូនដោយបៃដ៏សំខាន់បំផុតដំបូង។ ឧទាហរណ៍ ការផ្ទេរការចុះឈ្មោះតាមលំដាប់លំដោយដែលមានអាសយដ្ឋាន 0 និង 1 គួរតែកើតឡើងដូចខាងក្រោម៖
- បៃខ្ពស់នៃការចុះឈ្មោះ 0 ->
- បៃទាបនៃការចុះឈ្មោះ 0 ->
- បៃខ្ពស់នៃការចុះឈ្មោះ 1 ->
- បៃទាបនៃការចុះឈ្មោះ 1 -> ។
នៅពេលបញ្ជូនលេខ 4 បៃ ឧទាហរណ៍ជាមួយចំណុចអណ្តែត លំដាប់គឺដូចគ្នា។ ចំនួនត្រូវបានបែងចែកទៅជាការចុះឈ្មោះ 16 ប៊ីតចំនួនពីរ ហើយនៅក្នុងពួកវានីមួយៗ បៃដ៏សំខាន់បំផុតត្រូវបានបញ្ជូនមុនគេ (1-> 0-> 3-> 2->)។
Checksum (16 ប៊ីត) ។
ប្រអប់ត្រួតពិនិត្យភាពត្រឹមត្រូវនៃទិន្នន័យសារ។ អនុញ្ញាតឱ្យអ្នកពិនិត្យមើលស៊ុមសម្រាប់កំហុស។ វានិយាយអំពីអំពីកំហុសដែលលេចឡើងកំឡុងពេលផ្ទេរទិន្នន័យ។
ខ្ញុំនឹងព្យាយាមអោយអស់ពីសមត្ថភាព គ្រោងទូទៅនិយាយអំពីលេខកូដត្រួតពិនិត្យ។ វាជាការប្រសើរក្នុងការរំលងកថាខណ្ឌនេះ។ ក្បាលរបស់អ្នកអាចបែក។ ពេលខ្ញុំប៉ះប្រធានបទនេះ ខ្ញុំតែងតែឈឺក្បាល។ នៅមេរៀនបន្ទាប់ខ្ញុំនឹងណែនាំ ការអនុវត្តជាក់ស្តែងការគណនាកូដគ្រប់គ្រង ModBus ។
លេខកូដការប្រើប្រាស់ដដែលៗ (CRC) ត្រូវបានប្រើជាមូលប្បទានប័ត្រ។ ប៊ីតទាំងអស់នៃស៊ុមបញ្ជូនត្រូវបានប្រមូលទៅជាដ៏ធំ លេខគោលពីរ. វាត្រូវបានបែងចែកដោយកូដនៃពហុនាមបង្កើត។ ផ្នែកដែលនៅសល់គឺជាលេខកូដត្រួតពិនិត្យ។
ម៉ូឌុលនព្វន្ធពហុនាម 2 ត្រូវបានប្រើ នេះមានន័យថា សកម្មភាពទាំងអស់នៅពេលគណនា CRC គឺ ប្រតិបត្តិការនព្វន្ធគ្មានការផ្ទេរ។ ការដក និងបូកកើតឡើងដោយប្រយោល ដោយមិនគិតពីការយក ដែលជាមូលហេតុដែលប្រតិបត្តិការទាំងនេះផ្តល់លទ្ធផលដូចគ្នា ហើយអាចត្រូវបានជំនួសដោយប្រតិបត្តិការ "ផ្តាច់មុខ ឬ" ។ នៅពេលបែងចែក ជំនួសឱ្យការដកផ្នែកពីភាគលាភ ប្រតិបត្តិការ "ផ្តាច់មុខ ឬ" ក៏ត្រូវបានប្រើប្រាស់ផងដែរ។ នេះ។ គោលការណ៍ទូទៅការគណនា CRC ។ នៅក្នុងការអនុវត្ត ការគណនាត្រូវបានអនុវត្តដោយប្រើក្បួនដោះស្រាយដែលមានប្រសិទ្ធភាពជាង។
មូលប្បទានប័ត្របញ្ចប់ស៊ុមបញ្ជូន។ ដោយបានទទួលស៊ុម ឧបករណ៍ slave ដោយប្រើក្បួនដោះស្រាយដូចគ្នា គណនា checksum សម្រាប់ទិន្នន័យដែលទទួលបាន ហើយប្រៀបធៀបវាជាមួយលេខកូដត្រួតពិនិត្យដែលបានបញ្ជូននៅចុងបញ្ចប់នៃស៊ុម។ ជាលទ្ធផល ភាពត្រឹមត្រូវនៃទិន្នន័យស៊ុមត្រូវបានបញ្ជាក់។
ស្តង់ដារ ModBus RTU ប្រើស្តង់ដារ កូដរង្វិល CRC-16 ជាមួយការបង្កើតពហុនាម X 16 +X 15 +X 2 +1 ។ នេះគឺជាលេខកូដ 16 ប៊ីត មេគុណគោលពីរគឺ 1 1000 0000 0000 0101 (8005h ក្នុងលេខគោលដប់ប្រាំមួយ)។
សារត្រូវបានចាត់ទុកជាលេខគោលពីរបន្តបន្ទាប់គ្នា ដែលប៊ីតសំខាន់បំផុតត្រូវបានបញ្ជូនមុនគេ។ ចំនួននេះត្រូវបានគុណនឹង X 16 (ប្តូរទៅឆ្វេងដោយ 16 កន្លែង) ហើយចែកដោយ X 16 +X 15 +X 2 +1 (1 1000 0000 0000 0101)។ នៅសល់ 16 ប៊ីត (បានចាប់ផ្ដើមជាមុនជាមួយទាំងអស់) គឺជាកូដគ្រប់គ្រងសារ។
ដោះស្រាយកំហុសឡូជីខល។
បន្ថែមពីលើកំហុសដែលទាក់ទងនឹងការខូចទិន្នន័យកំឡុងពេលបញ្ជូន វាអាចមានកំហុសឡូជីខលនៅពេលដែលសំណើត្រូវបានទទួលដោយគ្មានកំហុស ប៉ុន្តែមិនអាចប្រតិបត្តិបានទេ។ ជាធម្មតា កំហុសបែបនេះត្រូវបានភ្ជាប់ជាមួយអាសយដ្ឋាន ទិន្នន័យ លេខកូដ ជាដើម។ ឧបករណ៍បញ្ជា ModBus ភាគច្រើនគាំទ្រប្រភេទកំហុសខាងក្រោម។
លេខកូដកំហុស | ឈ្មោះ | ការពិពណ៌នា |
01 | មុខងារខុសច្បាប់ | កូដមុខងារមិនត្រូវបានគាំទ្រនៅក្នុងឧបករណ៍បញ្ជាទេ។ |
02 | អាសយដ្ឋានទិន្នន័យខុសច្បាប់ | អាសយដ្ឋានទិន្នន័យមិនត្រឹមត្រូវ |
03 | តម្លៃទិន្នន័យខុសច្បាប់ | តម្លៃទិន្នន័យមិនត្រឹមត្រូវ |
04 | ការបរាជ័យឧបករណ៍ទាសករ | កំហុសបានកើតឡើងខណៈពេលកំពុងដំណើរការ |
ប្រសិនបើកំហុសកើតឡើងនៅក្នុងការឆ្លើយតប ប៊ីតដ៏សំខាន់បំផុតត្រូវបានកំណត់នៅក្នុងវាលកូដមុខងារ ហើយបន្ទាប់មកលេខកូដកំហុសត្រូវបានបញ្ជូនជំនួសឱ្យទិន្នន័យធម្មតា។
ការពិនិត្យលម្អិតនៃមុខងារ។
មុខងារ 03 - អានការចុះឈ្មោះ។
ប្រើដើម្បីអានតម្លៃនៃការចុះបញ្ជីការកាន់ច្រើន។ សំណើបញ្ជូនអាសយដ្ឋាននៃធាតុទីមួយនៃតារាងចុះឈ្មោះ តម្លៃដែលត្រូវតែអាន និងចំនួនចុះឈ្មោះដែលត្រូវអាន។ 16 ត្រូវបានប្រើសម្រាប់អាសយដ្ឋាន និងបរិមាណ លេខប៊ីត. បៃដ៏សំខាន់បំផុតត្រូវបានបញ្ជូនមុន។
ទិន្នន័យដែលបានស្នើមាននៅក្នុងការឆ្លើយតប។ មុនពេលប្លុកទិន្នន័យ បៃត្រូវបានបញ្ជូនដែលមានចំនួនទិន្នន័យដែលបានអានជាបៃ។
ស្នើសុំទម្រង់សម្រាប់មុខងារនៃការអានបញ្ជីផ្ទុក។
លេខបៃ | ចំនួនបៃក្នុងប៉ារ៉ាម៉ែត្រ | ប៉ារ៉ាម៉ែត្រ | ||
0 | 0 | អាសយដ្ឋានឧបករណ៍បញ្ជា | 01 | 01 |
1 | 0 | មុខងារ | 03 | 03 |
2 | 1 | អាសយដ្ឋានចាប់ផ្តើមចុះឈ្មោះ | 0008 | 00 |
3 | 0 | 08 | ||
4 | 1 | ចំនួនចុះឈ្មោះ | 0002 | 00 |
5 | 0 | 02 | ||
6 | 1 | ពិនិត្យផលបូក | ៤៥ ស៊ី ៩ | 45 |
7 | 0 | គ៩ |
ការឆ្លើយតប (អាសយដ្ឋានទាសករ កូដមុខងារ ចំនួនបៃបានអាន ចុះឈ្មោះតម្លៃ)។
លេខបៃ | ចំនួនបៃក្នុងប៉ារ៉ាម៉ែត្រ | ប៉ារ៉ាម៉ែត្រ | ឧទាហរណ៍នៃការអានការចុះឈ្មោះជាមួយអាសយដ្ឋាន 8 និង 9 | |
0 | 0 | អាសយដ្ឋានឧបករណ៍បញ្ជា | 01 | 01 |
1 | 0 | មុខងារ | 03 | 03 |
2 | 0 | ចំនួនបៃដែលបានអាន | 04 | 04 |
3 | 1 | តម្លៃចុះឈ្មោះ 8 | 12A5 | 12 |
4 | 0 | ក៥ | ||
5 | 1 | តម្លៃចុះឈ្មោះ ៩ | E020 | អ៊ី០ |
6 | 0 | 20 | ||
7 | 1 | ពិនិត្យផលបូក | A770 | ក៧ |
8 | 0 | 70 |
អនុគមន៍ 06 - សរសេរទៅបញ្ជីកាន់មួយ។
ធ្លាប់សរសេរទៅចុះឈ្មោះតែមួយ។ សំណើឆ្លងកាត់អាសយដ្ឋានចុះឈ្មោះ និងតម្លៃសម្រាប់វា។ ប្រសិនបើជោគជ័យ អ្នកគ្រប់គ្រងទាសករឆ្លើយតបជាមួយនឹងច្បាប់ចម្លងនៃសំណើ។
ទម្រង់សំណើមុខងារ សរសេរការកាន់តែមួយ។
លេខបៃ | ចំនួនបៃក្នុងប៉ារ៉ាម៉ែត្រ | ប៉ារ៉ាម៉ែត្រ | ||
0 | 0 | អាសយដ្ឋានឧបករណ៍បញ្ជា | 01 | 01 |
1 | 0 | មុខងារ | 06 | 06 |
2 | 1 | ចុះឈ្មោះអាសយដ្ឋាន | 0009 | 00 |
3 | 0 | 09 | ||
4 | 1 | ចុះឈ្មោះតម្លៃ | 12A5 | 12 |
5 | 0 | ក៥ | ||
6 | 1 | ពិនិត្យផលបូក | 9513 | 95 |
7 | 0 | 13 |
ឆ្លើយតប (ស្នើសុំម្តងទៀត) ។
លេខបៃ | ចំនួនបៃក្នុងប៉ារ៉ាម៉ែត្រ | ប៉ារ៉ាម៉ែត្រ | ឧទាហរណ៍នៃការសរសេរតម្លៃ 12A5 ដើម្បីចុះឈ្មោះ ៩ | |
0 | 0 | អាសយដ្ឋានឧបករណ៍បញ្ជា | 01 | 01 |
1 | 0 | មុខងារ | 06 | 06 |
2 | 1 | ចុះឈ្មោះអាសយដ្ឋាន | 0009 | 00 |
3 | 0 | 09 | ||
4 | 1 | ចុះឈ្មោះតម្លៃ | 12A5 | 12 |
5 | 0 | ក៥ | ||
6 | 1 | ពិនិត្យផលបូក | 9513 | 95 |
7 | 0 | 13 |
អនុគមន៍ 16 – សរសេរតម្លៃទៅបញ្ជីផ្ទុក។
ប្រើដើម្បីសរសេរទៅកាន់ការចុះឈ្មោះជាច្រើនដែលមានទីតាំងនៅតាមលំដាប់លំដោយក្នុងតារាងមួយ។
សំណើបញ្ជូនអាសយដ្ឋាននៃការចុះឈ្មោះដំបូងចំនួននៃការចុះឈ្មោះនិងតម្លៃសម្រាប់ពួកគេ។
ការឆ្លើយតបនឹងត្រឡប់អាសយដ្ឋានចាប់ផ្តើម និងចំនួនចុះឈ្មោះដែលបានកែប្រែ។
ស្នើសុំទម្រង់សម្រាប់មុខងារសរសេរបញ្ជីផ្ទុក។
លេខបៃ | ចំនួនបៃក្នុងប៉ារ៉ាម៉ែត្រ | ប៉ារ៉ាម៉ែត្រ | ||
0 | 0 | អាសយដ្ឋានឧបករណ៍បញ្ជា | 01 | 01 |
1 | 0 | មុខងារ | 10 | 10 |
2 | 1 | អាសយដ្ឋានចាប់ផ្តើមចុះឈ្មោះ | 0008 | 00 |
3 | 0 | 08 | ||
4 | 1 | ចំនួនចុះឈ្មោះ | 0002 | 00 |
5 | 0 | 02 | ||
6 | 0 | រាប់បៃ | 04 | 04 |
7 | 1 | តម្លៃចុះឈ្មោះ 8 | 12A5 | 12 |
8 | 0 | ក៥ | ||
9 | 1 | តម្លៃចុះឈ្មោះ ៩ | E020 | អ៊ី០ |
10 | 0 | 20 | ||
11 | 1 | ពិនិត្យផលបូក | AF4A | A.F. |
12 | 0 | ៤ ក |
ការឆ្លើយតប (អាសយដ្ឋានទាសករ លេខកូដមុខងារ អាសយដ្ឋានចាប់ផ្តើម និងចំនួនចុះឈ្មោះ)។
លេខបៃ | ចំនួនបៃក្នុងប៉ារ៉ាម៉ែត្រ | ប៉ារ៉ាម៉ែត្រ | ឧទាហរណ៍នៃការសរសេរការចុះឈ្មោះជាមួយអាសយដ្ឋាន 8 និង 9 | |
0 | 0 | អាសយដ្ឋានឧបករណ៍បញ្ជា | 01 | 01 |
1 | 0 | មុខងារ | 10 | 10 |
2 | 1 | អាសយដ្ឋានចាប់ផ្តើមចុះឈ្មោះ | 0008 | 00 |
3 | 0 | 08 | ||
4 | 1 | ចំនួនចុះឈ្មោះ | 0002 | 00 |
5 | 0 | 02 | ||
6 | 1 | ពិនិត្យផលបូក | C00A | C0 |
7 | 0 | 0 ក |
ModBus និងពិធីការឯកទេស។
ឥឡូវនេះអ្នកអាចប្រៀបធៀបពិធីការ ModBus ជាមួយនឹងពិធីការឯកទេសពី .
លេខបៃ | ទម្រង់លេខ | គោលបំណង |
0 … 3 | អណ្តែត | សីតុណ្ហភាព |
4 … 7 | អណ្តែត | វ៉ុល |
8 | បៃ | ស្ថានភាពប៊ូតុង |
9 | បៃ | កក់ទុក |
10, 11 | int | Checksum (ផលបូកនៃបៃ 0 ... 9 ^ 0xa1e3) |
បើប្រៀបធៀបទៅនឹងពិធីការជាក់លាក់៖
- ModBus យឺតជាង និងមានដំណើរការទាបជាង។ ដើម្បីទទួលបានចំនួនព័ត៌មានដូចគ្នា ទិន្នន័យជាច្រើនទៀតត្រូវបានបញ្ជូនតាមបណ្តាញ។
- ការអនុវត្តរបស់វាគឺពិបាកជាង។ ត្រូវការ microcontroller និងធនធានបណ្តាញបន្ថែមទៀត។
ប៉ុន្តែគុណសម្បត្តិគឺនៅក្នុងករណីជាច្រើនដែលសំខាន់ជាង។
- ដោយសារតែការឆែកឆេរស្មុគ្រស្មាញជាងមុន និងព័ត៌មានមិនប្រក្រតី កំហុសបណ្តាញត្រូវបានកំណត់កាន់តែគួរឱ្យទុកចិត្ត ហើយភាពជឿជាក់នៃទិន្នន័យគឺខ្ពស់ជាង។
- បណ្តាញត្រូវបានពង្រីកយ៉ាងងាយស្រួល។ វាងាយស្រួលណាស់ក្នុងការបន្ថែមឧបករណ៍ថ្មី។
- ModBus គឺជាពិធីការស្តង់ដារ។ ឧបករណ៍បញ្ជាជាច្រើនពីក្រុមហ៊ុនផលិតផ្សេងៗគ្នាគាំទ្រវា។
ប្រហែល មូលហេតុចម្បងការប្រើប្រាស់ពិធីការមិនស្តង់ដារមានន័យថា ធនធានកុំព្យូទ័រមិនគ្រប់គ្រាន់នៃប្រព័ន្ធ។
ពិតហើយ មានហេតុផលមួយទៀតដែលត្រូវប្រើពិធីការមិនស្តង់ដារ។ រួមទាំង អរគុណដែលក្រុមហ៊ុនរបស់យើងបានឈ្នះការដេញថ្លៃដ៏ធំមួយ។ គ្មាននរណាម្នាក់ក្រៅពីអ្នកអភិវឌ្ឍន៍នឹងអាចភ្ជាប់ទៅឧបករណ៍ដែលមានពិធីការឯកទេស និងគ្រប់គ្រងពួកវាបានទេ។ ទាំងនោះ។ ផ្ទុយស្រឡះ ពិធីការស្តង់ដារគុណភាព។ ច្បាប់ទស្សនវិជ្ជានៃការរួបរួមនៃភាពផ្ទុយគ្នាចូលជាធរមាន។
នៅក្នុងមេរៀនបន្ទាប់ យើងនឹងអនុវត្តការទំនាក់ទំនងរវាង Arduino board និងកុំព្យូទ័រដោយប្រើពិធីការ ModBus ។
ប្រភេទ៖ . អ្នកអាចចំណាំវាបាន។