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

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

評論