概述
本例说明如何以自由协议实现S7-200与M20 GSM Modem的通信。可实现的功能为:当M20收到GSM短信息时,可以自动向发送方回发一条短信息,信息的内容由用户自行定义。
AT指令:
本例中使用的AT指令主要有四个:
1.短信息格式选择指令CMGF
M20支持两种格式的短信息,PDU格式和TEXT格式。
AT+CMGF=0 设置短信为PDU格式(默认)
AT+CMGF=1 设置短信为TEXT格式
本例中将使用TEXT格式,因此必须对M20进行初始化。
2.读短信息指令CMGR
指令格式为:AT+CMGR=< index >,index一般为1到15的整数,视SIM卡的容量而定,它表示所要阅读的短信息在SIM卡中的存储位置。在本例中,由于收到的短信息在阅读后都会被删除,因此每次收到的短信息都会被保存到第一个存储位置,在收到短信息后,用AT+CMGR=1即可阅读。
3.发送短信息指令CMGS
指令格式为:AT+CMGS=< da >,da为目标手机号,如"13800138000"。M20接到指令后返回一个"〉"提示输入短信内容,短信内容以CHR(26)结束。
4.删除短信息指令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

- 海上开采平台网络解决方案
0评论2017-11-01
神州普惠试验检验管理解决方案
试验检验管理系统TCM紧紧围绕产品生产试验检验的全过程进行系统规范的监控和管理,有力的监管了整个试验检验过程、协调组织了试验检验工作的开展、规范了试验检验过程的管理,同时还以方便高效的手段,整理和收集了全部试验检验过程的信息数据。
0评论2014-03-24
宏电工业级TD无线路由器应用于交警局电子警察项目
“电子警察”是高科技的交通管理手段,也是道路交通技术监控系统的重要环节,是智能交通系统建设的重要组成部分。它以其无人值守、自动记录、容量大、无需当场处罚、便于管理等优点成为交通管理工作中必不可少的装备。
0评论2013-02-27
领邦公布新型全自动检测方案:弹丸尺寸的快速检测
近日,北京领邦仪器技术有限公司(后文简称“领邦”)公布了一套新型的全自动检测方案——弹丸尺寸检测系统。该系统是一套在线全自动终检设备,采用激光扫描的方式,在计算机中还原炮弹外形,能够实现炮弹外形尺寸和形位公差的快速检测,满足大批量产品的在线自动化检测,避免人为检测造成的误差,同时保证数据的可靠性以及提高数据管理方便性。
0评论2012-08-31
仪器总线技术的回顾与展望
在测试测量领域,仪器总线技术的发展历来是工程师和科学家们最为关心的部分。从上世纪60年代推出的专用于仪器控制的GPIB总线,到现在被广泛使用的 USB、VXI、PXI和最新推出的LXI、PXI Express,不断涌现的新型总线技术在帮助我们的工程师更快捷高效的完成测量任务的同时,也引起了行业内专家们的广泛争论,究竟哪一种总线将会主宰未 来的测试测量领域呢?
0评论2012-05-28
加固电源典型应用方案
美国北大西洋(NAII)公司为军工和航空领域的嵌入式市场所提供的加固电源,类型齐全,无论是标准型产品还是定制型产品,都应有尽有。在国内外航空、航海、舰船等应用中占有及其重要的地位。
0评论2012-05-03