時間:2008-07-14 10:56:00來源:dujing
 圖1 CPM2A與上位機的鏈接[/align]
2.2   CPM2A的上位通信協(xié)議
    CPM2A的數(shù)據(jù)是以幀的格式發(fā)送的,當通信命令小于一幀時,發(fā)送格式如圖2所示。其中正文最多122個字符。當命令塊內(nèi)容大于一幀時,由起始幀、中間幀、及結(jié)果幀組成。起始幀最多131個字符,中間幀及結(jié)束幀最多128個字符。起始幀由設(shè)備號、命令碼、正文、 FCS、和分界符構(gòu)成。中間幀有正文、FCS、分界符組成。結(jié)束幀由正文FCS、結(jié)束符組成。上位機每發(fā)送完一幀,在收到PLC發(fā)回的分界符后再發(fā)送下一幀。
[align=center]
圖1 CPM2A與上位機的鏈接[/align]
2.2   CPM2A的上位通信協(xié)議
    CPM2A的數(shù)據(jù)是以幀的格式發(fā)送的,當通信命令小于一幀時,發(fā)送格式如圖2所示。其中正文最多122個字符。當命令塊內(nèi)容大于一幀時,由起始幀、中間幀、及結(jié)果幀組成。起始幀最多131個字符,中間幀及結(jié)束幀最多128個字符。起始幀由設(shè)備號、命令碼、正文、 FCS、和分界符構(gòu)成。中間幀有正文、FCS、分界符組成。結(jié)束幀由正文FCS、結(jié)束符組成。上位機每發(fā)送完一幀,在收到PLC發(fā)回的分界符后再發(fā)送下一幀。
[align=center] 圖2   CPM2A 通信時命令塊的格式[/align]
    命令塊中的校驗碼FCS是8位二進制數(shù)轉(zhuǎn)換成的2位ASCⅡ字符。這8位數(shù)據(jù)是將一幀數(shù)據(jù)中校驗碼前的所有字符的ASCⅡ碼位按連續(xù)異或的結(jié)果。轉(zhuǎn)換成字符時,按照2位十六進制數(shù)轉(zhuǎn)換成對應(yīng)的數(shù)字字符。
    PLC接收到上位機發(fā)送的命令幀后,自動產(chǎn)生響應(yīng)塊,響應(yīng)塊的格式與圖2格式類似,只是在命令碼后面多了兩位的響應(yīng)碼,響應(yīng)碼表示了上位機命令的出錯信息。響應(yīng)碼00表示PLC正常完成上位機命令。
3PLC命令的編寫
    在CPM2A的上位鏈接系統(tǒng)中,PLC接收指令并被動地給上位機返回響應(yīng)塊。所以作為下位機的PLC不需要編寫通信程序。
    上位機與PLC的通信不能改變PLC的輸入狀態(tài)。為了通過上位機改變PLC的輸出,在編寫下位機的程序時就要利用PLC的工作位,通過上位機改變工作位的狀態(tài)來改變PLC的輸出,從而達到上位機對PLC輸出的控制。
    如圖3所示,在梯形圖中加入了工作位3.00,4.00。系統(tǒng)正常工作時3.00,4.00置OFF,當需要實現(xiàn)上位機控制時,把3.00置ON,使PLC的輸入端0.00失效,通過工作位4.00的通斷來控制系統(tǒng)的輸出。
[align=center]
圖2   CPM2A 通信時命令塊的格式[/align]
    命令塊中的校驗碼FCS是8位二進制數(shù)轉(zhuǎn)換成的2位ASCⅡ字符。這8位數(shù)據(jù)是將一幀數(shù)據(jù)中校驗碼前的所有字符的ASCⅡ碼位按連續(xù)異或的結(jié)果。轉(zhuǎn)換成字符時,按照2位十六進制數(shù)轉(zhuǎn)換成對應(yīng)的數(shù)字字符。
    PLC接收到上位機發(fā)送的命令幀后,自動產(chǎn)生響應(yīng)塊,響應(yīng)塊的格式與圖2格式類似,只是在命令碼后面多了兩位的響應(yīng)碼,響應(yīng)碼表示了上位機命令的出錯信息。響應(yīng)碼00表示PLC正常完成上位機命令。
3PLC命令的編寫
    在CPM2A的上位鏈接系統(tǒng)中,PLC接收指令并被動地給上位機返回響應(yīng)塊。所以作為下位機的PLC不需要編寫通信程序。
    上位機與PLC的通信不能改變PLC的輸入狀態(tài)。為了通過上位機改變PLC的輸出,在編寫下位機的程序時就要利用PLC的工作位,通過上位機改變工作位的狀態(tài)來改變PLC的輸出,從而達到上位機對PLC輸出的控制。
    如圖3所示,在梯形圖中加入了工作位3.00,4.00。系統(tǒng)正常工作時3.00,4.00置OFF,當需要實現(xiàn)上位機控制時,把3.00置ON,使PLC的輸入端0.00失效,通過工作位4.00的通斷來控制系統(tǒng)的輸出。
