找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3135|回复: 9
收起左侧

求单片机限位开关编程思路

[复制链接]
ID:101869 发表于 2021-6-26 18:59 来自手机 | 显示全部楼层 |阅读模式
两个电机,1号电机动作到限位开关1位置停止此时限位开关信号一直输出, 用该限位开关信号启动2号电机,2号电机动作到限位开关2位置停止,由于1号位置开关信号一直输出会导致2号电机不停,我写的代码是一号限位==0  2号电机动作2号限位==0  2号电机停止  但是现在一号限位一直输出  求个思路
回复

使用道具 举报

ID:213173 发表于 2021-6-26 20:43 | 显示全部楼层
楼主提出的是简单控制逻辑问题。一般驱动机械装置的电机不会是一次性单方向运行。通常是有起始位置,得电后运行到限位位置,最终都要返回到起始位置。而且要有中间位置判断。在运行中发生意外很可能停在中间任意位置,故障排除后是继续运行还是返回起始位置,这是要根据实际需要设计的。如果只是实现两个电机接力运行可以这样写:
        if(K1==1&&K2==1)
        {
                The_motor_1=1;
                The_motor_2=0;
        }
        if(K1==0&&K2==1)
        {
                The_motor_1=0;
                The_motor_2=1;
        }
        if(K1==0&&K2==0)
        {
                The_motor_1=0;
                The_motor_2=0;
        }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:88256 发表于 2021-6-26 21:04 | 显示全部楼层
1:1#限位动作时,置位一个标志位,如果该标志位为1,启动2#电机,2#限位动作,清该标志位;2:当1#限位由1转0时,才能启动2#电机并自保持,也是需要一个标志位。
回复

使用道具 举报

ID:101869 发表于 2021-6-26 21:20 来自手机 | 显示全部楼层
hhdsdy 发表于 2021-6-26 21:04
1:1#限位动作时,置位一个标志位,如果该标志位为1,启动2#电机,2#限位动作,清该标志位;2:当1#限位由1 ...

由于1号限位一直动作  清了标志立马又产生标志了  我就是走不出这个圈了
回复

使用道具 举报

ID:101869 发表于 2021-6-26 21:22 来自手机 | 显示全部楼层
wulin 发表于 2021-6-26 20:43
楼主提出的是简单控制逻辑问题。一般驱动机械装置的电机不会是一次性单方向运行。通常是有起始位置,得电后 ...

谢谢老师  我明天试试这个思路   
回复

使用道具 举报

ID:88256 发表于 2021-6-26 21:43 | 显示全部楼层
非凡科技 发表于 2021-6-26 21:20
由于1号限位一直动作  清了标志立马又产生标志了  我就是走不出这个圈了

置位标志位之前,先判断2#限位开关,2#动作就不置位
回复

使用道具 举报

ID:101869 发表于 2021-6-27 00:15 来自手机 | 显示全部楼层
hhdsdy 发表于 2021-6-26 21:43
置位标志位之前,先判断2#限位开关,2#动作就不置位

1号开关是一直保持动作的  要用一号的动作启动2号电机  所以清了标志又会立马产生
回复

使用道具 举报

ID:101869 发表于 2021-6-27 08:28 | 显示全部楼层
wulin 发表于 2021-6-26 20:43
楼主提出的是简单控制逻辑问题。一般驱动机械装置的电机不会是一次性单方向运行。通常是有起始位置,得电后 ...

试了下没解决  我给您大概描述下
限位子函数  
if(K1==0)
K1_SIGN=1;
M1=1;//1号电机停止
if(K1==1&&K1_SIGN=1)
K1_SIGN=0;
if(k2==0)
K2_SIGN=1;
M2=1;//2号电机停止
if(K2==1&&K2_SIGN=1)
K2_SIGN=0;
运行子函数
if(K1_sign==1)
M2=0;//2号电机运行
  现在问题就是因为k1处于一直接通状态导致K1_SIGN一直==1  所以即使K2_SIGN==1 M2也不停止 即使
if(K1_SIGN==1&&K2_SIGN==1)M2=1;这样都不行   
回复

使用道具 举报

ID:101869 发表于 2021-6-27 09:01 来自手机 | 显示全部楼层
解决了谢谢老师指导  增加了个标志 K2动作时时清除  就解决了
回复

使用道具 举报

ID:88256 发表于 2021-6-27 13:49 | 显示全部楼层
非凡科技 发表于 2021-6-27 00:15
1号开关是一直保持动作的  要用一号的动作启动2号电机  所以清了标志又会立马产生

我为什么说增加标志位而不是直接取1#开关状态,就是考虑开关是一直通的,而标志位可以被清除也可以不被置位,如果2#开关动作,就跳过标志位置位,怎么还会产生置位情况?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表