You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raspberry Pi运行Codesys时GPIO按钮状态值反转问题求助

问题分析与解决:Raspberry Pi + CODESYS 按钮电平反转问题

问题根源

这是典型的GPIO电平逻辑反转问题:你的按钮应该采用了上拉电阻接线(默认未按下时GPIO引脚为高电平,CODESYS识别为TRUE),按下按钮后引脚被拉低(CODESYS识别为FALSE),和你需要的逻辑刚好相反。既然已排除连线问题,本质是硬件电平特性与软件期望不匹配。

在CODESYS中翻转布尔值的方法

有几种简单高效的实现方式:

  • 直接取反赋值
    在程序中对读取到的按钮变量直接取反。假设你读取的按钮变量是xButton1,可定义一个新变量xButton1_Active,赋值语句如下:

    xButton1_Active := NOT xButton1;
    

    后续逻辑中直接使用xButton1_Active代表按钮按下的状态。

  • GPIO配置界面直接反转
    打开CODESYS的Raspberry Pi GPIO配置窗口,找到对应按钮的输入引脚,勾选Invert(反转)选项,CODESYS会自动反转该引脚的读取值,无需在程序中额外处理。

  • 功能块封装复用
    如果有多个按钮需要处理,可编写一个简单的取反功能块统一处理:

    FUNCTION_BLOCK FB_InvertBool
    VAR_INPUT
        xInput : BOOL;
    END_VAR
    VAR_OUTPUT
        xOutput : BOOL;
    END_VAR
    
    xOutput := NOT xInput;
    

    调用时传入原始按钮变量,输出即为反转后的状态。

额外说明

如果想从硬件层面解决,可将按钮改为下拉电阻接线:默认未按下时引脚为低电平(FALSE),按下后接高电平(TRUE),但这需要额外电阻或配置Raspberry Pi GPIO内部下拉,软件层面反转是最快捷的方案。

内容的提问来源于stack exchange,提问作者MKlaassen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:32:41