S7-200自由口通讯教程及编程实例(二)
S7-200自由口通讯教程及编程实例(二)
S7-200自由口通讯教程及编程实例(二) 排行榜 收藏 打印 发给朋友 举报 发布者:admin
热度19票 浏览175次 【共1条评论】【我要评论】时间:2009年11月11日 19:03
三、 PLC编程
现在,我们已经知道如何用AT指令发送短消息,剩下的工作是用PLC程序来发送这些AT指令。S7-200的通讯端口为RS-485接口,RS-485接口为半双工接口,因此,编写PLC程序的关键是避免在通讯端口上同时发送和接收。我们下面将介绍一种标准的编程模式,按照这种模式编写自由口通讯程序可以有效的避免因同时发送和接收造成的通讯冲突,从而保证程序的正常运行。
1. 初始化
Network 1
LD SM0.1
MOVB 9, SMB30
MOVB 2#11000100, SMB87
MOVB '>', SMB88
MOVW +5, SMW92
MOVB 255, SMB94
ATCH INT_0, 23
ATCH INT_1, 9
ENI
将上面这段程序添加到主程序中,对PLC的端口0进行初始化。这段程序以SM0.1为触发条件,每当PLC进入RUN状态时执行一次。
MOVB 9, SMB30
该指令将端口0设置为 9600,8,N,1 自由口方式
MOVB 2#11000100, SMB87
S7-200自由口通讯教程及编程实例(二)
SM87.7=1 允许端口0接收字符
SM87.6=1 当检测到与SMB88中相同的字符时开始接收,并将该字符当作信息的首字符
SM87.5=0 不检测信息的结束字符
SM87.4=0 不检测端口空闲状态
SM87.3=0 定时器为内部字符定时器,意思是PLC开始接收信息后(检测到起始字符),每接收到一个字符就启动定时器,当定时器到达在SMW92中设置的时间后,即认为定时器超时
SM87.2=1 允许在定时器超时后停止接收,并产生接收完成中断
SM87.1=0 忽略Break条件
MOVB '>', SMB88
设置接收起始字符为ASCII码的”>”,当TC35收到AT+CMGS=后将返回”>”,当PLC收到”>”后发送PDU数据包
MOVW +5, SMW92
设置定时器超时时间为5 ms
MOVB 255, SMB94
设置RCV指令接收的最大字符数位255
ATCH INT_0, 23
中断时间23为端口0接收完成中断,将该中断连接到中断0
ATCH INT_1, 9
中断时间9为端口0发送完成中断,将该中断连接到中断1
ENI
中断允许
2. 接收TC35的信息
Network 2
S7-200自由口通讯教程及编程实例(二)
LD SM0.0
RCV VB100, 0
在初始化程序中,端口0以被允许接收来自TC35的信息,在主程序中添加上面的程序将端口0置于接收状态。这时端口0将检测收到的字符,当收到”>”时即开始接收,并把收到的信息保存到VB101开始的存储器中(VB100中将保存每次收到的字符的个数,当接收结束时,该位置被清零)。
3. 发AT指令
PLC要向TC35发送两部分内容来发送一条短消息,首先是AT指令(AT+CMGS=18),当收到”>”后,发送PDU数据包。这里,我们用M0.0的上升沿来触发PLC发送AT指令。在主程序中添加下面指令
Network 3
LD M0.0
EU
R SM87.7, 1
RCV VB100, 0
XMT VB0, 0
R SM87.7, 1
SM87.7置0,禁止在端口0接收信息
RCV VB100, 0
执行RCV指令,停止端口0的接收。
XMT VB0, 0
发送AT指令到TC35
这里需要特别注意的是,在初始化程序中,端口0已被置为接收状态,此时如果直接发送AT指令,将会导致端口0发生通讯冲突,而导致其不能正常工作。因此,我们在发送指令前必须先禁止接收(将SM87.7复0)然后执行RCV指令,RCV指令执行时将会检测SM87.7的状态,当发现SM87.7=0时,即停止端口0的接收。这里我们建议,在使用XMT指令前,首先执行R SM87.7, 1、 RCV VB100, 0两条指令(VB100可以换成其他地址)。
S7-200自由口通讯教程及编程实例(二)
XMT指令指向VB0,我们将AT指令写在VB0开始的数据块中
4. 发送PDU数据包
当AT指令发送完成时,PLC会产生一个中断,在初始化程序中,我们已经将这个中断连接到INT_1(ATCH INT_1, 9),在这个中断中,我们重新把端口0置于接收状态,用来接收TC35返回的“>“,同时我们将M0.0复位以便检测下一次发送请求并清空RCV指令的接收缓冲区。将下面指令添加到INT_1中:
Network 1
LD M0.0
S SM87.7, 1
RCV VB100, 0
R M0.0, 1
Network 2
LD SM0.0
FILL +0, VW100, 10
TC35接收到AT+CMGS=18后,返回”>”,PLC接收到”>”后开始将接收到的字符保存到VB101开始的存储区,并且每接收一个字符即启动定时器,超过5 ms仍接收不到下一个字符时,就认为本次接收已经完成,产生接收完成中断。在初始化程序中我们已经将该中断连接到INT_0(ATCH INT_0, 23)。将下面指令添加到INT_0中:
Network 1
LDB= VB101, '>'
S7-200自由口通讯教程及编程实例(二)
S M0.1, 1
在中断程序中不易执行过多程序,因此我们在这里判断VB101是否为”>”,如果是则表示TC35等待接收PDU数据,我们通过M0.1在主程序中触发发送PDU数据。将下面这段程序添加到主程序中:
Network 4
LD M0.1
EU
R SM87.7, 1
RCV VB100, 0
XMT VB20, 0
与发送AT指令一样,我们首先要停止端口0的接收,然后发送PDU数据包,PDU数据包保存在VB21开始的数据块中,VB20中保存XMT指令要发送的字节数目。
5. 判断发送状态
在发送完成中断中,我们要重新置端口0为接收状态,同时复位M0.1,并将RCV指令判断的起始字符由原来的”>”改为”+”,因为TC35接收到PDU数举包后会返回”+CMGS: x”表示发送成功,或者” +CMS ERROR: 500”表示发送失败,将下面的指令添加到INT_1中
Network 3
LD M0.1
S7-200自由口通讯教程及编程实例(二)
S SM87.7, 1
MOVB '+', SMB88
RCV VB100, 0
R M0.1, 1
在接收完成中断中(INT_0)我们可以通过判断VB104的状态来判断发送是否成功,如果发送成功,VB104=”G”,如果不成功VB104=”S”。将下面的指令添加到INT_0中
Network 2
LDB= VB104, 'G'
MOVB '>', SMB88
Network 3
LDB= VB104, 'S'
MOVB '>', SMB88
S M0.0, 1
如果成功则将RCV指令的起始字符恢复为”>”,如果不成功则将RCV指令的起始字符恢复为”>”同时置位M0.0重新发送短消息。
将整个程序下载到PLC中,每次置位M0.0即可以向13801234567发送一条短消息,短消息内容为“天气”。只要更改数据块中的内容,即可向不同的手机号码发送不同内容的短消息。整个程序如下:
MAIN
Network 1
LD SM0.1
MOVB 9, SMB30
MOVB 2#11000100, SMB87
MOVB '>', SMB88
MOVW +5, SMW92
S7-200自由口通讯教程及编程实例(二)
MOVB 255, SMB94
ATCH INT_0, 23
ATCH INT_1, 9
ENI
Network 2
LD SM0.0
RCV VB100, 0
Network 3
LD M0.0
EU
R SM87.7, 1
RCV VB100, 0
XMT VB0, 0
Network 4
LD M0.1
EU
R SM87.7, 1
RCV VB100, 0
XMT VB20, 0
< …… 此处隐藏:2243字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [行业范文]美好的法语句子
- [行业范文]描写露珠的句子
- [行业范文]精彩禅语句子图片
- [行业范文]关于满嘴谎言的句子
- [行业范文]关于安静的句子48句
- [行业范文]关于小河的句子
- [行业范文]描写稻田的句子
- [行业范文]思念好朋友的句子
- [行业范文]赞美雪的句子
- [行业范文]早上激励人心的句子
- [行业范文]失恋忧伤的句子
- [行业范文]努力积极向上的句子
- [行业范文]对工作心灰意冷的句子
- [行业范文]失恋让人心疼的句子
- [行业范文]描写珍惜青春的句子
- [行业范文]表达思念的句子简短
- [行业范文]关于父爱的句子范例
- [行业范文]浪漫的英语句子
- [行业范文]关于周末的句子
- [行业范文]思念牵挂的句子
- 有关感恩班会课件简短(二篇)(感恩班会
- 2025年初二下乡军训心得体会800字(15篇
- 关于新员工培训方案汇编(关于新员工培
- 精选高考生寒假学习计划书(精)(高考生
- 毕业实训报告心得体会(3篇)(实训报告心
- 银行工作感悟及心得范文怎么写(四篇)(
- 精选领导干部个人政治画像报告通用(七
- 精选超市11.11活动促销方案(精品超市品
- 2025年怎么做自我介绍汇总(5篇)(至2025
- 最新企业错峰生产方案(26篇)(山西企业
- 最新暑期三下乡社会实践调研报告范本(
- 最新幼儿园大班教育教学总结怎么写(最
- 最新教师节主持词小学(优秀9篇)(教师节
- 关于小学安全教育教学方案(推荐)(关于
- 员工信模板范文怎么写(五篇)(员工信息
- 最新保险销售离职申请书(十六篇)(最新
- 最新XX小学防校园欺凌工作方案怎么写(2
- 有关特岗教师辞职信范文(推荐)(特岗教
- 精选党的建设工作要点简短(党的建设的
- 如何写安康杯竞赛活动总结汇总(4篇)(安




