本例说明如何以自由协议实现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
TI Siemens 500-2101
TI Siemens 500-5001
TI Siemens 500-5002
TI Siemens 500-5009
TI Siemens 500-5013
TI Siemens 500-5016
TI Siemens 500-5018
TI Siemens 500-5019
TI Siemens 500-5020
TI Siemens 500-5021
TI Siemens 500-5023
TI Siemens 500-5024
TI Siemens 500-5039
TI Siemens 500-5052
TI Siemens 500-5054
TI Siemens 500-5061
TI Siemens 500-5840
TI Siemens 505-2531
TI Siemens 505-2558
TI Siemens 505-4016
TI Siemens 505-4208
TI Siemens 505-4316
TI Siemens 505-4316A
TI Siemens 505-4332
TI Siemens 505-4832
TI Siemens 505-4908
TI Siemens 505-5518
TI Siemens 505-6208A
TI Siemens 505-6408
TI Siemens 505-6504
TI Siemens 505-6511
TI Siemens 505-6516
TI Siemens 505-6660
TI Siemens 505-6851A
TI Siemens 505-6851B
TI Siemens 505-7002
Ti Siemens 505-7003
TI Siemens 505-7016
TI Siemens 505-7038
TI Siemens 505-7101
TI Siemens 505-9202
TI Siemens 510-3103
TI Siemens 545-1101
TI Siemens 545-1104
TI Siemens 545-2501
TI Siemens 550-400
TI Siemens 560-2126R
TI Siemens 560-2130
TI Siemens 575-6660
TI Siemens 5TI-1019-1
TI SIEMENS 5TI-1031-1
TI Siemens 5TI-2001
TI Siemens 7MT-200
TI Siemens 7MT-902
TI Siemens D4-06B
TI Siemens D4-08ND3S
TI Siemens PM550-102
TI Siemens RCM-2030
TI Siemens U-01DM
TI Siemens U-01NI
TI Siemens U-15T
TI Siemens U18T
RELIANCE 0-49011
RELIANCE 0-49017-57
RELIANCE 0-50007-R
RELIANCE 0-51378-39
RELIANCE 0-51381-10
RELIANCE 0-51381-16
RELIANCE 0-51382
RELIANCE 0-51829
RELIANCE 0-51831-3
RELIANCE 0-51845
RELIANCE 0-51851-5
RELIANCE 0-51865
RELIANCE 0-51881-3
RELIANCE 0-51881-4
RELIANCE 0-51893
RELIANCE 0-51893-2
RELIANCE 0-52001
RELIANCE 0-52002-2
RELIANCE 0-52012
RELIANCE 0-52807
RELIANCE 0-52808-3
RELIANCE 0-52824
RELIANCE 0-52854
RELIANCE 0-52859-2
RELIANCE 0-52860-2
RELIANCE 0-54355
RELIANCE 0-54394-10
RELIANCE 0-55304
RELIANCE 0-55308
RELIANCE 0-57014
RELIANCE 0-60022-2-F/0042-6712/802284-154F
RELIANCE 107072-18R
RELIANCE 108065-112S
RELIANCE 109075-026
RELIANCE 401559-L
RELIANCE 402388-2C
RELIANCE 45C-362
RELIANCE 45C-42
RELIANCE 45C46
RELIANCE 45C63
RELIANCE 45C-63
RELIANCE 45C66A
RELIANCE 45C900
RELIANCE 45C913
RELIANCE 45C941
RELIANCE 45C-966
RELIANCE 45C98
RELIANCE 51382-3
RELIANCE 605036-09A
RELIANCE 63002-R
RELIANCE 64412-2T
RELIANCE 65200-1AO
RELIANCE 65252-A
RELIANCE 69778-AW
RELIANCE 701819-AB
RELIANCE 76500-SW
RELIANCE 798145
RELIANCE 798145-R
RELIANCE 798145-RK
RELIANCE 798145-RS
RELIANCE 798145V
RELIANCE 801454-R
RELIANCE 803623R
RELIANCE 86471-S
RELIANCE 86475-10S
RELIANCE 86475-S
RELIANCE 866734-R
RELIANCE 866734-T
RELIANCE G78C7245M-RT
RELIANCE J15108-S
RELIANCE RE41PQ/3141PQ
RELIANCE S-25056
Heidenhain LS603C
Heidenhain 1387001-2048
Heidenhain 1420217-262-44
Heidenhain 1424-003-625 250-040-01
Heidenhain 1424039B/1250
Heidenhain 15SUBD
Heidenhain 213 116-2821311628
Heidenhain 235-322-22
Heidenhain 2413481
Heidenhain 241-640-01
Heidenhain 242-659-03
Heidenhain 246-842-02
Heidenhain 24988904
Heidenhain 24988908
Heidenhain 2500-02S09-04
Heidenhain 25168181
Heidenhain 253329-02
Heidenhain 25501502 TE355A TNC351
Heidenhain 255337-15
Heidenhain 262-010-01
Heidenhain 26338030
Heidenhain 264-049-02
Heidenhain 26813601
Heidenhain 269165-10
Heidenhain 27711004
Heidenhain 284-807-30
Heidenhain 291697-26
Heidenhain 291697-2717 @
Heidenhain 291698-26
Heidenhain 291698-2717
Heidenhain 295281-53
Heidenhain 2954341H
Heidenhain 295434-30
Heidenhain 295434-32
Heidenhain 295434-78
Heidenhain 295434-87
Heidenhain 295434-94
Heidenhain 295434-KA
Heidenhain 295434-LN
Heidenhain 295459-3M
Heidenhain 295466-34
Heidenhain 298-402-03
Heidenhain 29840215
Heidenhain 309-777-10
Heidenhain 310123-03
Heidenhain 31012603 3101260312
Heidenhain 310129-03
Heidenhain 310131-12
Heidenhain 310134-09
Heidenhain 310135-02
Heidenhain 311129-01
Heidenhain 312219-20
Heidenhain 312219-67
Heidenhain 315420-04
Heidenhain 316803-04 319123-02
Heidenhain 317947-01 51227S17-58
Heidenhain 320005-2500
Heidenhain 322818-05 ERN-1080
Heidenhain 323897-07
Heidenhain 324952-11
Heidenhain 326-797-08A02
Heidenhain 33237105
Heidenhain 336-451-05
Heidenhain 337-641-53
Heidenhain 343-421-09
Heidenhain 344-963-19
Heidenhain 344996-01
Heidenhain 345857-01
Heidenhain 34989301
Heidenhain 352706-08
Heidenhain 359122-04
Heidenhain 362-579-05
Heidenhain 368604-04
Heidenhain 369124-02
Heidenhain 369124-03
Heidenhain 369124-06
Heidenhain 373 848-01
Heidenhain 373848-01
Heidenhain 375133-02
Heidenhain 376846-02 ROD456
Heidenhain 383963-03 ST1278
Heidenhain 4031753C
Heidenhain 403504-12
Heidenhain 406-020-1C
Heidenhain 406-057-17
Heidenhain 406-141-11
Heidenhain 415-0148-002A
Heidenhain 426000B-2500295 43402
Heidenhain 426-000B-400
Heidenhain 426001b
Heidenhain 426023B-1024
Heidenhain 4263600 73S12-09
Heidenhain 4361000 27S12-03
Heidenhain 4365000 27S12-03
Heidenhain 48003S12-03
Heidenhain 48369 428-060
Heidenhain 48369428-06 075mm
Heidenhain 529/101302500
Heidenhain 536-421-30
Heidenhain 602D/005-F
Heidenhain 602E-EXE-NR-246-842-02
Heidenhain 650B X50/8
Heidenhain 67266801
Heidenhain 702401
Heidenhain 702B/D-8225/D-83301
Heidenhain 800-36000 27204421
Heidenhain 8800003-36000 309864-01
Heidenhain AELS186C326
Heidenhain AELS186C326 797-04LG11
Heidenhain AELS187CMLID526 974-08
Heidenhain AELS486 LINEAR
Heidenhain AK ERA180 331281-2G
Heidenhain AK LIDA47
Heidenhain BoxEXE610BL1
Heidenhain CARD25657501
Heidenhain CRT24237001 24237001310
Heidenhain CRT24237003 24237003BE212
Heidenhain DA200
Heidenhain E346C
Heidenhain E355A
Heidenhain E759C
Heidenhain EK-544 406141-2G
Heidenhain ERA180
Heidenhain ERA1809000 02S12-3
Heidenhain ERN-420-3600-01
Heidenhain EXE 602B/5F
Heidenhain EXE 610CFOR
Heidenhain EXE 650BX25/8
Heidenhain EXE10C 263-383-01
Heidenhain EXE600-5V
Heidenhain EXE-601-S5-F
Heidenhain EXE-602-D
Heidenhain EXE602D/5-F
Heidenhain EXE602D/5-F
Heidenhain EXE602D/5-F 23532222
Heidenhain EXE602E
Heidenhain EXE602E Box24684203
Heidenhain EXE602E SCALE
Heidenhain EXE605 A/5-FG3
Heidenhain EXE610B
Heidenhain EXE610C
Heidenhain EXE610C
Heidenhain EXE-610-C
Heidenhain EXE610CN2
Heidenhain EXE610CV3
Heidenhain EXE610D11
Heidenhain EXE610D12
Heidenhain EXE610E10
Heidenhain EXE610E6
Heidenhain EXE610H3
Heidenhain EXE611 EXE611DRO
Heidenhain EXE650B
Heidenhain EXe650B X25/826338030
Heidenhain EXE650B X50/10
Heidenhain EXE-650BX25-8
Heidenhain EXE-650BX50-10
Heidenhain EXE702401
Heidenhain EXE702B
Heidenhain EXE702B
Heidenhain EXE702B 225551-02
Heidenhain EXE710
Heidenhain EXE839 24265903K6
Heidenhain HH LIP40R
Heidenhain HHLIP40R
Heidenhain HR33Q330
Heidenhain IBV606
Heidenhain IBV660B
Heidenhain LB101 25723603
Heidenhain LB3011200
Heidenhain LC181 341240-06 ENDAT01
Heidenhain LC191F 341241-05
Heidenhain LC191F-ML340
Heidenhain LC191F-ML540
Heidenhain LC481-ML370
Heidenhain LE360 LE360ID26466099
Heidenhain LE360C LE360C360C
Heidenhain LF103 1140MM
Heidenhain LF401C 50MM-1220MM
Heidenhain LF481-550MM/LF-481
Heidenhain LIDA19P40 LIDA19P40 LIDA
Heidenhain LIDA400 LIDA409+47
Heidenhain LIDA47 369429-08
Heidenhain LIDA47 Head405
Heidenhain LIDA48
Heidenhain LIDA48 40324312
Heidenhain LINEAR LS402
Heidenhain LINEAR LS702
Heidenhain LIP101ML 220MM D-8225
Heidenhain LIP40R
Heidenhain LIP40R 40-REXE612
Heidenhain LIP40R LIF10R
Heidenhain LIP40RHH
Heidenhain LS101-ML240MM
Heidenhain LS101-ML340MM
Heidenhain LS106
Heidenhain LS106
Heidenhain LS106 295709-14
Heidenhain LS106 DRO 336958-28
Heidenhain LS106-ML340
Heidenhain LS107
Heidenhain LS176 540ML 336959-96
Heidenhain LS176/340
Heidenhain LS176C
Heidenhain LS-176-ML240
Heidenhain LS186C 33696320
Heidenhain LS186C/640
Heidenhain LS186C-ML740
Heidenhain LS303C
Heidenhain LS403 ML370
Heidenhain LS405
Heidenhain LS405-566MM/LS-405
Heidenhain LS405-ML316
Heidenhain LS406-370MM/LS-406
Heidenhain LS406C
Heidenhain LS406C 220MM
Heidenhain LS406C 370MM
Heidenhain LS406C 740MM
Heidenhain LS406C-770ML
Heidenhain LS406C-ML370
Heidenhain LS406C-ML770
Heidenhain LS406C-ML920
Heidenhain LS473
Heidenhain LS4734032102C
Heidenhain LS473ID4032101A
Heidenhain LS473X 320MM
Heidenhain LS476 329986-24
Heidenhain LS476-ML70
Heidenhain LS479520MM
Heidenhain LS486C470MM
Heidenhain LS486-ML770MM
Heidenhain LS501206681
Heidenhain LS603-620MM
Heidenhain LS603C
Heidenhain LS603C
Heidenhain LS701
Heidenhain LS701
Heidenhain LS702
Heidenhain LS703
Heidenhain LS704
Heidenhain LS704 26338003
Heidenhain LS-704 STROKE
Heidenhain LS707
Heidenhain LS774C LS744ML 920MM
Heidenhain LS903
Heidenhain ML1440315416-06
Heidenhain ML1440315416-20
Heidenhain MLAELC191F D-83301
Heidenhain MT-12
Heidenhain MT-12
Heidenhain MT12-P
Heidenhain MT25
Heidenhain MT25MT25
Heidenhain MT25W 231013-03
Heidenhain MT60K 359341-02
Heidenhain MT60K MT60K1282659
Heidenhain MT60K MT60K311784-02
Heidenhain MT60K1237208
Heidenhain MT60K311784-02
Heidenhain ND282 PGM246 11504
Heidenhain PL410BPL410B
Heidenhain PP20R 28566201
Heidenhain QSY155C 365308-13
Heidenhain ROC410
Heidenhain ROD 320002-2000
Heidenhain ROD 420D008-1000
Heidenhain ROD 4263600 376846-06
Heidenhain ROD 426A2000
Heidenhain ROD 4365000103
Heidenhain Rod1020 322-808-29
Heidenhain ROD320
Heidenhain ROD320005-2500
Heidenhain ROD4200010 238485-23
Heidenhain ROD426 295434-L8
Heidenhain ROD426 376846-L2
Heidenhain ROD426000B
Heidenhain ROD-4263000
Heidenhain ROD426-4500
Heidenhain ROD430200E-1250
Heidenhain ROD4461800 258-438-31
Heidenhain ROD-521
Heidenhain ROD529 406038-13
Heidenhain ROD529/201002500
Heidenhain ROD-529-4096-03S1203
Heidenhain ROD559201003000
Heidenhain ROD55920A000635
Heidenhain ROD880
Heidenhain RON255000
Heidenhain SCALE LS303C
Heidenhain SEM AM1160A 315V
Heidenhain SME50X50/2
Heidenhain ST-1271
Heidenhain ST1278
Heidenhain TE2500C 26872412
Heidenhain TNC150
Heidenhain TNC151BE212
Heidenhain tnc335
Heidenhain ULS300/20
Heidenhain UM115D
Heidenhain VRZ166
Heidenhain VRZ-184A
Heidenhain VRZ402SVG-0765
Heidenhain VRZ403G2
Heidenhain VRZ450
Heidenhain VRZ460
Heidenhain XU-ACT97L