閱讀 | 訂閱
閱讀 | 訂閱
數(shù)控機(jī)床

世紀(jì)星標(biāo)準(zhǔn)Modbus協(xié)議設(shè)備初始化字設(shè)置技巧

星之球激光 來源:華中數(shù)控2012-07-10 我要評論(0 )   

過去,在我們?yōu)榭蛻糇黾夹g(shù)支持時常會發(fā)生這樣的情況,由于儀表支持的Modbus協(xié)議與我們軟件所支持的有一些細(xì)微區(qū)別,就會導(dǎo)致世紀(jì)星讀出的數(shù)據(jù)與實(shí)際數(shù)據(jù)不符合。要解決...

 

過去,在我們?yōu)榭蛻糇黾夹g(shù)支持時常會發(fā)生這樣的情況,由于儀表支持的Modbus協(xié)議與我們軟件所支持的有一些細(xì)微區(qū)別,就會導(dǎo)致世紀(jì)星讀出的數(shù)據(jù)與實(shí)際數(shù)據(jù)不符合。要解決這個問題,就必須重新定制一個驅(qū)動提供給客戶進(jìn)行更新,這樣一來,對于客戶或者對于我們技術(shù)支持人員都會耽誤一定的時間,而且,某些客戶的現(xiàn)場沒有條件上網(wǎng)進(jìn)行驅(qū)動更新,這樣就給客戶造成了更大的不便。

為解決這一問題,我們在總結(jié)常遇問題的基礎(chǔ)上,對世紀(jì)星中的Modbus驅(qū)動進(jìn)行了改善,可以通過Modbus設(shè)備初始化字設(shè)置直接解決以下三個問題:

1)16位整數(shù)的字節(jié)順序的調(diào)整;

2)32位整數(shù)(或?qū)崝?shù))字順序的調(diào)整;

3)寫單個寄存器時所使用功能碼的選擇。

 

初始化字格式為(XXX),每個X的值為1或者為0,括號為半角符號,當(dāng)初始化字設(shè)置為空時,系統(tǒng)默認(rèn)為(000)。

第一,16位整數(shù)的字節(jié)順序的調(diào)整:

第一個X:值為0時,表示16位整數(shù)傳送時高字節(jié)在前,低字節(jié)在后;值為1時,表示16位整數(shù)傳送時低字節(jié)在前,高字節(jié)在后。

例:設(shè)備傳送的16位整數(shù)(即兩個字節(jié)):12H 34H。當(dāng)X值為0時,賦值給變量的數(shù)據(jù)為1234H(十進(jìn)制數(shù)為4660);當(dāng)X值為1時,賦值給變量的數(shù)據(jù)為3412H(十進(jìn)制數(shù)為13330)。

第二,32位整數(shù)(或?qū)崝?shù))字順序的調(diào)整:

第二個X:值為0時,表示32位數(shù)據(jù)低字在前,高字在后;值為1時,表示32位數(shù)據(jù)高字在前,低字在后。當(dāng)讀取的數(shù)據(jù)為32位的長整型或浮點(diǎn)數(shù)時,要搭配第一個X和第二個X配置讀取數(shù)據(jù)的字節(jié)順序。

 

以長整型為例:

設(shè)備傳送的32位整數(shù)(即四個字節(jié)):12H 34H 56H 78H。

當(dāng)XX值為00時,賦值給變量的數(shù)據(jù)為56781234H(十進(jìn)制數(shù)為1450709556);

當(dāng)XX值為01時,賦值給變量的數(shù)據(jù)為12345678H(十進(jìn)制數(shù)為305419896);

當(dāng)XX值為10時,賦值給變量的數(shù)據(jù)為78563412H(十進(jìn)制數(shù)為2018915346);

當(dāng)XX值為11時,賦值給變量的數(shù)據(jù)為34127856H(十進(jìn)制數(shù)為873625686)。

第三,寫單個寄存器時所使用功能碼的選擇:

第三個X:X值為0時,使用06(06H)號功能碼向設(shè)備寫入單字整數(shù)數(shù)據(jù);X值為1時,使用16(10H)號功能碼像設(shè)備寫入單字整數(shù)數(shù)據(jù)。

例如:上位機(jī)要將設(shè)備地址為2,寄存器地址為5的16位寄存器設(shè)置為18(12H):

當(dāng)X值為0時,上位機(jī)發(fā)送的命令為:02 06 00 05 00 12 19 F5;

第一個字節(jié):02,表示設(shè)備地址;

第二個字節(jié):06,為功能碼字節(jié),06號功能碼的作用為預(yù)置單個16位寄存器;

第三第四個字節(jié):0005,表示的是上位機(jī)發(fā)送命令所預(yù)置的寄存器的地址;

第五第六個字節(jié):0012H,表示上位機(jī)要將地址為5的16位寄存器設(shè)置為18(12H);

第七第八個字節(jié):19 F5,為CRC校驗(yàn)字節(jié)。

當(dāng)X值為1時,上位機(jī)發(fā)送的命令為:02 10 00 05 00 01 02 00 12 70 D3。

第一個字節(jié):02,表示設(shè)備地址;

第二個字節(jié):10H(十進(jìn)制為16),為功能碼字節(jié);

第三第四個字節(jié):0005,表示的是上位機(jī)發(fā)送命令所預(yù)置的多個寄存器的起始地址為0005H;

第五第六個字節(jié):0001,表示上位機(jī)要進(jìn)行設(shè)置的寄存器個數(shù);

第七個字節(jié):02,表示后面跟著的2個字節(jié)數(shù)據(jù)是要預(yù)置到指定寄存器中去的;

緊跟在第七個字節(jié)后的兩個字節(jié)便是要預(yù)置到指定寄存器中的數(shù)據(jù)了;

最后兩個字節(jié):9C08,為CRC校驗(yàn)字節(jié)。

當(dāng)初始化字為空或者三個X值都為0時,世紀(jì)星采用原版的Modbus驅(qū)動解析數(shù)據(jù)的方式進(jìn)行存取數(shù)據(jù)。因此用戶在使用Modbus驅(qū)動進(jìn)行通信時,可以暫時不設(shè)置初始化字,當(dāng)取出的數(shù)據(jù)與實(shí)際的數(shù)據(jù)相差較大時,再參考這篇文章進(jìn)行調(diào)試,或者可直接聯(lián)系我們世紀(jì)星的技術(shù)支持人員幫助您調(diào)試

 

轉(zhuǎn)載請注明出處。

暫無關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們刪除。
③ 任何單位或個人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請及時向本網(wǎng)提出書面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點(diǎn)評
0相關(guān)評論
精彩導(dǎo)讀