S7-200PLC通过MD720-3发送短消息

一、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<CR> …………设置短信发送方式为TEXT模式
AT+CMGS=”13801234567”<CR> …………向被叫号码发短信
> Weather <CTRL+Z>
(2) PDU方式
AT+CMGF=0<CR> ……………设置短信发送方式为PDU模式
AT+CMGS=018<CR> ……………向被叫号码发送PDU的长度
>0001000D91683108214365F700080459296C14<CTRL+Z>

注:PDU方式中AT+CMGS命令解释:
AT+CMGS=XXX<CR> …XXX表示PDU中TPDU的长度
>PDU ...输入PDU信息

0001 :基本参数
00 :消息基准值TP-MR
0D :目标地址数字个数(十进制,不包含91)
91 :目标地址格式
68 :目标地址为中国
3108214365F7 :目标地址(13801234567)
00 :协议标示TP-PID
08 :用户信息编码格式TP-DCS(08表示UCS2编码)
00 :有效期TP-VP
04 :用户信息长度TP-UDL
59296C14 :用户信息(“天气”)
S7-200PLC通过MD720-3发送短消息 TPDU

其中,红色的数字(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。

二、网络结构图
硬件的连接, S7-200CPU的Port0口或Port1口通过PC/PPI电缆连接到MD720-3的串口上,MD720-3插一块SIM卡,且MD720-3接天线。PC/PPI电缆的拨码开关设置为11100110

S7-200PLC通过MD720-3发送短消息

三、需要的软件及硬件

Component Qty. MLFB / Order number Note
LOGO! Power 24V 1.3A 1 6EP1331-1SH02 
SIMATIC S7-200 CPU 224XP 1 6ES7214-2AD23-0XB0
MD720-3 1 6NH9720-3AA00
ANT 794-4MR Antea 1 6NH9860-1AA00
PC/PPI cable 2 6ES7901-3CB30-0XA0
SIM card

安全部件及软件

Component No. MLFB / Order number Note
STEP 7 Micro/WIN 1 6ES7810-2CC03-0YX0

四、以TEXT的方式发送SMS
在这里不介绍用自由口编程的方式编写AT的指令来发送SMS,而是采用西门子提供库功能块来编写程序。库程序的下载链接地址如下:

Port0口的库程序

http://support.automation.siemens.com/WW/llisapi.dll/csfetch/21063345/set5_s7-200-library_port0.zip?func=cslib.csFetch&nodeid=32210511

Port1口的库程序

http://support.automation.siemens.com/WW/llisapi.dll/csfetch/21063345/set5_s7-200-library_port1.zip?func=cslib.csFetch&nodeid=32210527

上面两个库程序是压缩文件,先解压缩到一个目录下,然后打开STEP 7 Micro/WIN软件导入此目录下的文件,这里的解压的目录为D:SMS。在STEP 7 Micro/WIN导入库的方式如下:

S7-200PLC通过MD720-3发送短消息

解压库文件到D:SMS目录下
打开STEP 7 Micro/WIN,右键点击libraries,在弹出的菜单中选择Add/Remove Libraries… 如下图:

S7-200PLC通过MD720-3发送短消息

在弹出的窗口里,点击 Add..按钮,然后选择文件 D:SMSset5_s7-200-Libary_port0.mwl 如下图所示,然后选择 Save 按钮后在选择 Ok 按钮

S7-200PLC通过MD720-3发送短消息

添加后的库程序如下图:

S7-200PLC通过MD720-3发送短消息

在库程序的文件夹下有5个功能块:

SMS_init: ......SMS初始化块
SMS_xmt_rcv_manage ......SMS收发处理执行块
SMS_send ......SMS发送信息功能块
SMS_receive ......SMS接受信息功能块
SMS_tele_handle ......SMS远程访问处理块

程序的编写方式在主程序里依次调用SMS_init; SMS_send; SMS_receive; SMS_tele_handle如下:

1、在Main程序的Network1里编程如下

S7-200PLC通过MD720-3发送短消息

2、在Main程序的Network2里编程如下

S7-200PLC通过MD720-3发送短消息

3、在Main程序的Network3里编程如下

S7-200PLC通过MD720-3发送短消息

4、在Main程序的Network4里编程如下

S7-200PLC通过MD720-3发送短消息

5、在数据块中的定义如下

S7-200PLC通过MD720-3发送短消息

6、给功能块分配库存储区,不分配则编译程序时会报错误,分配方法如下:打开指令库下的 program block,右键点击 library,在弹出的菜单下选择 Library memory...,如下图:

S7-200PLC通过MD720-3发送短消息

在弹出的 Library Memory Allocation 的窗口里点击 Suggest Address 按钮,如下图会分配VB0到VB226的存储区给库程序使用,此区域的地址在程序的其它部分不可再使用

S7-200PLC通过MD720-3发送短消息

到此就完成了所有程序的编写,编译并下载程序到PLC中。

调试程序
在线监控程序,先置V1000.0为1,触发初始功能化功能块初始化MD720-3为发送短信为Text模式,PIN码为“1234”;信息中心的号码为“+8613501363718”(北京的短信中心服务号)。
初始化成功后SMS_init_Done位为1;SMS_init_Status返回值为15。
初始化成功后,置位V1000.4为1,触发信息的发送功能,发送的目的手机号为“13801234567”;发送的信息为“Weather”。
发送成功后SMS_send_done位为1;SMS_send_status返回值为6.
这样就完成了信息的发送。

注意:上面的库功能块,除了SMS_xmt_rcv_manage不需在主程序里编写为,其它四个功能块都必须依次调用,且调用的条件是每个循环周期都执行条件是SM0.0。即使是不收发SMS,也需要调用SMS_send;SMS_receive; SMS_tele_handle,原因是PLC与MD720-3信息交换是需要SMS_send;SMS_receive; SMS_tele_handle功能块来处理的,即使只是初始化MD720-3,不接收和发送信息也是需要全调用的,否则无法初始化成功。

五、以PDU的方式发送中文SMS
由于前面使用的短信库程序只是发送Text文本,不能发送PDU码,所以需要对库程序进行修改,使其能够发送中文短信,把发送模式改为PDU模式,步骤如下:

1、按照上面发送Text模式的步骤编写程序、并保持程序。
2、选择名为“SMS_init”子程序块,此子程序被保护不可查看,但在程序的说明里给出了此子程序的密码为“1234”如下图:

S7-200PLC通过MD720-3发送短消息

3、右键点击SMS_init子程序,在弹出的菜单中选择properties...,如下图:

S7-200PLC通过MD720-3发送短消息

4、在弹出的窗口里,选择 Protection 选项,并在 Password 栏里输入密码“1234”,然后点击 Authorize 按钮,如下图:

S7-200PLC通过MD720-3发送短消息

5、此时显示该子程序可以编辑修改,然后修改此子程序的Network24,把原来〝AT+CMGF=1$R〞改为〝AT+CMGF=0$R〞如下图:

S7-200PLC通过MD720-3发送短消息

6、保存修改后的程序,同样的方法修改SMS_send子程序的Network5如下图

S7-200PLC通过MD720-3发送短消息

7、保存修改后的程序,打开数据块修改发送功能块的参数如下图:

S7-200PLC通过MD720-3发送短消息

编译并下载程序。发送的方法与前面介绍的发送文本方式一样。

六、库功能块的状态信息

S7-200PLC通过MD720-3发送短消息

S7-200PLC通过MD720-3发送短消息

S7-200PLC通过MD720-3发送短消息

关键词
S7-200 MD720-3 SMS 

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc326750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论