時(shí)間:2008-12-10 11:36:47來(lái)源:ronggang

圖(一)數(shù)據(jù)流示意圖[/align]
2.上位機(jī)通訊程序
利用DELPHI7.0的Server/Client Socket控件來(lái)實(shí)現(xiàn)上位機(jī)數(shù)據(jù)的發(fā)送與接收,由于上位機(jī)既要接收數(shù)據(jù)也要發(fā)送數(shù)據(jù),因此既要作為服務(wù)器也要做為客戶端。Server Socket的屬性、方法及事件設(shè)置如下:
ServerSocket1.Port:=5000;
//偵聽(tīng)端口號(hào)5000
ServerSocket1.Active:=true;
//打開(kāi)服務(wù)器
ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
Begin
//偵聽(tīng)5000號(hào)端口,接收GSM/GPRS Modem傳來(lái)的數(shù)據(jù)。并調(diào)用相應(yīng)的procedure和function完成對(duì)接收數(shù)據(jù)的處理及顯示。
end;
ClientSocket的屬性、方法及事件設(shè)置如下:
Procedure TForm5.initButClick(Sender: TObject);
begin
ClientSocket1.Host:=218.195.248.91;
//服務(wù)器的IP地址
form1.ClientSocket1.Port:=5000;
form1.ClientSocket1.Open;
//打開(kāi)客戶端
end;
利用ClientSocket1.Socket.SendText();發(fā)送命令數(shù)據(jù)幀。
//CRC校驗(yàn)碼求解
procedure TForm1.GetCRC(Data:array of byte;Nums:integer;var CRCH, CRCL: byte);
var
i,j:integer;
CRC:integer;
begin
CRC:=$FFFF;
for i:=0 to Nums-1 do
begin
CRC:=CRC xor ord(Data[i]);
for j:=0 to 7 do
begin
if (CRC mod 2=1) then
begin
CRC:= CRC div 2;
CRC:=$A001 xor CRC
end
else begin
CRC:= CRC div 2;
end;
end;
end;
CRCH := crc mod 256;
CRCL := crc div 256;
end;
3.GSM/GPRS Modem 設(shè)置
設(shè)置GPRS 短信模塊為透?jìng)髂J?,本研究中用的是北京嘉?fù)欣科技的DTU模塊,利用它提供的配置工具(或者串口調(diào)試助手)完成,DTU模塊的設(shè)置如串口設(shè)置,服務(wù)器IP及端口,如圖(二)所示。
[align=center]
圖(二)GPRS模塊設(shè)置[/align]
4.下位機(jī)程序
下位機(jī)采用C8051F020單片機(jī)完成與MODBUS相關(guān)的協(xié)議轉(zhuǎn)換, C8051F020提供了兩個(gè)串口UART0和 UART1,本研究中采用了4片C8051F020制成4個(gè)協(xié)議轉(zhuǎn)換模塊,其中三個(gè)與被控對(duì)象連接,UART1與被控對(duì)象的RS485總線相連接,UART0通過(guò)RS485與第4個(gè)協(xié)議轉(zhuǎn)換模塊UART1連接。第四個(gè)協(xié)議轉(zhuǎn)換模塊的UART0與GSM/GPRS Modem相連。
下位機(jī)部分程序代碼:
void UART0_Init (void)
?。?//UART0_Init初始化
PCON |= 0x90;
SCON0 = 0xd0;
// SCON0:方式1 enable RX
CKCON |= 0x20;
T2CON = 0x30;
//定時(shí)器2作為UART0波特率發(fā)生器
RCAP2=65536-(SYSCLK/BAUDRATE0/32);
T2=RCAP2; // 定時(shí)器24的計(jì)數(shù)初值
TR2 = 1;}
void UART1_Init (void)
{// UART10_Init初始化
SCON1 = 0x50;
CKCON |= 0x40;
T4CON = 0x30; //定時(shí)器4作為UART0波特率發(fā)生器
RCAP4 =65536-(SYSCLK/BAUDRATE/32);
T4 = RCAP4; // 定時(shí)器4的計(jì)數(shù)初值
T4CON |= 0x04;}
下位機(jī)采用查表的方式求解CRC校驗(yàn)碼。
[align=center]
圖(三)上位機(jī)控制子界面[/align]
5.結(jié)論
本研究以MODBUS協(xié)議對(duì)不同通訊格式數(shù)據(jù)幀的封裝,實(shí)現(xiàn)對(duì)不同被控裝置的分散控制、集中管理。
參考文獻(xiàn)
[1]鮑可進(jìn).C8051F單片機(jī)原理及應(yīng)用[M].北京:中國(guó)電力出版社,2006.
[2] 趙蘭濤, 蘇彥華.Delphi 串口通信技術(shù)與工程實(shí)踐[M]. 北京:人民郵電出版社,2004.
標(biāo)簽:
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(m.y3602.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“傳動(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é)任。
相關(guān)資訊
產(chǎn)品新聞
更多>勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
耐磨管道機(jī)器人檢測(cè)電纜CCTV,水下管道...
2025-09-23
影視舞臺(tái)燈光低煙無(wú)鹵扁平電纜13*4+2*(2...
2025-09-23