热线上经常遇到客户询问如何使用200PLC和无线通讯模块MD720-3实现发送中文以及能发送多个中文字符的问题。一般情况下,参考文档A0324就可以成功实现发送一条中文短信。关于最多能发送多少个中文字符,我们结合A0324文档的进一步的讨论:
文档编号:A0324
下载链接:http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0324
通过A0324文档的学习我们已经清楚的了解到发送中文字符时需要采用PDU方式:
AT+CMGF=0
…………………………………设置短信发送方式为PDU模式
AT+CMGS=18…………………………………向被叫号码发送PDU的长度
>0001000D91683108214365F700080459296C14
SMS_init, SMS_send功能块的参数:如图1.

图1
&VB1001定义了:SIM卡的PIN码,默认值为1234。
&VB1006定义了:电信运营商提供的短信中心服务号。(中国移动短信中心号码的格式为:138+地区区号(4位,如不够,首位用0代替)+0500)
&VB1028定义了:发送TPDU的长度。
&VB2048定义了:发送TPDU的内容。
例如:发送“天气”到+13801234567的TPDU内容如下:
0001000D91683108214365F700080459296C14
其中5929是中文字符“天”的Unicode码
VB1001、VB1006、VB1028、VB2048数据块值:如图2

图2
TPDU的数据是以字符串的格式存储在数据块中,每个字符占用一个字节存储单元,所以图2字符串VB2048共包含30+8个字符,一个汉字Unicode码包含4个字符占用4个存储字节,当需要发送N个汉字时,字符串VB2048包含字符数=30+2×N。由于发送TPDU时还需要附加一个字符(16#1A)用于结束TPDU并发送SMS,所以发送N个汉字的TPDU时将发送30+2×N+1个字符。
打开程序中符号表:如图3

图3
图3中我们了解到使用短信库最大发送字符数要小于175字符,
既(30+2×N+1)<175,所以S7-200采用短信库最多只能发送35个汉字。
如果发送汉字大于35,发送缓冲区将于占用字符串VB197区域,修改字符串VB197值(AT指令正确响应判断字符串),使得AT指令无法判断是否正确响应,造成发送SMS失败。
库程序的下载链接地址:
http://support.automation.siemens.com/CN/view/zh/21063345