西门子S7-200与TC35

工控问题

现在,我们已经知道如何用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 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=<Length>后将返回”>”,当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

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

这里需要特别注意的是,在

Word文档免费下载Word文档免费下载:西门子S7-200与TC35 (共3页,当前第1页)

西门子S7 200与TC35相关文档

最新文档

返回顶部