用了好几年的PLC 对于FB和FC的区别 只知道FB有背景数据块
从来没想过这意味着什么 只到有一天我把原来使用FB编写的程序 转换成了FC之后,,,痛心疾首这就来了 简直无地自容
新建1个FC块和1个FB块 两者可以说一模一样
![](/club/bbs/upload/image/20240510/6385095149147641021472198.png)
调用FB FC
![](/club/bbs/upload/image/20240510/6385095163812141451737716.png)
3. 以下三个图片分别是默认情况 Start为TRUE时 Start恢复为FALSE时
![](/club/bbs/upload/image/20240510/6385095175212419137837940.png)
![](/club/bbs/upload/image/20240510/6385095178209884932759772.png)
![](/club/bbs/upload/image/20240510/6385095181505460597427365.png)
综上 因为FB有背景数据块 所以在FB中 如果没改变OUT的值 那么FB会以上一次程序执行时OUT的值填充 但是FC没有背景数据块 所以只能使用默认值填充OUT 所以就造成了此处的区别
就是这样 简单的不能再简单的区别 我竟然一直都没意识到 印象中 以前也遇到过 所以习惯性的用FC的时候都是使用INOUT 基本不用OUT 那时候还不知道为什么 也没去思考为什么![](https://www.ad.siemens.com.cn/club/bbs/ueditor/dialogs/emotion/images/custom/m_0021.gif)