抽水系統(tǒng)的計算機(jī)監(jiān)控設(shè)計
(3)建立數(shù)據(jù)庫,記錄抽水系統(tǒng)開機(jī)、關(guān)機(jī)操作員的編號、分合閘的時間、抽水方式;故障時,記錄保護(hù)動作時間、動作電流值和故障類型。
(4)抽水監(jiān)控系統(tǒng)有具有手動,自動,定時三種抽水控制方式。選擇手動時,計算機(jī)在系統(tǒng)啟動時,直接發(fā)送合閘或分閘指令;選擇自動方式時,系統(tǒng)啟動后,計算機(jī)采集缺水信號,若接到缺水信號將發(fā)送合閘指令,開始抽水后,等待滿水信號,若滿水,則發(fā)送分閘指令;當(dāng)選擇定時方式時,系統(tǒng)等待設(shè)置的啟動時間到,自動向抽水泵發(fā)送合閘指令;同樣系統(tǒng)也可以等待設(shè)置的停止時間到,自動向抽水泵發(fā)送分閘指令。
(5)操作員進(jìn)入系統(tǒng)和退出系統(tǒng)需要進(jìn)行登陸檢查,采用安全措施進(jìn)入和退出系統(tǒng)。登陸系統(tǒng)后,操作員可以修改自己的密碼,只有管理員有權(quán)注冊新的操作員。
(6)系統(tǒng)運行的仿真示意圖,實時顯示抽水系統(tǒng)的工作狀態(tài),在計算機(jī)監(jiān)控窗體增加了燈光和流程動畫,直觀地顯示系統(tǒng)的運行狀態(tài),更好展現(xiàn)可視化的效果。
本文引用地址:http://m.butianyuan.cn/article/201612/331216.htm
2.抽水監(jiān)控系統(tǒng)設(shè)計的技術(shù)關(guān)鍵
2.1抽水監(jiān)控系統(tǒng)的核心程序
抽水監(jiān)控系統(tǒng)的核心程序為系列函數(shù):發(fā)出通信指令函數(shù),如其中讀x2狀態(tài)的函數(shù)Read_x2();字符串轉(zhuǎn)換并發(fā)送函數(shù)SendString(CString m_strSend);接收信息并轉(zhuǎn)換字符串函數(shù)ReadString ()等。
計算機(jī)發(fā)出查詢x2狀態(tài)通信幀時,調(diào)用SendString(CString m_strSend)函數(shù),將通信幀轉(zhuǎn)換數(shù)據(jù)類型,再用SetOutput函數(shù)發(fā)送出去;PLC接收到信息后,自動返回x2的狀態(tài),計算機(jī)監(jiān)測到輸入緩沖區(qū)字符數(shù)到指定個數(shù),調(diào)用ReadString()函數(shù),接收并轉(zhuǎn)換為Cstring格式的字符串。
void CCSXTAView::Read_x2()
{ m_com1.SetOutBufferCount(0);
m_com1.SetInBufferCount(0);
SendString("%01#RCSR0000**");
Sleep(100);
m_in=m_com1.GetInBufferCount();
ReadString();
x2=m_strRead;
x2=x2.Mid(6,1);
}
void CCSXTAView::SendString(CString m_strSend)
{ char TxData[100];
CString m_strSend;
m_strSend=“%01#WCSR00021**”;
int Count = m_strSend.GetLength();
for(int i = 0; i < Count; i++)
TxData[i] = m_strSend.GetAt(i);
CByteArray array;
array.RemoveAll();
array.SetSize(Count);
for(i = 0; i < Count; i++)
array.SetAt(i, TxData[i]);
m_MSComm1.SetOutput(COleVariant(array));//發(fā)送
}
void CCSXTAView::ReadString ()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //設(shè)置BYTE數(shù)組 An
//8-bit integerthat is not signed.
CString strtemp, str;
str.Empty();
strtemp.Empty();
variant_inp = m_MSComm1.GetInput();
//讀緩沖區(qū)
safearray_inp = variant_inp;
//VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量
len=safearray_inp.GetOneDimSize();
//得到有效數(shù)據(jù)長度
for(k=0;k
//轉(zhuǎn)換為BYTE型數(shù)組
for(k=0;k
{ BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
//將字符送入臨時變量strtemp存放
str = str + strtemp;
//轉(zhuǎn)換完成后賦值給字符串str
}
}
評論