1 引言
PLC(可編程邏輯控制器)在工業自動化中得到了非常廣泛的應用,從起初的簡單邏輯動作控制到現在的集網絡,復雜數據運算,通信為一體,其功能和應用領域在未來還將會進一步地被拓寬。但在數據運算,圖象處理以及數據存儲等方面依然是PLC比較弱的方面,若能結合32位或64位計算機一起使用,結合兩者的長處必定能取得較好的使用效果。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

基于PC的虛擬儀表數據采集分析系統

1 引言
PLC(可編程邏輯控制器)在工業自動化中得到了非常廣泛的應用,從起初的簡單邏輯動作控制到現在的集網絡,復雜數據運算,通信為一體,其功能和應用領域在未來還將會進一步地被拓寬。但在數據運算,圖象處理以及數據存儲等方面依然是PLC比較弱的方面,若能結合32位或64位計算機一起使用,結合兩者的長處必定能取得較好的使用效果。

2 系統整體設計
參見圖1,在原理示意圖例中,通過松下PLC自帶的溫度數據讀取單元對熱敏電阻阻值的變化量進行A/D轉換后將數據存儲到PLC的“DT90040”和“DT90041”兩個數據寄存器,這兩個寄存器分別對應了CH1和CH2兩個物理通道。松下PLC的工作掃描周期為0.5ms,溫度數據將在每個周期更新一次。

圖1 原理示意圖


利用個人計算機的串行通信端口以10ms的掃描周期從PLC中將數據取出后存到動態數組中,在通過PICTURE控件以畫圖的方法將溫度變化曲線表示出來。欲保存所取得的數據時可將數據輸出到指定的EXCEL文件中。

3 系統的實現方法
3.1 PLC和VB6.0的通信與數據傳輸處理
計算機和PLC之間通信的時候,相互間傳輸的數據為4位16進制BCD碼,當通過計算機的串行口按照一定的規則向PLC發出數據后,PLC在受到指令后也將返回一段有規則的代碼,而筆者所需要的信息就包含在那一段返回碼中。在這里,可將計算機串口和PLC的通信格式都設為:
波特率:115200B;
校驗位:基校驗;
數據長:8位;
停止位:1位;
松下FP系列PLC的通信協議MEWTOCOL-COM命令格式如下:指令格式。
指令信息:


應答信息 (正常時):


應答信息 (發生錯誤時):


通過查閱FP系列用戶手冊,可以發現熱敏電阻值變化在“DT90040”和“DT90041”寄存器中得以體現,那么若能讀出這些值,就可以對數據進行保存處理等相關操作。
對數據寄存器讀取命令格式為:


PLC接受到上述指令后會返回下列代碼:
讀取成功


讀取失敗


在所接受到的數據的排列格式和我們正常思維所想的是不一樣的,其排列如下:


Data (4 characters)
例:DT1105 =K13639( 3547H)
通過計算機RS-232口將下列數據發出后:


這樣的現象在串口通信中是很常見的,希望讀者在使用時務必加以充分的理解注意。
3.2 數據讀取處理詳細
在介紹了以上PLC和計算機通信的規則方法后下面將講解如何具體來實現準確的數據讀操作。
參見圖2,在按下開始按鈕后將執行下列代碼:

圖2 數據讀取


