日本老熟妇一二三区-麻豆视频精品一区-人妻中文字幕xx-一区二区美女少妇-日本成人一级在线

  • 西門子 S7-200 PLC與M20 GSM Modem的通信
    SIEMENS-西門子自動化與驅(qū)動集團PLC事業(yè)部

    概述
    本例說明如何以自由協(xié)議實現(xiàn)S7-200與M20 GSM Modem的通信。可實現(xiàn)的功能為:當M20收到GSM短信息時,可以自動向發(fā)送方回發(fā)一條短信息,信息的內(nèi)容由用戶自行定義。
    AT指令:
    本例中使用的AT指令主要有四個:

    1.短信息格式選擇指令CMGF
    M20支持兩種格式的短信息,PDU格式和TEXT格式。
    AT+CMGF=0 設(shè)置短信為PDU格式(默認)
    AT+CMGF=1 設(shè)置短信為TEXT格式
    本例中將使用TEXT格式,因此必須對M20進行初始化。

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

    3.發(fā)送短信息指令CMGS
    指令格式為:AT+CMGS=< da >,da為目標手機號,如"13800138000"。M20接到指令后返回一個"〉"提示輸入短信內(nèi)容,短信內(nèi)容以CHR(26)結(jié)束。

    4.刪除短信息指令CMGD
    指令格式為:AT+CMGD=< index >,index與讀指令中的index含義相同。本例中使用AT+CMGD=1來刪除收到的短信息。
    注:所有的指令都以CHR(13)作為結(jié)束

    PLC程序執(zhí)行過程:
    PLC在第一次掃描時執(zhí)行初始化子程序,對端口及RCV指令進行初始化,并向M20發(fā)送AT+CMGF=1設(shè)置短信息格式為TEXT格式。初始化完成后,運行RCV指令使端口處于接受狀態(tài)。
    當M20收到短信息時,會發(fā)送 +CMTI: "SM", 1 在PLC的接收完成中斷中判斷CMTI這四個字符來對M1.0進行置位,在主程序中通過該標志位調(diào)用ReadSMS子程序。
    ReadSMS子程序中執(zhí)行的操作為:復位子程序的觸發(fā)條件(復位M1.0),置位M0.0,停止端口的接收,然后向M20發(fā)送AT+CMGR=1閱讀收到的短信息。置位M0.0的目的是在發(fā)送完成中斷中判斷是哪個子程序執(zhí)行了發(fā)送操作,從而重新對RCV指令進行設(shè)置,以接收Modem返回的信息(其他的子程序也采用了相同的做法:SendSM1的觸發(fā)位為M1.1,子程序執(zhí)行時置位M0.1;SendSM2的觸發(fā)位為M1.2,子程序執(zhí)行時置位M0.2;DelSM的觸發(fā)位為M1.3,子程序執(zhí)行時置位M0.3;ReSend的觸發(fā)位為M1.4,子程序執(zhí)行時置位M0.4)。Modem在接收到AT+CMGR=1后會將收到短信息的內(nèi)容發(fā)送給PLC,信息的格式為:
    +CMGR: "REC UNREAD","+8613801184286",,"02/03/05,13:44:12+32"
    CALL ME
    OK
    其中"CALL ME"為短信息的實際內(nèi)容,該信息轉(zhuǎ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)(十六進制的20)用以接受M20發(fā)送的短信息內(nèi)容。在接收完成中斷中,用接受緩沖的第一個字節(jié)等于CHR(32)來觸發(fā)SendSMS1子程序。
    SendSMS1子程序?qū)氖盏蕉绦畔⒌膬?nèi)容中提取出發(fā)送方的電話號碼,并向M20發(fā)送AT+CMGS="發(fā)送方號碼",Modem在接到該指令后返回的信息為:
    >
    對應(yīng)的十六進制形式為:
    0D 0A 3E 20
    其中0D 0A為不可顯示字符,20為空格符
    這樣,在發(fā)送完成中斷中以M0.1位條件設(shè)置接收的起始字符為"〉"CHR(62)用以接受M20發(fā)送的提示信息。在接收完成中斷中,用接受緩沖的第一個字節(jié)等于CHR(62)來觸發(fā)SendSMS2子程序。
    SendSMS2子程序?qū)⑺l(fā)送的內(nèi)容加上結(jié)束字符CHR(26)發(fā)送個給M20。如果短信息正確發(fā)送,M20返回 +CMGS: xxx(xxx為該SIM卡已發(fā)送的短信數(shù)量);如果信息未能正確發(fā)送,則M20返回 +CMS ERROR。在接收完成中斷中,用CMGS來觸發(fā)DelSMS子程序,用ERROR來觸發(fā)ReSend子程序。
    DelSMS子程序向M20發(fā)送AT+CMGD=1用來刪除收到的短信息,ReSend子程序重新發(fā)送SendSMS1中的指令AT+CMGS=" 發(fā)送方號碼"。
    點擊下在原程序
    附:Modem發(fā)送的信息格式
    收到短信息時:
    +CMTI: "SM", 1
    0D 0A 2B 43 4D 54 49 3A 20 22 53 4D 22 2C 20 31 0D 0A
    讀取短信息內(nèi)容時:
    +CMGR: "REC UNREAD","+8613801184286",,"02/03/05,13:44:12+32"
    CALL ME
    OK
    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ā)送短信息時:
    >
    0D 0A 3E 20
    發(fā)送成功時:
    +CMGS: 160
    OK
    0D 0A 2B 43 4D 47 53 3A 20 31 36 30 0D 0A 0D 0A 4F 4B 0D 0A
    發(fā)送失敗時:
    +CMS ERROR: 500

     
     
    網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系我們  |  廣告服務(wù)  |  版權(quán)隱私  |  友情鏈接  |  站點導航