西門子存儲卡6ES7953-8LJ30-0AA0
S7-300/ET 200M 需要 24V DC 電源。
SITOP 負(fù)載電源把 120/230 VAC 線路電壓轉(zhuǎn)換到所需的 24 VDC 工作電壓。
這些模塊可利用外部電壓為S7-300/ET200M以及傳感器和執(zhí)行器供電。
負(fù)載電源模塊安裝在 CPU/IM 361/IM153(插槽1)左邊的 DIN 導(dǎo)軌上。
通過所提供的電源連接器連接到 CPU/IM 361/IM153 上。
該模板的前面板包括:
前面板上通過蓋板保護(hù)的還有:
負(fù)載電源也可安裝在 35 mm 的標(biāo)準(zhǔn)導(dǎo)軌上(EN 50 022),這需要下述安裝適配器:
SIMATIC PS 307 單相負(fù)載電源(系統(tǒng)和負(fù)載電源)帶輸入電壓范圍自動選擇功能。其設(shè)計和功能非常適用于 SIMATIC S7-300 PLC。 借助于隨該系統(tǒng)和負(fù)載電源提供的連接梳形件,可迅速建立與 CPU 電源連接。 它也可以向其它 S7-300 系統(tǒng)部件、輸入/輸出模塊的輸入/輸出電路以及(如有必要)傳感器和執(zhí)行器提供 24 V 電源。 該電源通過了全面認(rèn)證(如 UL、ATEX 或 GL),可以通用(不適合室外應(yīng)用)。
按照CPU 的裝載存儲器來分類:新型S7-300 CPU、標(biāo)準(zhǔn)型S7-300 CPU、帶內(nèi)置EPROM 的S7300 CPU,具體描述如下:
新型S7-300 CPU是指使用MMC卡作為其裝載存儲器的CPU,此類CPU不用安裝后備電池,免維護(hù)。由于新型S7300-CPU它不含內(nèi)置的裝載存儲器,因此必須使用MMC卡。新型的S7-300 CPU包括緊湊型 (即CPU31xC系列)和由標(biāo)準(zhǔn)型更新的新型CPU。任何程序的下載方式都直接保存到卡中, 沒有MMC卡,是無法把程序下載到CPU中的。
MMC卡需要用戶根據(jù)程序大小單獨訂貨,選型時建議大于CPU工作內(nèi)存,CPU313,CPU314,CPU315-2DP,CPU317-2DP 系列CPU的可插拔MMC卡大支持8 MB
S7-200以太網(wǎng)向?qū)渲?/strong>
可以把S7-200的以太網(wǎng)模塊CP243-1配置為CLIENT,使用STEP 7 Micro/WIN中的向?qū)нM(jìn)行通信的配置即可。在命令菜單中選擇工具--以太網(wǎng)向?qū)А?
圖1 打開以太網(wǎng)向?qū)?br />
*步是對以太網(wǎng)通信的描述,點擊下一步開始以太網(wǎng)配置。
圖2 向?qū)Ы榻B
在此處選擇模塊的位置,CPU后的*個模塊位置為0,往后依次類推;或者在線的情況下,點擊讀取模塊搜尋CP243-1模塊(在線讀取將該模塊的命令字節(jié)載入模塊命令字節(jié)向?qū)聊唬?。點擊下一步;
圖3 讀取模塊
選擇模塊相匹配的MLFB版本,本例中的CP243-1模塊型號為6GK7243-1EX01-0XE0,如下圖所示:
圖4 模塊版本選擇
在此處填寫IP地址和子網(wǎng)掩碼。點擊下一步;
圖5 地址設(shè)置
下面的對話框?qū)⒔M態(tài)CP243-1進(jìn)行S7連接的連接數(shù)量的設(shè)置,通過S7連接可以與通信伙伴進(jìn)行讀寫數(shù)據(jù)操作。點擊“下一步”按鈕繼續(xù)進(jìn)行S7連接組態(tài)。
圖6 模塊占用地址設(shè)置
選擇此為客戶機(jī)連接,遠(yuǎn)程屬性TSAP (Transport Service Access Point)填寫為03.02,輸入S7-300側(cè)的IP地址。點擊數(shù)據(jù)傳輸按鈕進(jìn)入數(shù)據(jù)交換的定義。
注意:如果連接遠(yuǎn)程對象是 S7-300,TSAP為03.02;如果連接遠(yuǎn)程對象是 S7-400,TSAP為03.0x,其中x為CPU模塊的槽位,可以從S7-400 站的硬件組態(tài)中找出PLC的槽號。
圖7 連接設(shè)置
選擇"數(shù)據(jù)傳輸"標(biāo)記,并單擊"新傳輸"按鈕,進(jìn)行配置:選擇是讀取數(shù)據(jù)還是寫入數(shù)據(jù),填寫通訊數(shù)據(jù)的字節(jié)個數(shù),填寫發(fā)送數(shù)據(jù)區(qū)和接收數(shù)據(jù)區(qū)的起始地址。
本例中為從S7-300的MB200開始讀取8個字節(jié)到VB1000開始的8個字節(jié)的區(qū)域中;從S7-200的VB2000開始的8個字節(jié)寫到S7-300的QB0開始的8個字節(jié)的區(qū)域中,點擊確認(rèn)按鈕:
注意: 本地PLC中的地址必須是V內(nèi)存字節(jié)地址,遠(yuǎn)程對象中的地址必須代表字節(jié)地址。當(dāng)您為S7-300/ S7-400設(shè)備輸入遠(yuǎn)程地址時,若是數(shù)據(jù)塊請使用DBx.DBBy格式。
圖8 數(shù)據(jù)區(qū)域設(shè)置
選擇CRC校驗,使用缺省的時間間隔30秒,點擊下一步按鈕。
圖9 使用CRC
填寫模塊所占用的V存儲區(qū)的起始地址。你也可以通過“建議地址”按鈕來獲得系統(tǒng)建議的V存儲區(qū)的起始地址, 點擊下一步按鈕。
圖10 配置存儲區(qū)
S7-200側(cè)編程
完成以太網(wǎng)向?qū)渲煤笮枰诔绦蛑姓{(diào)用以太網(wǎng)向?qū)傻腅THx_CTRL和ETH0_XFR, 然后,將整個項目下載到作客戶端的S7-200 CPU上。
1. 調(diào)用向?qū)傻淖映绦?,實現(xiàn)數(shù)據(jù)傳輸
對于S7-200的同一個連接的多個數(shù)據(jù)傳輸,不能同時激活,必須分時調(diào)用。下面的程序就是用前一個數(shù)據(jù)傳輸?shù)耐瓿晌蝗ゼせ钕乱粋€數(shù)據(jù)傳輸,如圖11.圖12.圖13. 所示
圖11 S7-200程序段1
圖12 S7-200程序段2
圖13 S7-200程序段3
如果通信未建立成功,可以對應(yīng)查詢子程序的錯誤代碼。
S7-200以太網(wǎng)向?qū)гO(shè)置
通過以太網(wǎng)向?qū)⒁蕴W(wǎng)模塊CP243-1配置為服務(wù)器,使用STEP 7 Micro/WIN中的向?qū)нM(jìn)行通信的配置即可。在命令菜單中選擇工具--以太網(wǎng)向?qū)А?
*步是對以太網(wǎng)通信的描述,點擊下一步開始以太網(wǎng)配置。
在此處選擇模塊的位置,CPU后的*個模塊位置為0,往后依次類推;或者點擊讀取模塊搜尋在線的CP243-1模塊(且將該模塊的命令字節(jié)載入模塊命令字節(jié)向?qū)聊唬?。點擊下一步;
選擇模塊相匹配的MLFB版本,如下圖所示:
在此處填寫IP地址和子網(wǎng)掩碼。本例中將IP地址設(shè)置為:140.80.0.60,點擊下一步;
下面的對話框?qū)⒔M態(tài)CP243-1進(jìn)行S7連接的連接數(shù)量的設(shè)置。通過S7連接可以與通信伙伴進(jìn)行讀寫數(shù)據(jù)操作,點擊“下一步”按鈕繼續(xù)進(jìn)行S7連接組態(tài)。本例中CP243-1的第三、四個連接分別為服務(wù)器連接。
組態(tài)一個到S7-300的服務(wù)器連接:
S7-200和S7-300的S7連接通過TSAP來定義。
注意:分別組態(tài)S7-200和S7-300時,本地和遠(yuǎn)程的TSAP號是必須完全對應(yīng)的。通常本地TSAP是默認(rèn)的,所以在組態(tài)此步驟時,需要兩邊確認(rèn)一下。
本地TSAP為12.00無法更改,遠(yuǎn)程TSAP設(shè)置為10.04(這是在STEP7網(wǎng)絡(luò)組態(tài)得到的參數(shù))。激活“接受所有連接請求”復(fù)選框,點擊“下一步”按鈕繼續(xù)組態(tài)。
選擇CRC校驗,使用缺省的時間間隔30秒,點擊下一步按鈕。
填寫模塊所占用的V存儲區(qū)的起始地址。你也可以通過建議地址按鈕來獲得系統(tǒng)建議的V存儲區(qū)的起始地址, 點擊下一步按鈕。
點擊”完成”按鈕完成以太網(wǎng)向?qū)гO(shè)置。
之后功能塊ETHx_CTRL 和 ETHx_XFR將被創(chuàng)建,必須在STEP 7-MicroWIN的主循環(huán)塊MAIN (OB1)中調(diào)用這些功能塊。
功能塊ETHx_CTRL 用于建立通訊。編寫圖中的通訊程序,保存組態(tài)并下載到S7-200 CPU上。
注意:功能塊ETHx_XFR 僅在用于客戶端進(jìn)行數(shù)據(jù)傳送時才被調(diào)用。
S7-300側(cè)組態(tài)
本例中使用S7-300作為樣例建立S7連接,對于S7-400的組態(tài)步驟是一樣的。
在STEP7中打開S7-300項目文件,通過Options--Configure Network或者是相對應(yīng)的圖標(biāo)打開NetPro對話框。
在NetPro中選中S7-300站的CPU并通過菜單命令,Insert--New Connection添加一個新連接。
選擇連接伙伴為“unspecified”及連接類型為“S7 connection”。點擊“Apply”按鈕,之后S7連接的屬性對話框?qū)⒋蜷_。
由于S7連接是由S7-300創(chuàng)建,因此在S7連接的屬性對話框中須激活“Establish an active connection“復(fù)選框。輸入通信伙伴CP243-1的IP地址,之后點擊“Address Details”按鈕
CP 243-1 具有以下功能:
可對通過工業(yè)以太網(wǎng)的數(shù)據(jù)通訊進(jìn)行預(yù)先格式化?;跇?biāo)準(zhǔn)TCP/IP 協(xié)議進(jìn)行通訊。
使用 CP 243-1,通過工業(yè)以太網(wǎng),可實現(xiàn) S7-200 和其它 S7-200或 S7-300 或 S7-400 PLC 之間的通訊。
可通過RJ45 進(jìn)行以太網(wǎng)訪問
通過S7-200 總線,即可與S7-200 系統(tǒng)簡單連接
可以實現(xiàn)一種靈活的分布式自動化架構(gòu)
通過工業(yè)以太網(wǎng)和STEP 7 Micro/WIN 32,實現(xiàn)S7-200 系統(tǒng)的遠(yuǎn)程編程、組態(tài)和診斷。
多可以組態(tài) 8 個連接。對于連接控制(保持活動狀態(tài)),可以為主動和被動伙伴的所有的 TCP/IP 傳輸連接進(jìn)行組態(tài)。
可提供與S7-OPC 的連接
CP 243-1 允許 S7-200 編程軟件 STEP 7-Micro/WIN 通過工業(yè)以太網(wǎng)訪問 S7-200。
無需重復(fù)進(jìn)行編程/組態(tài),即可更換模板(即插即用)
S7 通訊服務(wù),“XPUT/XGET”,既可作為客戶機(jī),也可作服務(wù)器
S7 通訊服務(wù),“READ/WRITE”,作為服務(wù)器
通過預(yù)設(shè)MAC 地址(48 位數(shù)值),進(jìn)行地址分配。(在出廠時已對每個CP 243-1 進(jìn)行了MAC 地址分配。MAC 地址打印在附于上蓋下面的標(biāo)簽上。使用BOOTP 協(xié)議,通過預(yù)設(shè)的MAC 地址
西門子6ES7953-8LP31-0AA0
S7-400H
為保證系統(tǒng)穩(wěn)定運行,系統(tǒng)CPU應(yīng)避免長時間滿負(fù)荷運作,應(yīng)用程序CPU占用不宜過高。客戶需要在調(diào)試階段監(jiān)測應(yīng)用程序各個進(jìn)程線程占用情況,對占用過高的進(jìn)程線程進(jìn)行優(yōu)化。因CE自身不帶進(jìn)程線程系統(tǒng)占用查看工具,我們增加了AppHelper助手工具方便客戶使用。
在之前的技術(shù)文章《CE應(yīng)用程序助手簡介》中簡單介紹過英創(chuàng)AppHelper應(yīng)用程序助手,本文將詳細(xì)介紹AppHelper的使用方法。
AppHelper查看方法
客戶在自制底板上只要引出了網(wǎng)絡(luò),USBOTG,DEBUG調(diào)試串口,或板子其它串口任意之一便可以查看AppHelper信息。
網(wǎng)絡(luò)方式
通過bnet登錄上板子,運行命令sysinfo,即可獲得AppHelper打印的進(jìn)程線程信息。
bnet模式打印示例圖
USBOTG方式
使用AHC工具(使用方法見本文下一節(jié))配置AppHelper輸出為COM1。連接上板子USBOTG口,板子將以虛擬串口形式被PC識別。使用任意串口工具向該串口輸出任意三個字符(任意波特率),即可獲得AppHelper打印的進(jìn)程線程信息。
USBOTG,DEBUG及其它串口打印示例圖
DEBUG調(diào)試串口方式
使用AHC工具(使用方法見本文下一節(jié))配置AppHelper輸出為DEBUG。連接板子的DEBUG串口,PC端使用任意串口工具,設(shè)置波特率115200,向DEBUG口輸出任意三個字符,即可獲得AppHelper打印的進(jìn)程線程信息。
串口方式
將底板上引出,且客戶應(yīng)用程序未使用的串口連接上PC。使用AHC工具(使用方法見本文下一節(jié))配置好串口號及波特率。PC端使用任意串口工具,用設(shè)定的波特率向該串口輸出任意三個字符,即可獲得AppHelper打印的進(jìn)程線程信息。
AHC工具使用介紹
AHC工具即AppHelper Config工具,用于設(shè)置AppHelper打印信息的輸出位置。有兩種辦法進(jìn)行設(shè)置。
控制面板方式
在板子控制面板中運行AHC工具。
選擇好輸出信息的串口及波特率(其中COM1為USBOTG),點擊OK鍵保存配置,板子重啟后配置生效。
bnet方式
通過bnet登錄上板子,執(zhí)行命令A(yù)HC port [baud]
參數(shù)port:串口號,值為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時,baud固定為115200,當(dāng)port為1時,baud值不生效。
命令執(zhí)行后,DEBUG口可以看到打印提示信息。
打印格式說明
打印結(jié)果為數(shù)行,其中每行的格式均為:類型 ID號 占用情況 名稱
以下圖一次打印的部分截圖為例:
類型
PID表示為process進(jìn)程。TID表示為上面進(jìn)程下的thread線程。
ID號
即進(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)程下各個線程total占用和應(yīng)當(dāng)?shù)扔谶M(jìn)程的total占用
名稱
進(jìn)程名即EXE的名稱,線程默認(rèn)沒有名稱,下一節(jié)會介紹如何給線程命名,從而能在AppHelper中顯示出來。
進(jìn)程及線程監(jiān)視說明
AppHelper會打印系統(tǒng)下所有的進(jìn)程的CPU占用信息。
只有在NandFlash目錄下的exe生成的進(jìn)程會額外打印出它下面所有線程的CPU占用信息。
默認(rèn)情況下,生成的線程只有ID號,沒有名稱,如果線程較多會不便于查看。我們可以通過簡單代碼給線程命名。
以光盤里的串口例程SPT_HEX為例:
添加一個結(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)手動將命名取消掉,避免不必要的顯示錯誤,設(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查看,啟動接收線程后,就可以看到CommRecvTread這個線程,另外個沒有命名的線程為SerialPort程序的主線程。
計算原理及誤差說明
CPU占用時間是通過計算一段時間內(nèi)(AppHelper設(shè)置為2000毫秒)CPU空閑tick值與這段時間里CPU運算周期tick值得出。
CPU空閑tick值 = CPU空閑tick計數(shù)t2 – CPU空閑tick計數(shù)t1
CPU總周期tick值 = CPU總周期tick計數(shù)t2 – CPU總周期tick計數(shù)t1
CPU占用 = 1 – (CPU空閑tick值/CPU總周期tick值)×
進(jìn)程或線程的CPU占用,是通過計算一段時間CPU運算周期tick值,和這段周期里Kernel或User運行線程或進(jìn)程的tick值,通過相除得到。
進(jìn)程/線程Kernel占用 = (進(jìn)程/線程Kernel運行tick值/CPU總周期tick值)×