概述
---- 本例說明如何以自由協議實現S7-200與M20 GSM Modem的通信。可實現的功能為:當M20收到GSM短信息時,可以自動向發送方回發一條短信息,信息的內容由用戶自行定義。
AT指令:
---- 本例中使用的AT指令主要有四個:
短信息格式選擇指令CMGF
---- M20支持兩種格式的短信息,PDU">

      技術頻道

      自由口模式下PLC與M20 GSM Modem的通信

      概述
      ---- 本例說明如何以自由協議實現S7-200與M20 GSM Modem的通信。可實現的功能為:當M20收到GSM短信息時,可以自動向發送方回發一條短信息,信息的內容由用戶自行定義。
      AT指令:
      ---- 本例中使用的AT指令主要有四個:
      短信息格式選擇指令CMGF
      ---- M20支持兩種格式的短信息,PDU格式和TEXT格式。
      ---- AT+CMGF=0 設置短信為PDU格式(默認)
      ---- AT+CMGF=1 設置短信為TEXT格式
      ---- 本例中將使用TEXT格式,因此必須對M20進行初始化。
      讀短信息指令CMGR
      ---- 指令格式為:AT+CMGR=< index >,index一般為1到15的整數,視SIM卡的容量而定,它表示所要閱讀的短信息在SIM卡中的存儲位置。在本例中,由于收到的短信息在閱讀后都會被刪除,因此每次收到的短信息都會被保存到第一個存儲位置,在收到短信息后,用AT+CMGR=1即可閱讀。
      發送短信息指令CMGS
      ---- 指令格式為:AT+CMGS=< da >,da為目標手機號,如"13800138000"。M20接到指令后返回一個"〉"提示輸入短信內容,短信內容以CHR(26)結束。
      刪除短信息指令CMGD
      ---- 指令格式為:AT+CMGD=< index >,index與讀指令中的index含義相同。本例中使用AT+CMGD=1來刪除收到的短信息。
      ---- 注:所有的指令都以CHR(13)作為結束
      PLC程序執行過程:
      ---- PLC在第一次掃描時執行初始化子程序,對端口及RCV指令進行初始化,并向M20發送AT+CMGF=1設置短信息格式為TEXT格式。初始化完成后,運行RCV指令使端口處于接受狀態。
      ---- 當M20收到短信息時,會發送 +CMTI: "SM", 1 在PLC的接收完成中斷中判斷CMTI這四個字符來對M1.0進行置位,在主程序中通過該標志位調用ReadSMS子程序。
      ---- ReadSMS子程序中執行的操作為:復位子程序的觸發條件(復位M1.0),置位M0.0,停止端口的接收,然后向M20發送AT+CMGR=1閱讀收到的短信息。置位M0.0的目的是在發送完成中斷中判斷是哪個子程序執行了發送操作,從而重新對RCV指令進行設置,以接收Modem返回的信息(其他的子程序也采用了相同的做法:SendSM1的觸發位為M1.1,子程序執行時置位M0.1;SendSM2的觸發位為M1.2,子程序執行時置位M0.2;DelSM的觸發位為M1.3,子程序執行時置位M0.3;ReSend的觸發位為M1.4,子程序執行時置位M0.4)。Modem在接收到AT+CMGR=1后會將收到短信息的內容發送給PLC,信息的格式為:
      ---- +CMGR: "REC UNREAD","+8613801184286",,"02/03/05,13:44:12+32"
      ---- CALL ME
      ---- OK
      ---- 其中"CALL ME"為短信息的實際內容,該信息轉換為十六進制的形式為:
      ---- 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
      ---- 這樣,在發送完成中斷中,以M0.0為條件,將RCV指令的接收的起始字符設置為空格符CHR(32)(十六進制的20)用以接受M20發送的短信息內容。在接收完成中斷中,用接受緩沖的第一個字節等于CHR(32)來觸發SendSMS1子程序。
      ---- SendSMS1子程序將從收到短信息的內容中提取出發送方的電話號碼,并向M20發送AT+CMGS="發送方號碼",Modem在接到該指令后返回的信息為:
      ---- >
      ---- 對應的十六進制形式為:
      ---- 0D 0A 3E 20
      ---- 其中0D 0A為不可顯示字符,20為空格符
      ---- 這樣,在發送完成中斷中以M0.1位條件設置接收的起始字符為"〉"CHR(62)用以接受M20發送的提示信息。在接收完成中斷中,用接受緩沖的第一個字節等于CHR(62)來觸發SendSMS2子程序。
      ---- SendSMS2子程序將所要發送的內容加上結束字符CHR(26)發送個給M20。如果短信息正確發送,M20返回 +CMGS: xxx(xxx為該SIM卡已發送的短信數量);如果信息未能正確發送,則M20返回 +CMS ERROR。在接收完成中斷中,用CMGS來觸發DelSMS子程序,用ERROR來觸發ReSend子程序。
      ---- DelSMS子程序向M20發送AT+CMGD=1用來刪除收到的短信息,ReSend子程序重新發送SendSMS1中的指令AT+CMGS=" 發送方號碼"。
      ---- 點擊下在原程序
      ---- 附:Modem發送的信息格式
      ---- 收到短信息時:
      ---- +CMTI: "SM", 1
      ---- 0D 0A 2B 43 4D 54 49 3A 20 22 53 4D 22 2C 20 31 0D 0A
      ---- 讀取短信息內容時:
      ---- +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
      ---- 發送短信息時:
      ---- >
      ---- 0D 0A 3E 20
      ---- 發送成功時:
      ---- +CMGS: 160
      ---- OK
      ---- 0D 0A 2B 43 4D 47 53 3A 20 31 36 30 0D 0A 0D 0A 4F 4B 0D 0A
      ---- 發送失敗時:
      ---- +CMS ERROR: 500
      modem.mwp(6.77K)

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 在线精品一区二区三区| 国产一区二区精品久久岳√| 亚洲图片一区二区| 熟妇人妻系列av无码一区二区| 91一区二区三区| 99热门精品一区二区三区无码| 精品人妻一区二区三区四区| 亚洲av无码一区二区三区观看| 视频一区视频二区在线观看| 国产激情一区二区三区| 日本高清天码一区在线播放| 一区二区三区高清| 国产在线精品一区二区在线观看| 国产一区二区三区无码免费 | 国产精品视频免费一区二区| 精品日产一区二区三区手机| 成人区人妻精品一区二区不卡| 97一区二区三区四区久久| 亚洲AV午夜福利精品一区二区 | 精品无码一区二区三区爱欲| 国产中的精品一区的| 国产一区二区三区福利| 国产成人一区二区精品非洲| 成人免费观看一区二区| 国产福利91精品一区二区三区| 亚洲国产一区国产亚洲| 亚欧在线精品免费观看一区| 91午夜精品亚洲一区二区三区 | 免费无码一区二区三区蜜桃大| 国产在线精品一区二区三区直播| 国产一区在线视频| 国产高清视频一区三区| 无码少妇精品一区二区免费动态| 日韩人妻一区二区三区蜜桃视频| 无码精品一区二区三区免费视频| 久久se精品动漫一区二区三区| 麻豆高清免费国产一区| 成人免费观看一区二区| 成人无码精品一区二区三区| 视频一区二区中文字幕| 日本精品一区二区三区在线观看|