用Labview寫(xiě)一個(gè)電子稱(chēng)的485串口程序
關(guān)鍵詞:Labview +串口程序
232、485串口通訊是最常見(jiàn)的儀器儀表通訊方式之一,本文詳細(xì)介紹,用Labview編寫(xiě)一個(gè)電子秤的485串口程序.
一.前面板的編寫(xiě)
串口指示燈:如圖,當(dāng)串口通訊正常時(shí),通訊等亮(綠色),BOOL控件。
串口指示窗口:當(dāng)串口通訊正常時(shí),顯示:串口on,字符串控件。
數(shù)字顯示窗口:顯示電子秤的讀數(shù),112.345,字符串控件。
時(shí)間顯示窗口:顯示當(dāng)前時(shí)間,16:56:25,字符串控件。
單位顯示窗口:?jiǎn)挝唬篻,字符串控件。
圖1:電子秤的前面板
報(bào)文顯示窗口:顯示時(shí)間和報(bào)文,用于實(shí)時(shí)看到電子秤的報(bào)文顯示,用表格控件顯示。
圖2:電子秤的前面板
二.各個(gè)功能的實(shí)現(xiàn)
系統(tǒng)時(shí)間的顯示
系統(tǒng)時(shí)間的顯示
按鈕的禁用和變灰操作
當(dāng)串口打開(kāi)時(shí):串口打開(kāi)按鈕需要變灰和禁用,當(dāng)串口關(guān)閉時(shí):串口關(guān)閉和零點(diǎn)標(biāo)定等按鈕需要禁用變灰。
如圖所示,通過(guò)對(duì)對(duì)應(yīng)按鈕的屬性節(jié)點(diǎn)的操作,完成相對(duì)應(yīng)的功能,需要其變灰和隱藏時(shí),寫(xiě)入禁用變灰,需要其有效時(shí),寫(xiě)入Enabled值即可。
按鈕禁用變灰處理
按鈕禁用變灰處理
打開(kāi)串口和關(guān)閉串口的操作
打開(kāi)串口和關(guān)閉串口可以通過(guò)狀態(tài)機(jī)+消息隊(duì)列+串口的對(duì)象化編程來(lái)實(shí)現(xiàn),本文要實(shí)現(xiàn)的功能比較簡(jiǎn)單,介紹一種簡(jiǎn)單的方式。通過(guò)條件結(jié)構(gòu)和循環(huán)來(lái)實(shí)現(xiàn)。
通過(guò)循環(huán)和條件結(jié)構(gòu)的嵌套,即可完成打開(kāi)串口和關(guān)閉串口的功能實(shí)現(xiàn)。這種框架的弊端在于,處理錯(cuò)誤時(shí)比較費(fèi)事。用消息隊(duì)列狀態(tài)機(jī)來(lái)實(shí)現(xiàn),就會(huì)很好的處理一些串口錯(cuò)誤的發(fā)生,后期會(huì)講到。
串口讀寫(xiě)及配置
如圖所示,串口的配置比較簡(jiǎn)單,本電子秤的配置為:9600 N 8 1。如圖配置皆可。沒(méi)什么可講的。
如圖所示,報(bào)文的讀取是通過(guò)VISA讀取VI來(lái)實(shí)現(xiàn)的,指定需要讀取的字節(jié)數(shù)即可,沒(méi)什么好講的,需要說(shuō)的是,需要把讀取放入條件結(jié)構(gòu)中,然后放一個(gè)讀取字節(jié)數(shù)的屬性節(jié)點(diǎn)來(lái)檢測(cè)讀取到的報(bào)文,當(dāng)緩沖區(qū)有報(bào)文時(shí)再觸發(fā)讀取VISA來(lái)讀取。如果沒(méi)有這個(gè)結(jié)構(gòu),讀取VISA VI將一直等待,直到指定的字節(jié)數(shù)再讀取出來(lái)。
如圖所示,報(bào)文的吸入是通過(guò)VISA寫(xiě)入 VI來(lái)實(shí)現(xiàn)的,需要寫(xiě)入時(shí)觸發(fā)條件結(jié)構(gòu)把報(bào)文發(fā)出即可。
著重需要說(shuō)明的是報(bào)文的處理。
寫(xiě)入報(bào)文的處理
如圖所示,讀取重量的報(bào)文為 01 03 00 00 00 02 XX,剛?cè)腴T(mén)時(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連接起來(lái)發(fā)出去即可。
如果報(bào)文時(shí)固定的,直接用一個(gè)字符串產(chǎn)量發(fā)出去即可。
如圖所示的CRC檢驗(yàn)子VI是本作者(Labview十年工控702)自己用公式節(jié)點(diǎn)寫(xiě)的,需要的可以留言。
16進(jìn)制報(bào)文的正常顯示
如圖所示,因?yàn)閷?xiě)入報(bào)文為16進(jìn)制,要在表格控件中正常顯示,需要轉(zhuǎn)換一下。
讀取報(bào)文的處理
讀取報(bào)文的處理,主要就是把需要的數(shù)據(jù)解析出來(lái), Labview讀取出來(lái)的報(bào)文是十六進(jìn)制的字符串格式。
如本文介紹的這種,一條報(bào)文只有一個(gè)數(shù)據(jù)的,可以把需要的字符串截取出來(lái),用強(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)換。也可以批量處理更簡(jiǎn)單便利一些,先截取6個(gè)字節(jié),然后轉(zhuǎn)成U16數(shù)組,然后通過(guò)索引的方式處理數(shù)據(jù)。
報(bào)文的校驗(yàn)和亂碼的處理
在實(shí)際項(xiàng)目中,經(jīng)常會(huì)遇到報(bào)文錯(cuò)位和亂碼的情況。尤其是一些儀器儀表抗干擾能力比較弱的時(shí)候。此時(shí)所有解析出來(lái)的數(shù)據(jù)都是錯(cuò)位的,都是錯(cuò)的。這時(shí)候就需要來(lái)校驗(yàn)和亂碼處理了。
在解析報(bào)文時(shí),加一個(gè)判斷即可,可以用地址+功能碼判斷,也可以用CRC判斷。作者(Labview十年工控702)喜歡簡(jiǎn)單一點(diǎn),直接用前兩個(gè)字節(jié)來(lái)判斷即可。只有判斷報(bào)文沒(méi)亂時(shí)再解析,如果判斷出來(lái)報(bào)文有誤,清空緩沖區(qū)即可。
有其余問(wèn)題,請(qǐng)加群交流。需要CRC校驗(yàn)源碼和16進(jìn)制轉(zhuǎn)字符串顯示源碼的,請(qǐng)留言或加群交流。Labview項(xiàng)目分享Q群:241388930
審核編輯 黃宇
-
LabVIEW
+關(guān)注
關(guān)注
2009文章
3679瀏覽量
342640 -
串口通訊
+關(guān)注
關(guān)注
2文章
266瀏覽量
26075
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問(wèn)各位大神,我要用一個(gè)串口控制12臺(tái)串聯(lián)的氣體流量計(jì),想要做好一點(diǎn)該怎么修改程序呢
ZP-RS485-PNWG02 規(guī)格書(shū)
DTU的S485/232串口能夠復(fù)用嗎?
使用Labview做一個(gè)485串口電子秤程序
3.5英寸高清智能串口屏 8位MCU并口通信的COG裸屏 或帶驅(qū)動(dòng)板232串口通信的智能屏

MSC1201串口編程如何實(shí)現(xiàn)?
使用ADS1232做一個(gè)電子稱(chēng)時(shí)遇到的疑問(wèn)求解
RS232串口連接方式及注意事項(xiàng)
RS232串口連接設(shè)備的注意事項(xiàng)
Acrel安科瑞APort100串口服務(wù)器2路以太網(wǎng)8路串口

評(píng)論