技术论坛

来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发

作者 主题
官方工程师
西门子官方工程师

经验值: 2465
发帖数: 132
精华帖: 16
主题:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 楼主 2011-11-09 17:03:46
如何用MD720-3实现发送英文字母与变量结合的短信与短信群发

热线上经常遇到客户询问如何使用200PLC和无线通讯模块MD720-3实现发送短信的问题。一般情况下,参考文档A0324就可以实现发送一条固定内容的信息给某一个手机号码的基本功能。但如果我们需要发送的内容是一个变量(如温度值或者压力值等),并且需要给这个变量作一个说明,又或者我们需要把这条信息群发给多个手机号码,又如何实现呢?下面我们就这些问题进一步来讨论:
通过对文档编号A0324的学习。
文档编号:A0324
下载链接:http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0324
我们已经清楚的了解到SMS_init, SMS_send功能块的参数:如图1.
&VB1001定义了:SIM卡的PIN码,默认值为1234。
&VB1006定义了:电信运营商提供的短信中心服务号。(该号码因电信运营商的不同而不同,请您咨询您所使用的电信运营商的客服人员)
&VB1028定义了:收信方的手机号码。
&VB1048定义了:短信的内容。



图1
由于&VB1001和&VB1006的值是定值,为了方便,我们先将其通过数据块写入到CPU永久存储区。如图2:



图2.

&VB1028和&VB1048可以根据我们的实际需求进行编程,实现较复杂的功能。在编程前,先让我们复习一下它们在CPU内部的存储形式。

1) &VB1048:
如图3.,将双引号中的字符Temperature:写入VB1048起始的缓冲,观察字符串的存储格式,字节VB1048保存的是字符串的长度。




图3.
由此,我们可以分别建立两段字符串,一段保存文本字符,另一段保存变量字符,连接两段字符串就可以实现合并的功能了。
举例来说:如果想要发送的短信内容是 “Temperature:*x.x”,其中*x.x是一个变量,那么我可以先将12个文本字符(Temperature:)拷贝到VB100开始的缓冲区中。再将变量写入VD0,通过实数转字符串指令将转化后的字符拷贝到VB300开始的缓冲区中,转换指令定义的字符串长度为6。然后通过字符串连接指令和块传送指令将完整信息发送到VB1048开始的缓冲区中。合并字符串的起始字节存放的是所有字符的个数,所以在块传送指令传送个数为1+12+6=19。如图4.







图4.

2)&VB1028:
如图5,将手机号码“+8613888888888”写入VB1028,观察字符串的存储格式,其中VB1028保存的是字符串的长度。




图5.
由此我们可以通过编程,分时拷贝新的字符串(手机号码)到VB1028实现多号码发送。那么我们在什么时候给VB1028写入新的号码呢?
通过在线监控程序,我们观察到,当一条短信发送成功后,SMS_send功能块的参数V1000.5会有一次由“1”(如图6)到“0”(如图7)的变化。利用这个下降沿我们就可以写入新的号码,启动新的发送了。
特别注意的是,红色圆圈标注的管脚:每一个新的发送请求必须用脉冲触发。



图6信息发送中



图7信息发送完成

例如,假设有一个报警事件,用户希望一旦报警条件满足,就能发送一条短消息给3个手机号码,应该如何实现呢?











程序解析:

程序上电的第一个扫描周期,先写入第一个号码,复位发送计数标志位MB3。复位新号码触发位M0.0。当报警事件触发时,执行SMS_send。
当V1000.5捕捉到第一个下降沿时,计数标志位自加一,并复位M0.0。下一个扫描周期,MB3=1条件满足,写入新的号码,触发位M0.0置位,再次执行SMS_send子程序。
当V1000.5捕捉到下一个下降沿时,计数标志位自加一,并复位M0.0。下一个扫描周期,MB3=2条件满足,写入新的号码,触发位M0.0置位,再次执行SMS_send子程序。。。
当报警事件再次触发,重复上述步骤。
最后,需要强调的是,SMS_init; SMS_send; SMS_receive; SMS_tele_handle;这四个功能块在每一个循环周期都必须调用,且执行条件为SM0.0。


库程序的下载链接地址:http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csSearch&objaction=cssearch&lang=zh&siteid=cseus&query=&query2=21063345&content=adsearch%2Fadsearch%2Easpx
 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=927038&b_id=3&s_id=0&num=10

游民

经验值: 94
发帖数: 7
精华帖: 0
回复:来自西门子技术支持热线的故事集:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 1楼 2011-11-09 22:35:26
之前一直没调通,正好学习一下,就喜欢这种一步一步教的教程.
 
以下网友喜欢您的帖子:

  
新手

经验值: 38
发帖数: 1
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 2楼 2011-11-10 16:49:37
还挺详细的,路过学习一下,以后没准真能用的上~
StepByStep
以下网友喜欢您的帖子:

  
侠士

经验值: 1112
发帖数: 614
精华帖: 5
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 3楼 2011-11-14 11:51:31
呵呵,高级啊~~
围观一下~~
http://lvqd.blog.163.com
以下网友喜欢您的帖子:

  
新手

经验值: 36
发帖数: 4
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 4楼 2011-11-14 13:06:17
强大,详细,路过学习了,
顶一个!
 
以下网友喜欢您的帖子:

  
新手

经验值: 26
发帖数: 8
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 5楼 2011-11-14 13:24:29
还能有这功能呢, 学习了>>>
^_^
1=5 2=15 3=125 4=1235 5=?
以下网友喜欢您的帖子:

  
侠士

经验值: 1911
发帖数: 234
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 6楼 2011-11-18 21:05:18
牛人还是很多,居然还可以用来群发短信。
保持初心,坚持自己的路一直走下去。
以下网友喜欢您的帖子:

  
游侠

经验值: 349
发帖数: 175
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 7楼 2011-11-29 15:03:02
很好,原来我做个工程,甲方要求 有短信功能。
这个方案我否了。不过学习了
 
以下网友喜欢您的帖子:

  
侠士

经验值: 1623
发帖数: 924
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 8楼 2011-12-01 11:22:41
学习了 正好用的上 讲的挺详细的 谢谢
hansion
以下网友喜欢您的帖子:

  
侠圣

经验值: 4926
发帖数: 11
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 9楼 2011-12-20 11:47:52
很好,讲解得非常详细,学习了!
 
以下网友喜欢您的帖子:

  
游士

经验值: 251
发帖数: 119
精华帖: 0
回复:来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发


只看楼主 10楼 2012-08-22 15:44:58
很好的介绍,学习了,感谢!
 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
来自西门子技术支持热线的故事:如何用MD720-3实现发送英文字母与变量结合的短信与短信群发
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。