【摘要】本文介紹了臺(tái)灣泓格I-7000系列模塊通過串口通訊方式與西門子S7-200主機(jī)連接,替代西門子擴(kuò)展模塊的設(shè)計(jì)與調(diào)試詳細(xì)步驟,為企業(yè)降低成本提供了一種行之有效的解決方法。
【關(guān)鍵詞】S7-200;泓格;自由通訊接口
引言
S7-200系列可編程控制器是德國(guó)西門子公司的產(chǎn)品。憑借其強(qiáng)大的組網(wǎng)能力、友好易用的編程軟件、極高的性價(jià)比和不斷的創(chuàng)新成為市場(chǎng)上眾多小型可編程序控制器的領(lǐng)跑者,深受中國(guó)用戶的喜愛。型號(hào)不同的主機(jī)具有1個(gè)到2個(gè)RS-485通訊口。通訊口所支持的協(xié)議包含有:
●PPI協(xié)議:西門子專用通訊協(xié)議
●MPI協(xié)議:只能做從站
●用戶自定義通訊協(xié)議,用于同其他串行通訊設(shè)備連接(比如條碼槍、噴碼機(jī))
臺(tái)灣泓格I-7000系列遠(yuǎn)程I/O模塊包含多種支持RS-485通訊格式的I/O單元類型,自帶雙看門狗,能穩(wěn)定的工作在-25~+75℃的范圍內(nèi)。因性價(jià)比極高,已經(jīng)廣泛的應(yīng)用于國(guó)內(nèi)多個(gè)工業(yè)領(lǐng)域。我們可以通過使用泓格I-7000系列模塊與S7-200主機(jī)直接相連這種方式,極大的擴(kuò)展S7-200主機(jī)的I/O點(diǎn)數(shù)及功能。并且由于泓格模塊價(jià)格便宜,可顯著降低項(xiàng)目硬件成本。
1、實(shí)驗(yàn)步驟
1.1泓格模塊設(shè)置
因?yàn)殡娔X本身串口只支持RS-232協(xié)議,因此通過I-7520協(xié)議轉(zhuǎn)換模塊與I-7017模塊相連。然后使用泓格提供的Utility軟件,通過泓格自己的DCON協(xié)議對(duì)模塊的地址及通訊速率及校驗(yàn)方式進(jìn)行設(shè)定。設(shè)定完成之后,我們可以先測(cè)試下模塊,通過Utility發(fā)送功能代碼$AAM讀取模塊名稱。此處,$為分隔符;AA為剛才我們?cè)O(shè)置好的模塊地址,比如01;M為功能代號(hào),表明需要讀取模塊名稱。實(shí)際測(cè)試結(jié)果如下所示:
SEND:$01M RECEIVE:!017017
在模塊返回的字符串中,!表示命令合法;01表示模塊地址;7017表示模塊名稱。
1.2S7-200軟件編程
用戶程序通過執(zhí)行接收中斷、發(fā)送中斷、發(fā)送指令及接收指令來對(duì)串口執(zhí)行DCON通訊模式的操作。
我們選用通訊口0與泓格模塊進(jìn)行通訊。
1)系統(tǒng)初始化
LD SM0.1 //系統(tǒng)第一個(gè)掃描周期
MOVB 16#09,SMB30//初始化自由口
//通訊速率9,600bps
//數(shù)據(jù)位為8位
//無校驗(yàn)MOVB
16#B0,SMB87 //初始化接收信息狀態(tài)字節(jié)
//允許接收信息功能
//忽略SMB88的起始檢測(cè)信息
//使用SMB89的結(jié)束檢測(cè)信息
//使用SMW90的空閑狀態(tài)檢測(cè)
MOVB 16#0D,SMB89//設(shè)置結(jié)束字符為16#0D(回車字符)
MOVW +10,SMW90//設(shè)置空閑線最大時(shí)間為10ms
MOVB 80,SMW90//設(shè)置所接收的最大字符數(shù)為80
ATCH INT_0,9//連接中斷0到接收結(jié)束事件
ATCH INT_1,23//連接中斷1到發(fā)送結(jié)束事件
ENI //允許用戶中斷
XMT VB10,0 //發(fā)送用戶自定義數(shù)據(jù)塊中數(shù)據(jù)
2)系統(tǒng)接收及發(fā)送中斷
由于通訊口不能同時(shí)執(zhí)行接收和發(fā)送操作,為避免程序紊亂,可以采用中斷方式執(zhí)行字符串的收發(fā)。首先,PLC執(zhí)行XMT指令,給泓格模塊發(fā)送命令字符串。發(fā)送完緩沖區(qū)中最后一個(gè)字符時(shí)產(chǎn)生一個(gè)發(fā)送中斷INT_1,然后使用ATCH指令連接一個(gè)10ms左右的定時(shí)器觸發(fā)另一個(gè)定時(shí)中斷INT_2(中斷號(hào)為10)。在INT_2中斷程序中添加RCV指令,當(dāng)系統(tǒng)接收到16#0D結(jié)束字符后,執(zhí)行接收中斷INT_0,在INT_0中斷程序中添加XMT指令。系統(tǒng)由此產(chǎn)生發(fā)送和接收中斷的循環(huán)操作。周而復(fù)始的從泓格模塊讀取數(shù)據(jù)然后存儲(chǔ)到自己的內(nèi)部存儲(chǔ)器中,供用戶調(diào)用。
3)多個(gè)模塊的輪詢
使用計(jì)數(shù)器功能,對(duì)多個(gè)泓格模塊進(jìn)行輪詢操作。因?yàn)閷?duì)于每個(gè)模塊的發(fā)送內(nèi)容除了地址號(hào)不一樣,其余字符串完全一致,因此可以采用用戶自定義數(shù)據(jù)塊的方式。每次只需要修改地址字節(jié)的數(shù)值即可實(shí)現(xiàn)循環(huán)操作。
比如要讀取地址為01的I-7017模塊的0通道數(shù)據(jù),功能代碼為#AAN。其中,AA為模塊地址;N為讀取通道,基準(zhǔn)值為0。
VB10 16#05 //字符串長(zhǎng)度
VB11 ‘#010’ //十六進(jìn)制或直接ASCII碼均可
//對(duì)應(yīng)模塊地址01
//讀取0通道數(shù)據(jù)
VB15 16#0D //回車
實(shí)際測(cè)試結(jié)果如下:
SEND:#010
RECEIVE:>+012.13
程序中只需要執(zhí)行VB13的遞增操作就可以實(shí)現(xiàn)模塊輪詢了。
4)字符串轉(zhuǎn)浮點(diǎn)數(shù)
S7-200從泓格獲取的數(shù)據(jù)直接轉(zhuǎn)存到每個(gè)模塊相應(yīng)的VD保存區(qū)。但是這些數(shù)據(jù)是字符串格式,不能直接與實(shí)際物理量進(jìn)行換算,因此需要對(duì)數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換。
LDB= SMB86,+20
SSCPY VB200, 3, 6, VB2000//字符串復(fù)制為子字符串
STR VB2000, 1, VD2400//將子字符串轉(zhuǎn)換為實(shí)數(shù)
SSCPY VB209, 1, 6, VB2010
STR VB2010, 1, VD2404
5)注意事項(xiàng)
實(shí)驗(yàn)過程中,有一項(xiàng)需要用戶特別注意。PLC在發(fā)送指令后,如果由于模塊斷電或模塊損壞等原因造成PLC始終未接收到泓格模塊的返回信息,端口0將始終處于接收狀態(tài)。此時(shí),無法進(jìn)行發(fā)送數(shù)據(jù)操作。用戶可以先將SMB87中的使能位置0,然后再執(zhí)行一次接收指令即可立即將端口0設(shè)置為無作業(yè)狀態(tài)。
2、實(shí)驗(yàn)總結(jié)
實(shí)驗(yàn)證明,只要是在實(shí)時(shí)性要求不是非常高的環(huán)境下,泓格I-7000系列模塊完全可以替代西門子S7-200擴(kuò)展模塊,實(shí)現(xiàn)用戶所要求的各項(xiàng)功能。我們?cè)趯?shí)驗(yàn)中所選取的是泓格I-7017模塊,泓格I-7000系列模塊還包含:熱電偶輸入模塊、熱電阻輸入模塊、模擬量輸出模塊及高速計(jì)數(shù)等高性能模塊,用法與I-7017類似。
本實(shí)驗(yàn)結(jié)果已經(jīng)成功應(yīng)用在大連某電鍍工業(yè)園廢水排放檢測(cè)項(xiàng)目,用于工業(yè)廢水中COD及氨氮等有害物質(zhì)濃度檢測(cè)。
參考文獻(xiàn)
[1]西門子(中國(guó))有限公司.深入淺出西門子S7-200 PLC.北京航空航天大學(xué)出版社,2003(12).
[2]泓格科技.I-7017,I-7018,I-7019,M-7017,M-7018 and M-7019 Series User Manual.
[3]泓格科技.Getting Started for I-7000 Series Modules.
[4]許靜,朱曉民,程金等.利用西門子S7-200自由通訊接口實(shí)現(xiàn)與條碼掃描槍的通訊.制造業(yè)自動(dòng)化,2011(10).
[5]梁秀滿,劉振東,李雁.用泓格7000模塊擴(kuò)展西門子S7-200 I/O模塊的方法.自動(dòng)化儀表,2005,26(4).