S7-200自由口通讯程序说明

更新时间:2023-07-21 16:55:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

总结了S7-200自由口通讯的基本用法,整理成文备查

1

S7-200自由口通讯程序说明

主程序: 

LD     SM0.1   

2

MOVB   16#05, SMB30  

3

MOVB   16#F0, SMB87 

   

// PLC上电第一个扫描周期 

//1. 初始化自由口为波特率 19200bps,8数据位,无校验 //2. 初始化RCV信息控制字节, RCV使能 

// 检测信息开始字符和结束字符,检测空闲线信息条件 // 设定信息开始字符为 16#7E ('~'字符) //3. 设定信息结束字符为 16#0A (换行字符) //4. 设置空闲线超时为5ms //5. 设置最大字符数为255 

//6. 连接中断0到接收结束事件 //7. 连接中断2到发送结束事件 //8. 允许用户中断 

//9. 执行接收指令,接收缓冲区指向VB100 

MOVB   16#7E, SMB884  MOVB   16#0A, SMB895  MOVW   +5, SMW906   

7

MOVB   255, SMB94   

8

ATCH   INT_0:INT0, 23  

9

ATCH   INT_2:INT2, 9   ENI       RCV    VB100, 0    可以只用发送指令(XMT)向打印机或者显示器发送信息。其它例子包括与条码阅读器、称重计和焊机的连接。在每种情况下,您都必须编写程序,来支持在自由口模式下与S7‐200通讯的设备所使用的协议。 

只有当S7‐200处于RUN模式时,才能进行自由口通讯。要使能自由口模式,应该在SMB30(端口0)或者SMB130(端口1)的协议选择区中设置01。处于自由口通讯模式时,不能与编程设备通讯。  2

 将PPI通讯转变为自由口模式,SMB30和SMB130分别配置通讯口0和通讯口1,并且为自由口通讯提供波特率、校验和数据位数的选择,8bit的配置字的构成如下: 

Bit 7  6  5  4  3  2  1  0 

p□p□d□b□b□b□m□m □

pp: 校验选择 

00= 不校验 01= 偶校验 10= 不校验 11= 奇校验  

3

d: 每个字符的数据位 0= 每个字符8位 1= 每个字符7位 

bbb: 自由口波特率(bps) 000=38,400    001=19,200 010=9,600     011=4,800 100=2,400     101=1,200 110=115.2K    111=57.6K 

需要S7‐200 CPU版本1.2或更高 

mm: 协议选择 00=PPI/从站模式 01=自由口模式 10=PPI/主站模式 

11=保留(缺省设置为PPI/从站模式) 

 SMB87: 端口0的接收信息控制字节(SMB187: 端口1接收信息控制字节): 

Bit 7  6  5  4  3  2  1  0 

B7□B6□B5□B4□B3□B2□B1□B0 □

B7: 

0=禁止接收信息功能 1 =允许接收信息功能 每次执行RCV指令时检查允许/禁止接收信息 B6: 

0=忽略SMB88或SMB188 1=使用SMB88或SMB188的值检测起始信息 

B5: 

0=忽略SMB89或SMB189 1=使用SMB89或SMB189的值检测结束信息 B4: 

0=忽略SMW90或SMW1901=使用SMW90或SMW190的值检测空闲状 

B3: 

0= 定时器是内部字符定时器 1=定时器是信息定时器 B2: 

0=忽略SMW92或SMW192 1=当SMW92或SMW192 

中的定时时间超出时终止接收 

B1: 

0=忽略中断条件 1=用中断条件作为信息检测的开始 B0: 

始终为零 

 

4

 SMB88: 端口0的开始字符(SMB188: 端口1的开始字符)  SMB89: 端口0的结束字符(SMB189: 端口1的结束字符) 

5

  

 空闲线时间段(按毫秒设定)。空闲线时间溢出后接收的第一个字符是新的信息的开始字符。SMW90对应端口0;SMW190 对应端口1;SMB90/SMB190是最高有效字节,SMB91/SMB191是最低有效字节  7

 SMB94 (端口0),SMB194(端口1): 要接收的最大字符数(1到255字节)。注:这个范围必须设置到所希望的最大缓冲区大小,即使信息的字符数始终达不到  8

 如果有一个中断服务程序连接到接收信息完成事件上,在接收完缓冲区中的最后一个字符时,S7‐200会产生一个中断(对端口0为中断事件23,对端口1为中断事件24)  9

 如果有一个中断服务程序连接到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断(对端口0为中断事件9,对端口1为中断事件26) 

6

总结了S7-200自由口通讯的基本用法,整理成文备查

 

INT0 中断:  

//1. 如果接收状态显示接收到结束字符,连接一个 10ms定时器触发发送,然后返回。 //2. 如果由于任何其它原因接收完成,启动一个新的接收。 LDB=   SMB8610, 16#20 MOVB   10, SMB3411 ATCH   INT_1:INT1, 10 CRETI NOT 

RCV    VB100, 0  

INT1中断: 

//1. 断开定时器中断 

//2. 在端口0向用户回送信息 LD     SM0.0 DTCH   10 

XMT    VB100, 0  

INT2中断:  

//允计另一个接收 LD     SM0.0 RCV    VB100,0   

10

 SMB86: 端口0的接收信息状态字节(SMB186: 端口1接收信息状态字节): 

Bit 7  6  5  4  3  2  1  0 

n□r□e□0□0□t□c□p □

e: 

1= 收到结束字符 Bit4, Bit3: 始终为0 

t: 

1= 接收信息功能终止:超时 c: 

1= 接收信息功能终止:超出最大字符数 

p: 

1= 接收信息功能终止:奇偶校验错误 

n: 

1= 接收信息功能终止:用户发送禁止命令 r: 

1= 接收信息功能终止:输入参数错误或无起始或结束条件  

11

 SMB34和SMB35分别定义了定时中断0和1的时间间隔,可以在1ms ~ 255ms之间以1ms为增量进行设定。如果相应的定时中断事件被连接到一个中断服务程序,S7‐‐200就会获取该时间间隔值。若要改变该时间间隔,您必须把定时中断事件再分配给同一或另一中断程序,也可以通过中断分离来终止定时中断事件 

本文来源:https://www.bwwdw.com/article/83ym.html

Top