找回密码
 立即注册
楼主: jwd

请教一下各位大佬,PLC的沿信号检测是怎么实现的?

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-2-10 16:41:14 | 显示全部楼层
本帖最后由 jwd 于 2024-2-10 16:44 编辑
Debu*** 发表于 2024-2-10 15:02
优先使用硬件方式,见4、5、6楼。
软件方式如下:
放在主循环或定时器中断里以10~1000Hz扫描即可,可以直接 ...

好的,谢谢,直接用中断的话,会不会因为没有消抖导致的误信号?

点评

使用定时器中断以固定频率执行不会  发表于 2024-2-10 17:02
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-2-10 17:19:03 | 显示全部楼层
jw*** 发表于 2024-2-10 16:41
好的,谢谢,直接用中断的话,会不会因为没有消抖导致的误信号?

不是,我是说用硬件中断的话会不会出现误信号
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:36
  • 最近打卡:2025-05-02 06:39:07
已绑定手机

7

主题

48

回帖

561

积分

高级会员

积分
561
发表于 2024-2-10 19:13:00 来自手机 | 显示全部楼层
如果需要像PLC一样,在使用前先进行输入计算,再程序使用,可以通过异或等判断,这次开关的字节和上次保存的状态进行处理,得到整个字节的上升沿和下降沿,保存在两个字节里。在使用时,使用对应的上升下降沿的位就能实现PLC沿的功能。本次循环执行完后,上升下降沿寄存器都要清零,并保存本次开关状态到上次状态寄存器中。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-2-10 19:20:28 | 显示全部楼层
zgrfo*** 发表于 2024-2-10 19:13
如果需要像PLC一样,在使用前先进行输入计算,再程序使用,可以通过异或等判断,这次开关的字节和上次保存 ...

这是个思路,谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:209
  • 最近打卡:2025-04-25 08:48:58

1

主题

18

回帖

883

积分

高级会员

积分
883
发表于 2024-2-26 12:19:24 | 显示全部楼层
本帖最后由 游龙在线 于 2024-2-26 12:26 编辑

//如果不用中断,可以用下面这个方法:
//如果输入端加光耦或以按钮按下为1,这样用。如果不加光耦或以端口状态为准,上升和下降沿对换一下。
bit x,y,z,u;
sbit k0 = P0^0;                                //上升沿;
sbit k1 = P0^1;                                //下降沿;

void main()
{
        while()
        {
                if(k0 == 0)                        
                        x = 1;
                else
                {
                        if(y)
                        {
                                x = 0;
                                y = 0;
                        }
                }
                if(x)
                {
                        if(y == 0)
                        {
                                //上升沿要执行的程序;
                                y = 1;
                        }
                }




               
               
                if(k1 == 0)
                        z = 1;
                else
                {
                        if(z)
                        {
                                u = 1;
                                z = 0;
                        }
                }
                if(u)
                {
                        //下降沿要运行的程序;
                        u = 0;
                }               
        }
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-09 08:51:18

0

主题

14

回帖

200

积分

中级会员

积分
200
发表于 2024-2-26 20:51:02 | 显示全部楼层
本帖最后由 xiaoyao 于 2024-2-26 21:02 编辑

bit M0=0;
bit M1=0;
sbit X0=P1^0;
sbit X1=P1^1;

sbit Y0=P2^0;
sbit Y1=P2^1;

上升延,IO初始化先低,再检查高低电平;
if( X0==1){if( M0==0){M0=1;Y0=0;}} //X0由低变高电平,Y0输出灯亮
//else {if( M0==1){M0=0;Y0=1;}}  //去保持
下降延,IO初始化先高,再检查低电平;
if( X1==0){if( M1==0){M1=1;Y1=0;}} //X1由高变低电平,Y1输出灯亮
//else {if( M1==1){M1=0;Y1=1;}}//去保持

。。。。。

转发网上下载的C语音写控制方法,供参考:
C语言写梯形图控制V11(三菱PLC101例子之最好21例)总修改.pdf (1.34 MB, 下载次数: 79)


简单使用C语言写梯形图V1.0控制.pdf (1.15 MB, 下载次数: 74)






回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-2-26 21:17:14 | 显示全部楼层
xiao*** 发表于 2024-2-26 20:51
bit M0=0;
bit M1=0;
sbit X0=P1^0;

谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-2-26 21:17:33 | 显示全部楼层
游龙*** 发表于 2024-2-26 12:19
//如果不用中断,可以用下面这个方法:
//如果输入端加光耦或以按钮按下为1,这样用。如果不加光耦或以端口 ...

谢谢CEHH
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-05-02 01:28:16
已绑定手机

40

主题

371

回帖

843

积分

高级会员

积分
843
发表于 2024-3-6 09:17:35 | 显示全部楼层
单片机和PLC的边沿信号差不多,就是与上一个扫描周期作比较来判断上升沿还是下降沿
X0_P=0;
X0_F=0;
if(X0_temp!=X0)
{
   if(X0==0)//当前是低电平,说明上个扫描周期是高电平,说明这次是下降沿。
    X0_F=1;
   else
    X0_P=1;
X0_temp=X0;
}
把这个放在主函数的WHILE(1)里面就好了
纸上得到终觉浅,绝知此事要躬行。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 21:02 , Processed in 0.650506 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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