【正文】
mod_doc As Longmod_doc = hex_doc(hex4_text)For bit_num = 0 To 15bit_text(15 bit_num) = IIf(mod_doc / 2 ^ (15 bit_num) 1, 0, 1)mod_doc = mod_doc Mod 2 ^ (15 bit_num)hex_bit = hex_bit + bit_text(15 bit_num)Next bit_numEnd Function3) 二進(jìn)制轉(zhuǎn)十六進(jìn)制Function bit16_doc(bit16_doc_txt As String) As LongDim i As Byte bit16_doc = 0Select Case Len(bit16_doc_txt) Case 1: bit16_doc_txt = 000000000000000 + bit16_doc_txt Case 2: bit16_doc_txt = 00000000000000 + bit16_doc_txt Case 3: bit16_doc_txt = 0000000000000 + bit16_doc_txt Case 4: bit16_doc_txt = 000000000000 + bit16_doc_txt Case 5: bit16_doc_txt = 00000000000 + bit16_doc_txt Case 6: bit16_doc_txt = 0000000000 + bit16_doc_txt Case 7: bit16_doc_txt = 000000000 + bit16_doc_txt Case 8: bit16_doc_txt = 00000000 + bit16_doc_txt Case 9: bit16_doc_txt = 0000000 + bit16_doc_txt Case 10: bit16_doc_txt = 000000 + bit16_doc_txt Case 11: bit16_doc_txt = 00000 + bit16_doc_txt Case 12: bit16_doc_txt = 0000 + bit16_doc_txt Case 13: bit16_doc_txt = 000 + bit16_doc_txt Case 14: bit16_doc_txt = 00 + bit16_doc_txt Case 15: bit16_doc_txt = + bit16_doc_txt Case 16: bit16_doc_txt = bit16_doc_txt End SelectFor i = 0 To 15 bit16_doc = bit16_doc + (Val(Mid(bit16_doc_txt, 16 i, 1))) * 2 ^ iNext iEnd Function4)和校驗(yàn)在通信格式中的最后一個(gè)字符區(qū)是和校驗(yàn),這是PLC或者計(jì)算機(jī)判斷接收的數(shù)據(jù)的主要依據(jù),如果校驗(yàn)代碼是固定的就可以人工算出來后直接輸入即可,但在進(jìn)行D元件寫入的時(shí)候,數(shù)據(jù)是不斷變化的,這樣一來,和校驗(yàn)就不是固定的了,這就需要做一個(gè)和校驗(yàn)的子程序。Public Function chksum(chksum_text As String) As String Dim text_len As ByteDim i As ByteDim sum_doc As LongDim sum_hex As Stringtext_len = Len(chksum_text)For i = 1 To text_lensum_doc = Asc(Mid(chksum_text, i, 1)) + sum_docNext isum_hex = Hex(sum_doc)chksum = Right(sum_hex, 2)End Function5)增加空格及刪除空格在顯示二進(jìn)制的時(shí)候,因?yàn)橛?6位,這樣看起來很難找到所需要的信息,那么按照第4位二進(jìn)制的對(duì)應(yīng)一位十六進(jìn)制,這就每隔四位就一個(gè)空格,這樣一來尋找所需要的信息也方便。Public Function Space_4(Space_text As String) As StringDim n As ByteFor n = 1 To Len(Close_Space_4(Space_text)) If n Mod 4 = 0 Then Space_4 = Space_4 + Mid(Close_Space_4(Space_text), Len(Close_Space_4(Space_text)) n + 1, 1) + Else Space_4 = Space_4 + Mid(Close_Space_4(Space_text), Len(Close_Space_4(Space_text)) n + 1, 1) End If Next n Space_4 = StrReverse(Space_4) Space_4 = LTrim(Space_4)End Function 在對(duì)每四個(gè)位進(jìn)行一個(gè)空格后,那么要再把轉(zhuǎn)換別的進(jìn)制的時(shí)候就會(huì)出錯(cuò)了,因?yàn)樽址锩嬗幸粋€(gè)空格字符,這樣在進(jìn)行進(jìn)制轉(zhuǎn)換之前要把這個(gè)空格刪除掉。Public Function Close_Space_4(Close_Space_text As String) As StringDim Close_Space_text_b As StringFor i = 1 To Len(Close_Space_text) If Mid(Close_Space_text, i, 1) Then Close_Space_text_b = Close_Space_text_b amp。 Mid(Close_Space_text, i, 1) End IfNext iClose_Space_4 = Close_Space_text_bEnd Function總結(jié) 我們這次選擇的畢業(yè)設(shè)計(jì)的題目是“基于Modbus總線控制的上位通信”, 之所以選擇這個(gè)題目,是因?yàn)槲覀冏约焊杏X它具有挑戰(zhàn)性,更是對(duì)自己能力的提高有很大的幫助。 這次畢業(yè)設(shè)計(jì)的任務(wù)主要是為了實(shí)現(xiàn)計(jì)算機(jī)與PLC、PLC與變頻器兩個(gè)方面的通信,設(shè)計(jì)的過程中使用了RS422協(xié)議和Modbus協(xié)議通信格式,整個(gè)設(shè)計(jì)過程表現(xiàn)出了基于Modbus總線控制的上位機(jī)通信在工業(yè)控制系統(tǒng)運(yùn)用中的實(shí)用價(jià)值性和優(yōu)越性。在現(xiàn)時(shí)多元化的自動(dòng)控制系統(tǒng)中,基于modbus的上位機(jī)控制系統(tǒng)相對(duì)于組態(tài)網(wǎng)等一些控制系統(tǒng)而言,也許有著它一些不足之處,但是,對(duì)于成本計(jì)算方面和功能實(shí)現(xiàn)方面,它也擁有著自身的優(yōu)勢(shì)。正是,監(jiān)控性強(qiáng)、成本低等優(yōu)點(diǎn)促使它在工業(yè)控制的運(yùn)用中占有一席之地,使得PLC的運(yùn)用更加多元化,也加快了工業(yè)的生產(chǎn)效率。 這次的設(shè)計(jì)斷斷續(xù)續(xù)的花費(fèi)了我們很長(zhǎng)時(shí)間,在整個(gè)畢業(yè)論文的設(shè)計(jì)過程中我們學(xué)到了做任何事情所要有正確的態(tài)度和良好的心態(tài),首先我們明白了做學(xué)問要一絲不茍,對(duì)于出現(xiàn)的任何問題和偏差都不要輕視,要通過正確的途徑去解決,在做事情的過程中要有耐心和毅力,不要一遇到困難就打退堂鼓,只要堅(jiān)持下去就可以找到思路去解決問題的。在工作中要學(xué)會(huì)與人合作的態(tài)度,認(rèn)真聽取別人的意見,這樣做起事情來就可以事倍功半。 此次論文的完成既為大學(xué)三年劃上了一個(gè)完美的句號(hào),也為將來的人生之路做好了一個(gè)很好的鋪墊。參考文獻(xiàn)[1] 郭昌榮 FX系列PLC的鏈接通信及VB圖形監(jiān)視 北京航空航天大學(xué)出版社,[2] 廖常初 FX系列PLC編程及應(yīng)用 機(jī)械工業(yè)出版社 [3] 三菱FRD700系列變頻器應(yīng)用篇 中國工控網(wǎng) [4] Modbus通信協(xié)議中文版 豆丁網(wǎng)[5] 劉彬彬、安劍 Visual Basic從入門到精通(第2版)清華大學(xué)出版社 致謝這次畢業(yè)論文的完成,很大程度上也要?dú)w功于我的指導(dǎo)老師黃誠老師,黃老師給了我很多意見和啟發(fā),在論文內(nèi)容的選取,架構(gòu),排版及表達(dá)上都給了我很多指導(dǎo),同時(shí)黃老師的博學(xué),對(duì)學(xué)術(shù)的認(rèn)真,以及對(duì)學(xué)生平易親和的態(tài)度給我留下了深刻的印象。在這里,我要向他表示最真誠的謝意。 我作為機(jī)械工程系的一名畢業(yè)生,到找工作的時(shí)候總有“書到用時(shí)方恨少”的感慨,也總在告誡及激勵(lì)自己“每天進(jìn)步一點(diǎn)點(diǎn)”,也相信總有一天能有些許收獲,只要心還愿攀登,就沒有到不了的高度!