1、sms基礎知識介紹
sms(short messaging service)是最早的短消息業務,也是現在普及率最高的一種短消息業務。目前,這種短消息的長度被限定在140字節之內,這些字節可以是文本的。sms以簡單方便的使用功能受到大眾的歡迎,卻始終是屬于第一代的無線數據服務,在內容和應用方面存在技術標準的限制。
一個sms消息最長可包括 160個字符(偶數二進制)。
sms是一種存儲和轉發服務。也就是說,短消息并不是直接從發送人發送到接收人,而始終通過sms中心進行轉發的。如果接收人處于未連接狀態(可能電話已關閉),則消息將在接收人再次連接時發送。
sms具有消息發送確認的功能。這意味著
sms與尋呼不同,用戶不是簡單地發出短消息然后相信消息已發送成功;而是短消息發送人可以收到返回消息,通知他們短消息是否已經發送成功。
sms 消息的發送和接收可以和 gsm 語音同步進行。
sms 消息按消息收費,因此要比通過基于 ip 的網絡(例如,使用 gprs [通用分組無線業務])發送的數據昂貴得多(每字節)。
要使用 sms,用戶需要預訂支持 sms 的移動網絡,并且必須為該用戶啟用 sms 的使用。用戶需要有發送短消息或接收短消息的目的地。該目的地通常是其他的移動電話,但也可以是服務器。最后,用戶還需要有支持 sms 的移動電話,并需要了解如何使用其特定型號的移動電話發送或閱讀短消息。
sms發送的模式分有兩種:text模式和pdu模式.
使用text模式收發短信代碼簡單,實現起來十分容易,但是最大的缺點是不能收發中文短信, pdu模式完全可以解決這個問題,pdu模式不僅支持中文短信,也能發送英文短信, pdu模式收發短信可以使用三種編碼: 7-bit、8-bit和ucs2編碼。 7-bit編碼用于發送普通的ascii字符,8-bit編碼通常用于發送數據消息,ucs2編碼用于發送unicode字符。我們要實現中文短信的發送,所以選擇ucs2,即中文unicode碼。下面是關于兩種方式發送的示例at指令:
范例:向手機號碼13801234567發送短信“weather”
(1) text方式
at+cmgf=1
at+cmgs=”13801234567”
>; weather
(2) pdu方式
at+cmgf=0
at+cmgs=018
>;0001000d91683108214365f700080459296c14
注:pdu方式中at+cmgs命令解釋:
at+cmgs=xxx
>;pdu ...輸入pdu信息
| 0001 :基本參數 00 :消息基準值tp-mr 0d :目標地址數字個數(十進制,不包含91) 91 :目標地址格式 68 :目標地址為中國 3108214365f7 :目標地址(13801234567) 00 :協議標示tp-pid 08 :用戶信息編碼格式tp-(08表示ucs2編碼) 00 :有效期tp-vp 04 :用戶信息長度tp-udl 59296c14 :用戶信息(“天氣”) | ![]() | |||||||||||||||||||||||||||
| 其中,紅色的數字(3108214365f7)代表對方的手機號碼,在pdu格式中,手機號碼每兩位需要對調。比如在上面這個例子里,對方的手機號碼為13801234567,f用來補充7后面的空位。藍色的數字(59296c14)是短消息內容的unicode碼,這里5929代表“天”6c14代表“氣”。unicode碼同樣可以用來表示中一般英文字母和數字,方法是在英文或數字的ascii碼前加00。紫色的數字(04)代表短消息的長度,它等于其后所有字符個數除以2。黑色的數字每次發送短消息時都是相同的,使用時可以照抄,但前提是所使用的sim卡在使用前要用手機設置好短消息服務中心號碼(+8613800100500)。漢字的unicode碼可以通過編碼轉換軟件得到。 pdu格式發送短消息時,還必須計算整個pdu數據包的長度,pdu數據包的長度等于(pdu數據包字符數-2)/2,在上面的例子里:(38-2)/2=18。 2、網絡結構圖 硬件的連接, s7-300cp后接cp340(rs232串口)或cp341(rs232串口),再通過串口直連線連接cp340或cp341到md720-3的串口上,md720-3插一塊sim卡。直連線的1針到9針對應連接。
圖1、網絡結構圖 3、需要的軟件及硬件 硬件
表1、硬件列表 軟件
表2、軟件列表 4、以text的方式發送sms 在這里不介紹用自由口編程的方式編寫at的指令來發送sms,而是采用西門子提供庫功能塊來編寫程序。庫程序的下載鏈接地址如下:26100569 上面庫程序是壓縮文件,先解壓縮到一個目錄下,在該目錄下又會看到3個壓縮文件,再解壓這三個壓縮文件,解壓縮后如下圖所示:
圖2、存放目錄 從上圖中,解壓三個壓縮文件后sms_bloc;sms_md720_application;sms_md720_simple sms_bloc: 包括了使用cp340、cp341、cp442-1收發短信的庫功能。 sms_md720_application:包含了用cp341和cp442-1收發短信的應用程序。 sms_md720_simple:包含了一個用cp341收發短信的簡單應用程序 由于三個文件夾的程序只有sms_md720_simple的程序是完整的,另外兩個文件夾下的程序由于編者的疏忽,程序不完整,導致無法正常編譯通過。所以在本文里我們只能介紹,通過拷貝sms_md720_simple項目下的功能塊到實際的項目中來實現發送短信的功能。 在新建項目前,需要硬件按照網絡圖安裝好,并加電。md720加電后恢復出廠設置,讓其工作在終端模式下(在md720的系統手冊上介紹如何恢復出廠設置,這里不再作詳細介紹),恢復后用串口直連線,連接md720與計算機的串口,打開計算機的超級終端程序,打開方式如下圖:
圖3、打開超級終端 打開后在連接描述的窗口里輸入一個連接名如下圖:
圖4、輸入連接名 點擊ok后,選擇與計算機連接的串口,這里連接的是串口1,所以設置如下圖:
圖5、選擇com端口 在上圖點擊ok按鈕后,設置串口的通訊參數如下:
圖6、com口的參數設置 點擊ok按鈕后,在出現的串口里先輸入 “+++”后,輸入“at”檢查與modem的連接是否正常,若正常則modem會返回ok,如下圖:
圖7、測試與modem的連接 然后在輸入指令“at+irp=9600”修改通訊波特率為9600如下圖所示:
圖8、設置modem的波特率 修改成功后,把連接計算機上的串口拔下后,把9針口連接到cp341的串口上。 打開step7 manger,打開后點擊file菜單下的new…,新建一個項目,在新建項目的串口里輸入項目sms_cp341,然后點擊新建,項目的硬件組態如下圖所示:
圖9、s7-300站的硬件組態 雙擊cp341-rs232c,打開屬性窗口如下圖:
圖10、cp341的硬件地址設置 點擊bbbbbeter...,設置串口的通訊協議為
圖11、選擇通訊協議為ascii 雙擊protocol協議包,配置串口通訊的參數如下圖:
圖12、設置ascii的通訊參數
圖13、設置傳輸的控制方式
圖14、設置接收的緩存區 配置完硬件后,編譯并下載硬件組態,然后打開sms_md720_simple項目,并拷貝sms_md720_simple項目下的除ob1功能塊外的所有功能塊到sms_cp341項目相應的目錄下,同時需要拷貝source下的源代碼到sms_cp341項目下的source目錄下。 拷貝后如下圖:
圖15、拷貝庫程序到項目下 打開ob1塊,在ob1里調用fb100,背景數據塊為db100,如下圖所示:
圖16、ob1中調用短消息功能塊 在cp_adr中只需輸入cp341的邏輯地址256。輸入后保存程序。編寫ob1后打開db100數據塊如下圖:
圖17、在發送功能塊的背景數據塊中設置修改cp341的硬件地址 這里sim卡無pin碼,要發送的信息是“weather”;發送的手機號為“13801234567”;設置db100的參數如下圖:
圖18、在發送功能塊的背景數據塊中設置pin碼、目的手機號及信息 修改后保存db100,并下載所有的程序塊到cpu中。下載后打開打開變量監控表并在線監控,如下圖:
圖19、通過變量監控表觸發信息發送 在變量監控表里先置位”sms”.b_init,然后在置位”sms”.send,等待一會兒,可以看到變量監控表里的”sms”.n_status當置位”sms”.b_init時會從1002變成201,然后當置位”sms”.send時會從201變成202、204、206,過一會兒又回到201的值,這樣接可以再目的手機上接收到“weather”的短信。 上面的調試步驟只是從功能上實現了發短信的功能,要實現收發多條信息到多個多個手機,可以參考sms_md720_application和sms_md720_simple下的編程思路開發適合自己應用的程序。 注意:如果例子項目文件打不開,請把計算機的語言設置為德語。 5、以pdu的方式發送中文sms 要發送中文短信,需要安裝step7 scl編程語言包,發送短信庫功能塊是由fb100來完成的,fb100是由scl語言編寫,要想使其能發送中文的短信,那么就需要用scl語言修改fb100功能塊。修改方式如下: 在發送文本方式步驟的基礎上,用scl語言打開sms_cp341項目下目錄source下的sms_send源代碼,如下圖:
圖20、打開發送功能塊的源文件 打開后如下圖:
圖21、scl編輯器打開后的源文件 修改源程序代碼md720_sms_textmode := '$r$lat+cmgf=1$r'為md720_sms_textmode := '$r$lat+cmgf=0$r'如下圖所示:
圖22、修改短信的發送模式為pdu模式 str_outbox := sms_textmode_attr;改為str_outbox :=md720_sms_textmode;如下圖:
圖23、修改程序中的發送模式 修改后,點擊file下save,然后再點擊file下的complie,如下圖:
圖24、重新編譯修改后的程序 關閉scl編輯窗口,若發送的目的手機號為13801234567發送的內容為“天氣”打開db100,修改發送參數如下圖:
圖25、修改為pdu模式下的信息格式 其中5929為pdu碼的“天”;6c14為pdu碼的“氣。 修改后下載fb100和db100功能塊到cpu。打開變量監控表,在變量監控表里先置位”sms”.b_init,然后在置位”sms”.send,等待一會兒,可以看到變量監控表里的”sms”.n_status當置位”sms”.b_init時會從1002變成201,然后當置位”sms”.send時會從201變成202、204、206,過一會兒又回到201的值,這樣接可以再目的手機上接收到“天氣”短信。 前面介紹用cp341發送短信,若用cp340發送短信,則需要修改庫程序中。因為修改比較繁瑣,這里就不再作介紹,若有需求。可通過熱線聯系西門子技術與支持。 |




































