摘 è¦ï¼šæ¶²ä½çš„æ¸¬é‡èˆ‡æŽ§åˆ¶æ˜¯åˆ¶è—¥å» å„²æ¶²å¡”ç½æŽ§åˆ¶çš„é‡è¦çµ„æˆç’°ç¯€ã€‚本文介紹了開發PLCæ¶²ä½æ¸¬æŽ§ç³»çµ±çš„å¯¦ç¾æ–¹æ³•,闡述了é‹ç”¨VB應用程åºé–‹ç™¼æœ¬ç³»çµ±èˆ‡å…¶å®ƒæŽ§åˆ¶ç’°ç¯€äº¤äº’的軟件接å£çš„æ–¹æ³•。
é—œéµè©žï¼šæ¶²ä½æ¸¬æŽ§ï¼ŒPLC,VB
Abstract: Measurement and Control of Liquid Level is an important link on controlling of pharmaceutical tank. This paper introduces an implement method of developing a PLC‘s Liquid Level measuring and controlling system, expatiates a method of developing a software interface between this system and the other control links.
Key words: Measurement Control Liquid Level,PLC,VB
1. 概述
  為了滿足藥å“制藥生產工è—éŽç¨‹çš„è¦æ±‚ï¼Œå·¥å» éœ€è¦å¤§å®¹é‡çš„坆尿‹±é ‚å¡”ç½æ··åˆå¹¶å˜å„²è—¥ç‰©åŽŸæ¶²ã€‚æ ¹æ“šæ•´å€‹ç”Ÿç”¢å·¥è—çš„è¦æ±‚,需è¦èƒ½å¤ 實時測é‡å¯†å°æ‹±é ‚å¡”ç½å…§çš„藥液的高度,從而準確了解ç½å…§è—¥æ¶²çš„é«”ç©ï¼Œå¹¶å¯ä»¥é€šéŽç¾å ´æˆ–é 程æ“作控制液ä½çš„é«˜åº¦ã€‚åŒæ™‚,é 程計算機的監控管ç†è»Ÿä»¶è¯ç³»ç¾å ´æŽ§åˆ¶éŽç¨‹ï¼Œå¹¶èˆ‡å·¥å» ä¸å…¶ä»–éŽç¨‹æŽ§åˆ¶ç³»çµ±äº¤æ›æ•¸æ“šä¾†å¯¦ç¾æ•´å€‹è—¥å“生產éŽç¨‹çš„統一控制。
  由于原先是人員è·å®ˆçš„æ–¹å¼ï¼Œè©²æ–¹å¼ä¸åƒ…費人力,而且ä¸èƒ½èˆ‡æ•´å€‹ç”Ÿç”¢éŽç¨‹å½¢æˆæœ‰æ©Ÿæ•´é«”,安全性和å¯é 性低。所以,為了é”åˆ°ç³»çµ±æŽ§åˆ¶ä»»å‹™æ›¸çš„è¦æ±‚,本文電氣控制系統的方案為:采用é 程PC機作為系統主機,與ç¾å ´çš„PLC(從機)通訊,PLC實ç¾é€šè¨Šã€ç¾å ´é¡¯ç¤ºç•Œé¢çš„é¡¯ç¤ºã€æ¶²ä½æ¨¡æ“¬é‡æ•¸æ“šçš„采集ã€é‚輯控制以åŠè²å…‰å ±è¦ã€‚
  本文介紹的電氣控制系統的è¨è¨ˆä¸»è¦åŒ…括以下幾個方é¢ï¼š
 ?。?)PLCã€é¡¯ç¤ºé¢æ¿ã€é€£çºŒæ¶²ä½é‡‡é›†å‚³æ„Ÿå™¨çš„é¸åž‹ã€‚
 ?。?)系統控制功能的實ç¾ã€‚
 ?。?ï¼‰ä¸Šä½æ©Ÿèˆ‡ä¸‹ä½æ©Ÿçš„軟件編制。