Private Sub Command1_Click()
Dim d1 As String
d1 = "100"
Command1.Enabled = False
Command3.Enabled = True
nk = 10000 / Val(Text4.Text)
If Check1.Value = 1 Then
Timer1.Enabled = True
Picture1.Cls
e = 0
e1 = 0
re = ""
End If
If Check1.Value = 0 Then Timer1.Enabled = False
If Check1.Value = 0 Then
k = AreaReadD(d1, d1, r)
Label9.Caption = Str(Round(Val(r)
/100, 2)) + " ℃"
Picture1.Line (0, 2500)-(10000, 2500), &H808080
Picture1.Line (0, 2300)-(10000, 2300), &H808080
Picture1.Line (0, 2100)-(10000, 2100), &H808080
Picture1.Line (0, 1900)-(10000, 1900), &H808080
Picture1.Line (0, 1700)-(10000, 1700), &H808080
Picture1.Line (0, 1500)-(10000, 1500), &H808080
Picture1.Line (0, 1300)-(10000, 1300), &H808080
Picture1.Line (0, 1100)-(10000, 1100), &H808080
Picture1.Line (0, 900)-(10000, 900), &H808080
Picture1.Line (0, 700)-(10000, 700), &H808080
Picture1.Line (0, 500)-(10000, 500), &H808080
Text1.Text = Trim(Str(Round(Val(r)
/100, 2)) + " ℃")
'Check1.Value = 0
Exit Sub
End If
End Sub
停止數據的采集:
Private Sub Command3_Click()
Timer1.Enabled = False
'Check1.Value = 0
e1 = 0
For ii = 0 To 65525
iy(ii) = ""
Next ii
Command1.Enabled = True
Command3.Enabled = False
Picture1.Line (0, 2500)-(10000, 2500), &H808080
Picture1.Line (0, 2300)-(10000, 2300), &H808080
Picture1.Line (0, 2100)-(10000, 2100), &H808080
Picture1.Line (0, 1900)-(10000, 1900), &H808080
Picture1.Line (0, 1700)-(10000, 1700), &H808080
Picture1.Line (0, 1500)-(10000, 1500), &H808080
Picture1.Line (0, 1300)-(10000, 1300), &H808080
Picture1.Line (0, 1100)-(10000, 1100), &H808080
Picture1.Line (0, 900)-(10000, 900), &H808080
Picture1.Line (0, 700)-(10000, 700), &H808080
Picture1.Line (0, 500)-(10000, 500), &H808080
End Sub
在“開始”被執行后時間控件開始有效,執行下列代碼,每個時間周期做一次動作。
Private Sub Timer1_Timer()
Dim d1 As String
Dim d2 As String
Dim r As String
Dim k As String
Dim r2 As String
Dim r3 As Integer
Dim kk As Integer
Dim re1 As Double
If Check1.Value = 1 Then
d1 = "100"
k = AreaReadD(d1, d1, r)
Label9.Caption=Str(Round(Val(r)/100,2))+ "℃"
Picture1.Line-(e, -r/5+3500), &HFFFF&
e = e+Val(Text4.Text)
End If
re1 = Round(Val(r)/100, 2)
Do While Len(re1) < 6
re1 = Str$(re1) & "0"
Loop
re = re & Str(re1)
re = re + " " + iy(e1)
e1 = e1 + Val(Text4.Text)
r3 = 10000 + Val(Text4.Text)
If r3 = e1 Then
MsgBox "數據采集結束。", vbOKOnly, "Note"
Command1.Enabled = True
Command3.Enabled = False
Timer1.Enabled = False
Picture1.Line (0, 2500)-(10000, 2500), &H808080
Picture1.Line (0, 2300)-(10000, 2300), &H808080
Picture1.Line (0, 2100)-(10000, 2100), &H808080
Picture1.Line (0, 1900)-(10000, 1900), &H808080
Picture1.Line (0, 1700)-(10000, 1700), &H808080
Picture1.Line (0, 1500)-(10000, 1500), &H808080
Picture1.Line (0, 1300)-(10000, 1300), &H808080
Picture1.Line (0, 1100)-(10000, 1100), &H808080
Picture1.Line (0, 900)-(10000, 900), &H808080
Picture1.Line (0, 700)-(10000, 700), &H808080
Picture1.Line (0, 500)-(10000, 500), &H808080
Check1.Value = 0
Exit Sub
End If
End Sub
在上面的代碼中使用了自定義的函數AreaReadD(d1,d1,r),這個函數的作用是用來讀取PLC中d1到d2地址中的數值,AreaReadD的代碼如下:
Public Function AreaReadD(ByVal adress1, adress2, Result) As Long
Dim j1, k1, l1, m1, n1 As Integer
Dim inputwd As String
Dim command As String
Dim input1 As String
Dim output1 As Integer
Dim bccR As String
Dim dami As String
dami = Form2.MSComm1.Input
Form2.MSComm1.InBufferCount = 0
Do While Len(adress1) < 5
adress1 = "0" & adress1
Loop
Do While Len(adress2) < 5
adress2 = "0" & adress2
Loop
command = "%01#RDD" + adress1 + adress2
bccR = BCC(command)
Form2.MSComm1.Output = command + bccR + Chr(13)
Delay
inputwd = Trim(Form2.MSComm1.Input)
If Mid$(inputwd, 4, 1) <> "$" TheN
AreaReadD = 1
MsgBox "數據殼出時通信發生問題!", vbOKOnly, "ERROR"
Else
AreaReadD = 0
End If
j1 = Val(DEC(Mid$(inputwd, 7, 1)))
k1 = Val(DEC(Mid$(inputwd, 8, 1)))
l1 = Val(DEC(Mid$(inputwd, 9, 1)))
m1 = Val(DEC(Mid$(inputwd, 10, 1)))
AreaReadD = j1×16 + k1×1 + l1×4096 + m1×256
Result = Str$(j1×16 + k1×1 + l1×4096 + m1×256)
End Function
在AreaReadD功能執行后對其返回信息進行分析和處理的函數為DEC(),如下所示:
Public Function DEC(ByVal hexwd) As Integer
hexwd = UCase(hexwd)
If hexwd = "0" Then DEC = 0
If hexwd = "1" Then DEC = 1
If hexwd = "2" Then DEC = 2
If hexwd = "3" Then DEC = 3
If hexwd = "4" Then DEC = 4
If hexwd = "5" Then DEC = 5
If hexwd = "6" Then DEC = 6
If hexwd = "7" Then DEC = 7
If hexwd = "8" Then DEC = 8
If hexwd = "9" Then DEC = 9
If hexwd = "A" Then DEC = 10
If hexwd = "B" Then DEC = 11
If hexwd = "C" Then DEC = 12
If hexwd = "D" Then DEC = 13
If hexwd = "E" Then DEC = 14
If hexwd = "F" Then DEC = 15
End Function
校驗碼生成用命令如下BCC():
Public Function BCC(ByVal OBJWD) As String
Dim FcsResult As String
Dim jytemp As Integer
jytemp = 0
For i = 1 To Len(OBJWD)
jytemp = Asc(Mid$(OBJWD, i, 1)) Xor jytemp
Next i
BCC = Hex$(jytemp)
End Function
在上述的例子中使用了多個函數,在VB6.0中函數有內函數和自定義函數,進行有效的利用,可以節約編程的時間,亦可使程序明朗簡潔。

