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免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      9000px;">

          国产精品久久久久三级| 成人91在线观看| 欧美成人r级一区二区三区| 激情五月激情综合网| 亚洲精品一区二区三区99| 国产精品久久久久久亚洲伦| 亚洲一区二区三区四区五区中文| 久久99精品国产.久久久久| 欧美丝袜第三区| 亚洲猫色日本管| aaa亚洲精品一二三区| 国产精品美女久久久久久 | 亚洲第一电影网| 国产一区二三区| 久久久亚洲午夜电影| 久久久久免费观看| 国产精品综合久久| 中文字幕在线不卡一区二区三区| 成人av综合在线| 亚洲福利电影网| 欧美电影免费观看高清完整版在线| 免费黄网站欧美| 中文字幕欧美区| 粉嫩av一区二区三区粉嫩 | 黄色小说综合网站| 久久久不卡网国产精品一区| 97久久超碰精品国产| 韩国一区二区在线观看| 亚洲伦理在线免费看| 2021中文字幕一区亚洲| 日韩欧美中文字幕精品| 成人h版在线观看| 欧美三级视频在线观看| 一本色道久久综合狠狠躁的推荐| ㊣最新国产の精品bt伙计久久| 成人91在线观看| 欧美性猛交一区二区三区精品| 蜜桃视频在线观看一区二区| 久久久久久久久久久久电影| 欧美日韩精品免费| 色噜噜狠狠一区二区三区果冻| 久久99精品久久久久| 亚洲精品久久嫩草网站秘色| 亚洲欧美日韩成人高清在线一区| 欧美三级中文字幕| 国产99久久精品| 一区二区三区鲁丝不卡| 日韩一区二区三区四区五区六区 | 成人午夜在线播放| 免费观看一级欧美片| 精品国产髙清在线看国产毛片| 一本大道久久精品懂色aⅴ| 国内精品视频666| 久久99精品久久久久久国产越南 | 成人性视频网站| 性欧美大战久久久久久久久| 中文字幕日韩av资源站| 26uuuu精品一区二区| 国产精品三级视频| 日本道色综合久久| 久久精品免费看| 韩国三级在线一区| 97se狠狠狠综合亚洲狠狠| 欧美在线小视频| 69精品人人人人| 久久久久久久久久看片| 视频一区在线播放| 国模一区二区三区白浆| 色综合久久精品| 国产精品午夜电影| 国产日韩精品一区| 免费一区二区视频| 欧美性猛交xxxx黑人交| 精品毛片乱码1区2区3区| 亚洲人成在线观看一区二区| 日韩精品电影在线| 麻豆91精品视频| av色综合久久天堂av综合| 日韩欧美一级片| 日韩精彩视频在线观看| 无吗不卡中文字幕| 亚洲资源中文字幕| 色婷婷av一区二区三区大白胸| 日韩精品一区二区在线| 奇米影视一区二区三区| 在线不卡中文字幕| 国产欧美精品一区二区色综合朱莉| 丝袜美腿亚洲综合| 日韩写真欧美这视频| 国产亚洲成av人在线观看导航| 2021国产精品久久精品| 精品在线亚洲视频| 欧美精品九九99久久| 免费人成在线不卡| 日韩三级免费观看| 日韩精品一区二区三区在线播放| 洋洋成人永久网站入口| 精品视频一区三区九区| 午夜电影一区二区三区| 精品国产青草久久久久福利| 成人永久免费视频| 亚洲午夜激情av| 日韩欧美精品在线视频| 国产亚洲欧美日韩俺去了| 不卡的av电影| 国产一区二区三区日韩| 国产精品美女一区二区三区| 在线一区二区观看| 从欧美一区二区三区| 蜜桃视频第一区免费观看| 亚洲乱码中文字幕综合| 国产精品乱码人人做人人爱| 亚洲三级电影网站| 精品一区二区三区久久| 蜜桃一区二区三区在线| 成人短视频下载| 欧美国产激情一区二区三区蜜月| 免费看日韩精品| 日韩欧美的一区| 国产一区亚洲一区| 椎名由奈av一区二区三区| 99久久综合精品| 欧美日韩mp4| 精品国产污网站| 中文字幕在线观看一区| 亚洲国产精品久久人人爱 | 亚洲第一搞黄网站| 天天色 色综合| 精品一区中文字幕| 色综合中文综合网| 亚洲国产精品久久久久秋霞影院| 国产精品久久毛片av大全日韩| 精品精品国产高清a毛片牛牛| 91精品福利在线一区二区三区| 99在线热播精品免费| 91成人在线免费观看| 4438成人网| 91在线视频免费观看| 欧美国产日韩精品免费观看| 国产成都精品91一区二区三| 国产精品黄色在线观看| 欧美精品在线观看一区二区| 国产成人亚洲精品青草天美| 日韩精品一区第一页| 久久九九99视频| 欧美日韩高清在线| 成人激情免费电影网址| 日本亚洲欧美天堂免费| 亚洲成人激情自拍| 国产高清精品久久久久| 日韩精品一区二区三区在线| 美国毛片一区二区| 欧美一级欧美三级在线观看| 五月天视频一区| 欧美日韩一区二区在线观看 | 奇米综合一区二区三区精品视频| 成人小视频免费在线观看| 久久一区二区视频| 成人黄色在线看| 国产精品视频免费| 国产乱理伦片在线观看夜一区| 日韩一区二区高清| 国产大陆亚洲精品国产| 91精品国产综合久久久久久| 亚洲成人av电影| 日韩欧美综合一区| 日本中文字幕不卡| 精品美女在线播放| 国产成人8x视频一区二区| 夜夜嗨av一区二区三区网页 | 久久99国产精品免费网站| 亚洲国产高清不卡| 欧美一区二区三级| 国产综合色产在线精品| 亚洲综合精品久久| 久久综合九色欧美综合狠狠| 色婷婷久久久亚洲一区二区三区| 亚洲v中文字幕| 国产精品成人免费| 91麻豆精品国产91久久久| 一本色道久久综合亚洲91| 日韩成人av影视| 亚洲网友自拍偷拍| 一区二区三区在线免费| 国产精品免费看片| 久久久久久久久久久电影| 日韩美女视频在线| 欧美性猛交xxxxxxxx| 欧美日韩在线播放一区| 91麻豆成人久久精品二区三区| 国产精品一级黄| 粉嫩一区二区三区性色av| 久久精品国产久精国产| 亚洲成人手机在线| 欧美一区二区三区公司| 欧美亚洲动漫制服丝袜| 成人va在线观看| 国产高清无密码一区二区三区| 老司机一区二区| 日韩高清不卡在线|