2.æŽ§åˆ¶çš„å…§å®¹å’Œè¦æ±‚
  如圖1所示,本控制è¨è¨ˆä»»å‹™éœ€è¦å¯¦ç¾ä»¥ä¸‹ç›®æ¨™ï¼š
 ?。?)å¯ä»¥å¯¦æ™‚監測記錄液ä½çš„變化,å¯ä»¥äººå·¥è¨å®šå¹¶è‡ªå‹•控制液ä½çš„高度值。
  (2)å¯ä»¥é€šéŽè‡ªå‹•æ–¹å¼å’Œæ‰‹å‹•æ–¹å¼æŽ§åˆ¶è©²ç³»çµ±ã€‚
 ?。?)ç¾å ´é¡¯ç¤ºç•Œé¢é¡¯ç¤ºçš„內容主è¦åŒ…æ‹¬ï¼šç•¶å‰æ¶²ä½å€¼ã€ç•¶å‰ç½å…§å®¹é‡å€¼ã€è¨å®šæ¶²ä½é«˜åº¦ã€é€²æ¶²å£èˆ‡å‡ºæ¶²å£é›»ç£é–¥ç‹€æ…‹ã€å¯¦æ™‚æ•…éšœå ±è¦å’Œæ·å²æ•…éšœå ±è¦ç‰ã€‚
  (4)通訊采用RS-485總線通訊方å¼ï¼Œä½¿PLC與é 程PC機è¯ç³»ï¼Œå¯¦ç¾é€šéŽPC機控制液ä½é«˜åº¦ï¼Œç›£æ¸¬æ¶²ä½è®ŠåŒ–的目的。PCæ©ŸåŒæ™‚與其他系統發生è¯ç³»ï¼Œé€²è€Œä½¿å·¥å» 整個藥å“生產éŽç¨‹æ§‹æˆäº†ä¸€å€‹æœ‰æ©Ÿçš„æ•´é«”。
[align=center]

圖1 æ¶²ä½è‡ªå‹•控制系統[/align]
3. 硬件é…ç½®åŠå¯¦ç¾æ–¹æ³•
  為了æé«˜æŽ§åˆ¶ç³»çµ±çš„å¯é æ€§èˆ‡éˆæ´»æ€§ï¼Œç³»çµ±é‡‡ç”¨PLCå¯ç·¨ç¨‹é‚輯控制器。PLCé¸åž‹ç‚ºSIEMENSå…¬å¸çš„S7-200系列PLC,ä¸å¤®è™•ç†å–®å…ƒç‚ºè¥¿é–€å公叿–°æŽ¨å‡ºçš„CPU 224XP AC/DC/Relay ,該CPU在本機體ä¸é›†æˆäº†2個RS-485通訊å£ï¼Œ2個模擬é‡è¼¸å…¥å£ï¼Œ1個模擬é‡è¼¸å‡ºå£ï¼Œ14個數å—輸入和10å€‹ç¹¼é›»å™¨è¼¸å‡ºï¼Œå…¶æ€§åƒ¹æ¯”é«˜ï¼Œæ»¿è¶³æœ¬ç³»çµ±çš„æ‰€æœ‰è¦æ±‚。
  為了連續測é‡å¡”ç½å…§çš„æ¶²ä½ï¼Œæ¶²ä½å‚³æ„Ÿå™¨é¸ç”¨è¡›ç”Ÿåž‹é›·é”æ¶²ä½è¨ˆï¼Œå…¶æ¸¬é‡é‡ç¨‹èŒƒåœç‚º20米,其輸出為標準的二線制4-20mAé›»æµè¼¸å‡ºã€‚傳感器輸出電æµä¿¡è™Ÿé€šéŽé›»æµ/電壓變é€å™¨å°‡4-20mAé›»æµä¿¡è™Ÿè®Šæ›æˆ0-10V電壓信號接到CPU本體的模擬é‡è¼¸å…¥å£ã€‚
  ç¾å ´é¡¯ç¤ºç•Œé¢é¸æ“‡è¥¿é–€å的文本顯示界é¢ï¼šTD200,它å¯ä»¥æ–¹ä¾¿åœ°é¡¯ç¤ºå’Œè¨å®šåƒæ•¸ï¼Œå¹¶å¯ä»¥é¡¯ç¤ºç•¶å‰å ±è¦ä¿¡æ¯æˆ–者查詢æ·å²å ±è¦ä¿¡æ¯ã€‚TD200與PLC 連接åªéœ€è¦é€šéŽTD/CPU電纜連接至PLC的通訊å£PORT0。使用485總線的一端連接PLC的通訊å£PORT1,å¦ä¸€ç«¯é€šéŽRS-485/232電平轉æ›å™¨é€£æŽ¥è‡³PC機的RS-232串å£ï¼Œå¯¦ç¾PC機å‘PLC發é€å‘½ä»¤å¹€ã€å¹¶æŽ¥æ”¶PLC響應幀。
