南昌西門子PLC模塊中國代理商
| 更新時間 2024-11-23 08:00:00 價格 請來電詢價 品牌 西門子 型號 PLC 售后 售后支持 聯系電話 18717946324 聯系手機 18717946324 聯系人 占雪芬 立即詢價 |
南昌西門子PLC模塊中國代理商
本公司銷售西門子自動化產品,全新原裝,質量保證,價格優勢
西門子PLC,西門子觸摸屏,西門子數控系統,西門子軟啟動,西門子以太網
西門子電機,西門子變頻器,西門子直流調速器,西門子電線電纜
我公司大量現貨供應,價格優勢,品質保證,德國原裝進口
2.3 通訊協議
本通信協議應用于D08-8CZM型流量積算儀與上位機的通信,數據以16進制格式傳輸,波特率:9600;數據位8位;停止位:1位;效驗位:無。本協議與MODBUS協議兼容,可以通過上位機顯示流量積算儀的瞬時流量、累積流量、滿量程、單位和閥狀態(包括閥控、關閉和清洗),而且可以通過上位機設定流量積算儀的瞬時流量、使流量積算儀的累積流量清零。因此在本協議用到了MODBUS協議的命令$03(Reading 1~9words)、命令$05(Force single coil)和命令$06(Writing 1 word)。
使用命令$03可以通過上位機讀流量積算儀的當前狀態,其通信協議的具體格式為:
上位機 積算儀:01 03 00 02 00 08 E5 CC
各字節含義:
01: MODBUS地址;
03: 功能碼03(Reading 1~9words);
00 02:起始地址,00為高8位,02為低8位;
00 08:讀取的字數;
E5 CC:CRC效驗值,E5為CRC的低8位,CC為高8位。
上位機 積算儀:01 03 10 (1)~(16) CRCL CRCH
01:MODBUS地址;
03:MODBUS命令號;
10:上傳的字節數;
(1)~(4):瞬時流量值;“00~09"表示數字“0~9",“10~19"表示“0.~9.";
(5)~(10):流量累積值;同上;
(11)~(14):滿量程;同上;
(15):流量單位;00表示SCCM和SCC,01表示SCCM和SL,11表示SLM和SL;
(16):閥狀態;00表示關閉,80表示閥控,FF表示清洗;
CRCL:CRC的低八位;CRCH:CRC的高8位。
3、用VB實現串行通訊
3.1 MSComm控件
VB的通信控件MSComm能夠提供串行通信的全部功能,程序編寫、調試簡單方便,開發速度快,該控件封裝了通信過程中的底層操作程序,用戶只需設置和監控控件的屬性和事件,就可以方便地實現異步串行通信。
采用MSComm控件接收數據,按照接收方式分兩種形式:事件驅動方式,定時查詢方式。本例為適應流量的實時控制采用定時驅動方式,若定時器計時到,通過串行通信口向地址流量積算儀發出讀寫等操作命令,等待時間到則檢查InBufferCount屬性值來判斷輸入緩沖區中是否接受到了相應數目的字符,從而進行讀取、判斷數據合法性和數據存儲、處理等操作。
3.2 通信功能的編程實現
程序框圖如下:
圖2 串口通信程序框圖
串口初始化:MSComm1.CommPort = 1
MSComm1.SThreshold = 1
MSComm1.Settings = 9600,N,8,1
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.bbbbbMode = combbbbbModeBinary
打開串口并定時發送數據命令:Private Sub Timer1_Timer()
Dim bytearray(0 To 7) As Byte
bytearray(0) = &H1
bytearray(1) = &H3
bytearray(2) = &H0
bytearray(3) = &H2
bytearray(4) = &H0
bytearray(5) = &H8
bytearray(6) = &HE5
bytearray(7) = &HCC
MSComm1.bbbbbLen = 21
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
MSComm1.Output = bytearray
End If
End Sub
接受數據:Private Sub MSComm1_OnComm()
Do
DoEvents
Loop Until MSComm1.InBufferCount = 21
Dim dataread() As Byte
Dim tempdata As Variant
Dim str As bbbbbb
If MSComm1.CommEvent = comEvReceive Then
tempdata = MSComm1.bbbbb
ReDim dataread(UBound(tempdata)) As Byte
For i = 0 To UBound(tempdata)
dataread(i) = tempdata(i)
End Sub
同理利用以上程序框圖和通信協議可以完成下圖的所有功能:
聯系方式
- 電 話:18717946324
- 聯系人:占雪芬
- 手 機:18717946324
- 微 信:18717946324