关于自由口通讯的例子

已锁定

王者之剑

  • 帖子

    1
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2013-05-04

普通 普通 如何晋级?

关于自由口通讯的例子

1026

0

2013-05-04 14:31:38

S7-200通讯的编程步骤---自由口通讯
S7-200 自由口通讯是基于RS485 通讯基础的半双工通讯,因此,
发送和接收指令不能同时执行。
自由口通讯使用SMB30(口0)和SMB130(口1)来定义通讯口
的工作模式。SMB30/SMB130 各位的定义如下:
图1:通讯口工作模式寄存器
使用自有口通讯,SM30.0 和SM30.1(SM130.0 和SM130.1=0)
必须分别为1 和0。
一、 发送指令(XMT)
使用XMT 发送指令可以把存于缓冲区中的数据,一次发送一个或
2
多个字节的数据,最多为255 个。发送完最后一个字符后还可以连接
到一个发送完中断(端口0 为9,端口1 位26,见下表)。
图2:中断事件表
3
发送缓冲区的格式如下表所示:
图3:发送缓冲区的格式
说明:
T+0:发送信息的字节个数需要提前定义。
T+1~T+255:要发送的数据字节
和XMT 有关的寄存器:SMB4 的SM4.5 和SM4.6。SM4.5=1 时,口
0 发送完毕;SM4.6=1 时,口1 发送完毕。
由以上可以看出,有两种方法可以检测端口0 或1 的数据发送
状态:一种是利用中断,一种是利用寄存器SMB4 的第5 位(口0)
和第6 位(口1)。
二、 接收指令(RCV)
使用接收指令(RCV)可以从端口0 或1 接收一个或多个字节的
数据(最多255 个),并存于数据缓冲区。接收完最后一个字节后可
以连接到一个接收完中断(口0 是23,口1 是24,见图2 所示)。
接收缓冲区的格式如下表所示:
4
图4:接收缓冲区的格式
说明:
T+0:接收字符计数,在接收到结束字符时自动清零
T+1:起始字符,在SMB88(口0)或SMB188(口1)中定义
T+2~T+244:接收到的数据字节
T+255:结束字符,在SMB89(口0)或SMB189(口1)中定义
和接收有关的寄存器及定义如下表所示:
5
6
图5:接收有关寄存器
说明:
1、SMB86/SMB186:接收终止状态信息寄存器,含有接收终止原因的信息;
2、SMB88/SMB188:信息起始位字节(如发送的信息有起始位,将把此寄存
器的内容和接受信息的每一字节相比较来,检测确认后续字节是否是信息。因此,
在编程时,需要在通讯初始化时,把信息启动位字节传入SMB88 或SMB188);
3、SMB89/SMB189:信息停止位字节(如发送的信息有停止位,将把此寄存
器的内容和接受信息的每一字节相比较来,检测确认信息是否已传送完毕。因此,
在编程时,需要在通讯初始化时,把信息启动位字节传入SMB89 或SMB189);
4、SMB90/SMB190:信息空闲状态的时间(ms),空闲线时间后接受的第一
个字节是信息的开始;
5、SMB94/SMB194:接受的最大字符数(1~255)。
三、编程步骤
1、利用SM0.1初始化通讯参数。
● 使用SMB30(口0)或SMB130(口1)选择自由口通讯模式,并选
定自由口通讯的波特率,数据位数和校验方式。
● 定义通讯口接收格式SMB87(口0)或SMB187(口1)。包括启动
信息接收(第7 位=1),是否有起始位(第6 位),是否有结束位(第
5 位)以及是否检测空闲状态(第4 位)等。
● 设定起始位(SMB88 或SMB188)或结束位(SMB89 或SMB189)、空
闲时间信息(SMB90 或SMB190)及接收的最大字符数(SMB94 或
SMB194)。
● 如利用中断,连接接收完(事件23)和发送完(事件9)中断到
7
中断程序,并且开中断(ENI)。
● 一般还要利用SMB34 定义一个定时中断,来定时发送数据(一般
为50ms,即间隔发送数据的时间)。
2、编写主程序
自由口通讯主程序的任务是把要发送的数据放到送区,并接收数
据到接收区,当然此部分也可以用一个子程序来完成。
3、编写SMB34的定时中断程序
把要发送的数据传送到发送区,一般包括:发送的字节数,发送
的数据及结束字符,最后再利用XMT 指令启动发送。
4、编写发送完中断和接收完中断子程序
● 发送完中断子程序的主要任务是发送完后断开SMB34 定时中断,
并利用RCV 指令准备接收数据。
● 接收完中断子程序的任务是接收数据完成后重新连接SMB34 的定
时中断,准备发送数据。
四、例程
本例的主要作用是利用甲机控制乙机的电机星-角起动,乙机控
制甲机的电机星-角起动。I/O 分配如下所示:
发送和接收数据缓冲区的分配如下所示:
8
甲机(2号站)程序梯形图:
主程序:
9
初始化子程序(initialize):
10
11
甲机星角运行子程序(XingJiao)
12
中断程序0(50ms间隔发送程序)
13
中断程序1(发送完中断)
中断程序2(接收完中断)
乙机(3 号站)的程序和甲机类似,只要在编程过程中注意发送
和接收区和甲机的对应就可以了,不再缀述。
关于自由口通讯的例子 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

过程仪表

共有3072条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。