4. 系統的軟件編程åŠå¯¦ç¾æ–¹æ³•
  由于ç¾å ´PLC需è¦èˆ‡é 程PC機監控管ç†è»Ÿä»¶å‚³éžæŽ§åˆ¶åƒæ•¸å’Œå¯¦æ™‚ä¿¡æ¯ã€‚所以,本系統軟件包括了PLC程åºå’ŒPC機的監控管ç†è»Ÿä»¶ã€‚
  4.1 PLC的程åºç·¨å¯«
  編寫224XP CPU的程åºï¼Œæ”¯æŒçš„編程環境為STEP 7-Micro/WIN V4.0版。
ã€€ã€€å‚³æ„Ÿå™¨é‡‡é›†çš„æ¶²ä½æ¨¡æ“¬é‡ä¿¡è™Ÿé€å…¥PLC模擬é‡è¼¸å…¥å£ï¼Œç¶“A/D轉æ›é€å…¥CPU,從AIW0 ä¸å–è¼¸å…¥å€¼ï¼Œç‚ºäº†å¢žåŠ ç©©å®šæ€§ï¼Œè€Œå–一定范åœå…§é‡‡æ¨£å€¼ï¼Œå¹¶æ±‚多次采樣值的平å‡å€¼ï¼Œå†ä¾æ“šè¨ˆç®—å‡ºçš„æŸæ™‚間段液ä½å¹³å‡å€¼ï¼Œæ±‚ç•¶å‰å¯¦éš›å®¹é‡ï¼Œç”¨äºŽç”Ÿç”¢éŽç¨‹æŽ§åˆ¶ï¼Œç¾å ´é¡¯ç¤ºå’Œä¸Šä½æ©Ÿè¨˜éŒ„分æžã€‚
  PLCæ ¹æ“šç¾å ´æˆ–é 程PC機命令,通éŽä¸€ç³»åˆ—é‚輯æ“作,控制塔ç½è¼¸å…¥/輸出電ç£é–¥ã€å‡ºæ–™æ³µç‰ï¼Œå®Œæˆç³»çµ±é å®šçš„å‘½ä»¤ï¼Œå¯¦ç¾æŽ§åˆ¶è¦æ±‚。
  TD200文本顯示器組態也在STEP 7-Micro/WIN V4.0軟件環境ä¸é€²è¡Œï¼Œç·¨ç¨‹ç’°å¢ƒæä¾›äº†æ˜“于使用的組態å‘導,使文本顯示界é¢çµ„態和使用éžå¸¸æ–¹ä¾¿ã€‚
  4.2 PC機的監控管ç†è»Ÿä»¶çš„編制
  微軟的 Visual Basic 6.0 æä¾›äº†é«˜æ•ˆçš„å¯è¦–化編程環境,具有良好的圖形用戶接å£ï¼Œå°‘é‡çš„ç•Œé¢æŽ§åˆ¶ä»£ç¢¼å³å¯è¨è¨ˆå‡ºæœ¬ç³»çµ±çš„æ¨™æº–Windowsé¢¨æ ¼çš„åœ–å½¢çª—å£ç”¨æˆ¶ç•Œé¢ï¼Œæ”¯æŒé¢å‘å°è±¡çš„程åºè¨è¨ˆï¼Œå¯ä»¥æ–¹ä¾¿å¿«é€Ÿåœ°ç·¨åˆ¶å‡ºç³»çµ±çš„分æžå’ŒæŽ§åˆ¶ç¨‹åºã€‚為了使用戶能方便快æ·åœ°å‰µå»ºä¸²å£é€šä¿¡ç¨‹åºå’Œæ•¸æ“šåº«ç³»çµ±ç®¡ç†ï¼ŒVisual Basic 6.0 為用戶æä¾›äº†MSComm 通信控件和數據庫訪å•å°è±¡åº«ADO技術。
  4.2.1 PC機串å£èˆ‡PLC 自由å£çš„通訊實ç¾
  本系統的監控管ç†è»Ÿä»¶ï¼ˆä¸Šä½æ©Ÿï¼‰å’ŒS7-200 PLC ï¼ˆä¸‹ä½æ©Ÿï¼‰çš„連接采用RS-485總線åŠé›™å·¥é€šè¨Šæ–¹å¼ï¼Œåœ¨MSCommäº‹ä»¶çš„ä¸æ–·ç¨‹åºä¸æŽ¥æ”¶æ•¸æ“šï¼Œåœ¨æ™‚間定時器控件(Timerï¼‰ä¸æ–·ç¨‹åºä¸ç™¼é€æŽ§åˆ¶å‘½ä»¤ã€‚æœ¬æ–‡ä»‹ç´¹çš„ç³»çµ±ä¸Šä½æ©Ÿå’Œä¸‹ä½æ©Ÿä¹‹é–“çš„çš„é€šä¿¡æ˜¯äº’ç™¼å ±æ–‡çš„å½¢å¼ä¾†å¯¦ç¾çš„ï¼Œä¸‹ä½æ©ŸPLCåªæœ‰åœ¨æŽ¥æ”¶åˆ°ä¸Šä½æ©ŸæŸ¥è©¢å‘½ä»¤æ™‚æ‰ä¸Šé€æ•¸æ“šï¼Œä¸‹ä½æ©ŸPLCåœ¨æŽ¥æ”¶åˆ°ä¸Šä½æ©Ÿä¿®æ”¹æŽ§åˆ¶åƒæ•¸å‘½ä»¤æ™‚ï¼Œå¿…é ˆä¸Šé€ç¢ºèªå ±æ–‡åŽæ–¹æ‰åŸ·è¡Œå‘½ä»¤ã€‚
 ?。?) OnComm äº‹ä»¶ä¸æ–·æœå‹™ç¨‹åº
  ……
  Private Sub MSComm1_OnComm()
  Dim GetByte() As Byte
  Select Case MSComm1.CommEvent
  Case comEvReceive ‘收到1個å—符數據
  GetByte = MSComm1.Input
  Receive_Data = Receive_Data & GetByte(0)
  ……
  End Select
  End Sub
  ……
 ?。?) Timer äº‹ä»¶ä¸æ–·æœå‹™ç¨‹åº
  ……
  Private Sub Timer1_Timer()
  Dim SendByte() As Byte
  Send_Data = SendByte()
  MSComm1.Output = Send_Data
  ……
  End Sub
  ……
  4.2.2 數據庫管ç†ç¨‹åºçš„編制
  本系統的PC機監控管ç†è»Ÿä»¶çš„æ•¸æ“šåº«æ ¼å¼é‡‡ç”¨æœ¬åœ°çš„Microsoft Access數據庫,å®ƒè¨˜éŒ„ç•¶å‰æ¶²ä½å€¼å’Œä¿å˜æ·å²æ¶²ä½å€¼ï¼ŒåŒæ™‚å®ƒé‚„è¨˜éŒ„æ‰€æœ‰çš„æŽ§åˆ¶åƒæ•¸ï¼Œè©²æ•¸æ“šåº«ä¹Ÿå¯ä»¥è®“其它程åºå…±äº«ï¼Œä»¥æ”¹è®ŠæŽ§åˆ¶åƒæ•¸ï¼Œå¯¦ç¾æ•´å€‹è—¥å“生產éŽç¨‹æŽ§åˆ¶èˆ‡æœ¬å控制系統的接å£ã€‚所以,本文介紹的系統ä¸åƒ…å¯ä»¥ä½œç‚ºä¸€å€‹ç¨ç«‹çš„系統,也å¯ä»¥ä½œç‚ºå·¥å» 自動化有機整體的一個環節。
  ADO(ActiveX Data Objectï¼‰æŠ€è¡“æ˜¯å¦‚ä»Šæ‡‰ç”¨æœ€å»£æ³›çš„æ•¸æ“šè¨ªå•æŠ€è¡“ä¹‹ä¸€ã€‚ç³»çµ±çš„ç›£æ¸¬ç®¡ç†è»Ÿä»¶é‹ç”¨VBä¸çš„ADOå°è±¡ï¼Œå¼•用ADO組件開發出æ“作數據庫記錄的應用程åºï¼Œåªéœ€åœ¨çª—é«”ä¸Šæ·»åŠ éƒ¨ä»¶â€œMicrosoft ADO Data Control 6.0â€ï¼Œå¹¶ç·¨å¯«é€£æŽ¥å’Œæ“作數據庫的VB程åºä»£ç¢¼ã€‚
  下é¢ç‚ºé€£æŽ¥æœ¬åœ°æ•¸æ“šåº«çš„程åºä»£ç¢¼ï¼š
  On Error GoTo LoginError
  Dim strConnection As String
  Set ConnData = New ADODB.Connection
  With ConnData
  .CommandTimeout = 15
  .CommandTimeout = 30
  End With
  strConnection = "UID=Admin;PWD=;" & _
  "Driver=ï½›Microsoft Access Driver (*.mdb)ï½;" & _
  "DBQ=" & App.Path & "\db1.Mdb;"
  ConnData.Open strConnection
  ConnData.CursorLocation = adUseClient
  Adodc1.ConnectionString = ConnData.ConnectionString
  Adodc1.RecordSource = "select * from tbl1"
  Adodc1.Refresh
  Set AdoRs = New ADODB.Recordset
  AdoRs.Open "select * from tbl1", _
  ConnData, adOpenForwardOnly, adLockReadOnly
  Exit Sub
  LoginError:
  MsgBox "無法與數據庫建立連接!"
  4.2.3 數據庫ç€è¦½å™¨çš„開發
  ä¸åƒ…僅是å‹å¥½ç¾Žè§€çš„圖形窗å£ç”¨æˆ¶ç•Œé¢å’Œå¯é 的數據庫記錄å˜å–éŽç¨‹ä»£ç¢¼ã€‚é‚„éœ€è¦æ–¹ä¾¿çš„æ•¸æ“šåº«è¨˜éŒ„ç€è¦½ã€åˆ†æžçš„æ–¹æ³•和接å£ç•Œé¢ã€‚為æ¤ï¼Œéœ€è¦ä½¿ç”¨ä¸€äº›æ•¸æ“šåº«ç¶å®šçš„æŽ§ä»¶ç‰ä¾†å¯¦ç¾æ•¸æ“šåº«ç€è¦½å™¨çš„功能,利用畫圖命令line實ç¾ç°¡å–®çš„ç•¶å‰ã€æ·å²åŽŸæ¶²å®¹é‡è®ŠåŒ–趨勢圖。使æ“ä½œè®Šå¾—æ›´ç°¡å–®ã€æ›´æ–¹ä¾¿ï¼Œæ—¥å¸¸ç¶è·æ›´åŠ äººæ€§åŒ–ã€‚
5. çµæŸèªž
  本文介紹的液ä½ç›£æŽ§ç³»çµ±é›»æ°£è¨è¨ˆæ–¹æ¡ˆå’ŒPC機監控管ç†è»Ÿä»¶ï¼Œç¶“éŽå¯¦è¸è‰æ˜Žæ˜¯å¯è¡Œçš„,ä¸åƒ…è§£æ±ºäº†æ”¹é€ ä¹‹å‰çš„缺陷,而且性能穩定å¯é 。
  實ç¾äº†ï¼š
 ?。?)å³ä½¿åœ¨æ²’有PCï¼ˆä¸Šä½æ©Ÿï¼‰çš„æƒ…æ³ä¸‹ï¼ŒPLC系統ä»å¯ä»¥ç¨ç«‹å¯é 地é‹è¡Œã€‚
 ?。?)PC機監控管ç†è»Ÿä»¶é€šéŽå…±äº«æ•¸æ“šåº«èˆ‡è—¥å“整個生產éŽç¨‹å…¶å®ƒç’°ç¯€å”調。
  該控制方案采用PLC作為ç¾å ´æŽ§åˆ¶æ ¸å¿ƒï¼Œä¿è‰äº†æŽ§åˆ¶çš„高å¯é 性;采用PC機管ç†è©²ç³»çµ±æˆ–èžåˆå…¶å®ƒåç³»çµ±ï¼Œæ¸›å°‘äº†æˆæœ¬ï¼Œæ–¹ä¾¿äº†é›†ä¸ç®¡ç†ï¼Œæé«˜äº†è‡ªå‹•化程度。作者èªç‚ºæœ¬æ–¹æ¡ˆä¸åƒ…é©ç”¨äºŽå·¥æ¥ç”Ÿç”¢è€è¨å‚™æ”¹é€ å‡ç´šï¼Œå°äºŽä¸å°åž‹éŽç¨‹æŽ§åˆ¶é›†ä¸ç®¡ç†ä¹Ÿå…·æœ‰åƒè€ƒåƒ¹å€¼ã€‚
åƒè€ƒæ–‡ç»ï¼š
  [1] SIMATIC.S7-200 Programmable Controller System Manual.6ES7298-8FA22-8BH0
  [2] éƒæˆ.基于PCçš„DCSç ”ç©¶èˆ‡æ‡‰ç”¨.微計算機信æ¯.2005.5
  [3] éƒç¦.Visual Basic 數據庫系統開發技術.人民郵電出版社,2003
  [4] 范逸之,陳立元.Visual Basic與RS-232串行通信控制.清è¯å¤§å¸å‡ºç‰ˆç¤¾ï¼Œ2002