精品视频一区二区观看,欧美一区二区视频三区,日韩一区二区三区不卡,欧美中文综合在线视频,欧美综合网亚洲综合网

      ? ? ? ?

      咨詢電話

      ENGLISH0755-88840386
      學(xué)習(xí)專題

      咨詢電話

      0755-88840386
      您的位置:首頁(yè) > 學(xué)習(xí)專題 > 專業(yè)技術(shù)專題 > 工業(yè)自動(dòng)化稱重儀表>詳情頁(yè)

      博達(dá)數(shù)字傳感器軟件的開(kāi)發(fā)接口

      發(fā)布時(shí)間:2020-01-03 10:19:24 |來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載

      在純軟件數(shù)字秤稱重方案中,稱重軟件工作時(shí),計(jì)算機(jī)需要和數(shù)字傳感器通訊,獲取傳感器內(nèi)碼。因此,要用到數(shù)字傳感器通訊協(xié)議。一般情況下,傳感器廠家出于安全、防作弊考慮,不對(duì)外公開(kāi)協(xié)議。為了方便用戶開(kāi)發(fā)稱重軟件(本文僅針對(duì)博達(dá)公司的數(shù)字傳感器的稱重軟件),博達(dá)公司提供了專用的通訊函數(shù)庫(kù)(ScalePort.dll)。用戶在開(kāi)發(fā)軟件時(shí),可以通過(guò)調(diào)用庫(kù)中的函數(shù),獲取數(shù)字傳感器的內(nèi)碼。使用此函數(shù)庫(kù)時(shí),不需要其他的通訊控件。

      ScalePort.dll 有兩種功能:

      ①?gòu)膬x表串口讀取重量

      ②從數(shù)字傳感器讀取內(nèi)碼

      為了區(qū)分儀表和數(shù)字傳感器,將RS485- 232轉(zhuǎn)換器獲取內(nèi)碼的方式命名為“boast”

      在VB6 中調(diào)用和調(diào)用Win32 API 類似,源碼如下:

      ①Private Declare Function OpenScalePort Lib“ScalePort.dll” (ByVal ComPort As String, ByValseting As String, ByVal fangshi As String) As Long

      ' 打開(kāi)稱重串口, 參數(shù): 串口號(hào), 通訊參數(shù), “start”

      ②Private Declare Function CloseScalePort Lib“ScalePort.dll” () As Long' 關(guān)閉稱重串口

      ③Private Declare Function LoadCellReadDataLib “ScalePort.dll” (ByVal LoadCellType AsString, ByVal LoadCellNumber As Long, ByValntime As Long) As String

      ' 數(shù)字傳感器連續(xù)讀內(nèi)碼指令( 參數(shù)1:“boast”;參數(shù)2:傳感器數(shù)目;參數(shù)3:?jiǎn)沃粋鞲衅髯x寫(xiě)周期(毫秒為單位))

      Private Sub Command1_Click()'打開(kāi)按鈕

      If OpenScalePort(Combo2.Text, Text1.Text, Combo3.Text)= 1 Then ' 打開(kāi)串口,①

      If Combo1.Text=“boast” Then

      Timer1.Enabled=True' 讀傳感器

      End If

      Command1.Enabled=False

      Else

      MsgBox “串口打開(kāi)不成功!”, vbInformation+vbOKOnly, “提示”

      End If

      End Sub

      Private Sub Command2_Click()' 關(guān)閉按鈕Timer1.Enabled=False

      e=CloseScalePort' 關(guān)閉串口②

      Command1.Enabled=True

      End Sub

      Private Sub Form_Unload(Cancel As Integer)e=CloseScalePort' 關(guān)閉串口②

      End Sub

      ' 通過(guò)485~232 轉(zhuǎn)換器,讀數(shù)字傳感器內(nèi)碼,用戶不用擔(dān)心效率問(wèn)題,在調(diào)用OpenScalePort ' 函數(shù)時(shí),ScalePort.dll 已經(jīng)在后臺(tái)創(chuàng)建了獨(dú)立的串口采集線程,將傳感內(nèi)碼存儲(chǔ)到內(nèi)存中

      Private Sub Timer1_Timer()' 使用定時(shí)器,從內(nèi)存中讀內(nèi)碼。

      DoEvents

      Dim b As String ' 從串口返回的內(nèi)碼字符串

      Dim LoadCellNumber As Integer ' 傳感器數(shù)目

      LoadCellNumber=8' 此處以8 個(gè)傳感器為例

      b=LoadCellReadData“( boast”,LoadCellNumber,25)' 從內(nèi)存讀取全部傳感器內(nèi)碼,25 是單只傳感器讀寫(xiě)周期,與USB- RS232 轉(zhuǎn)換器質(zhì)量有關(guān)③

      Text2.Text=b' 讀取的結(jié)果顯示到text2.text 中,字符串以S 開(kāi)頭E 結(jié)尾,每6 個(gè)字符是一個(gè)傳感器內(nèi)碼,整個(gè)字符串長(zhǎng)度= 傳感器個(gè)數(shù)×6+2

      If Left(b, 1)=“S” Then 判斷起始符

      For i = 0 To LoadCellNumber - 1 ' 分別獲取每只傳感器內(nèi)碼

      Label1(i).Caption = Mid(b, 2 + i×6, 6)Next i

      End If

      End Sub

      傳感器異常時(shí),內(nèi)碼顯示:

      ①如果傳感器內(nèi)碼返回+88888 表示校驗(yàn)錯(cuò)誤,一般是由現(xiàn)場(chǎng)干擾引起。例如:大型感性負(fù)載起動(dòng),造成傳感器供壓不穩(wěn)

      ②如果傳感器內(nèi)碼返回+99999 表示傳感器未通訊,請(qǐng)檢查連線是否正確

      ScalePort.dll 函數(shù)庫(kù)只能獲取數(shù)字傳感器內(nèi)碼,如果要修改地址,請(qǐng)用《BOAST 串口調(diào)試工具v3.67》。

      獲取數(shù)字傳感器內(nèi)碼是編寫(xiě)數(shù)字稱重軟件的第一步,要完成一個(gè)實(shí)用的稱重軟件,后續(xù)還有許多工作要做。如標(biāo)定、調(diào)角差、零點(diǎn)跟蹤、開(kāi)機(jī)置零等。當(dāng)然,也可以參考一些市場(chǎng)上的主流的稱重儀表,如XK3180、XK3190A9、DS1 等,借鑒一下他們的設(shè)計(jì)思路,可以起到事半功倍的效果。筆者曾在衡器廠做過(guò)2- 3 年的售后服務(wù),所以對(duì)這些表比較熟悉。

       

       

      本文源于網(wǎng)絡(luò)轉(zhuǎn)載,如有侵權(quán),請(qǐng)聯(lián)系刪除

      分享到