以上的代碼構成了我們數據采集的人機對話用界面,那么在PLC中也要進行必要的設定,因為我們在這里用的是熱敏電阻,其阻值和所對應的數據為非絕對線性,需要進行必要的轉化,其熱敏電阻的一些使用特性如下:
(1) 熱敏電阻輸入保存的方法
●把連接在外部的熱敏電阻變化作為電壓的變化保存下來,使用內置的AD轉換其轉換為數字數值,進性保存。
●轉換的數字值反映在特殊數據寄存器(DT90040或DT90041)上,可以在用戶程序中讀取。如圖3所示:

圖3 熱敏電阻輸入保存的方法示意圖


(2) 總精度
總精度=(內置的AD轉換器總精度:±5LSB注)+(熱敏電阻精度)
注:±5LSB,與A/D轉換后的數值(0~1000)相比,總精度有±5的誤差。
(3) 熱敏電阻和數字轉換值
熱敏電阻值和數字轉換值的轉換用以下計算公式進行,數字轉換值在K0~K1000之間變化。


(4) 適用的熱敏電阻
可以使用電阻值在200Ω~75kΩ的熱敏電阻。如附表所示:

附表 選擇的熱敏電阻類別


由以上的數據我們在PLC中輸入如下梯形圖程序可以將溫度值保存到“DT100”圖4梯形圖。

圖4 溫度值保存到“DT100”的梯形圖


這樣在運行數據采集軟件后,點擊“開始”后將會在坐標區顯示出當前溫度的數值曲線,
當測試結束后點擊“數據保存”后可以在同文件目錄下找到”My.xls”文件,如圖5所示。

圖5 My.xls”文件


