Delphi 如何透過 Com Port 取得PLC I/O 資料?? |
答題得分者是:conundrum
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
1.有關DELPHI部分
delphi要和com port連線需在delphi安裝com port 元件或透過API的方式來連接
有關COM PORT元件可以在深度歷險網站下在或購買文魁出版的DELPHI 與RS232串列通訊控制的書本研讀(都需要撰寫通訊程式)
2.有關PLC部分
A.PLC控制語言需瞭解並且能撰寫(有圖控式及完全程式碼)
B.PLC要通訊也要撰寫通訊程式,
C.DELPHI寫的命令及數據PLC要認識(PLC廠商會提供一本PLC通訊的命令的手冊) 3.有關連線測試部份
這對初學是一大考驗
你可以在兩台電腦作連線測試,先確認DELPHI寫的程式會正常工作
然而連線測試
|
sung9918
一般會員 發表:0 回覆:8 積分:1 註冊:2004-01-05 發送簡訊給我 |
我有與 OM AB KV 三種 PLC 連線過.....(只有控制幾個點) 以 OM 為例:
OM_PLC one word is 16 bit 0xFFFF uu =unit id normal is "00"
bbbb=beginWord
nnnn=numOfWord
cc =FCS (check sum)
0000 1111 2222 .... is return data or write data (1st 2st 3st ... word)
rr =response code 電腦下 READ "@uuRRbbbbnnnncc*\r"
PLC return "@uuRRrr000011112222....cc*\r" 電腦下 WRITE "@uuWRbbbb000011112222....cc*\r"
PLC return "@uuWRrrcc*\r" WRITE "@uuSCmmcc*\r"
return "@uuSCrrcc*\r"
*********************************************************************
void PLC_OM_AddCheckSum(char *si,char *so)
{ unsigned char x;
char *s=si; x='@';
while (*s) x ^=*s ;
sprintf(so,"@%sX*\r",si,x);
} /*----------------------------------------------------------------------------*/ int PLC_OM_XX_read(char *func,int com_port,int beginWord,int numOfWord,char *ret_str)
{
sprintf( plcStr1, "00%-2sdd", func, beginWord, numOfWord );
PLC_OM_AddCheckSum( plcStr1, plcStr2 );
p232_FlushIn( com_port );
p232_WrStr( com_port, plcStr2 );
delay(50);
p232_RdLine( com_port, plcStr2, 11 numOfWord*4 , 0x0d);
substr( plcStr2, plcStr3, 5, 2 );
if (!PLC_OM_FindError(plcStr3)) return(0);
substr( plcStr2, ret_str, 7, numOfWord*4 );
return(1);
}
/*----------------------------------------------------------------------------*/
int PLC_OM_DM_read(int com_port,int beginWord,int numOfWord,char *ret_str)
{
return(PLC_OM_XX_read("RD", com_port, beginWord, numOfWord, ret_str));
} 可以讀 DM IR HR .....理論上可以讀寫 PLC 上所有點.....
我不會 PLC 語法, 當時是參考 PLC 手冊, 及 232的 DATAMONITOR 試出來的....
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |