西門子S7-200與上位機通訊,讀取溫度值的程序范例!
通訊與組態]西門子S7-200與上位機通訊,讀取溫度值的程序范例!
PLC主程序
網絡1
// 設置控制方式為自由口通信方式,啟動接收字符中斷 //
PLC掃描
自由口通信,波特率為9600,數據位8,停止位1,無校驗
初始化RCV,允許RCV,有結束符,檢查空閑時間
字串6
結束符為 A
空閑時間為5MS
一次接收的zui大字符為6個
啟動通信口,接收完成中斷
全局允許中斷
接收數據
LD SM0.1
MOVB 16#09, SMB30
MOVB 16#B0, SMB87
MOVB 16#0A, SMB89
MOVB 6, SMB94
ATCH INT_0, 23
ENI
RCV VB199, 0
網絡2
// 檢測溫度送VW0 //
轉換成實際溫度值
從工作站編號送到輸出緩沖區
檢測溫度送輸出緩沖區
LD SM0.0
MOVW AIW0, VW0
/I +54, VW0
MOVW AIW2, VW2
/I +54, VW2
MOVW 1, VW300
MOVW VW0, VW302
MOVW VW2, VW304
網絡3
// 設置溫度控制上限和下限//
LD SM0.0
MOVW +350, VW4
MOVW +450, VW6 字串7
網絡4
// 檢測溫度低于下限,則輸出加溫 //
LDW< VW0, VW4
A SM0.5
S Q0.0, 1
網絡5
// 檢測溫度高于上限,則輸出降溫 //
LDW> VW0, VW6
A SM0.5
R Q0.0, 1
網絡6
//準備傳送參數 //
發送字節數據,送VB99
發送檢測溫度數據,送VW100
發送工作站編號數據,送VW102
LD SM0.0
MOVB 6, VB99
MOVW VW300, VW100
MOVW VW302, VW102
MOVW VW304, VW104
網絡7
// 傳送數據 //
LD SM0.5
XMT VB99, 0
中斷程序
網絡1
//通信口接收數據完成后的中斷 //
// SMB86 等于16#20,表示PLC收到結速符 //
收到結束符,把收到的數據傳到VB400
中斷有條件返回
否則繼續接收
LDB= SMB86, 16#20
MOVB VB200, VB400 字串5
CRETI
NOT
RCV VB199, 0
*******************************
VB源程序
Dim x1, k1, k2
Dim p11, p22 '定義變量
Dim aa() As Byte '定義數組
Private Sub Command1_Click() '開始監控,定時器1有效
Timer1.Enabled = True
End Sub
Private Sub Command2_Click() '退事程序,定時器1無效
Timer1.Enabled = False
Cls '清屏 字串4
Unload Me
End Sub
Private Sub Form_Load() '初始化
Timer1.Enabled = False '定時器1無效
Timer1.Interval = 100 '定時器1時間為0.1S
Timer2.Enabled = True '定時器2有效
Timer2.Interval = 1000 '定時器2時間為1S
Picture1.ScaleMode = 0 '定義縱橫坐標
MSComm1.CommPort = 1 '設定端口號 字串2
MSComm1.Settings = "9600,n,8,1" '設定通訊波特率
MSComm1.InputLen = 6 '輸入緩沖區為6個字符
MSComm1.InBufferSize = 256 '接收緩沖器大小
MSComm1.OutBufferSize = 256 '輸出緩沖器大小
MSComm1.InputMode = comInputModeBinary '以二進制傳輸
MSComm1.OutBufferCount = 0 '清空發送緩沖區
MSComm1.InBufferCount = 0 '清空接收緩沖區
End Sub
Private Sub Timer1_Timer() '定時器1有效,觸發接收事件
字串8
MSComm1.PortOpen = True '打開端口
ReDim aa(0 To 5) '定義動態數組
k1 = 0 '識別PLC站號,為1
If k1 = 0 Then MSComm1.Output = "1" + Chr(10) + Chr(13) '發送
Do While MSComm1.InBufferCount = 0 '準備接收數據
字串4
Loop
aa = MSComm1.Input '接收數據存入數組
If aa(0) > 64 Then GoTo xxx:
k2 = Int(aa(0) * 255 + aa(1) * 1)
Select Case k2
Case 1
p11 = Int(aa(2) * 255 + aa(3) * 1)
p22 = Int(aa(4) * 255 + aa(5) * 1)
Case Else
End Select
k1 = k1 + 1
If k1 > 2 Then k1 = 0
xxx:
MSComm1.PortOpen = False
End Sub
Private Sub Timer2_Timer() '繪制各中頻爐的溫度曲線
x1 = x1 + 1 '時間增加為1S
Picture1.PSet (x1, p11), vbRed '繪制1#爐的溫度曲線,為紅色
字串9
Picture1.PSet (x1, p22), vbBlue '繪制2#爐的溫度曲線,為黃色
Text1.Text = Str(p11) '輸出1#爐溫度值
Text2.Text = Str(p22) '輸出2#爐溫度值
Text3.Text = Str(x1) '輸出監控時間
End Sub
上一篇:西門子PLC停機軟件原因綜述
下一篇:智能電表電源管理及PLC方案
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
- 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
2025長三角國際智能儀表/線纜產業博覽會
展會城市:滁州市展會時間:2025-11-11