抽水系統的計算機監控設計
2.2計算機與PLC的通信幀本文引用地址:http://dyxdggzs.com/article/201612/331216.htm
抽水監控系統的設計關(guān)鍵之一是計算機與PLC的通信幀,PLC的通信系統的基本協(xié)議規定通信幀有嚴格的格式,本系統采用松下的PLC。上述Read_x2()指令函數中的"%01#RCSR0000**"為計算機發(fā)出讀PLC的x2狀態(tài)的通信幀,功能說(shuō)明如下表2:
通信幀 | % | 01# | RCS | R0000 | ** | |
說(shuō)明 | 通信標志 | 地址 | 命令碼,讀接點(diǎn) | 接點(diǎn)編號 | 效驗碼,不效驗時(shí)用“*”代替 | 結束碼 |
2.3計算機與PLC的串行口連接
計算機與PLC的RS-232串行口有9和25個(gè)腳兩種,而每個(gè)腳位的功能各有不同,正確連線(xiàn)才能使通信成功。計算機和PLC的串行口一般為9腳,其定義和功能如下表3:
腳位 | PC機RS-232,其9支腳位的定義 | PLC上的RS-232,其9支腳位的定義 | ||
簡(jiǎn)寫(xiě) | 意 義 | 簡(jiǎn)寫(xiě) | 意 義 | |
1 | CD | 載波偵測 | FG | 保護接地 |
2 | RXD | 接收字符 | SD | 傳送字符 |
3 | TXD | 傳送字符 | RD | 接收字符 |
4 | DTR | 數據端備妥 | RS | 要求傳送 |
5 | CND | 地線(xiàn) | CS | 清除以傳送 |
6 | DSR | 數據備妥 | 未用 | |
7 | RTS | 要求傳送 | SG | 地線(xiàn) |
8 | CTS | 清除以傳送 | CD | 載波偵測 |
9 | RI | 響鈴偵測 |
計算機與PLC串行口連接通常有兩種,基于連接和基于不連接的信號接線(xiàn)方式如圖5所示:
2.4運用VC++6.0語(yǔ)言編程實(shí)現對計算機的串行口的讀寫(xiě)
VC++6.0語(yǔ)言對計算機硬件有較好的控制能力,運用MSComm控件對計算機的串行口的讀寫(xiě)控制。首先要對MSComm控件(假設名稱(chēng)為MSComm1,其對應的控制變量為m_MSComm1)的幾個(gè)屬性進(jìn)行設置。
m_MSComm1.SetCommPort(1);//設置通信端口
m_MSComm1.SetSettings("9600,n,8,1");
//設置通信的波特率、效驗方式、數據位、停止位
m_MSComm1.SetSthreshold(1);//設置要接受的字符數,當輸入緩沖區字符書(shū)達到設置值,觸發(fā)OnComm事件
m_MSComm1.SetPortOpen(TRUE);//打開(kāi)通信端口
設置各項屬性后,運用MSComm控件對串行口進(jìn)行讀寫(xiě),將讀到的內容寫(xiě)入輸出緩沖區,再將輸入緩沖區的信息讀到程序去,計算機依據程序自動(dòng)完成工作。
應用m_MSComm1.GetInput()和m_MSComm1. SetOutput()屬性就可以將計算機輸入緩沖區的信息讀到程序中和把程序中的信息輸出到計算機的輸出緩沖區。
VC++6.0語(yǔ)言的m_MSComm1.GetInput()和m_MSComm1. SetOutput()屬性發(fā)出和接收的是ColeSafeArray型數據,發(fā)送前要用SendString(CString m_strSend)實(shí)現轉換,接收后要用ReadString ()實(shí)現轉換為Cstring字符串。
PLC發(fā)出命令幀后,讀取PLC的返回幀需一定的時(shí)間,否則返回幀的信息還未到達輸入緩沖區,程序執行不正確的信息,所以在讀返回幀的程序前,設置等待時(shí)間,使用Sleep()讓程序處于休眠狀態(tài)等待完整的回幀的信息。
2.4.PLC程序的配置
1)在PLC程序要設置波特率、奇偶效驗方式、數據位、停止位為“ 9600,n,8,1”,與計算機程序一致。
2)在PLC程序要設置為允許計算機連接。
3)將程序下載到PLC后,還要將PLC斷電再接通電,通信設置才生效。
3.結束語(yǔ):
運用計算機的高級語(yǔ)言與計算機硬件控制、計算機與PLC通信等技術(shù),實(shí)現計算機遠程監控系統的設計,本文介紹的控制系統可作為一個(gè)控制模塊嵌入到大型的樓宇監控系統中;也可以根據企業(yè)生產(chǎn)過(guò)程的控制對象,修改相關(guān)的一些參數,作為工廠(chǎng)的在線(xiàn)監控系統。
評論