技術(shù)頻道

      S7-200 自由口通訊編程

      自由口模式允許應(yīng)用程序控制S7-200 CPU的通訊端口,使用PC/PPI電纜和自由口功能,可以將S7-200連接到帶有RS-232兼容接口的多種設(shè)備,比如調(diào)制解調(diào)器。這里我們將介紹如何用S7-200連接GSM調(diào)制解調(diào)器發(fā)送短消息,并通過這個(gè)例子來介紹應(yīng)用S7-200自由口編程的一般原則時(shí)及應(yīng)注意的問題。

      在下面的例子中我們將用到:

      1. PC/PPI電纜(10位;9 600波特;DIP開關(guān)設(shè)置:0 1 0 1 1

      2. 西門子 S7-200 CPU22X

      3. TC35 Terminal GSM調(diào)制解調(diào)器

      4. 一個(gè)9直通針轉(zhuǎn)接頭(用來連結(jié)PC/PPI電纜與TC35 Terminal調(diào)制解調(diào)器)

      5. 一根九針直通電纜(用來連結(jié)計(jì)算機(jī)與TC35 Terminal調(diào)制解調(diào)器)

      6. STEP 7-Micro/Win V3.2或更高版本軟件

       


       

      一、 TC35 調(diào)制解調(diào)器AT指令簡(jiǎn)介

      要使用TC35發(fā)送短消息需要使用TC35AT指令,我們首先介紹如何用Windows自帶的超級(jí)終端連接TC35發(fā)送短消息。

      1. 用九針直通的電纜將TC35連接到計(jì)算機(jī)的串口上

      2. 打開超級(jí)終端(開始à程序à附件à通訊à超級(jí)終端)

      3. 為連接取名Connect to TC35T

      4. 選擇TC35連接的串口COM1

      5. 按照下圖的參數(shù)設(shè)置端口。19 200 bpsTC35默認(rèn)的端口波特率,如果該波特率已被更改,請(qǐng)選擇正確的波特率。

      6. 在窗口中鍵入AT回車測(cè)試與TC35的連接,如果連接正確,TC35將返回OK

      7. TC35可以發(fā)送兩種格式的短消息,普通文本格式和PDU格式。應(yīng)用普通文本格式時(shí),短消息內(nèi)容以ASCII碼格式直接輸入,操作比較簡(jiǎn)單,缺點(diǎn)是只能發(fā)送英文短消息;應(yīng)用PDU格式時(shí),短消息內(nèi)容以Unicode格式輸入,可以發(fā)送任何文字,缺點(diǎn)是短消息內(nèi)容需要轉(zhuǎn)換成Unicode碼,并且要把短消息按PDU格式打包,操作比較復(fù)雜(編程復(fù)雜)。通過指令AT+CMGF=0設(shè)置TC35PDU格式發(fā)送短消息(默認(rèn)),AT+CMGF=1設(shè)置TC35以普通文本格式發(fā)送短消息。

      8. 如何以普通文本格式發(fā)送短消息可以在S7-200的網(wǎng)站上找到http://www.ad.siemens.com.cn/applic/s7-200/modem.asp,這里我們將介紹如何發(fā)送中文短消息。要發(fā)送中文短消息必須把短消息內(nèi)容轉(zhuǎn)換成Unicode碼,并按照PDU格式打包發(fā)送給TC35PDU數(shù)據(jù)格式涉及手機(jī)開發(fā)的相關(guān)知識(shí),我們不作詳細(xì)介紹,這里指給出一個(gè)標(biāo)準(zhǔn)格式供大家使用。以下就是一個(gè)PDU格式的數(shù)據(jù)包:

      0001000D91683108214365F700080459296C14

      其中,紅色的數(shù)字(3108214365F7)代表對(duì)方的手機(jī)號(hào)碼,在PDU格式中,手機(jī)號(hào)碼每?jī)晌恍枰獙?duì)調(diào)。比如在上面這個(gè)例子里,對(duì)方的手機(jī)號(hào)碼為13801234567F用來補(bǔ)充7后面的空位。藍(lán)色的數(shù)字(59296C14)是短消息內(nèi)容的Unicode碼,這里5929代表“天”

      6C14代表“氣”。Unicode碼同樣可以用來表示中一般英文字母和數(shù)字,方法是在英文或數(shù)字的ASCII碼前加00。紫色的數(shù)字(04)代表短消息的長(zhǎng)度,它等于其后所有字符個(gè)數(shù)除以2。黑色的數(shù)字每次發(fā)送短消息時(shí)都是相同的,使用時(shí)可以照抄,但前提是所使用的SIM卡在使用前要用手機(jī)設(shè)置好短消息服務(wù)中心號(hào)碼(+8613800100500)。漢字的Unicode碼可以通過編碼轉(zhuǎn)換軟件得到,我們使用的是Megaton Technology公司的一個(gè)編碼轉(zhuǎn)換軟件

      9. 在使用PDU格式發(fā)送短消息時(shí),還必須計(jì)算整個(gè)PDU數(shù)據(jù)包的長(zhǎng)度,PDU數(shù)據(jù)包的長(zhǎng)度等于(PDU數(shù)據(jù)包字符數(shù)-2/2,在上面的例子里:(38-2)/2=18。發(fā)送短消息時(shí),我們先向TC35發(fā)送AT+CMGS=<Length>回車(Length是計(jì)算好的PDU數(shù)據(jù)包的長(zhǎng)度),TC35收到指令后返回一個(gè)“〉”符號(hào),然后我們發(fā)送整個(gè)PDU數(shù)據(jù)包并以組合鍵Ctrl+Z結(jié)束。

      如果短消息被成功的發(fā)送,TC35會(huì)返回+CMGS: x,其中“x”代表該模塊以及發(fā)送的短消息個(gè)數(shù),同時(shí)返回OK

      二、 設(shè)置TC35

      在將TC35連接到S7-200之前我們先要對(duì)TC35作一些設(shè)置,使其適合與PLC通訊。

      1. 通過指令AT+IPR=9600設(shè)置TC35的端口波特率為9 600 bps

      2. 重新建立一個(gè)波特率為9 600 bps的連接,用指令ATE0禁止回波功能。回波功能使調(diào)制解調(diào)器將收到的指令回發(fā)給發(fā)送方,這項(xiàng)功能會(huì)給PLC編程來來不便,當(dāng)禁止回波功能后,TC35只返回指令執(zhí)行的結(jié)果,比如OK等等

      3. 鍵入AT&W0回車將當(dāng)前設(shè)置存為用戶配置文件(掉電保持),再鍵入ATZ0以用戶配置文件重新啟動(dòng)。此后TC35重新上電時(shí)將按照前面所作的設(shè)置啟動(dòng)。

      三、 PLC編程

      現(xiàn)在,我們已經(jīng)知道如何用AT指令發(fā)送短消息,剩下的工作是用PLC程序來發(fā)送這些AT指令。S7-200的通訊端口為RS-485接口,RS-485接口為半雙工接口,因此,編寫PLC程序的關(guān)鍵是避免在通訊端口上同時(shí)發(fā)送和接收。我們下面將介紹一種標(biāo)準(zhǔn)的編程模式,按照這種模式編寫自由口通訊程序可以有效的避免因同時(shí)發(fā)送和接收造成的通訊沖突,從而保證程序的正常運(yùn)行。

      1. 初始化

      Network 1

      LD SM0.1

      MOVB 9, SMB30

      MOVB 2#11000100, SMB87

      MOVB '>', SMB88

      MOVW +5, SMW92

      MOVB 255, SMB94

      ATCH INT_0, 23

      ATCH INT_1, 9

      ENI

      將上面這段程序添加到主程序中,對(duì)PLC的端口0進(jìn)行初始化。這段程序以SM0.1為觸發(fā)條件,每當(dāng)PLC進(jìn)入RUN狀態(tài)時(shí)執(zhí)行一次。


       

      MOVB 9, SMB30

      該指令將端口0設(shè)置為 9600,8,N,1 自由口方式

      MOVB 2#11000100, SMB87

      SM87.7=1 允許端口0接收字符

      SM87.6=1 當(dāng)檢測(cè)到與SMB88中相同的字符時(shí)開始接收,并將該字符當(dāng)作信息的首字符

      SM87.5=0 不檢測(cè)信息的結(jié)束字符

      SM87.4=0 不檢測(cè)端口空閑狀態(tài)

      SM87.3=0 定時(shí)器為內(nèi)部字符定時(shí)器,意思是PLC開始接收信息后(檢測(cè)到起始字符),每接收到一個(gè)字符就啟動(dòng)定時(shí)器,當(dāng)定時(shí)器到達(dá)在SMW92中設(shè)置的時(shí)間后,即認(rèn)為定時(shí)器超時(shí)

      SM87.2=1 允許在定時(shí)器超時(shí)后停止接收,并產(chǎn)生接收完成中斷

      SM87.1=0 忽略Break條件

      MOVB '>', SMB88

      設(shè)置接收起始字符為ASCII碼的”>”,當(dāng)TC35收到AT+CMGS=<Length>后將返回”>”,當(dāng)PLC收到”>”后發(fā)送PDU數(shù)據(jù)包

      MOVW +5, SMW92

      設(shè)置定時(shí)器超時(shí)時(shí)間為5 ms

      MOVB 255, SMB94

      設(shè)置RCV指令接收的最大字符數(shù)位255

      ATCH INT_0, 23

      中斷時(shí)間23為端口0接收完成中斷,將該中斷連接到中斷0

      ATCH INT_1, 9

      中斷時(shí)間9為端口0發(fā)送完成中斷,將該中斷連接到中斷1

      ENI

      中斷允許

      2. 接收TC35的信息

      Network 2

      LD SM0.0

      RCV VB100, 0

      在初始化程序中,端口0以被允許接收來自TC35的信息,在主程序中添加上面的程序?qū)⒍丝?/span>0置于接收狀態(tài)。這時(shí)端口0將檢測(cè)收到的字符,當(dāng)收到”>”時(shí)即開始接收,并把收到的信息保存到VB101開始的存儲(chǔ)器中(VB100中將保存每次收到的字符的個(gè)數(shù),當(dāng)接收結(jié)束時(shí),該位置被清零)。

      3. 發(fā)AT指令

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: asmr国产一区在线| 四虎成人精品一区二区免费网站| 亚洲熟妇无码一区二区三区| 精品免费AV一区二区三区| 亚洲av日韩综合一区二区三区| 亚洲天堂一区在线| 无码人妻精品一区二区三区99仓本| 一区二区视频在线| 亚洲一区电影在线观看| 国产精品99精品一区二区三区| 无码国产精品久久一区免费| 免费一区二区无码视频在线播放| 内射女校花一区二区三区| 亚洲乱码一区二区三区在线观看| 亚洲一区二区三区影院 | 一区二区传媒有限公司| 亚洲日韩中文字幕无码一区| 国产一区中文字幕在线观看| 久久精品国产一区二区三区不卡| 久久精品视频一区二区三区| 欧美日韩一区二区成人午夜电影 | 国产成人无码AV一区二区在线观看| 制服中文字幕一区二区| 伊人无码精品久久一区二区| 国模精品一区二区三区| 国产精品高清一区二区人妖| 国产激情一区二区三区| 亚洲一区二区三区国产精品无码 | 国产凹凸在线一区二区| 99久久精品午夜一区二区| 一区二区免费在线观看| 亚洲国产视频一区| 一区二区三区在线播放| 一区二区三区精品| 亚洲国产成人久久综合一区77 | 午夜一区二区免费视频| 国产av熟女一区二区三区| 2021国产精品视频一区| 日本在线不卡一区| 国产一区二区三区不卡在线观看| 无码人妻精品一区二区|