實(shí)現(xiàn)小車往返的自動(dòng)控制??刂茷椋喊聪聠?dòng)按鈕,小車從左邊往右邊(右邊往左邊運(yùn)動(dòng))當(dāng)運(yùn)動(dòng)到右邊(左邊)碰到右邊(左邊)的行程開關(guān)后小車自動(dòng)做返回運(yùn)動(dòng),當(dāng)碰到另一邊的行程開關(guān)后又做返回運(yùn)動(dòng)。如此的往返運(yùn)動(dòng),直到當(dāng)按下停車按鈕后小車停止運(yùn)動(dòng)。
設(shè)計(jì)思路:可以按照電氣接線圖中的思路來進(jìn)行編寫程序。即可以利用下一個(gè)狀態(tài)來封閉前一個(gè)狀態(tài)。使其兩個(gè)線圈不會(huì)同時(shí)。同時(shí)把行程開關(guān)作為一個(gè)狀態(tài)的轉(zhuǎn)換條件。電氣接線圖如下:
接下來進(jìn)行程序的編寫,首先要進(jìn)行 I/O口的分配。根據(jù)要求,I/O口的分配如下表所示。
I/O口分配好后可以根據(jù)上面的電氣接線圖進(jìn)行程序的編寫。參考程序如下:
@
西門子S7- 0PLC的RS485通信口易損壞的原因分析和解決辦法
一、 S7- 西門子6ES7461-3AAO1-OAAO /sign=674c55630a7b0 0V-240V ±10%,單相/三相,交流,0.12kW-45kW;
380V-480V±10%,三相,交流,0.37kW-250kW;
矢量控制,可構(gòu)成閉環(huán)矢量控制,閉環(huán)轉(zhuǎn)矩控制;
高過載能力,內(nèi)置制動(dòng)單元;
三組參數(shù)切換功能。
控制功能:
線性v/f控制,平方v/f控制,可編程多點(diǎn)設(shè)定v/f控制,磁通電流控制免測(cè)速矢量控制,閉環(huán)矢量控制,閉環(huán)轉(zhuǎn)矩控制,節(jié)能控制;
參數(shù)結(jié)構(gòu),調(diào)試;
數(shù)字量輸入6個(gè),模擬量輸入2個(gè),模擬量輸出2個(gè),繼電器輸出3個(gè);
I/O端子板,方便;
采用BiCo技術(shù),實(shí)現(xiàn)I/O端口連接;
內(nèi)置PID控制器,參數(shù)自整定;
集成RS485通訊接口,可選PROFIBUS-DP/Device-Net通訊模塊;
具有15個(gè)固定,4個(gè)跳轉(zhuǎn),可編程;
可實(shí)現(xiàn)主/從控制及力矩控制;
在電源消失或故障時(shí)具有"自動(dòng)再起動(dòng)"功能;
靈活的斜坡函數(shù)發(fā)生器,帶有起始段和結(jié)束段的特性;
快速電流(FCL),防止運(yùn)行中不應(yīng)有的跳閘;
有直流制動(dòng)和復(fù)合制動(dòng)制動(dòng)性能。
西門子PLCS7-400系列
算還能進(jìn)行復(fù)雜的矩陣運(yùn)算。它不僅可用于對(duì)設(shè)備進(jìn)行直接控制,還可以對(duì)多個(gè)下一級(jí)的可編程序控制器進(jìn)行監(jiān)控。
西門子大型機(jī)有S7-400 :處理速度0.3ms / 1k字;
存貯器512k ;I/O點(diǎn)12672;控制性能
可以分為機(jī)、中檔機(jī)和低檔機(jī)。低檔機(jī)
這類可編程序控制器,具有基本的控制功能和一般的運(yùn)算能力。工作速度比較低,能帶的輸入和輸出模塊的數(shù)量比較少。
比如,德國SIEMENS公司生產(chǎn)的S7- /sign=674c55630a7b0 3" src="http://www.dqjsw。。com.cn/uploads/allimg/131029/0Q02CL0-11.png" width="457" />
圖 10 網(wǎng)絡(luò)拓?fù)鋱D
4.2 從站組態(tài)
組態(tài)步驟同3.2節(jié),這里不再贅述。
4.3 主站組態(tài)
首先新建S7-300站,添加CPU314C-2DP,雙擊DP接口,新建一條PROFIBUS網(wǎng)絡(luò)。然后從硬件目錄中選擇CPU314C-2DP GSD文件(路徑參照?qǐng)D4),添加到新建的PROFIBUS網(wǎng)絡(luò)中,為其分配PROFIBUS地址,該地址要與前文的從站地址*。
然后為CPU314C-2DP從站組態(tài)的通信接口區(qū)。本文在硬件目錄中CPU314C-2DP GSD文件下方選擇了“Master_I Sle_Q 1B unit"和“Master_Q Sle_I 1B unit",必須和從站組態(tài)時(shí)通信接口區(qū)保持*。如圖 11所示。
圖 11 主站組態(tài)
主站和從站通信接口區(qū)的對(duì)應(yīng)關(guān)系如表 2 所示:
3使用腳本實(shí)現(xiàn)更多定時(shí)器功能 利用腳本自身的定時(shí)器, 可以通過在腳本中編程的實(shí)現(xiàn)更多其它定時(shí)功能。 3.1整 點(diǎn)歸檔WinCC提供了變量歸檔,變量歸檔分為周期歸檔和非周期歸檔,不管是周期歸檔或非周期的歸檔,都又可以通過一些 變量或腳本返回值來控制歸檔, 比如:整點(diǎn)歸檔。下面的設(shè)置結(jié)合WinCC腳本,實(shí)現(xiàn)了在 整點(diǎn)開始?xì)w檔,歸檔五分種后停止歸檔,即每個(gè)小時(shí)僅歸檔前五分鐘的數(shù)據(jù)。:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3 歸檔名稱:ProcessValueArchive 歸檔變量:NewTag 歸檔周期:1 分鐘 歸檔控制變量 startarchive C腳本觸發(fā)周期:10秒 腳本代碼: #Include "apdefap.h" intgscAction( void ) { #pragma option(mbcs) #pragma code ("kernel32.dll"); void GetLocalTime (SYSTEMTIME* lpst); #pragma code(); SYSTEMTIME time; int t1; GetLocalTime(&time); t1=time.wMinute; if(t1==00) { SetTagBit("startarchive",1); } if(t1==05) { SetTagBit("startarchive",0); } return0; } 歸檔設(shè)置如圖2: 圖2 歸檔設(shè)置 同理,在以上腳本的基礎(chǔ)上做修改,可以實(shí)現(xiàn)在某個(gè)的時(shí)間點(diǎn)打印報(bào)表,只要在觸發(fā)條件時(shí)調(diào)用下列函數(shù): RPTJobPrint(" Myprintjob"); Myprintjob為 事先創(chuàng)建好的打印作業(yè)。 腳 本主要部分在于獲取當(dāng)前時(shí)間,下 面的腳本實(shí)現(xiàn)了獲取當(dāng)前時(shí)間并分別獲取年、月、日、時(shí)、分、秒、毫秒,星期幾的功能。 Varname1 到 Varname8 為 WinCC 內(nèi)部變量。若在 WinCC畫面上顯示時(shí),由于默認(rèn) I/O 域的 格式為999.99, 要把 Varname1 的顯示格式改為9999。 #Include "apdefap.h" intgscAction( void ) { #pragma option(mbcs) #pragma code ("kernel32.dll"); void GetLocalTime (SYSTEMTIME* lpst); #pragma code(); SYSTEMTIME time; GetLocalTime(&time); SetTagWord("Varname1",time.wYear); SetTagWord("Varname2",time.wMonth); SetTagWord("Varname3",time.wDayOfWeek); SetTagWord("Varname4",time.wDay); SetTagWord("Varname5",time.wHour); SetTagWord("Varname6",time.wMinute); SetTagWord("Varname7",time.wSecond); SetTagWord("Varname8",time.wMilliseconds); return 0; } 設(shè)置或讀取時(shí)間的函數(shù)如下: SetSystemTime SetLocalTime GetSystemTime GetLocalTime 中本地計(jì)算機(jī)時(shí)間和格林威治時(shí)間是有區(qū)別的。函數(shù)“SetSystemTime / GetSystemTime"用于設(shè)置或讀取格林威治時(shí)間。 函數(shù)“SetLocalTime / GetLocalTime"用于設(shè)置或讀取本地計(jì)算機(jī)時(shí)間。 兩種時(shí)間會(huì)因地理的時(shí)區(qū)不同而改變。兩個(gè)函數(shù)使用相 同。 3.2 WinCC 項(xiàng)目時(shí)避免腳本初次執(zhí)行及執(zhí)行腳本 全局腳本在項(xiàng)目時(shí),是要執(zhí)行一次的,在有些情況下,需要避免腳本執(zhí)行,就采用在腳本中去判斷。比如 可以創(chuàng)建 WinCC 內(nèi)部布爾型變量 flag,腳本如下: #Include "apdefap.h" intgscAction( void ) { #pragma option(mbcs) if ( GetTagBit("flag")==1) SetTagWord("NewTag",1);//根據(jù)自己的需求編寫對(duì)應(yīng)代碼. else SetTagBit("flag",1); //Return-Type: BOOL return0; } 除了避免項(xiàng)目運(yùn)行時(shí)觸發(fā)腳本執(zhí)行,我們 還可以通過 Sleep() 腳步功能執(zhí)行,比如開機(jī)后五分鐘開始執(zhí)行腳本具體功能,代碼如下: #Include "apdefap.h" intgscAction( void ) { #pragma option(mbcs) |