西門子驅(qū)動(dòng)模塊6SL3120-1TE24-5AA3
直接從用戶程序中發(fā)送認(rèn)證電子郵件。電子郵件客戶端設(shè)計(jì)有通知功能,可以在控制程序中直接通知用戶。
通過(guò)FTP進(jìn)行通訊;
大多數(shù)操作系統(tǒng)平臺(tái)都可以使用的開(kāi)放協(xié)議
設(shè)計(jì)有30 MB RAM文件系統(tǒng),可以用作動(dòng)態(tài)數(shù)據(jù)的中間存儲(chǔ)器。
S7-300 PROFINET CPU集成有Web服務(wù)器。因此,標(biāo)準(zhǔn)Web瀏覽器可以讀出S7-300站中的信息:
CPU一般信息
診斷緩沖區(qū)的內(nèi)容
變量表
標(biāo)簽狀態(tài)
模塊的狀態(tài)
報(bào)文
工業(yè)以太網(wǎng)的相關(guān)信息
PROFINET節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)
等時(shí)模式
使用系統(tǒng)功能“同步模式",可以同步耦合
分布式信號(hào)采集、
PROFIBUS信號(hào)傳輸和
程序執(zhí)行
總線周期時(shí)間的程序運(yùn)行。
創(chuàng)建了自動(dòng)化解決方案,可以以固定間隔時(shí)間(常量總線周期時(shí)間)捕捉并處理輸入和輸出信號(hào)。同時(shí)創(chuàng)建了前后一致的部分過(guò)程圖像。
借助常量總線周期時(shí)間和分布式I/O同步信號(hào)處理技術(shù),S7-300確保可以地重現(xiàn)規(guī)定的過(guò)程響應(yīng)時(shí)間。
為同步模式系統(tǒng)功能提供了極為豐富的支持組件,可以處理運(yùn)動(dòng)控制、測(cè)量值采集和高速控制等領(lǐng)域的苛刻任務(wù)。
在分布式自動(dòng)化解決方案中,目前的SIMATIC S7-300開(kāi)始涉足重要的高速加工處理應(yīng)用領(lǐng)域,并確保可以獲得的和可重現(xiàn)性。這意味著可以以穩(wěn)定的產(chǎn)品不斷地?cái)U(kuò)大生產(chǎn)數(shù)量。
模塊的診斷和過(guò)程監(jiān)視
SIMATIC S7-300的大量輸入/輸出模塊都具有智能功能:
信號(hào)采用的監(jiān)控(診斷)。
監(jiān)控來(lái)自過(guò)程的信號(hào)(硬件中斷)。
診斷
診斷功能可以用來(lái)判斷模塊的信號(hào)采集(針對(duì)數(shù)字量模塊)或者模擬量處理(針對(duì)模擬模塊)是否工作于*狀態(tài)。在診斷分析中,必須區(qū)分可參數(shù)化和非參數(shù)化診斷消息:
可參數(shù)賦值的診斷報(bào)文:
僅由合適的設(shè)定參數(shù)啟用之后才會(huì)發(fā)出診斷消息。
不可參數(shù)賦值的診斷報(bào)文:
這些消息的發(fā)出是一個(gè)常規(guī)事件,即該過(guò)程與參數(shù)化無(wú)關(guān)。
如果某個(gè)診斷消息處于狀態(tài)(例如“無(wú)傳感器輸入"),則模塊會(huì)發(fā)起一個(gè)診斷中斷(若已經(jīng)為該診斷消息設(shè)置了參數(shù),則僅在相應(yīng)的參數(shù)化過(guò)程之后才會(huì)產(chǎn)生中斷)。CPU會(huì)中斷用戶程序或較低優(yōu)先級(jí)任務(wù)的執(zhí)行,并接下來(lái)執(zhí)行相關(guān)的診斷中斷塊(OB 82)。
數(shù)字量輸入/輸出模塊
診斷報(bào)文
可能的故障原因
無(wú)傳感器輸入
傳感器輸入過(guò)載
傳感器輸入至M之間存在短路
無(wú)外部輔助電壓
模塊無(wú)L+電壓
無(wú)內(nèi)部輔助電壓
模塊無(wú)L+電壓
內(nèi)部模塊保險(xiǎn)絲故障
保險(xiǎn)絲燒斷
內(nèi)部模塊保險(xiǎn)絲故障
模塊中的參數(shù)不正確
傳輸?shù)侥K的參數(shù)不正確
時(shí)間監(jiān)控功能已經(jīng)編址(看門狗)
高電磁干擾
模塊故障
EPROM故障
高電磁干擾
模塊故障
RAM故障
高電磁干擾
模塊故障
硬件中斷丟失
硬件中斷到來(lái)的速度超過(guò)了CPU的處理能力
模擬量輸入模塊
診斷報(bào)文
可能的故障原因
無(wú)外部負(fù)載電壓
模塊無(wú)L+負(fù)載電壓
組態(tài)/參數(shù)化錯(cuò)誤
傳輸?shù)侥K的參數(shù)不正確
共模錯(cuò)誤
輸入(M-)之間的UCM電壓差和測(cè)量回路(MANA)的參考電壓過(guò)高
斷路
傳感器回路的電阻過(guò)高
模塊和傳感器之間的連接線出現(xiàn)斷路
通道未切換(開(kāi))
低于測(cè)量范圍的下限
輸入值低于正常范圍,可能因故障所至
量程為4至20 mA,1至5伏:
傳感器極性接反;
量程選擇錯(cuò)誤
其它量程:
量程選擇錯(cuò)誤
高于測(cè)量范圍的上限
輸入值超出量程
模擬量輸出模塊
診斷報(bào)文
可能的故障原因
無(wú)外部負(fù)載電壓
模塊無(wú)L+負(fù)載電壓
組態(tài)/參數(shù)化錯(cuò)誤
傳輸?shù)侥K的參數(shù)不正確
M短路
輸出過(guò)載
輸出QV至MANA短路
斷路
執(zhí)行器電阻過(guò)高
模塊和執(zhí)行器之間的連接線出現(xiàn)斷路
西門子驅(qū)動(dòng)模塊6SL3120-1TE24-5AA3
為保證系統(tǒng)穩(wěn)定運(yùn)行,系統(tǒng)CPU應(yīng)避免長(zhǎng)時(shí)間滿負(fù)荷運(yùn)作,應(yīng)用程序CPU占用不宜過(guò)高??蛻粜枰谡{(diào)試階段監(jiān)測(cè)應(yīng)用程序各個(gè)進(jìn)程線程占用情況,對(duì)占用過(guò)高的進(jìn)程線程進(jìn)行優(yōu)化。因CE自身不帶進(jìn)程線程系統(tǒng)占用查看工具,我們?cè)黾恿薃ppHelper助手工具方便客戶使用。
在之前的技術(shù)文章《CE應(yīng)用程序助手簡(jiǎn)介》中簡(jiǎn)單介紹過(guò)英創(chuàng)AppHelper應(yīng)用程序助手,本文將詳細(xì)介紹AppHelper的使用方法。
AppHelper查看方法
客戶在自制底板上只要引出了網(wǎng)絡(luò),USBOTG,DEBUG調(diào)試串口,或板子其它串口任意之一便可以查看AppHelper信息。
網(wǎng)絡(luò)方式
通過(guò)telnet登錄上板子,運(yùn)行命令sysinfo,即可獲得AppHelper打印的進(jìn)程線程信息。
telnet模式打印示例圖
USBOTG方式
使用AHC工具(使用方法見(jiàn)本文下一節(jié))配置AppHelper輸出為COM1。連接上板子USBOTG口,板子將以虛擬串口形式被PC識(shí)別。使用任意串口工具向該串口輸出任意三個(gè)字符(任意波特率),即可獲得AppHelper打印的進(jìn)程線程信息。
USBOTG,DEBUG及其它串口打印示例圖
DEBUG調(diào)試串口方式
使用AHC工具(使用方法見(jiàn)本文下一節(jié))配置AppHelper輸出為DEBUG。連接板子的DEBUG串口,PC端使用任意串口工具,設(shè)置波特率115200,向DEBUG口輸出任意三個(gè)字符,即可獲得AppHelper打印的進(jìn)程線程信息。
串口方式
將底板上引出,且客戶應(yīng)用程序未使用的串口連接上PC。使用AHC工具(使用方法見(jiàn)本文下一節(jié))配置好串口號(hào)及波特率。PC端使用任意串口工具,用設(shè)定的波特率向該串口輸出任意三個(gè)字符,即可獲得AppHelper打印的進(jìn)程線程信息。
AHC工具使用介紹
AHC工具即AppHelper Config工具,用于設(shè)置AppHelper打印信息的輸出位置。有兩種辦法進(jìn)行設(shè)置。
控制面板方式
在板子控制面板中運(yùn)行AHC工具。
選擇好輸出信息的串口及波特率(其中COM1為USBOTG),點(diǎn)擊OK鍵保存配置,板子重啟后配置生效。
telnet方式
通過(guò)telnet登錄上板子,執(zhí)行命令A(yù)HC port [baud]
參數(shù)port:串口號(hào),值為0-6,0表示DEBUG串口,1表示USBOTG轉(zhuǎn)虛擬串口,2-6分別表示板子的COM2-COM6。
參數(shù)baud:波特率,可選參數(shù),如果不填表示保持原波特率,支持1200,2400,4800,9600,19200,38400,57600,115200。當(dāng)port為0時(shí),baud固定為115200,當(dāng)port為1時(shí),baud值不生效。
命令執(zhí)行后,DEBUG口可以看到打印提示信息。
打印格式說(shuō)明
打印結(jié)果為數(shù)行,其中每行的格式均為:類型 ID號(hào) 占用情況 名稱
以下圖一次打印的部分截圖為例:
類型
PID表示為process進(jìn)程。TID表示為上面進(jìn)程下的thread線程。
ID號(hào)
即進(jìn)程ID值或線程ID值。
占用情況
顯示格式為 K n% U m% total%
n值為該進(jìn)程或線程在Kernel系統(tǒng)層的占用
m值為該進(jìn)程或線程在User用戶層的占用
total值為總占用,它應(yīng)當(dāng)?shù)扔趎+m的和
進(jìn)程下各個(gè)線程total占用和應(yīng)當(dāng)?shù)扔谶M(jìn)程的total占用
名稱
進(jìn)程名即EXE的名稱,線程默認(rèn)沒(méi)有名稱,下一節(jié)會(huì)介紹如何給線程命名,從而能在AppHelper中顯示出來(lái)。
進(jìn)程及線程監(jiān)視說(shuō)明
AppHelper會(huì)打印系統(tǒng)下所有的進(jìn)程的CPU占用信息。
只有在\NandFlash目錄下的exe生成的進(jìn)程會(huì)額外打印出它下面所有線程的CPU占用信息。
默認(rèn)情況下,生成的線程只有ID號(hào),沒(méi)有名稱,如果線程較多會(huì)不便于查看。我們可以通過(guò)簡(jiǎn)單代碼給線程命名。
以光盤里的串口例程SPT_HEX為例:
添加一個(gè)結(jié)構(gòu)體的定義
typedef struct _THREAD_INDEX
{
DWORDdwSize;
DWORDdwThreadID;
TCHARszThreadName[32];
_THREAD_INDEX*pNext;
}THREAD_INDEX;
在創(chuàng)建線程后給線程命名
這里把串口接收線程命名為"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);
在結(jié)束線程后取消命名
線程結(jié)束后應(yīng)當(dāng)手動(dòng)將命名取消掉,避免不必要的顯示錯(cuò)誤,設(shè)置線程名為空,即可取消原命名。
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查看,啟動(dòng)接收線程后,就可以看到CommRecvTread這個(gè)線程,另外個(gè)沒(méi)有命名的線程為SerialPort程序的主線程。