eternal1520
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看eternal1520的 主题 / 回贴
楼主  发表于: 2009-11-06 11:33
《现代电器控制及PLC应用第二版》第7章的问题
1   计数范围是0-255
2   计数脉冲是SM0.5
3   当外部输入I0.0的状态改变时触发中断1/0, 中断1将M0.0置位,中断0将M0.0复位
4  当M0.0=1时,计数器加计数,当M0.0=0时计数器减计数
5  计数器数值通过QB0七段码显示。

我的分析如下: SM0.5为0.5S通/0.5S断的脉冲。       方向控制为I0.0,不要求复位信号, 增减计数, 所以我选择 1号计数器,工作模式为6
当M0.0=1时  将FB写入 SMB47       255送入SMB48           当M0.0=0时  将F0送入SMB47     255 送入SMB48  

我的问题:
1    这个程序中  当没有外部输入时怎么定义高速计数器?      
2    I0.0我认为是外部方向控制  通过I0.0来调用中断对M0.0的状态进行控制 ,是不是可以认为I0.0就是外部方向控制?
3   当没有外部中断时,计数器如何计数?

主程序:
网络1
LD     SM0.1               初始化脉冲
CALL   SBR_0:SBR0             调用子程序
HDEF   1, 6                               高速计数器选择1号  工作模式6
HSC    1                                     启动高速计数器

网络2
LD     SM0.5                             计数脉冲
HSC    1

网络3
LD     SM0.0                              
MOVD   HC1, VD100             读高数计数器的值送入VD100
DTI    VD100, VW400            将整数转换为双子
ITB    VW400, VB200             字转换为字节
SEG    VB200, QB0               VB200的值送入QB0 七段码
SRB    VB200, 4                      
SEG    VB200, QB0



子程序:
网络1
LD     I0.0                                I0.0上升沿时调用中断程序0 中断事件号为0  
ATCH   INT_0:INT0, 0
ENI

网络2
LD     I0.1                                I0.0上升沿时调用中断程序1 中断事件号为1
ED
ATCH   INT_1:INT1, 1
ENI
                  
0号中断程序:
LD     SM0.0          
S      M0.0, 1                      置位M0.0
MOVB   16#F8, SMB47      将FB送入高速计数器SMB47控制位    加计数
MOVD   0, SMD48               清零高速计数器初始值
HDEF   1, 6                         定义高速计数器
HSC    1                               启动

1号中断程序:
LD     SM0.0
R      M0.0, 1                        复位M0.0
MOVB   16#F0, SMB47      F0送入高速计数器SMB47控制位    减计数
MOVD   0, SMD48               清零高速计数器
HDEF   1, 6                       定义
HSC    1                               启动
eternal1520
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看eternal1520的 主题 / 回贴
1楼  发表于: 2009-11-06 11:49
朋友们帮帮忙吧  
困扰我几天了