抽水系統(tǒng)的計(jì)算機(jī)監(jiān)控設(shè)計(jì)
(3)建立數(shù)據(jù)庫,記錄抽水系統(tǒng)開機(jī)、關(guān)機(jī)操作員的編號(hào)、分合閘的時(shí)間、抽水方式;故障時(shí),記錄保護(hù)動(dòng)作時(shí)間、動(dòng)作電流值和故障類型。
(4)抽水監(jiān)控系統(tǒng)有具有手動(dòng),自動(dòng),定時(shí)三種抽水控制方式。選擇手動(dòng)時(shí),計(jì)算機(jī)在系統(tǒng)啟動(dòng)時(shí),直接發(fā)送合閘或分閘指令;選擇自動(dòng)方式時(shí),系統(tǒng)啟動(dòng)后,計(jì)算機(jī)采集缺水信號(hào),若接到缺水信號(hào)將發(fā)送合閘指令,開始抽水后,等待滿水信號(hào),若滿水,則發(fā)送分閘指令;當(dāng)選擇定時(shí)方式時(shí),系統(tǒng)等待設(shè)置的啟動(dòng)時(shí)間到,自動(dòng)向抽水泵發(fā)送合閘指令;同樣系統(tǒng)也可以等待設(shè)置的停止時(shí)間到,自動(dòng)向抽水泵發(fā)送分閘指令。
(5)操作員進(jìn)入系統(tǒng)和退出系統(tǒng)需要進(jìn)行登陸檢查,采用安全措施進(jìn)入和退出系統(tǒng)。登陸系統(tǒng)后,操作員可以修改自己的密碼,只有管理員有權(quán)注冊(cè)新的操作員。
(6)系統(tǒng)運(yùn)行的仿真示意圖,實(shí)時(shí)顯示抽水系統(tǒng)的工作狀態(tài),在計(jì)算機(jī)監(jiān)控窗體增加了燈光和流程動(dòng)畫,直觀地顯示系統(tǒng)的運(yùn)行狀態(tài),更好展現(xiàn)可視化的效果。
本文引用地址:http://butianyuan.cn/article/201612/331216.htm
2.抽水監(jiān)控系統(tǒng)設(shè)計(jì)的技術(shù)關(guān)鍵
2.1抽水監(jiān)控系統(tǒng)的核心程序
抽水監(jiān)控系統(tǒng)的核心程序?yàn)橄盗泻瘮?shù):發(fā)出通信指令函數(shù),如其中讀x2狀態(tài)的函數(shù)Read_x2();字符串轉(zhuǎn)換并發(fā)送函數(shù)SendString(CString m_strSend);接收信息并轉(zhuǎn)換字符串函數(shù)ReadString ()等。
計(jì)算機(jī)發(fā)出查詢x2狀態(tài)通信幀時(shí),調(diào)用SendString(CString m_strSend)函數(shù),將通信幀轉(zhuǎn)換數(shù)據(jù)類型,再用SetOutput函數(shù)發(fā)送出去;PLC接收到信息后,自動(dòng)返回x2的狀態(tài),計(jì)算機(jī)監(jiān)測到輸入緩沖區(qū)字符數(shù)到指定個(gè)數(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);
//將字符送入臨時(shí)變量strtemp存放
str = str + strtemp;
//轉(zhuǎn)換完成后賦值給字符串str
}
}
評(píng)論