西门子 S7-200 PLC与M20 GSM Modem的通信

[复制链接]
查看882 | 回复0 | 2011-11-1 21:37:07 | 显示全部楼层 |阅读模式
<
概述
  本例说明如何以自由协议实现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
[本文共有 2 页,当前是第 1 页] <<上一页 下一页>>
热帖推荐
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则