 S係列I/O前端與可編程控製器的連接 一、概述 PLC(可編程控製器)應用廣泛,其CPU功能較強,可靠性高,但在輸入輸出I/O方麵,PLCcunzaijiageguogao,kuozhanmokuaibugeli,shuruxinhaohaiyaojinxingbianchengyunsuanlaiwanchengcaiji,pinpaifanduo,hubujianrong,yonghushiyongqilaibufangbiandengquedian。wogongsiyanzhishengchandeS係列I/O前端具有模入(AI)、模出(AO)、開入(DI)、開出(DO)等功能;規格多樣;工程量值輸出;RS485通訊接口;靈活的通訊協議;擴展簡捷;價格低廉。但在複雜控製等應用場合較PLC就有所欠缺,而PLC的優勢恰恰在此。S係列I/O前端可以方便地與各種PLC構gou成cheng秒miao級ji的de多duo點dian數shu據ju采cai集ji和he控kong製zhi係xi統tong,並bing可ke更geng快kuai捷jie地di融rong入ru已yi有you的de采cai集ji控kong製zhi係xi統tong當dang中zhong,大da大da降jiang低di係xi統tong工gong程cheng費fei用yong。二er者zhe結jie合he可ke以yi彌mi補bu各ge自zi的de缺que陷xian,使shi係xi統tong達da到dao良liang好hao的de性xing價jia比bi。 下麵以西門子S7-200(CPU226)和S係列I/O前端連接所構成的采集控製係統為例,展示這種方案的優勢所在: 1. S係列I/O前端與PLC的接口程序軟件由我公司編寫並無償提供給用戶,用戶隻要將該段程序嵌入自己的程序中即可。用戶在PLC編程中或在上位機讀寫S係列I/O前端的輸入輸出數據時,隻和PLC中的I/O數據映射區(位於V區內)打交道,大大減少了用戶工作量和編程複雜程度。 2. 采用PLC的自由通訊口與S係列I/O前端連接(RS485總線),方便地擴展至少32個模塊。 3. 擴展係統AI/AO點最多達512點,DI/DO點最多達1024點,極大的拓展了PLC的I/O點數。 4. 現場獨立安裝,擴展靈活,多樣,調試方便。 5. 模擬量為直接工程量值,無需編程運算完成采集及輸出。 6. 具有通道與通道之間隔離,現場與計算機隔離特性。 7. 利用PLC的CPU豐富資源,使整套係統具有可編程及PID等控製功能,並可脫離上位機獨立運行。 8. 利用PLC的通訊擴展模塊,使係統簡捷地接入以太網絡及PROFIBUS-DP總線網絡。 9. 特別適合於各種場合的秒級采集控製應用。 二、連接要點及注意事項 ● S7-200(CPU226)具有兩個RS485通訊口,通訊口1(PORT0)與上位機相連;通訊口2(PORT1)以自由口方式與S係列I/O前端的RS485通訊線相連。 ● 通訊口2(PORT1)通訊速率為38400 bps,8位數據位,1位停止位,無奇偶校驗。 ● 通訊方式為主從式,PLC為主,S係列I/O前端為從。 ● PLC與S係列I/O前端的通訊電纜連接對應表 PLC的9針插頭------------S係列I/O前端的接線端子 3 ------------ 37 (RS485 A ) 5 ------------ 35 (RS485 地) 8 ------------ 36 (RS485 B ) ● 用戶在使用之前應將S係列I/O前端的站址設置好,並將通訊速率設置為38400 bps,通信協議為S_PLC。 ● 如果有多個(N個)S係列I/O前端,站址應從01開始,依次至N為止,連續不得跳躍。 ● 通訊協議(參見後麵說明)的具體細節用戶可忽略。S係列I/O前端與PLC的接口程序名為S_PLC 。 ● PLC將對各S係列I/O前端不停進行循環采集及控製輸出,1秒之內即可將32個S係列I/O前端采集或輸出控製完畢。 ● 采集及輸出控製單元皆存放於固定V變量區,由用戶讀取或寫入(模擬信號讀取或寫入格式為INT)。占用V區空間從V3900起始,占用1124字節,即到V5024結束 ,其中V3900~3933為連接S係列I/O前端定義前端個數及型號定義區;V4000~V5024為S係列I/O前端輸入輸出數據映射區,每個I/O前端分配32個字節,連接32個前端時共計為1024 字節(參見I/O數據映射區說明)。 三、連接程序說明 S係列I/O前端與 S7-200(CPU226)的連接程序(程序名稱為S_PLC)包含一個主程序,8個子程序和3個中斷服務程序。3個中斷服務程序分別是端口1(PORT1)接受信息完成中斷(事件號為24)、端口1(PORT1)發送字符中斷(事件號為26)、定時中斷0(事件號為10,定時中斷時間間隔寄存器為SMB34)。 主程序(MAIN)進行通訊口2(PORT1)的初始化,並觸發發送字符中斷,啟動S7-200(CPU226)對S係列I/O前端的通訊。當與一個S係列I/O前端通訊完成後,由接收中斷程序自動啟動與下一個站址S係列I/O前端的通訊,如此循環往複。定時中斷0程序是對發送字符和接收信息完成中斷超時(>50ms)的處理,該程序將停止對這兩個中斷的響應並啟動下一個站址的S係列I/O前端的通訊工作。 用戶隻要將該段主程序(MAIN)嵌入自己的主程序中,將餘下的子程序和中斷服務程序置入用戶係統程序中,然後修改USER_SET子程序,根據所需連I/O前端的個數及型號定義V3900~3933變量區即可。 主程序及其說明如下: Network1 LD SM0.1 //首次掃描 DTCH 24 //關接收中斷 DTCH 26 //關發送中斷 DTCH 10 //關超時中斷 MOVD +0,VD3996 //清除32個站的超時標誌 MOVB 16#01,SMB130 //初始化PORT1口為自由口,通訊速率=38400 bps, CALL USER_SET //調用用戶初始係統子程序 CALL FIRST_SET //係統第一次運行初始化 ENI //啟動中斷 CALL FILL_COMMAND //發送取數據命令 CALL GET_FCS1 //求命令校驗碼 Network2 LD SM0.0 CALL GO_PATH //啟動循環 四、連接I/O定義區說明 1.連接S係列I/O前端個數定義單元: VB3900 1 字節 (用戶設置) 2.站址連接S係列I/O前端型號定義單元: VB3902~VB3933 32 字節 (用戶設置) 每個站址所連接的S係列I/O前端的型號均由一個字節定義,VB3902為01號站址對應連接S係列I/O前端型號定義單元 ,VB3933為32號站址對應連接S係列I/O前端型號定義單元,用戶通過修改USER_SET子程序完成對VB3900及 VB3902~VB3933等定義單元的更改。 各型S係列I/O前端對應代碼如下: ◆ S1104=0 S1204=0 ◆ S1108=1 S1208=1 ◆ S1116=2 S1216=2 ◆ S1316=6 ◆ S1332=7 ◆ S1416=8 ◆ S1504=9 五、I/O數據映射區說明 I/O數據映射區: VB4000 1024 字節(每站占32字節) (用戶讀寫) 以第1號站址為例,起始I/O數據映射區地址為VB4000;(第N號站址I/O數據映射區起始地址為VB4000+(N-1)×32) ◆ S1104,S1204 4個模擬量輸出占前8個字節 (VW4000) 讀 字 ◆ S1108,S1208 8個模擬量輸出占前16個字節 (VW4000) 讀 字 ◆ S1116,S1216 16個模擬量輸出占前32個字節 (VW4000) 讀 字 ◆ S1316 A: 16個開關量輸入占前 2 字節 (VB4000) 讀 B: 8 個開關量輸出占第 3 字節 (VB4002) 寫 C: 8 個線圈狀態占第 4 字節 (VB4003) 讀 ◆ S1332 32個開關量輸入占前 4 字節 (VB4000) 讀 ◆ S1416 A: 16個開關量輸出占前 2 字節 (VB4000) 寫 B: 16個線圈狀態占後 2 字節 (VB4002) 讀 ◆ S1504 A: 8 個開關量輸出占第 1 字節 (VB4000) 寫 B: 8 個線圈狀態占第 2 字節 (VB4001) 讀 C: 4個模擬量輸出從第 3 字節開始,占8 字節 (VW4002) 寫 字 D: 4個保持寄存器從第 11字節開始,占8 字節 (VW4010) 讀 字 六、占用PLC軟件和硬件的資源 1.占用軟件資源 主程序兩個節點,三個中斷服務程序,8個子程序。三個中斷為: ●端口1(PORT1)接受信息完成中斷(事件號為24)。 ●端口1(PORT1)發送字符中斷(事件號為26)。 ●定時中斷0(事件號為10,定時中斷時間間隔寄存器為SMB34)。 2.占用硬件資源 ●占用程序空間:大約2500字節。 ●占用V區:V3900~V5024。 ●時間間隔寄存器為SMB34。 ●端口1(PORT1) 七、S_PLC協議說明 該協議除了校驗碼,其他同MODBUS協議。MODBUS協議的校驗碼為兩個字節CRC校驗碼,S_PLC協議變成1個字節FCS校驗碼加一個字節FF。FCS校驗碼為所命令或返回數據按字節異或後的結果。 八、USER_SET子程序舉例說明 該例子為PLC連接5個S係列I/O前端時,修改USER_SET子程序例子,其中第一個前端(站址為01)型號為S1116,第二個前端(站址為02)型號為S1216,第三個前端(站址為03)型號為S1316,第四個前端(站址為04)型號為S1416,第五個前端(站址為05)型號為S1504。具體設置如下程序: Network1 LD SM0.0 MOVB +5,VB3900 // 係統站址個數(S係列I/O前端個數) MOVB +2,VB3902 // 01號站址對應S係列I/O前端型號為S1116 MOVB +2,VB3903 // 02號站址對應S係列I/O前端型號為S1216 MOVB +6,VB3904 // 03號站址對應S係列I/O前端型號為S1316 MOVB +8,VB3905 // 04號站址對應S係列I/O前端型號為S1416 MOVB +9,VB3906 // 05號站址對應S係列I/O前端型號為S1504 九、用戶應用舉例說明 該例子示範了用戶如何將S_PLC程序和自己的軟件結合在一起。 首先用戶將S_PLC程序中的主程序並入自己的主程序中(Network1和Network2是S_PLC 程序,Network3以下為用戶應用程序,見以下程序);將餘下的子程序拷入用戶自己的項目程序中即可。用戶要根據自己實際工況來修改USER_SET子程序(參見上述章節)。 Network1 LD SM0.1 //首次掃描 DTCH 24 //關接收中斷 DTCH 26 //關發送中斷 DTCH 10 //關超時中斷 MOVD +0,VD3996 //清除32個站的超時標誌 MOVB 16#01,SMB130 //初始化PORT1口為自由口,通訊速率=38400 bps, CALL USER_SET //調用用戶初始係統子程序 CALL FIRST_SET //係統第一次運行初始化 ENI //啟動中斷 CALL FILL_COMMAND //發送取數據命令 CALL GET_FCS1 //求命令校驗碼 Network2 LD SM0.0 CALL GO_PATH //啟動循環 Network3 //用戶應用程序 LD SM0.0 MOVW VW4000,AC0 MOVW AC0,VW1000 //將S1116(一號站)的第一通道測量值放入VW1000 MOVW 16#2500,VW4128 //置入S1504(五號站)的第一模擬量輸出值 北京西姆宏儀器儀表有限公司 2004年
|