4 結束語
通過比較圖5波形,可以發現,溫度曲線以極其準確的精度被記錄下來,可以很方便地生成EXCEL圖表文件,這在工程技術應用和工廠自動化應用中可以作為有力的參考和高效的工具。

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      国产日韩高清一区二区三区在线| 亚洲精品日韩精品| 欧美1区2区视频| 欧美午夜精品久久久久久超碰| 亚洲一区黄色| 国产精品黄色在线观看| 亚洲精品永久免费| 欧美福利影院| 欧美在线视频观看免费网站| 国产麻豆视频精品| 欧美精品91| 欧美成年人网| 久久三级视频| 久久99在线观看| 亚洲一区二区在线视频| 亚洲精品在线观| 欧美日韩在线播放一区| 久久影视精品| 日韩网站免费观看| 欧美日韩中文字幕在线| 久久这里有精品15一区二区三区| 性娇小13――14欧美| 在线亚洲电影| 中文精品视频| 国产欧美在线看| 国产精品综合久久久| 久久久www免费人成黑人精品 | 国产免费亚洲高清| 国产精品s色| 欧美日韩综合不卡| 亚洲一区在线播放| 久久躁狠狠躁夜夜爽| 亚洲精品日韩精品| 国产精品一区视频| 国产精品一区久久| 国产欧美日韩视频在线观看| 久久久不卡网国产精品一区| 欧美在线视频不卡| 久久精品日产第一区二区| 亚洲国产欧美久久| 亚洲巨乳在线| 国模吧视频一区| 欧美日韩久久久久久| 午夜视频一区| 亚洲日本无吗高清不卡| 国产精品一区二区三区免费观看| 国产精品久久久久天堂| 蜜桃久久精品一区二区| 欧美日韩国产成人在线91| 欧美午夜一区二区三区免费大片| 国产精品成人一区二区| 狠狠噜噜久久| 99国产欧美久久久精品| 亚洲在线视频网站| 亚洲日本成人在线观看| 国产日韩精品在线播放| 欧美三级视频在线播放| 国产精品美腿一区在线看| 欧美激情第8页| 老色批av在线精品| 欧美日韩aaaaa| 欧美xart系列在线观看| 欧美亚州在线观看| 加勒比av一区二区| 亚洲午夜一区| 欧美好吊妞视频| 欧美激情一二三区| 蜜臀99久久精品久久久久久软件 | 亚洲欧美日韩国产综合| 久久综合久久综合这里只有精品| 欧美一区二区三区视频在线| 米奇777在线欧美播放| 久久久噜噜噜| 国产精品久久久久一区二区三区| 一区二区在线观看视频在线观看| 国产亚洲欧美一区| 亚洲一区二区精品在线| 欧美大秀在线观看| 欧美国产精品人人做人人爱| 欧美大香线蕉线伊人久久国产精品| 欧美一级夜夜爽| 久久国内精品自在自线400部| 欧美亚洲日本一区| 欧美在线观看视频一区二区三区| 欧美大片在线观看一区| 欧美freesex8一10精品| 国产亚洲一区二区三区在线播放| 亚洲视频中文| 欧美在线视频免费观看| 国产精品国产三级国产aⅴ浪潮| 亚洲欧洲日韩综合二区| 裸体歌舞表演一区二区| 国产一区在线视频| 亚洲国产网站| 亚洲人成网站999久久久综合| 久久er精品视频| 免费观看日韩av| 亚洲二区在线| 免费成人av资源网| 狠狠入ady亚洲精品经典电影| 1204国产成人精品视频| 亚洲精品免费观看| 亚洲欧美日韩精品久久| 免费观看成人网| 亚洲欧洲精品天堂一级| 一区二区欧美国产| 欧美一级片久久久久久久| 久久久久久久999精品视频| 欧美mv日韩mv国产网站app| 在线日韩中文| 午夜电影亚洲| 国产亚洲精品aa午夜观看| 午夜一区二区三区在线观看| 国产欧美日韩在线播放| 欧美一区视频| 欧美日韩精品福利| 亚洲视频专区在线| 久久艳片www.17c.com| 欧美午夜宅男影院| 午夜精品久久| 永久免费毛片在线播放不卡| 欧美激情精品久久久久久免费印度| 国产精品成人一区二区艾草| 欧美一区二区三区四区夜夜大片| 黄色资源网久久资源365| 一区二区三区不卡视频在线观看| 久久成人精品视频| 欧美视频在线播放| 性刺激综合网| 91久久精品一区| 国产精品一区二区在线观看网站| 久久久免费av| 亚洲影院色无极综合| 国产在线国偷精品产拍免费yy| 麻豆av一区二区三区久久| 在线视频精品| 伊人久久亚洲美女图片| 亚洲一区视频| 亚洲国产你懂的| 国产精品综合不卡av| 欧美剧在线免费观看网站| 欧美在线视屏| 一本一本久久| 在线精品一区| 国产综合av| 久久久久九九九九| 国产亚洲精品久久久久久| 中日韩在线视频| 午夜久久tv| 国产伦理精品不卡| 欧美另类一区| 欧美不卡一区| 久久久青草青青国产亚洲免观| 国产欧美1区2区3区| 欧美剧在线观看| 免费在线观看一区二区| 悠悠资源网久久精品| 国产精品免费看片| 欧美日韩在线免费观看| 免费日韩视频| 久久久av毛片精品| 在线免费观看日本一区| 国产日韩欧美自拍| 久久久www成人免费精品| 在线欧美小视频| 精久久久久久久久久久| 久久青草久久| 亚洲精品小视频在线观看| 欧美日韩在线播放一区| 欧美成人中文字幕| 久久综合给合久久狠狠狠97色69| 久久福利视频导航| 亚洲国产精品悠悠久久琪琪| 欧美激情一区二区三区成人| 蜜臀av国产精品久久久久| 久久精品99| 六月天综合网| 亚洲视频一区在线观看| 国产色爱av资源综合区| 国产日韩欧美麻豆| 欧美成人一区二区三区| 美女图片一区二区| 亚洲综合日韩| 亚洲欧美一区二区原创| 亚洲国产精品精华液网站| 国产精品久久一卡二卡| 国产精品午夜av在线| 免费不卡在线观看av| 免费看av成人| 欧美亚洲一区三区| 亚洲精品国产系列| 一本色道久久88综合亚洲精品ⅰ| 一区二区欧美日韩| 欧美亚洲日本一区| 亚洲电影下载| 日韩午夜视频在线观看| 亚洲午夜在线| 久久精品欧美日韩精品| 亚洲精品一区二区网址| 亚洲资源在线观看|