S7-300與Carrier冷凍機(jī)的Modbus串行通訊(2)
(5)模式選擇:進(jìn)入interface界面(見圖2),把操作模式選擇為half duplex(rs485) two-wiremode。表示此通信運(yùn)行在rs485半雙工模式?! ?center>
6 軟件編程 硬件組態(tài)完成后,接下來就進(jìn)行軟件編程,在ob1中調(diào)用fb3發(fā)送程序塊?! all fb 3,db22 req :=m0.0 r := laddr :=256 db-n0 :=10 len :=8 done := error := status := 引腳說明: req:發(fā)送請求,每個(gè)上升沿發(fā)送一幀數(shù)據(jù) r:復(fù)位請求 laddr:cp340的邏輯地址(硬件組態(tài)中的地址) db_no:指定發(fā)送區(qū)(db塊) dbb_no:指定發(fā)送區(qū)在db中的起始字節(jié) len:發(fā)送字節(jié)的長度 done:發(fā)送完成輸出一個(gè)脈沖 error:發(fā)送失敗輸出1 status:狀態(tài)字 此程序的功能為,當(dāng)m0.0每個(gè)上升沿的時(shí)候把數(shù)據(jù)塊db10中的前8個(gè)字節(jié)的數(shù)據(jù)從cp340的通信口發(fā)出,數(shù)據(jù)內(nèi)如表2所示?! ?center>
該發(fā)送數(shù)據(jù)包內(nèi)容可以解釋為,請求讀取站地址為16#b的通信處理器中從16#4100開始的22個(gè)寄存器中的數(shù)據(jù)。即前面提到的網(wǎng)關(guān)變量表中的內(nèi)容。 圖中byte7(db10.dbb6),byte8(db10.dbb8)兩個(gè)字節(jié)是crc校驗(yàn)字,crc校驗(yàn)的步驟如下: (1)裝載16#ffff到一個(gè)16位crc寄存器; (2)將crc寄存器的高8位字節(jié)與信息中的第一個(gè)8位字節(jié)相異或,結(jié)果返回到crc寄存器中; (3)將crc寄存器數(shù)據(jù)向右移動一位; (4)如果溢出的位等于1,則將crc寄存器與16#a001相異或,結(jié)果返回到crc寄存器中; (5)如果溢出的位等于0,則重復(fù)第3步; (6)重復(fù)第3、4步驟,直到已經(jīng)移位了8次; (7)將crc寄存器的高8位字節(jié)與信息中的下一個(gè)8位字節(jié)相異或,結(jié)果返回到crc寄存器中; (8)重復(fù)第3步到第6步,直到信息中所有字節(jié)都與crc寄存器相異或,并都移位了8次; (9)最后的crc寄存器中的結(jié)果即為crc校驗(yàn)碼,最后被添加到信息(數(shù)據(jù))的末尾(交換!低8位在前,高8位在后!)?! “凑找陨闲r?yàn)步驟,編寫crc校驗(yàn)功能子程序fc6(見表3)。
在ob1中調(diào)用子程序fc6,計(jì)算出db10中的crc校驗(yàn)值?! all fc 6 db_no :=db10 //發(fā)送數(shù)據(jù)塊 start_byte :=0 //起始字節(jié) length :=6 //字節(jié)個(gè)數(shù) crc_msb :=db10.dbb6 //crc高8位 crc_lsb :=db10.dbb7 //crc低8位 然后在ob1中調(diào)用串口數(shù)據(jù)接收功能塊fb2: all fb 2,db21 en-r :=m0.0 r := laddr :=256 db-n0 :=11 dbb-no :=0 ndr := error := len := status := 引腳說明: en_r:接收使能 laddr:cp340的邏輯地址 db_no:指定接收db dbb_no:指定接收db中的起始字節(jié)。 ndr:接收新數(shù)據(jù)輸出一個(gè)脈沖 error:接收失敗輸出1 len:輸出接收字節(jié)的長度 status:狀態(tài)字 此程序的含義為,在m0.1為1的時(shí)候從cp340接收數(shù)據(jù),并把數(shù)據(jù)存在數(shù)據(jù)塊db11中?! ≈笤偬崛b11中的數(shù)據(jù),得到以下冷凍機(jī)的實(shí)際運(yùn)行參數(shù)值(見表4)。
7 結(jié)束語 本文詳細(xì)闡述了如何采用modbus協(xié)議實(shí)現(xiàn)s7-300與冷凍機(jī)之間的數(shù)據(jù)通信。實(shí)現(xiàn)了異種設(shè)備之間的連接,為實(shí)現(xiàn)公司的集中監(jiān)控目標(biāo)鋪平了道路。共兩頁
第1頁
第2頁
6 軟件編程 硬件組態(tài)完成后,接下來就進(jìn)行軟件編程,在ob1中調(diào)用fb3發(fā)送程序塊?! all fb 3,db22 req :=m0.0 r := laddr :=256 db-n0 :=10 len :=8 done := error := status := 引腳說明: req:發(fā)送請求,每個(gè)上升沿發(fā)送一幀數(shù)據(jù) r:復(fù)位請求 laddr:cp340的邏輯地址(硬件組態(tài)中的地址) db_no:指定發(fā)送區(qū)(db塊) dbb_no:指定發(fā)送區(qū)在db中的起始字節(jié) len:發(fā)送字節(jié)的長度 done:發(fā)送完成輸出一個(gè)脈沖 error:發(fā)送失敗輸出1 status:狀態(tài)字 此程序的功能為,當(dāng)m0.0每個(gè)上升沿的時(shí)候把數(shù)據(jù)塊db10中的前8個(gè)字節(jié)的數(shù)據(jù)從cp340的通信口發(fā)出,數(shù)據(jù)內(nèi)如表2所示?! ?center>
該發(fā)送數(shù)據(jù)包內(nèi)容可以解釋為,請求讀取站地址為16#b的通信處理器中從16#4100開始的22個(gè)寄存器中的數(shù)據(jù)。即前面提到的網(wǎng)關(guān)變量表中的內(nèi)容。 圖中byte7(db10.dbb6),byte8(db10.dbb8)兩個(gè)字節(jié)是crc校驗(yàn)字,crc校驗(yàn)的步驟如下: (1)裝載16#ffff到一個(gè)16位crc寄存器; (2)將crc寄存器的高8位字節(jié)與信息中的第一個(gè)8位字節(jié)相異或,結(jié)果返回到crc寄存器中; (3)將crc寄存器數(shù)據(jù)向右移動一位; (4)如果溢出的位等于1,則將crc寄存器與16#a001相異或,結(jié)果返回到crc寄存器中; (5)如果溢出的位等于0,則重復(fù)第3步; (6)重復(fù)第3、4步驟,直到已經(jīng)移位了8次; (7)將crc寄存器的高8位字節(jié)與信息中的下一個(gè)8位字節(jié)相異或,結(jié)果返回到crc寄存器中; (8)重復(fù)第3步到第6步,直到信息中所有字節(jié)都與crc寄存器相異或,并都移位了8次; (9)最后的crc寄存器中的結(jié)果即為crc校驗(yàn)碼,最后被添加到信息(數(shù)據(jù))的末尾(交換!低8位在前,高8位在后!)?! “凑找陨闲r?yàn)步驟,編寫crc校驗(yàn)功能子程序fc6(見表3)。
自動對焦:
咨詢詳情:如需咨詢文中涉及的相關(guān)產(chǎn)品或解決方案詳情,請加微信:ZiDongHuaX 。
微信聯(lián)盟:,各細(xì)分行業(yè)微信群:點(diǎn)擊這里進(jìn)入。
鴻達(dá)安視:水文水利在線監(jiān)測儀器、智慧農(nóng)業(yè)在線監(jiān)測儀器 金葉儀器: 氣體/顆粒物/煙塵在線監(jiān)測解決方案
西凱昂:SMC氣動元件、力士樂液壓元件、倍加福光電產(chǎn)品等 山東諾方: 顆粒物傳感器、粉塵濃度傳感器
深圳金瑞銘:RFID射頻識別、智能傳感器等物聯(lián)網(wǎng)解決方案 北京英諾艾智: 容錯(cuò)服務(wù)器、邊緣計(jì)算解決方案
微信聯(lián)盟:,各細(xì)分行業(yè)微信群:點(diǎn)擊這里進(jìn)入。
鴻達(dá)安視:水文水利在線監(jiān)測儀器、智慧農(nóng)業(yè)在線監(jiān)測儀器 金葉儀器: 氣體/顆粒物/煙塵在線監(jiān)測解決方案
西凱昂:SMC氣動元件、力士樂液壓元件、倍加福光電產(chǎn)品等 山東諾方: 顆粒物傳感器、粉塵濃度傳感器
深圳金瑞銘:RFID射頻識別、智能傳感器等物聯(lián)網(wǎng)解決方案 北京英諾艾智: 容錯(cuò)服務(wù)器、邊緣計(jì)算解決方案
我要收藏
個(gè)贊
評論排行