西门子工控展销网
◎中国工控展销网    ◎站点地图1 2 3    ◎繁体版
三菱工控展销网
首  页 代理商家 产品中心 资料软件 技术交流 新闻资讯 最新消息 面价查询  
   

PLC与M20 GSM Modem的通信-技术交流

西门子plc代理商,专业展销西门子自动化与驱动产品。真诚为您提供:型号-报价-技术参数,资料-手册-编程软件。专业阐述原理-操作-参数-通讯-应用等技术问题。讲述编程-应用-经验实例,维修-故障-报警-故障代码解决方法。

商家信息
热点导航
  西门子PLC  
西门子LOGO
西门子变频器
西门子触摸屏
西门子直流调速器
西门子伺服电机
西门子数控系统
西门子工控机
西门子电机
更多产品
 
 
 您的位置:>>>技术交流 >>>正文

 
PLC与M20 GSM Modem的通信
   相关品牌: 西门子
   相关产品: PLC
   更新时间: 2007/6/1 19:24:04
   点击次数: 300
 
概述
---- 本例说明如何以自由协议实现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接到指令后返回一个"〉"提示输入短信内容,短信内容以DHR(26)结束。
  4. 删除短信息指令cmgd
    ---- 指令格式为:at+cmgd=< index >,index与读指令中的index含义相同。本例中使用at+cmgd=1来删除收到的短信息。
    ---- 注:所有的指令都以DHR(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指令的接收的起始字符设置为空格符DHR(32)(十六进制的20)用以接受m20发送的短信息内容。在接收完成中断中,用接受缓冲的第一个字节等于DHR(32)来触发sendsms1子程序。
---- sendsms1子程序将从收到短信息的内容中提取出发送方的电话号码,并向m20发送at+cmgs="发送方号码",modem在接到该指令后返回的信息为:
---- >
---- 对应的十六进制形式为:
---- 0d 0a 3e 20
---- 其中0d 0a为不可显示字符,20为空格符
---- 这样,在发送完成中断中以m0.1位条件设置接收的起始字符为"〉"DHR(62)用以接受m20发送的提示信息。在接收完成中断中,用接受缓冲的第一个字节等于DHR(62)来触发sendsms2子程序。
---- sendsms2子程序将所要发送的内容加上结束字符DHR(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


中国工控展销网  E-mail:kefu@gkooo.com