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