




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)與觸摸屏通訊單片機(jī)與觸摸屏通訊有兩個(gè)方案:一是用modbusrtu協(xié)議,二是自由通訊協(xié)議;本實(shí)例采用廣州市微嵌計(jì)算機(jī)科技有限公司的人機(jī)界面作為參考,因?yàn)楣咎峁┮幌盗械募夹g(shù)支持和公布單片機(jī)源代碼,開發(fā)工程方便有效。 方案比較:方案一 modbusrtu協(xié)議:優(yōu)點(diǎn):工業(yè)標(biāo)準(zhǔn)通訊協(xié)議,具有通用性,傳輸數(shù)據(jù)量大缺點(diǎn):需要時(shí)間去了解協(xié)議的格式和以及按照規(guī)定編寫通訊程序(我們提供MODBUS-RTU源代碼,客戶直接移植就可以,不必費(fèi)心方案二自由協(xié)議:優(yōu)點(diǎn):數(shù)據(jù)格式客戶自己定義,靈活多變,定制性強(qiáng),可以模擬任何已知報(bào)文的通訊協(xié)議缺點(diǎn):傳輸數(shù)據(jù)量不大,通用性不強(qiáng),移植不方便客戶可以根據(jù)以上兩種通訊協(xié)議
2、的優(yōu)缺點(diǎn)來選擇理想的方案;方案一:1.工程屬性選用MODBUS-RTU協(xié)議;2.先了解MODBUS-RTU協(xié)議,基本的01 03 05 06 16 的功能碼需要了解,其他可以不去深究;提供相關(guān)的資料3.使用我們提供的MODBUS-RTU協(xié)議(C語言開發(fā)源代碼,把主要的01 03 05 0616 函數(shù)移植到單片機(jī)通訊上,大大節(jié)省了開發(fā)時(shí)間; 方案二:1.工程屬性選用FreeProtocol協(xié)議; 2.3.打開控制令編輯器(設(shè)定>宏指令>宏指令編輯器或者直接按F8;4.新增宏指令,在宏指令里面使用到Output(、Input(、SetWordData(、GetWordData(這四個(gè)函
3、數(shù);注:可以參考附一5.Output(函數(shù),把設(shè)定好的字符串發(fā)送到相應(yīng)的串口輸出;Input(函數(shù),從設(shè)定好的串口讀取需要的字符串;6.采集顯示:SetWordData(函數(shù),把Input(函數(shù)接收回來的數(shù)據(jù),發(fā)送給HIM用戶自定義寄存器里,然后在顯示控件里填上已經(jīng)有數(shù)據(jù)的HIM寄存器,即可顯示單片機(jī)采集上來的數(shù)據(jù);7.改寫發(fā)送:在顯示控件了把需要改寫的數(shù)據(jù)綁定HIM寄存器,使用GetWordData(獲得修改后的數(shù)據(jù),通過output(發(fā)送把數(shù)據(jù)發(fā)送到單片機(jī);附一: Output(; 【描述】 第一個(gè)參數(shù) channel 表示通道,如果通道為 com1,則 channel=1;如果通道為 c
4、om2,則 channel=2,數(shù)據(jù)類型為 int。 第二個(gè)參數(shù) pString 表示從通道輸出的字符串的地址,數(shù)據(jù)類型為 unsigned char *。 第三個(gè)參數(shù) count 表示字符串中的字符個(gè)數(shù),數(shù)據(jù)類型為 int。 第四個(gè)參數(shù) result 表示 Output 函數(shù)運(yùn)行后返回的結(jié)果,如果 result 大于 0, 則表示讀寫有效,數(shù)據(jù)類型為 int。 注意:此函數(shù)只能用在 freeprotocol(自由協(xié)議通道中。 【用法】 Output(channel,pString,count,result; 【舉例】 char srt9; int result; Output(1,str0,
5、9,result; Input() ; 【描述】 第一個(gè)參數(shù) channel 表示通道,如果通道為 com1,則 channel=1;如果通道為 com2,則 channel=2,數(shù)據(jù)類型為 int。 第二個(gè)參數(shù) pString 表示寫入通道的字符串的地址,數(shù)據(jù)類型為 unsigned char *。 第三個(gè)參數(shù) count 表示字符串中的字符個(gè)數(shù),數(shù)據(jù)類型為 int。 第四個(gè)參數(shù) result 表示 Output 函數(shù)運(yùn)行后返回的結(jié)果,如果 result 大于 0, 則表示讀寫有效,數(shù)據(jù)類型為 int。 注意:此函數(shù)只能用在 freeprotocol(自由協(xié)議通道中。 【用法】 Input(
6、channel,pString,count,result; 【舉例】 char srt9; int result; Input(1,str0,9,result; GetWordData() ; 【描述】 函數(shù)功能:從通道中讀取 Word 數(shù)據(jù)。 第一個(gè)參數(shù) channel 表示通道,數(shù)據(jù)類型為 unsigned char。 第二個(gè)參數(shù) slaveID 表示從機(jī)號,數(shù)據(jù)類型為 unsigned char。 第三個(gè)參數(shù) address 表示系統(tǒng)通道地址,數(shù)據(jù)類型為 unsigned short。 第四個(gè)參數(shù) count 表示要讀出的字的個(gè)數(shù),數(shù)據(jù)類型為 unsigned short。 第五個(gè)參數(shù)表
7、示命令號,數(shù)據(jù)類型為 unsigned char。 第六個(gè)參數(shù) pValue 用來保存從系統(tǒng)通道讀出的 count 個(gè)字,數(shù)據(jù)類型為 unsigned short *。 【用法】 GetWordData(channel,slaveID,address,count,cmd,pValue; 【舉例】 unsigned short wordData10; GetWordData(0, 1,8000, 10, 0,wordData; 從系統(tǒng)通道 8000 地址中讀取 10 個(gè)數(shù)據(jù)到 wordData SetWordData() ; 【描述】 函數(shù)功能:從通道中寫入一個(gè) Word 數(shù)據(jù)。 第一個(gè)參數(shù) c
8、hannel 表示通道,數(shù)據(jù)類型為 unsigned char。 第二個(gè)參數(shù) slaveID 表示從機(jī)號,數(shù)據(jù)類型為 unsigned char。 第三個(gè)參數(shù) address 表示系統(tǒng)通道地址,數(shù)據(jù)類型為 unsigned short。 第四個(gè)參數(shù) cmd 表示命令號,數(shù)據(jù)類型為 unsigned char。 第五個(gè)參數(shù) pValue 用來保存寫入系統(tǒng)通道的字,數(shù)據(jù)類型為 unsigned short。 【用法】 SetWordData(channel,slaveID,address,cmd,source; 【舉例】 unsigned short wordData = 1; SetWordDa
9、ta(0, 1,1000,0,wordData; 把 wordData 中的 Word 數(shù)據(jù)寫到系統(tǒng)通道 1000 地址處 附錄二: 使用自由協(xié)議來模擬 modbus-RTU /COM1:freeprotocol /COM2:modbus-RTU /*自由協(xié)議通道采集數(shù)據(jù)存放在系統(tǒng)通道,在界面顯示 modbus 通道采集到的數(shù)據(jù),處理后,發(fā)送到自由協(xié)議的設(shè)備上*/ unsigned char command32; unsigned char response32; unsigned char temp1,temp2; unsigned short address, checksum; unsi
10、gned short read_no, return_value1, return_value2,return_value3,read_data2, i; unsigned short com2_data; /*以上是新建需要使用的變量*/ Fill(command, 0, 32;/ initialize command0command31 to 0 Fill(response, 0, 32; /把 command 和 response 初始化 command0 = 0x1;/ 設(shè)置發(fā)送字符竄的第一個(gè)數(shù)據(jù) station number command1 = 0x3;/ 設(shè)置發(fā)送字符竄的第二個(gè)數(shù)
11、據(jù) read holding registers (function code is 0x3 address = 0;/ starting address (4x_1 is 0 HiByte(address, command2;/設(shè)置發(fā)送字符竄的第三個(gè)數(shù)據(jù) LoByte(address, command3;/設(shè)置發(fā)送字符竄的第四個(gè)數(shù)據(jù) read_no = 2;/ the total words of reading is 2 words HiByte(read_no, command4;/設(shè)置發(fā)送字符竄的第五個(gè)數(shù)據(jù) LoByte(read_no, command5;/設(shè)置發(fā)送字符竄的第六個(gè)數(shù)據(jù)
12、 CRC(command, 6,checksum;/ calculate 16-bit CRC LoByte(checksum, command6; /設(shè)置發(fā)送字符竄的第七個(gè)數(shù)據(jù) HiByte(checksum, command7; /設(shè)置發(fā)送字符竄的第八個(gè)數(shù)據(jù) Output(1,command,8, return_value1; /把設(shè)置好的 8 個(gè)數(shù)據(jù), 從通訊口 1 發(fā)送出去, 具體參數(shù) 設(shè)置參考 Output()使用 Input(1,response,9,return_value2; / 從 通 訊 口 1 等 待 接 收 9 個(gè) 字 符 數(shù) 據(jù) , 并 且 放 在 response0
13、response8,具體參數(shù)設(shè)置參考 Intput()使用 CRC(response, 7,checksum; /對采集上來的 9 個(gè)數(shù)據(jù)中前 7 個(gè)進(jìn)行了 CRC-16 校驗(yàn),校驗(yàn)結(jié) 果存放在 checksum LoByte(checksum, temp1; HiByte(checksum, temp2; /把 checksum 的低 8 位放在 temp1 /把 checksum 的高 8 位放在 temp1 /CRC 校驗(yàn)碼進(jìn)行對比判別時(shí)候接收正確 if(temp1=response7&&temp2=response8 /CRC 檢驗(yàn)正確后,把采集來的數(shù)據(jù)中指定需要的數(shù)據(jù)
14、放在 read_data read_data0 = response4 + (response3 << 8; read_data1 = response6 + (response5 << 8; SetWordData(0 ,1 ,0 ,2,0 , read_data; / 通過 SetWordData()函數(shù),把 read_data 送到系統(tǒng)寄 存器中,具體使用需要參考 SetWordData()函數(shù)使用 GetWordData( 2, 1, 2, 2, 3, &com2_data; command0 = 0x1;/ station number command1 = 0x6;/ wirte holding registers (function code is 0x6 address=10; checksum=0; HiByte(address, command2; LoByte(address, command3; HiByt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海南高考高一數(shù)學(xué)試卷
- 建水二模數(shù)學(xué)試卷
- 奢侈品道德采購標(biāo)準(zhǔn)-洞察及研究
- 漢川2024中考數(shù)學(xué)試卷
- 湖北省三月原創(chuàng)數(shù)學(xué)試卷
- 2025民間個(gè)人借款合同范本「標(biāo)準(zhǔn)版」
- 基于2025年AI技術(shù)的特色農(nóng)產(chǎn)品電商平臺應(yīng)用研究評估報(bào)告
- 2025年合同解除補(bǔ)償標(biāo)準(zhǔn)
- 河南高二金太陽數(shù)學(xué)試卷
- 河南商丘2024數(shù)學(xué)試卷
- 煤礦開展消防安全知識培訓(xùn)
- 城鎮(zhèn)老舊小區(qū)改造配套基礎(chǔ)設(shè)施建設(shè)項(xiàng)目初步設(shè)計(jì)
- 廣東省佛山市2024-2025學(xué)年高一下學(xué)期期末檢測英語試卷
- 2024年寧夏“三支一扶”招募考試真題
- 2025至2030中國硝酸鉀肥行業(yè)發(fā)展分析及產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 學(xué)科調(diào)研活動方案
- 2025-2030中國非晶硅(無定形硅)行業(yè)發(fā)展規(guī)劃與供需趨勢預(yù)測報(bào)告
- 人教版(2024)七年級下冊英語期末復(fù)習(xí):閱讀理解 突破練習(xí)題(含答案)
- 臨床康復(fù)一體化講課件
- 作業(yè)治療學(xué)講課件
- 新生兒皮膚清潔與護(hù)理
評論
0/150
提交評論