技術(shù)頻道

      M20 GSM Modem的通信

        概述

        本例說(shuō)明如何以自由協(xié)議實(shí)現(xiàn)S7-200與M20 GSM Modem的通信。可實(shí)現(xiàn)的功能為:當(dāng)M20收到GSM短信息時(shí),可以自動(dòng)向發(fā)送方回發(fā)一條短信息,信息的內(nèi)容由用戶自行定義。

        AT指令:

        本例中使用的AT指令主要有四個(gè):

        短信息格式選擇指令CMGF

        ---- M20支持兩種格式的短信息,PDU格式和TEXT格式。

        ---- AT+CMGF=0 設(shè)置短信為PDU格式(默認(rèn))

        ---- AT+CMGF=1 設(shè)置短信為TEXT格式

        ---- 本例中將使用TEXT格式,因此必須對(duì)M20進(jìn)行初始化。

        讀短信息指令CMGR

        ---- 指令格式為:AT+CMGR=《 index 》,index一般為1到15的整數(shù),視SIM卡的容量而定,它表示所要閱讀的短信息在SIM卡中的存儲(chǔ)位置。在本例中,由于收到的短信息在閱讀后都會(huì)被刪除,因此每次收到的短信息都會(huì)被保存到第一個(gè)存儲(chǔ)位置,在收到短信息后,用AT+CMGR=1即可閱讀。

        發(fā)送短信息指令CMGS

        ---- 指令格式為:AT+CMGS=《 da 》,da為目標(biāo)手機(jī)號(hào),如“13800138000”。M20接到指令后返回一個(gè)“〉”提示輸入短信內(nèi)容,短信內(nèi)容以CHR(26)結(jié)束。

        刪除短信息指令CMGD

        ---- 指令格式為:AT+CMGD=《 index 》,index與讀指令中的index含義相同。本例中使用AT+CMGD=1來(lái)刪除收到的短信息。

        ---- 注:所有的指令都以CHR(13)作為結(jié)束

        PLC程序執(zhí)行過(guò)程:

        ---- PLC在第一次掃描時(shí)執(zhí)行初始化子程序,對(duì)端口及RCV指令進(jìn)行初始化,并向M20發(fā)送AT+CMGF=1設(shè)置短信息格式為TEXT格式。初始化完成后,運(yùn)行RCV指令使端口處于接受狀態(tài)。

        ---- 當(dāng)M20收到短信息時(shí),會(huì)發(fā)送 +CMTI: “SM”, 1 在PLC的接收完成中斷中判斷CMTI這四個(gè)字符來(lái)對(duì)M1.0進(jìn)行置位,在主程序中通過(guò)該標(biāo)志位調(diào)用ReadSMS子程序。

        ---- ReadSMS子程序中執(zhí)行的操作為:復(fù)位子程序的觸發(fā)條件(復(fù)位M1.0),置位M0.0,停止端口的接收,然后向M20發(fā)送AT+CMGR=1閱讀收到的短信息。置位M0.0的目的是在發(fā)送完成中斷中判斷是哪個(gè)子程序執(zhí)行了發(fā)送操作,從而重新對(duì)RCV指令進(jìn)行設(shè)置,以接收Modem返回的信息(其他的子程序也采用了相同的做法:SendSM1的觸發(fā)位為M1.1,子程序執(zhí)行時(shí)置位M0.1;SendSM2的觸發(fā)位為M1.2,子程序執(zhí)行時(shí)置位M0.2;DelSM的觸發(fā)位為M1.3,子程序執(zhí)行時(shí)置位M0.3;ReSend的觸發(fā)位為M1.4,子程序執(zhí)行時(shí)置位M0.4)。Modem在接收到AT+CMGR=1后會(huì)將收到短信息的內(nèi)容發(fā)送給PLC,信息的格式為:

        ---- +CMGR: “REC UNREAD”,“+8613801184286”,,“02/03/05,13:44:12+32”

        ---- CALL ME

        ---- OK

        ---- 其中“CALL ME”為短信息的實(shí)際內(nèi)容,該信息轉(zhuǎn)換為十六進(jìn)制的形式為:

        ---- 0D 0A 2B 43 4D 47 52 3A 20 22 52 45 43 20 55 4E 52 45 41 44 22 2C 22 2B 38 36 31 33 38 30 31 31 38 34 32 38 36 22 2C 2C 22 30 32 2F 30 33 2F 30 35 2C 31 33 3A 34 34 3A 31 32 2B 33 32 22 0D 0A 43 41 4C 4C 20 4D 45 0D 0A 0D 0A 4F 4B 0D 0A

        ---- 這樣,在發(fā)送完成中斷中,以M0.0為條件,將RCV指令的接收的起始字符設(shè)置為空格符CHR(32)(十六進(jìn)制的20)用以接受M20發(fā)送的短信息內(nèi)容。在接收完成中斷中,用接受緩沖的第一個(gè)字節(jié)等于CHR(32)來(lái)觸發(fā)SendSMS1子程序。

        ---- SendSMS1子程序?qū)氖盏蕉绦畔⒌膬?nèi)容中提取出發(fā)送方的電話號(hào)碼,并向M20發(fā)送AT+CMGS=“發(fā)送方號(hào)碼”,Modem在接到該指令后返回的信息為:

        ---- 》

        ---- 對(duì)應(yīng)的十六進(jìn)制形式為:

        ---- 0D 0A 3E 20

        ---- 其中0D 0A為不可顯示字符,20為空格符

        ---- 這樣,在發(fā)送完成中斷中以M0.1位條件設(shè)置接收的起始字符為“〉”CHR(62)用以接受M20發(fā)送的提示信息。在接收完成中斷中,用接受緩沖的第一個(gè)字節(jié)等于CHR(62)來(lái)觸發(fā)SendSMS2子程序。

        ---- SendSMS2子程序?qū)⑺l(fā)送的內(nèi)容加上結(jié)束字符CHR(26)發(fā)送個(gè)給M20。如果短信息正確發(fā)送,M20返回 +CMGS: xxx(xxx為該SIM卡已發(fā)送的短信數(shù)量);如果信息未能正確發(fā)送,則M20返回 +CMS ERROR。在接收完成中斷中,用CMGS來(lái)觸發(fā)DelSMS子程序,用ERROR來(lái)觸發(fā)ReSend子程序。

        ---- DelSMS子程序向M20發(fā)送AT+CMGD=1用來(lái)刪除收到的短信息,ReSend子程序重新發(fā)送SendSMS1中的指令A(yù)T+CMGS=“ 發(fā)送方號(hào)碼”。

        

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

      主站蜘蛛池模板: 国产精品亚洲一区二区三区久久| 国产主播一区二区三区在线观看 | 一区二区三区四区在线视频 | 高清无码一区二区在线观看吞精| 亚洲男人的天堂一区二区| 中文激情在线一区二区| 日本高清一区二区三区| 91午夜精品亚洲一区二区三区| 久久亚洲色一区二区三区| 一区二区不卡视频在线观看| 亚洲一区二区视频在线观看| 一区二区三区久久精品| 国产一区二区高清在线播放| 国精产品一区一区三区免费视频| 一本大道东京热无码一区| 色妞AV永久一区二区国产AV | 久久AAAA片一区二区| 精品国产一区二区三区四区| 国产AV午夜精品一区二区入口| 无码人妻精品一区二区蜜桃| 免费av一区二区三区| 亚洲一区二区三区电影| 日本一区视频在线播放| 国产熟女一区二区三区四区五区 | 国产成人无码精品一区不卡| 精品福利一区二区三区免费视频| 久久久久一区二区三区| 精品视频一区二区三区四区五区| 亚洲一区精品无码| 国产对白精品刺激一区二区| 怡红院AV一区二区三区| 日本一道一区二区免费看| 亚洲国产成人久久一区WWW| 一区二区网站在线观看| 国产乱码精品一区二区三区四川人| 色偷偷久久一区二区三区| 日韩一区精品视频一区二区 | 国产suv精品一区二区33| 亚洲AV成人一区二区三区AV| 亚洲国产成人精品久久久国产成人一区二区三区综 | 视频一区二区三区人妻系列|