VB6.0在PLCèˆ‡ä¸Šä½æ©Ÿ(jÄ«)通訊ä¸çš„æ‡‰(yÄ«ng)用
時(shÃ)間:2008-09-16 09:28:00來(lái)æºï¼šfenghy
å°Ž(dÇŽo)語(yÇ”):? å¯ç·¨ç¨‹æŽ§åˆ¶å™¨ä»¥å…¶é«˜å¯é 性,é…ç½®éˆæ´»å’Œå®Œå–„的功能,在工æ¥(yè)控制系統(tÇ’ng)ä¸å¾—到越來(lái)越廣泛的應(yÄ«ng)用
1ã€å¼•言
å¯ç·¨ç¨‹æŽ§åˆ¶å™¨ä»¥å…¶é«˜å¯é 性,é…ç½®éˆæ´»å’Œå®Œå–„的功能,在工æ¥(yè)控制系統(tÇ’ng)ä¸å¾—到越來(lái)越廣泛的應(yÄ«ng)用。但å°(duì)于æ“作員所需è¦çš„å ±(bà o)表打å°ã€è¶¨å‹¢(shì)圖形顯示ã€å·¥æ³æŸ¥å°‹ã€åƒæ•¸(shù)在線修改ç‰åŠŸèƒ½ï¼ŒPLCå»ä¸èƒ½ç›´æŽ¥æ–¹ä¾¿åœ°æä¾›ã€‚所以通常采用計(jì)算機(jÄ«)PC與PLC組æˆä¸€å€‹(gè)完整的監(jiÄn)控系統(tÇ’ng)。本文以臺(tái)安TP02系列PLC為例,討論用Visual Basic(VB)實(shÃ)ç¾(xià n)PLCèˆ‡ä¸Šä½æ©Ÿ(jÄ«)的通訊。
2ã€VB在通訊控件ä¸çš„使用
å¯ç·¨ç¨‹æŽ§åˆ¶å™¨PLCèˆ‡ä¸Šä½æ©Ÿ(jÄ«)PCä¹‹é–“çš„é€šä¿¡ï¼Œä¸‹ä½æ©Ÿ(jÄ«)為PLC,基于其å¯é æ€§æ¥µé«˜ï¼Œä¸»è¦æ‰¿æ“”(dÄn)控制功能,而上ä½PC機(jÄ«)ä¸»è¦æ‰¿æ“”(dÄn)監(jiÄn)察管ç†åŠŸèƒ½ï¼Œæœ‰æ™‚(shÃ)å…¼?zhèn)æ´³ç³ æŒšåˆ‚ä¹’Î´åŸ½îƒ£ç»¨l(fÄ)出é‹(yùn)è¡Œï¼Œåœæ¢å‘½ä»¤ã€‚VB語(yÇ”)言是基于WINDOWSæ“作系統(tÇ’ng)的功能強(qiáng)ã€æ˜“å¸(xué)易用ã€ä¸»è¦æ˜¯é¢å‘?qÅ«)Wç¿’(xÃ)å°(duì)象的程åºè¨(shè)計(jì)語(yÇ”)言。VB帶有專門管ç†ä¸²è¡Œé€šè¨Šçš„MSComm控件,åªéœ€è¨(shè)置幾個(gè)主è¦åƒæ•¸(shù)å°±å¯ä»¥å¯¦(shÃ)ç¾(xià n)PLC與PC串行通訊。è¦å®Œæˆé€šä¿¡å¿…é ˆè¨(shè)ç½®MSComm的相關(guÄn)屬性值:
(1)CommPort:è¨(shè)置或傳回通信連接端å£ä»£è™Ÿ(hà o)
(2)Settings:è¨(shè)ç½®åˆå§‹åŒ–åƒæ•¸(shù)。以å—符串的形å¼è¨(shè)置或傳回連接速度ã€å¥‡å¶æ ¡é©—(yà n)ã€æ•¸(shù)據(jù)ä½ã€åœæ¢ä½ç‰4個(gè)åƒæ•¸(shù)
(3)PortOpen:è¨(shè)置或傳回通信連接端å£çš„狀態(tà i)
(4)Input:從輸入寄å˜å™¨å‚³ 回并移除å—符
(5)Output:將一個(gè)å—符串寫入輸出寄å˜å™¨
(6)InputLen:指定由串行端å£è®€å…¥çš„å—符串長(zhÇŽng)度
(7)InBufferCount:傳回在接收寄å˜å™¨ä¸çš„å—符數(shù)
3ã€è»Ÿç¡¬ä»¶ä¹‹é–“:
臺(tái)安TP02èˆ‡ä¸Šä½æ©Ÿ(jÄ«)PC通信時(shÃ),為了實(shÃ)ç¾(xià n)兩者的通信需è¦é…備通信線。
4ã€é€šä¿¡ç¨‹åºçš„實(shÃ)ç¾(xià n)
4.1 通信åˆå§‹åŒ–程åº
首先,在窗體開(kÄi)å§‹è¨(shè)計(jì)之å‰ï¼Œæ·»åŠ MSComm控件。
4.2程åºç·¨å¯«ï¼š
4.2.1 通信控件MSComm1屬性è¨(shè)置:
MSComm1.CommPort = 1 è¨(shè)置端å£è™Ÿ(hà o)
MSComm1.Settings = "19200,E,7,2" è¨(shè)ç½®é€šä¿¡åƒæ•¸(shù)
MSComm1.InputLen = 0 è¨(shè)置讀入å—符串長(zhÇŽng)度
MSComm1.PortOpen = True è¨(shè)置通信端å£ç‹€æ…‹(tà i)
4.2.2 PLCé‹(yùn)行程åºï¼š
STX$ = "::"
TransmitBuf$ = "01?5RUN"
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 12
In1$ = MSComm1.Input
4.2.3 從PLC讀å–資料,將寄å˜å™¨å…§(nèi)的數(shù)據(jù)資料在PC上顯示以便觀察監(jiÄn)æŽ§ï¼ˆåæ‡‰(yÄ«ng)時(shÃ)é–“50ms):
STX$ = "::"
transmitBuf$ = "01?5MRVD000102"
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 20
InData$ = MSComm1.Input
Label2.Caption = Mid$(InData$, 10, 4)
Label3.Caption = Mid$(InData$, 14, 4)
  
