加入收藏 在線留言 聯系我們
關注微信
手機掃一掃 立刻聯系商家
全國服務熱線18717946324

南昌西門子PLC模塊中國代理商

更新時間
2024-11-23 08:00:00
價格
請來電詢價
品牌
西門子
型號
PLC
售后
售后支持
聯系電話
18717946324
聯系手機
18717946324
聯系人
占雪芬
立即詢價

詳細介紹

南昌西門子PLC模塊中國代理商

本公司銷售西門子自動化產品,全新原裝,質量保證,價格優勢

西門子PLC,西門子觸摸屏,西門子數控系統,西門子軟啟動,西門子以太網

西門子電機,西門子變頻器,西門子直流調速器,西門子電線電纜

我公司大量現貨供應,價格優勢,品質保證,德國原裝進口

63753926477683892816

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 通信功能的編程實現

程序框圖如下:

 20221008144647_39576

圖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