產品簡介
《銷售態度》:質量保證、誠信服務、及時到位!
《銷售宗旨》:為客戶創造價值是我們永遠追求的目標!
《服務說明》:現貨配送至全國各地含稅(17%)含運費!
《產品質量》:原裝正品,*!
《產品優勢》:專業銷售 薄利多銷 信譽好,口碑好,價格低,貨期短,大量現貨,服務周到!
詳細介紹
西門子存儲卡6ES7953-8LP31-0AA0
西門子內存卡6ES7953-8LP31-0AA0是微型存儲卡 用于 S7-300/C7/ET 200, 3,3V Nflash,8 MByte
為保證系統穩定運行,系統CPU應避免長時間滿負荷運作,應用程序CPU占用不宜過高。客戶需要在調試階段監測應用程序各個進程線程占用情況,對占用過高的進程線程進行優化。因CE自身不帶進程線程系統占用查看工具,我們增加了AppHelper助手工具方便客戶使用。
在之前的技術文章《CE應用程序助手簡介》中簡單介紹過英創AppHelper應用程序助手,本文將詳細介紹AppHelper的使用方法。
AppHelper查看方法
客戶在自制底板上只要引出了網絡,USBOTG,DEBUG調試串口,或板子其它串口任意之一便可以查看AppHelper信息。
網絡方式
通過telnet登錄上板子,運行命令sysinfo,即可獲得AppHelper打印的進程線程信息。
telnet模式打印示例圖
USBOTG方式
使用AHC工具(使用方法見本文下一節)配置AppHelper輸出為COM1。連接上板子USBOTG口,板子將以虛擬串口形式被PC識別。使用任意串口工具向該串口輸出任意三個字符(任意波特率),即可獲得AppHelper打印的進程線程信息。
USBOTG,DEBUG及其它串口打印示例圖
DEBUG調試串口方式
使用AHC工具(使用方法見本文下一節)配置AppHelper輸出為DEBUG。連接板子的DEBUG串口,PC端使用任意串口工具,設置波特率115200,向DEBUG口輸出任意三個字符,即可獲得AppHelper打印的進程線程信息。
串口方式
將底板上引出,且客戶應用程序未使用的串口連接上PC。使用AHC工具(使用方法見本文下一節)配置好串口號及波特率。PC端使用任意串口工具,用設定的波特率向該串口輸出任意三個字符,即可獲得AppHelper打印的進程線程信息。
AHC工具使用介紹
AHC工具即AppHelper Config工具,用于設置AppHelper打印信息的輸出位置。有兩種辦法進行設置。
控制面板方式
在板子控制面板中運行AHC工具。
選擇好輸出信息的串口及波特率(其中COM1為USBOTG),點擊OK鍵保存配置,板子重啟后配置生效。
telnet方式
通過telnet登錄上板子,執行命令AHC port [baud]
參數port:串口號,值為0-6,0表示DEBUG串口,1表示USBOTG轉虛擬串口,2-6分別表示板子的COM2-COM6。
參數baud:波特率,可選參數,如果不填表示保持原波特率,支持1200,2400,4800,9600,19200,38400,57600,115200。當port為0時,baud固定為115200,當port為1時,baud值不生效。
命令執行后,DEBUG口可以看到打印提示信息。
打印格式說明
打印結果為數行,其中每行的格式均為:類型 ID號 占用情況 名稱
以下圖一次打印的部分截圖為例:
類型
PID表示為process進程。TID表示為上面進程下的thread線程。
ID號
即進程ID值或線程ID值。
占用情況
顯示格式為 K n% U m% total%
n值為該進程或線程在Kernel系統層的占用
m值為該進程或線程在User用戶層的占用
total值為總占用,它應當等于n+m的和
進程下各個線程total占用和應當等于進程的total占用
名稱
進程名即EXE的名稱,線程默認沒有名稱,下一節會介紹如何給線程命名,從而能在AppHelper中顯示出來。
進程及線程監視說明
AppHelper會打印系統下所有的進程的CPU占用信息。
只有在NandFlash目錄下的exe生成的進程會額外打印出它下面所有線程的CPU占用信息。
默認情況下,生成的線程只有ID號,沒有名稱,如果線程較多會不便于查看。我們可以通過簡單代碼給線程命名。
以光盤里的串口例程SPT_HEX為例:
添加一個結構體的定義
typedef struct _THREAD_INDEX
{
DWORDdwSize;
DWORDdwThreadID;
TCHARszThreadName[32];
_THREAD_INDEX*pNext;
}THREAD_INDEX;
在創建線程后給線程命名
這里把串口接收線程命名為"CommRecvTread"
hRecvThread = CreateThread(0, 0, CommRecvTread, this, 0, &m_dwTID);
HANDLE hHLP;
DWORD dwLen;
hHLP = CreateFile(L"HLP1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
THREAD_INDEXthreadIndex;
wsprintf(threadIndex.szThreadName, L"CommRecvTread");
threadIndex.dwThreadID = m_dwTID;
threadIndex.dwSize = sizeof(THREAD_INDEX);
WriteFile(hHLP, &threadIndex, sizeof(THREAD_INDEX), &dwLen, NULL);
CloseHandle(hHLP);
在結束線程后取消命名
線程結束后應當手動將命名取消掉,避免不必要的顯示錯誤,設置線程名為空,即可取消原命名。
HANDLE hHLP;
DWORD dwLen;
hHLP = CreateFile(L"HLP1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
THREAD_INDEXthreadIndex;
wsprintf(threadIndex.szThreadName, L"");
threadIndex.dwThreadID = m_dwTID;
threadIndex.dwSize = sizeof(THREAD_INDEX);
WriteFile(hHLP, &threadIndex, sizeof(THREAD_INDEX), &dwLen, NULL);
CloseHandle(hHLP);
命名線程后再使用AppHelper查看,啟動接收線程后,就可以看到CommRecvTread這個線程,另外個沒有命名的線程為SerialPort程序的主線程。
計算原理及誤差說明
CPU占用時間是通過計算一段時間內(AppHelper設置為2000毫秒)CPU空閑tick值與這段時間里CPU運算周期tick值得出。
CPU空閑tick值 = CPU空閑tick計數t2 – CPU空閑tick計數t1
CPU總周期tick值 = CPU總周期tick計數t2 – CPU總周期tick計數t1
CPU占用 = 1 – (CPU空閑tick值/CPU總周期tick值)×
進程或線程的CPU占用,是通過計算一段時間CPU運算周期tick值,和這段周期里Kernel或User運行線程或進程的tick值,通過相除得到。
進程/線程Kernel占用 = (進程/線程Kernel運行tick值/CPU總周期tick值)×
進程/線程User占用 = (進程/線程User運行tick值/CPU總周期tick值)×
進程/線程CPU占用 = 進程/線程Kernel占用 + 進程/線程User占用
打印結果可能會有少量誤差,可能由于以下原因:
1、實驗值計算到個位,小數部分四舍五入,所以可能產生細微的誤差。
2、理想中的測量情況如下圖
但是實際情況由于AppHelper本身也會產生系統消耗,所以測量情況為下圖
在Δt值不為0的情況下,如果在Δt期間各個tick值產生較大跳動時,測試結果可能產生誤差。
3、各個進程或線程的運行tick值并非*實時變化,而是在進程或線程完成一個時間片掛起后才加上,所以查詢函數獲得值不一定非常。
測試程序及說明
test_prc_thd是一個簡單的程序,用來測試AppHelper的進程線程監視功能。
“添加線程"按鈕按下會創建一個新的線程。參數中傳入線程編號,線程ID等信息。
西門子存儲卡6ES7953-8LP31-0AA0
圖1-2:傳統的現場級與車間級自動化監控及信息集成系統
1.1.4 系統主要缺點
(1)信息集成能力不強: 控制器與現場設備之間靠I/O連線連接,傳送4-20mA模擬量信號或24VDC等開關量信號,并以此監控現場設備。這樣,控制器獲取信息量有限,大量的數據如設備參數、故障及故障紀錄等數據很難得到。底層數據不全、信息集成能力不強,不能*CIMS系統對底層數據的要求。
(2)系統不開放、可集成性差、專業性不強:除現場設備均靠標準4-20mA/24VDC連接,系統其它軟、硬件通常只能使用一家產品。不同廠家產品之間缺乏互操縱性、互換性,因此可集成性差。這種系統很少留出接口,答應其它廠商將自己專長的控制技術,如控制算法、工藝流程、配方等集成到通用系統中往,因此,面向行業的監控系統很少。
(3)可靠性不易保證:對于大范圍的分布式系統,大量的I/O電纜及敷設施工,不僅增加本錢,也增加了系統的不可靠性。
(4)可維護性不高:由于現場級設備信息不全,現場級設備的在線故障診斷、報警、記錄功能不強。另一方面也很難完成現場設備的遠程參數設定、修改等參數化功能,影響了系統的可維護性。
1.1.5 現場設備的串行通訊接口是現場總線技術的原形
由于大規模集成電路的發展,很多傳感器、執行機構、驅動裝置等現場設備智能化,即內置CPU控制器,完成諸如線性化、量程轉換、數字濾波甚至回路調節等功能。因此,對于這些智能現場設備增加一個串行數據接口(如RS-232/485)是非常方便的。有了這樣的接口,控制器就可以按其規定協議,通過串行通訊方式(而不是I/O方式)完成對現場設備的監控。假如設想全部或大部分現場設備都具有串行通訊接口并具有同一的通訊協議,控制器只需一根通訊電纜就可將分散的現場設備連接,完成對所有現場設備的監控,這就是現場總線技術的初始想法。
1.2.4 現場總線技術的產生
基于以上初始想法,使用一根通訊電纜,將所有具有同一的通訊協議通訊接口的現場設備連接,這樣,在設備層傳遞的不再是I/O(4-20mA/24VDC)信號,而是基于現場總線的數字化通訊,由數字化通訊網絡構成現場級與車間級自動化監控及信息集成系統。
1.2 現場總線技術概念
1.2.1 現場總線技術
目前,*的現場總線技術概念描述如下:現場總線是安裝在生產過程區域的現場設備/儀表與控制室內的自動控制裝置/系統之間的一種串行、數字式、多點通訊的數據總線。其中,“生產過程"包括斷續生產過程和連續生產過程兩類。
或者,現場總線是以單個分散的、數字化、智能化的丈量和控制設備作為網絡節點,用總線相連接,實現相互交換信息,共同完成自動控制功能的網絡系統與控制系統。
1.2.2 現場總線技術產生的意義
(1)現場總線(Fieldbus)技術是實現現場級控制設備數字化通訊的一種產業現場層網絡通訊技術;是一次產業現場級設備通訊的數字化革命。現場總線技術可使用一條通訊電纜將現場設備(智能化、帶有通訊接口)連接,用數字化通訊代替4-20mA/24VDC信號,完成現場設備控制、監測、遠程參數化等功能。
(2)傳統的現場級自動化監控系統采用一對一連線的、4-20mA/24VDC信號,信息量有限,難以實現設備之間及系統與外界之間的信息交換,使自控系統成為工廠中的“信息孤島",嚴重制約了企業信息集成及企業綜合自動化的實現。
(3)基于現場總線的自動化監控系統采用計算機數字化通訊技術,使自控系統與設備加進工廠信息網絡, 構成企業信息網絡底層,使企業信息溝通的覆蓋范圍一直延伸到生產現場。在CIMS系統中,現場總線是工廠計算機網絡到現場級設備的延伸,是支撐現場級與車間級信息集成的技術基礎。