4.2.4從PLC讀å–資料,將RelayC0001狀態(tà i)通éŽ(guò)PC顯示進(jìn)行監(jiÄn)æŽ§ï¼ˆåæ‡‰(yÄ«ng)時(shÃ)é–“50ms):
STX$ = "::"
transmitBuf$ = "01?5MCRC0001"
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 13
In4$ = MSComm1.Input
Coil$ = Mid$(In4$, 10, 1)
C1% = CInt(Coil$)
Label6.Caption = C1%
4.2.5 è¨(shè)定Relay狀態(tà i),將Relayè¨(shè)定為ONï¼ˆåæ‡‰(yÄ«ng)時(shÃ)é–“50ms):
Dim C1 As Integer
STX$ = "::"
transmitBuf$ = "01?5SCSY00011"
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 12
In2$ = MSComm1.Input
4.2.6 PLCåœæ¢é‹(yùn)行:
STX$ = "::"
transmitBuf$ = "01?5STP"
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 12
In3$ = MSComm1.Input
  
4.2.7 VB6.0下CheckSum函數(shù)代碼如下:
Private Function CheckSum(transmitBuf$)
L = Len(transmitBuf$)
Add = 0
Dim k, sum As Integer
For k = 1 To L
TJ$ = Mid$(transmitBuf$, k, 1)
Add = Add + Asc(TJ$)
Next k
Do While Add >= 256
Add = Add - 256
Loop
Add = 255 - Add + 1
tempBuf$ = Hex$(Add)
CheckSum = LTrim(tempBuf$)
End Function
  
5ã€çµ(jié)è«–
PLCèˆ‡ä¸Šä½æ©Ÿ(jÄ«)çš„çµ(jié)åˆï¼Œå¹¶é€šéŽ(guò)VB6.0傳逿•¸(shù)據(jù)所構(gòu)æˆçš„計(jì)算機(jÄ«)監(jiÄn)控系統(tÇ’ng),å°(duì)于近è·é›¢å‚³è¼¸æ•¸(shù)據(jù)çš„ç¾(xià n)å ´(chÇŽng)控制來(lái)說(shuÅ)是一種性價(jià )比很高的解決方案。充分的利用的PLC的抗干擾性能和PCå¼·(qiáng)大的圖形顯示,浮點(diÇŽn)é‹(yùn)算的特點(diÇŽn),與之有效地çµ(jié)åˆï¼Œæœ€å¤§é™åº¦ï¼Œåˆç†çš„利用資æº
標(biÄo)簽:
ä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)版權(quán)與å…責(zé)è²æ˜Žï¼šå‡¡æœ¬ç¶²(wÇŽng)注明[來(lái)æºï¼šä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Š(quán)å‡ç‚ºä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)(www.siyutn.com)ç¨(dú)家所有。如需轉(zhuÇŽn)載請(qÇng)與0755-82949061è¯(lián)系。任何媒體ã€ç¶²(wÇŽng)站或個(gè)人轉(zhuÇŽn)載使用時(shÃ)é ˆæ³¨æ˜Žä¾†(lái)æºâ€œä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)â€ï¼Œé•å者本網(wÇŽng)將追究其法律責(zé)任。
本網(wÇŽng)轉(zhuÇŽn)載并注明其他來(lái)æºçš„稿件,å‡ä¾†(lái)自互è¯(lián)ç¶²(wÇŽng)或æ¥(yè)å…§(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuÇŽn)載請(qÇng)ä¿ç•™ç¨¿ä»¶ä¾†(lái)æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² (fù)版權(quán)法律責(zé)任。