S7-200自由口通讯程序说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S7-200自由口通讯程序说明1
主程序:
LD SM0.1 // PLC上电第一个扫描周期
MOVB 16#05, SMB30 2 //1. 初始化自由口为波特率 19200bps,8数据位,无校验
MOVB 16#F0, SMB873 //2. 初始化RCV信息控制字节, RCV使能
// 检测信息开始字符和结束字符,检测空闲线信息条件
MOVB 16#7E, SMB884 // 设定信息开始字符为 16#7E ('~'字符)
MOVB 16#0A, SMB895 //3. 设定信息结束字符为 16#0A (换行字符)
MOVW +5, SMW906 //4. 设置空闲线超时为5ms
MOVB 255, SMB947 //5. 设置最大字符数为255
ATCH INT_0:INT0, 238 //6. 连接中断0到接收结束事件
ATCH INT_2:INT2, 99 //7. 连接中断2到发送结束事件
ENI //8. 允许用户中断
RCV VB100, 0 //9. 执行接收指令,接收缓冲区指向VB100
1 当S7‐200处于STOP模式时,自由口通讯模式被禁止,重新建立正常的通讯(例如:编程设备的访问)。在最简单的情况下,可以只用发送指令(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= 奇校验 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/从站模式)
3 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或SMW190
1=使用SMW90或SMW190
的值检测空闲状
B3:
0= 定时器是内部字符定时器
1=定时器是信息定时器
B2:
0=忽略SMW92或SMW192
1=当SMW92或SMW192
中的定时时间超出时终止接收
B1:
0=忽略中断条件
1=用中断条件作为信
息检测的开始
B0:
始终为零
4 SMB88: 端口0的开始字符(SMB188: 端口1的开始字符)
5 SMB89: 端口0的结束字符(SMB189: 端口1的结束字符)
6 空闲线时间段(按毫秒设定)。空闲线时间溢出后接收的第一个字符是新的信息的开始字符。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)
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
n:
1= 接收信息功能终止:用户发送禁止命令 r:
1= 接收信息功能终止:输入参数错误或无起始或结束条件 e:
1= 收到结束字符
Bit4, Bit3:
始终为0
t:
1= 接收信息功能终止:超时
c:
1= 接收信息功能终止:超出
最大字符数
p:
1= 接收信息功
能终止:奇偶校
验错误
11 SMB34和SMB35分别定义了定时中断0和1的时间间隔,可以在1ms ~ 255ms之间以1ms为增量进行设定。如果相应的定时中断事件被连接到一个中断服务程序,S7‐‐200就会获取该时间间隔值。若要改变该时间间隔,您必须把定时中断事件再分配给同一或另一中断程序,也可以通过中断分离来终止定时中断事件