用Labview寫一個電子稱的485串口程序
關(guān)鍵詞:Labview +串口程序
232、485串口通訊是最常見的儀器儀表通訊方式之一,本文詳細(xì)介紹,用Labview編寫一個電子秤的485串口程序.
一.前面板的編寫
串口指示燈:如圖,當(dāng)串口通訊正常時,通訊等亮(綠色),BOOL控件。
串口指示窗口:當(dāng)串口通訊正常時,顯示:串口on,字符串控件。
數(shù)字顯示窗口:顯示電子秤的讀數(shù),112.345,字符串控件。
時間顯示窗口:顯示當(dāng)前時間,16:56:25,字符串控件。
單位顯示窗口:單位:g,字符串控件。
圖1:電子秤的前面板
報文顯示窗口:顯示時間和報文,用于實時看到電子秤的報文顯示,用表格控件顯示。
圖2:電子秤的前面板
二.各個功能的實現(xiàn)
系統(tǒng)時間的顯示
系統(tǒng)時間的顯示
按鈕的禁用和變灰操作
當(dāng)串口打開時:串口打開按鈕需要變灰和禁用,當(dāng)串口關(guān)閉時:串口關(guān)閉和零點標(biāo)定等按鈕需要禁用變灰。
如圖所示,通過對對應(yīng)按鈕的屬性節(jié)點的操作,完成相對應(yīng)的功能,需要其變灰和隱藏時,寫入禁用變灰,需要其有效時,寫入Enabled值即可。
按鈕禁用變灰處理
按鈕禁用變灰處理
打開串口和關(guān)閉串口的操作
打開串口和關(guān)閉串口可以通過狀態(tài)機(jī)+消息隊列+串口的對象化編程來實現(xiàn),本文要實現(xiàn)的功能比較簡單,介紹一種簡單的方式。通過條件結(jié)構(gòu)和循環(huán)來實現(xiàn)。
通過循環(huán)和條件結(jié)構(gòu)的嵌套,即可完成打開串口和關(guān)閉串口的功能實現(xiàn)。這種框架的弊端在于,處理錯誤時比較費事。用消息隊列狀態(tài)機(jī)來實現(xiàn),就會很好的處理一些串口錯誤的發(fā)生,后期會講到。
串口讀寫及配置
如圖所示,串口的配置比較簡單,本電子秤的配置為:9600 N 8 1。如圖配置皆可。沒什么可講的。
如圖所示,報文的讀取是通過VISA讀取VI來實現(xiàn)的,指定需要讀取的字節(jié)數(shù)即可,沒什么好講的,需要說的是,需要把讀取放入條件結(jié)構(gòu)中,然后放一個讀取字節(jié)數(shù)的屬性節(jié)點來檢測讀取到的報文,當(dāng)緩沖區(qū)有報文時再觸發(fā)讀取VISA來讀取。如果沒有這個結(jié)構(gòu),讀取VISA VI將一直等待,直到指定的字節(jié)數(shù)再讀取出來。
如圖所示,報文的吸入是通過VISA寫入 VI來實現(xiàn)的,需要寫入時觸發(fā)條件結(jié)構(gòu)把報文發(fā)出即可。
著重需要說明的是報文的處理。
寫入報文的處理
如圖所示,讀取重量的報文為 01 03 00 00 00 02 XX,剛?cè)腴T時,不需要去理解特定的報文結(jié)構(gòu),有些報文時是標(biāo)準(zhǔn)格式,有些報文是自定義的,只需要直到這么發(fā)出去,電子秤就會返回重量報文。本條報文01是地址,03是功能碼,00 00寄存器地址,后面的XX表示CRC檢驗碼。需要注意的是,都是16進(jìn)制。把幾個16進(jìn)制字節(jié)用字符串連接VI連接起來發(fā)出去即可。
如果報文時固定的,直接用一個字符串產(chǎn)量發(fā)出去即可。
如圖所示的CRC檢驗子VI是本作者(Labview十年工控702)自己用公式節(jié)點寫的,需要的可以留言。
16進(jìn)制報文的正常顯示
如圖所示,因為寫入報文為16進(jìn)制,要在表格控件中正常顯示,需要轉(zhuǎn)換一下。
讀取報文的處理
讀取報文的處理,主要就是把需要的數(shù)據(jù)解析出來, Labview讀取出來的報文是十六進(jìn)制的字符串格式。
如本文介紹的這種,一條報文只有一個數(shù)據(jù)的,可以把需要的字符串截取出來,用強(qiáng)制轉(zhuǎn)換VI轉(zhuǎn)換成16位的U16數(shù)據(jù),然后轉(zhuǎn)換成需要的帶小數(shù)點的實數(shù)數(shù)據(jù)即可。
如果是一條報文里面有好幾個數(shù)據(jù),比如XX XX 01 02 03 04 05 06 XX XX這條報文里面01 02表示溫度,03 04表示壓力,05 06表示二氧化碳濃度。可以用上的方法,先截取在轉(zhuǎn)換。也可以批量處理更簡單便利一些,先截取6個字節(jié),然后轉(zhuǎn)成U16數(shù)組,然后通過索引的方式處理數(shù)據(jù)。
報文的校驗和亂碼的處理
在實際項目中,經(jīng)常會遇到報文錯位和亂碼的情況。尤其是一些儀器儀表抗干擾能力比較弱的時候。此時所有解析出來的數(shù)據(jù)都是錯位的,都是錯的。這時候就需要來校驗和亂碼處理了。
在解析報文時,加一個判斷即可,可以用地址+功能碼判斷,也可以用CRC判斷。作者(Labview十年工控702)喜歡簡單一點,直接用前兩個字節(jié)來判斷即可。只有判斷報文沒亂時再解析,如果判斷出來報文有誤,清空緩沖區(qū)即可。
有其余問題,請加群交流。需要CRC校驗源碼和16進(jìn)制轉(zhuǎn)字符串顯示源碼的,請留言或加群交流。Labview項目分享Q群:241388930
審核編輯 黃宇
-
LabVIEW
+關(guān)注
關(guān)注
1987文章
3667瀏覽量
331115 -
串口通訊
+關(guān)注
關(guān)注
1文章
263瀏覽量
25297
發(fā)布評論請先 登錄
相關(guān)推薦
使用ADS1232做一個電子稱時遇到的疑問求解
RS232串口連接方式及注意事項
快速實現(xiàn)C2000串口程序升級

DTU的RS485/232串口能夠復(fù)用嗎?
集特推薦 雙網(wǎng)10串口飛騰FT2000商用臺式電腦主機(jī)

評論