讨论

ABB IRB1200用SetDO改不了输出?试了好几种写法都报错

和气生财
和气生财
2026/04/11 08:46

项目里用IRB1200配个西门子1200,走Profinet通讯。现在要在程序里控制一个气缸电磁阀,用SetDO指令,但不管怎么写都报错。有人说要先定义信号,我用的GIO模块里的do1,看文档说需要配置Signal,EIO那里我也没找到对应地方。

直接写SetDO do1,1; 提示"未声明的标识符",写成SetDO \Signal:=do1,Value:=1; 也一样报错。是不是哪里没配置对?求教各位老哥具体步骤,别只说检查信号这类的,我要的是具体在哪个菜单里怎么填。

15 3

全部回复 (3)

平平淡淡才是真
平平淡淡才是真#1

这问题我上个月刚踩过坑。Profinet通讯过来的信号在EIO那边看不到的,你得在"配置"-"I/O"-"Signal"里手动新建一个DO信号,Type选Process,Device选你的Profinet从站,Map选对应的bit位,比如Byte0的bit0。Name随便起一个比如do_valve1。保存之后程序里直接用SetDO do_valve1,1; 就行了,别加反斜杠,那是函数调用语法,不能直接这么写在普通指令里。

2026/04/11 13:19
金玉满堂
金玉满堂#2

你报错"未声明的标识符"明显是信号没建对。我这边平时不用Profinet直接通讯,都是走DeviceNet,所以信号建在EIO下即可。ABB这个I/O配置逻辑是真的反人类,建个信号要点七八层菜单,命名空间还得分模块,新手没个三五天根本摸不透。

2026/04/12 01:35
zhiqiangl98
zhiqiangl98#3

等等,你是1200做主站还是从站?另外RAPID里SetDO是异步的,PLC那边扫描周期是不是有缓存?

2026/04/30 06:16