GE AC465RGR 自由口模式下PLC与M20 GSM Modem的通信
GE AC465RGR概述
---- 本例说明如何以自由协议实现S7-200与M20 GSM Modem的通信。可实现的功能为:当M20收到GSM短信息时,可以自动向发送方回发一条短信息,信息的内容由用户自行定义。
AT指令:
---- 本例中使用的AT指令主要有四个:
短信息格式选择指令CMGF
---- M20支持两种格式的短信息,PDU格式和TEXT格式。
---- AT+CMGF=0 设置短信为PDU格式(默认)
---- AT+CMGF=1 设置短信为TEXT格式
---- 本例中将使用TEXT格式,因此必须对M20进行初始化。
读短信息指令CMGR
---- 指令格式为:AT+CMGR=< index >,index一般为1到15的整数,视SIM卡的容量而定,它表示所要阅读的短信息在SIM卡中的存储位置。在本例中,由于收到的短信息在阅读后都会被删除,因此每次收到的短信息都会被保存到**个存储位置,在收到短信息后,用AT+CMGR=1即可阅读。
发送短信息指令CMGS
---- 指令格式为:AT+CMGS=< da >,da为目标手机号,如"13800138000"。M20接到指令后返回一个"〉"提示输入短信内容,短信内容以CHR(26)结束。
删除短信息指令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
modem.mwp(6.77K)
Square D MHL 36300 300 Amp 3 Pole 600 V Circuit Breaker
Square D MHL 36700 700 Amp Circuit Breaker 3 Pole 600 V
Square D EJB34070 70 Amp 3 Pole 480 V Circuit Breaker
Square D FAL 34100 100 Amp
Square D KAL36150 150 Amp 600 V 3 Pole Circuit Breaker
Square D MAL36500 500 Amp 600 V 3 Pole Circuit Breaker
Square D FAP3603015M 30 Amp 3 Pole 600 V Circuit Breaker
Square D FAL36020 20 Amp 600 V 3 Pole Circuit Breaker
Square D LAL 36400 Circuit Breaker 400 Amp
Square D FAL34020 480 V 20 Amp Circuit Breaker
Square D FAP36100TF Circuit Breaker 100 Amp 600 V 3 Pole
Square D JJA36200 YP 200 Amp 3 Pole 600 V I Line Circuit Breaker
Square D RKF36120U44A PowerPact RK1200 1200 Amp 3 Pole Circuit Breaker LSIG
Square D MJ MJP 36600 600 Amp
Square D Q2 32225 225 Amp Circuit Breaker
Square D Q232225 225 Amp 3 Pole 240 V I Line Circuit Breaker
Square D KAL26150 1380 150 Amp 2 Pole 600 V Circuit Breaker
Square D FAL36035 35 Amp 600 V 3 Pole Circuit Breaker
Square D HJA36125 125 Amp 3 Pole 600 V I Line Circuit Breaker
Square D KAL 36150 Circuit Breaker 150 Amp Used
Square D FAL 22030 30 Amp 2 Pole Circuit Breaker
Square D FAL 36030 30 Amp Circuit Breaker
Square D FAL36045 45 Amp 600 V 3 Pole Circuit Breaker
Square D LAP 36300 MB 300 Amp Gray Label Main Breaker
Square D Q2L3225 225 Amp 240 V 3 Pole Circuit Breaker (Black)
Square D FAL 34030 30 Amp Circuit Breaker
Square D FH36090 90 Amp 3 Pole 600 V I Line Circuit Breaker
Square D MasterPact 3000 Amp Cradle 48842 Chassis For NW Breakers
Square D FAL 22030 30 Amp 2 Pole Circuit Breaker
Square D LAL26300 300 Amp 2 Pole 600 V Circuit Breaker
Square D KAP36225 225 Amp 3 Pole 600 V Circuit Breaker
Square D MHL 3645025DC1679 450 Amp DC Breaker Used
Square D PowerPact RL 2500 RLF 36250 U43A 2500 Amp LSI With Test Report Manual
Square D FAL36070 Circuit Breaker 70 Amp 3 Pole 600 V
Square D Circuit Breaker PAF2036 2000 Amp frame W/1600 Amp Trip 600 V
Square D LAP 36350MB Main Breaker 350 Amp 600 V 3 Pole
Square D KAL36225 Circuit Breaker 225 Amp 3 Pole 600 V
Square D MAL 36800 800 Amp 600 V 3 Pole Circuit Breaker
Square D MAL36800 800 Amp 600 V 3 Pole Circuit Breaker
Square D QO 220 20 Amp 2 Pole Circuit Breaker
Square D LAL36300MB 300 Amp 3 Pole 600 V Circuit Breaker
Square D FAL34030 480 V 30 Amp Circuit Breaker
Square D EDB14030SA 30 Amp 1 Pole 480 V Circuit Breaker
Square D QDP 22175 TM 175 Amp 2 Pole Circuit Breaker
Square D FHL 36000M4200 100 Amp Breaker Gray Label
Square D QO 260 60 Amp 2 Pole Circuit Breaker
Square D LAL36400 400 Amp 3 Pole 600 V Circuit Breaker
Square D PHF2036PL 2000 Amp 600 V 3 Pole Circuit Breaker
Square D Masterpact MP30H2 3000 Amp 600 V LSG Circuit Breaker
Square D LAL363001021 300 Amp 600 V 3 Pole Circuit Breaker With Shunt Trip
Square D Masterpact MP20 2000 Amp Chassis/Cradle
Square D EJB34080 80 Amp 3 Pole 480 V Circuit Breaker
Square D Masterpact MP30 3000 Amp Chassis/Cradle
Square D QO 250 50 Amp 2 Pole Circuit Breaker