中国机器人网 App
手机扫码下载 · 或点击查看
另外顺带问一下,如果IF不能直接判断IO,那常规做法是把DI读到一个num变量里再判断?还是直接用WAIT等到信号来了再继续往下走?这俩在实际项目里哪个用得多一点。
IF里能直接判断DI的,标准写法就是IF DI_10=1 THEN,后面跟你要执行的指令就行,不用绕一圈读到num再判断,多此一举。不过注意一下DI_10这种带下划线的写法是旧版本RAPID的习惯,现在新版本比如RobotWare 6以上的,定义IO的时候系统会自动生成名字,你直接在示教器flexPendant的IO列表里看实际叫什么就行,别死记DI_10。
提醒一下你DI刷新周期的问题,IF判断IO是一次性扫描当时的瞬时状态,如果信号是那种脉冲很短的,比如PLC只给50ms的允许信号,你IF判断的时候可能刚好错过。这种情况老老实实用WAIT指令等,或者把信号做个自锁,别图省事直接IF,真到了现场调试的时候这种坑会坑死人。
我们厂里类似的小项目都是直接IF判断DI,没出过问题,简单直接。但有个前提是你的安全相关信号别走IF走WAIT,安全回路老老实实用专门的SafeMove或者硬接线急停,别图省事,安全的东西省不得。
你那个搬运案子PLC给的是常闭信号还是常开?常闭的话IF里写=0,别拿过来直接判断=1,到时候调试反了头都大。