各位大侠,我刚开始接触PLC的通讯,我用RS232/PPI编程线调试,但是实用手册说编程线的第5个开关是控制自由通讯的,而且在STOP的状态下才能和STEP7通讯。。。。于是我把编程电缆的5开关选择0(PPI/Freeport),PLC手动置于STOP状态下,但是在连接STEP7的时候,在Communication里只能在原地址扫描到Unknown的设备。。请问应该怎么做自由口通讯的调试呢???
最佳答案
要做自由口通讯,先将编程电缆的5开关选择1,在STEP 7-Micro/WIN编程软件里面写好程序,如:
LD SM0.1
AN I2.0
MOVB 16#09, SMB30 // SMB30配置通讯口0:自由口通讯方式,选择波特率、奇偶校验和数据位数
// - 初始化为自由口通讯方式
// - 选择9600波特率
// - 选择8位数据位
// - 选择无校验
// p p d b b b m m
// pp: 校验选择
// 00= 不校验
// 01= 偶校验
// 10= 不校验
// 11= 奇校验
//d: 每个字符的数据位
//0= 每个字符8位
//1= 每个字符7位
//bbb: 自由口波特率
//000=38,400波特
//001=19,200波特
//010=9,600波特
//011=4,800波特
//100=2,400波特
//101=1,200波特
//110=115.2K波特1
//111=57.6K波特1
//mm:协议选择
//00=PPI/从站模式
//01=自由口模式
//10=PPI/主站模式
//11=保留(缺省设置为PPI/从站模式)
MOVB 2#10110000, SMB87 // SMB87配置通讯口0:接收信息控制字节
// SM87.7(en)=1 允许端口0接收字符
// SM87.6(sc)=0 忽略SMB88(不检测起始信息)
// SM87.5(ec)=1 使用SMB89的值检测结束信息(SMB89='#')
// SM87.4(il)=1 使用SMW90的值检测空闲状态(空闲线时间溢出后接收的第一个字符是新的信息的开始字符)
// SM87.3(c/m)=0 定时器为内部字符定时器
// SM87.2(tmr)=0 忽略SMW92(不使能:当SMW92中的定时时间超出时终止接收)
// SM87.1(bk) =0 忽略Break条件
// SM87.0 =0 系统保留
MOVB 35, SMB89 // SMB89配置通讯口0:信息字符的结束符(ASCII码值:35,字符:'#')
MOVW +5, SMW90 // SMW90配置通讯口0:空闲线时间段,按毫秒设定(5ms)
MOVB 80, SMB94 // SMB94配置通讯口0:要接收的最大字符数(1~255字节),这里是80
ATCH INT_0:INT0, 23 // 端口0接收完成事件(事件号:23)连接到中断0
ATCH INT_1:INT1, 9 // 端口0发送完成事件(事件号:09)连接到中断1
ENI // 允许用户中断
RCV VB100, 0 // 通讯口0的接收信箱缓冲区:VB100
当然还有通讯处理程序,可以参考S7-200可编程控制器系统手册里的例子程序,写好程序后,下载到PLC里面,然后将编程电缆的5开关选择0,PLC置于RUN模式,用串口调试助手(网上可以下载)进行调试。
提问者对于答案的评价:
好的~~~应该一般的串口调试软件就没问题吧~~~~
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354581.html