我用的觸屏型號(hào)為TCP7032kt,觸屏上電后,點(diǎn)擊屏幕,進(jìn)入?yún)?shù)設(shè)置模式,更改里面的網(wǎng)絡(luò)參數(shù),使其和你鏈接的電腦在一個(gè)局域網(wǎng)內(nèi);開始創(chuàng)建觸屏設(shè)備,
進(jìn)入屬性設(shè)置
設(shè)置TCP/UDP 為 TCP;IP地址設(shè)置為和電腦在同一局域網(wǎng)內(nèi);設(shè)備站號(hào)設(shè)置為 1或其他值;
然后添加設(shè)備地址,關(guān)聯(lián)變量。觸屏就設(shè)置好了。
1、添加設(shè)備
打開設(shè)備下的COM口,在新建上雙擊打開,
在設(shè)備驅(qū)動(dòng),選擇PLC→莫迪康→ModbusTCP→TCP。
給驅(qū)動(dòng)起一個(gè)名字。
選擇一個(gè)端口號(hào),這里我們是走的TCP協(xié)議,可以隨便選擇一個(gè)。
設(shè)置IP地址,
設(shè)置嘗試恢復(fù)間隔和最長(zhǎng)恢復(fù)時(shí)間。
設(shè)置完成
2、添加數(shù)據(jù)變量
選擇數(shù)據(jù)庫(kù)下的數(shù)據(jù)詞典,雙擊新建,
輸入變量名,選擇變量類型,選擇鏈接設(shè)備,選擇寄存器,輸入寄存器地址,選擇數(shù)據(jù)類型。
變量類型:內(nèi)存類型用來在內(nèi)部使用,I/O類型用來讀取外部數(shù)據(jù),數(shù)據(jù)分為離散類型、整數(shù)、實(shí)數(shù)、字符串。
寄存器:要寫完整的地址,如40001表示4區(qū)的01地址。
數(shù)據(jù)類型:
Bit |
位 |
BYTE |
字節(jié) |
SHORT |
整數(shù) |
USHORT |
無符號(hào)整數(shù) |
LONG |
長(zhǎng)整數(shù) |
FLOAT |
浮點(diǎn)數(shù) |
String |
字符串 |
3、連接數(shù)據(jù)庫(kù)
我使用的數(shù)據(jù)庫(kù)是微軟自帶的Microsoft Access 數(shù)據(jù)庫(kù),使用前先創(chuàng)建好數(shù)據(jù)表,打開電腦的控制面板,把查看方式改為小圖標(biāo),然后選擇管理工具,再選擇 ODBC 數(shù)據(jù)源32位。
雙擊打開,點(diǎn)擊添加,選擇驅(qū)動(dòng)程序,起個(gè)名稱,選擇你新建的數(shù)據(jù)庫(kù)。
打開組態(tài)王,創(chuàng)建記錄體,字段名稱要和數(shù)據(jù)庫(kù)的名稱相同,內(nèi)部變量的類型要和數(shù)據(jù)庫(kù)中變量類型一致。
在命令語(yǔ)言中進(jìn)行設(shè)置,運(yùn)行時(shí)寫SQLConnect( \\local\DeviceID, “dsn=mdb;uid=;pwd=”); 。停止時(shí)寫SQLDisconnect(\local\DeviceID); 。這樣運(yùn)行就可以連接上數(shù)據(jù)庫(kù)了。
4、數(shù)據(jù)庫(kù)查詢
首先創(chuàng)建查詢的變量。創(chuàng)建數(shù)據(jù)庫(kù)時(shí),創(chuàng)建一個(gè)自動(dòng)增長(zhǎng)的變量,用來在排序時(shí)使用。
在畫面面板下選擇新建,創(chuàng)建一個(gè)畫面,在工具箱選擇插入通用控件。
在控件上右擊,選擇控件屬性,把要顯示的數(shù)據(jù)庫(kù)內(nèi)容添加進(jìn)來。
接著添加圓角矩形和文字,圓角矩形用來輸入字符串,文字用來顯示輸入的字符串。
開始日期和結(jié)束日期可以做個(gè)腳本,打開畫面時(shí)獲取當(dāng)前日期。
\local\查詢開始日期時(shí)間=\local$Date;
\local\查詢結(jié)束日期時(shí)間=\local$Date;
編號(hào)查詢時(shí),
Ctrl3.Where=“樣品編號(hào)=’”+\local\查詢樣品編號(hào)+"’"+ " Order By 序號(hào) DESC";
Ctrl3.FetchData();
Ctrl3.FetchEnd();
日期查詢時(shí),
string a;
a=" 日期 >=#" +\local\查詢開始日期時(shí)間+"# and 日期 <=#"+\local\查詢結(jié)束日期時(shí)間+"#"+ " Order By 序號(hào) DESC";
Ctrl3.Where=a;
Ctrl3.FetchData();
Ctrl3.FetchEnd();
多條件查詢時(shí),
Ctrl3.SetSqlStringWhere(“樣品編號(hào)=’”+\local\查詢樣品編號(hào),"’ and 工位=’" +\local\查詢工位 + “’”, " Order By 序號(hào) DESC"," “,” “,” “);
Ctrl3.FetchData();
Ctrl3.FetchEnd();
查詢所有時(shí),
Ctrl3.Where=”"+ " Order By 序號(hào) DESC";
Ctrl3.FetchData();
Ctrl3.FetchEnd();
刪除數(shù)據(jù)時(shí),
string a ;
a=" 日期 >=#"+\local\查詢開始日期時(shí)間+"# and 日期 <=#" +\local\查詢結(jié)束日期時(shí)間+ “#”;
SQLDelete( DeviceID, “催化劑磨損指數(shù)”,a);
a=" 日期 >=#"+\local\查詢開始日期時(shí)間+"# and 日期 <=#" +\local\查詢結(jié)束日期時(shí)間+"# and 工位=’" +\local\查詢工位 + “’”;
SQLDelete( DeviceID, “催化劑磨損指數(shù)”,a);
SQLClearTable( DeviceID, “催化劑磨損指數(shù)”);
打印數(shù)據(jù),
Ctrl3.Print();
導(dǎo)出數(shù)據(jù),
Ctrl3.SaveToCSV(“D:\催化劑磨損指數(shù).csv”);