[align=center] 圖3 實現(xiàn)上位機監(jiān)控的PLC編程[/align]
4  編寫上位機通信程序
   在上位鏈接系統(tǒng)中,通信一般都是由上位機發(fā)起的,按PLC標準通信進行連接。上位機給PLC發(fā)送操作指令,PLC按照指令執(zhí)行相應(yīng)的操作,同時給上位機返回數(shù)據(jù)。串口通信流程如下圖。
[align=center]
圖3 實現(xiàn)上位機監(jiān)控的PLC編程[/align]
4  編寫上位機通信程序
   在上位鏈接系統(tǒng)中,通信一般都是由上位機發(fā)起的,按PLC標準通信進行連接。上位機給PLC發(fā)送操作指令,PLC按照指令執(zhí)行相應(yīng)的操作,同時給上位機返回數(shù)據(jù)。串口通信流程如下圖。
[align=center] 圖4 通信流程圖[/align]
4.1 編寫上位通信程序
   編寫通信程序可以采用高級語言或者匯編語言,下面給出的例子是用Delphi編寫的上位機與CPM2A型PLC通信程序.通信采用標準通信模式。通信界面如圖5。
[align=center]
圖4 通信流程圖[/align]
4.1 編寫上位通信程序
   編寫通信程序可以采用高級語言或者匯編語言,下面給出的例子是用Delphi編寫的上位機與CPM2A型PLC通信程序.通信采用標準通信模式。通信界面如圖5。
[align=center] 圖5 通信界面[/align]
//程序初始化:
procedure TForm1.Init_PLC(nPort:integer);
begin
 if  MSComm.PortOpen then
   MSComm.PortOpen:=False;
  MSComm.Commport:=nPort; 
//通信端口選擇
  MSComm.Settings:=‘9600,e,7,1‘;
//1位起始位,7位數(shù)據(jù)位,偶效驗,2位停止位,9600bps
  MSComm.PortOpen:=True;//打開串口
end;    
//FCS校驗
function FCS(s:string):variant;
vari,len,tmpVar:integer;
   DataCheck:byte;
   f1,f2:byte;
begin
f1:=0;
f2:=0;
DataCheck:=0;
len:=length(s);
tmpVar:=0;
for i:=1 to len do
begin
DataCheck:=ord(DataCheck) xor ord(s[i]);
end;
f1:=DataCheck and $0f;
f2:=DataCheck and $f0;
f2:=f2 shr 4;
result:=inttostr(f2)+inttostr(f1);
end;
// 調(diào)用MSComm控件實現(xiàn)PLC通信
procedure TForm1.HandShake_PLC;
var
  tmpByte1,tmpByte2:char;
  tmpVar:string;
  s:string;
  begin
  Init_PLC(1);
&nbs 
p; s:=Edit1.text;
  tmpVar:=s+inttostr(FCS(s))+‘*‘+chr(13);
  MSComm.RThreshold:=0;
  MSComm.Output:=tmpVar;
//向串口輸出數(shù)據(jù)
  sleep(1000);// 延時
     tmpVar:=MSComm.Input;
//從串口讀取數(shù)據(jù)
     tmpByte1:=tmpVar[5];
     tmpByte2:=tmpVar[6];
if tmpByte1=chr(48)& tmpByte2:=chr(48);
//校驗碼等于00,PLC正常完成操作
   then
     begin
     Showmessage(‘發(fā)送的數(shù)據(jù)正確‘);
     else
     Showmessage(‘發(fā)送的數(shù)據(jù)有問題‘);
   //end;
  end;  
4.2 實現(xiàn)上位機對PLC的監(jiān)控
    編寫通信程序建立了上位機與PLC的連接.在PLC的任何工作方式下都可以通過”讀”指令讀取PLC的狀態(tài).從而對PLC進行監(jiān)視.只有當PLC的工作方式為監(jiān)視的情況下才可以通過上位機對PLC進行控制.所以在需要上位機實施控制的系統(tǒng)里面PLC都必須設(shè)置為監(jiān)視工作方式.
    上位機只需要設(shè)置PLC的相應(yīng)工作位就可以實現(xiàn)對PLC的控制.下圖為PLC上位機控制過程。圖a表示PLC 正常工作時輸出由輸入0.00控制,當需要把PLC的控制轉(zhuǎn)由上位機控制時,只需要通過向PLC輸入@00RR00030001,置3.00為ON,切斷0.00的通路,這樣輸出10.00就轉(zhuǎn)由4.00控制,當輸入@00WR00040001時,4.00為ON,輸出位10.00產(chǎn)生輸出。
(a) PLC正常工作
(b)上位機控制
[align=center]
圖5 通信界面[/align]
//程序初始化:
procedure TForm1.Init_PLC(nPort:integer);
begin
 if  MSComm.PortOpen then
   MSComm.PortOpen:=False;
  MSComm.Commport:=nPort; 
//通信端口選擇
  MSComm.Settings:=‘9600,e,7,1‘;
//1位起始位,7位數(shù)據(jù)位,偶效驗,2位停止位,9600bps
  MSComm.PortOpen:=True;//打開串口
end;    
//FCS校驗
function FCS(s:string):variant;
vari,len,tmpVar:integer;
   DataCheck:byte;
   f1,f2:byte;
begin
f1:=0;
f2:=0;
DataCheck:=0;
len:=length(s);
tmpVar:=0;
for i:=1 to len do
begin
DataCheck:=ord(DataCheck) xor ord(s[i]);
end;
f1:=DataCheck and $0f;
f2:=DataCheck and $f0;
f2:=f2 shr 4;
result:=inttostr(f2)+inttostr(f1);
end;
// 調(diào)用MSComm控件實現(xiàn)PLC通信
procedure TForm1.HandShake_PLC;
var
  tmpByte1,tmpByte2:char;
  tmpVar:string;
  s:string;
  begin
  Init_PLC(1);
&nbs 
p; s:=Edit1.text;
  tmpVar:=s+inttostr(FCS(s))+‘*‘+chr(13);
  MSComm.RThreshold:=0;
  MSComm.Output:=tmpVar;
//向串口輸出數(shù)據(jù)
  sleep(1000);// 延時
     tmpVar:=MSComm.Input;
//從串口讀取數(shù)據(jù)
     tmpByte1:=tmpVar[5];
     tmpByte2:=tmpVar[6];
if tmpByte1=chr(48)& tmpByte2:=chr(48);
//校驗碼等于00,PLC正常完成操作
   then
     begin
     Showmessage(‘發(fā)送的數(shù)據(jù)正確‘);
     else
     Showmessage(‘發(fā)送的數(shù)據(jù)有問題‘);
   //end;
  end;  
4.2 實現(xiàn)上位機對PLC的監(jiān)控
    編寫通信程序建立了上位機與PLC的連接.在PLC的任何工作方式下都可以通過”讀”指令讀取PLC的狀態(tài).從而對PLC進行監(jiān)視.只有當PLC的工作方式為監(jiān)視的情況下才可以通過上位機對PLC進行控制.所以在需要上位機實施控制的系統(tǒng)里面PLC都必須設(shè)置為監(jiān)視工作方式.
    上位機只需要設(shè)置PLC的相應(yīng)工作位就可以實現(xiàn)對PLC的控制.下圖為PLC上位機控制過程。圖a表示PLC 正常工作時輸出由輸入0.00控制,當需要把PLC的控制轉(zhuǎn)由上位機控制時,只需要通過向PLC輸入@00RR00030001,置3.00為ON,切斷0.00的通路,這樣輸出10.00就轉(zhuǎn)由4.00控制,當輸入@00WR00040001時,4.00為ON,輸出位10.00產(chǎn)生輸出。
(a) PLC正常工作
(b)上位機控制
[align=center] 圖6  PLC的上位機控制[/align]
5 結(jié)束語
    本文探討了實現(xiàn)PLC的上位鏈接系統(tǒng)通信的方法,以及要實現(xiàn)上位機對下PLC控制的PLC編程。通過上位機對PLC的監(jiān)視與控制,可用方便的實現(xiàn)工廠生產(chǎn)過程的自動化監(jiān)控。
參考文獻
[1] 弭洪濤,畢國忠等.PLC應(yīng)用技術(shù).北京:中國電力出版社2004
[2] 宋伯生.PLC編程理論 算法及技巧. 北京:機械工業(yè)出版社2006
圖6  PLC的上位機控制[/align]
5 結(jié)束語
    本文探討了實現(xiàn)PLC的上位鏈接系統(tǒng)通信的方法,以及要實現(xiàn)上位機對下PLC控制的PLC編程。通過上位機對PLC的監(jiān)視與控制,可用方便的實現(xiàn)工廠生產(chǎn)過程的自動化監(jiān)控。
參考文獻
[1] 弭洪濤,畢國忠等.PLC應(yīng)用技術(shù).北京:中國電力出版社2004
[2] 宋伯生.PLC編程理論 算法及技巧. 北京:機械工業(yè)出版社2006 
標簽:
                                 
                            
傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
產(chǎn)品新聞
更多>2025-10-31
2025-10-22
2025-10-17
2025-10-11
2025-10-09
2025-09-23