
Epson常用输入输出指令IO 是机械手与外围设备气缸、真空、传感器、PLC、上位机打交道的入口做设备联调、信号排查必会。Function main Wait 2 If Sw(12) Off Then On 12 EndIf Fend8输出位打开之后2s之后自动灭On 8, 2Out指令同时开关8个位Out 0(关),0从0开始Out 1(开)255将8-15位打开一、先认识 Epson 的 IO 体系Epson SPEL 的 IO 分三类类型说明单位物理位 IO单个输入/输出点只有 ON/OFF 两种状态Bit位物理字节/字 IO按 8 位字节/ 16 位字分组读写Byte / Word内存 IO控制器内存里的虚拟位/字节/字常用于程序间、与 PLC 交换数据Mem系统状态电机、急停等控制器状态用只读函数查询—编号关系字 n 覆盖 16 个连续位字节 n 覆盖 8 个连续位。具体哪个位号对应哪个物理端子以控制器 IO 配置IOLabels.dat/ IO Map为准不要凭印象猜。标签Label机制在IOLabels.dat里给位/字起名字后程序里就能直接用名字比裸位号好维护得多输入位 CheckXiQi1 ← 第 1 号吸头真空检测bit 8 输入字 LeftPutSigle ← 左摆料信号word 32 输出位 takeair1 ← 第 1 号吸头吸真空电磁阀bit 8二、位输入Sw()功能返回指定的输入位状态。输入打开时返回「1」关闭时返回「0」。指令语法示例说明Sw(n)Sw(3)读输入位 n 的状态n 为可用的输入位编号Sw(标签)Sw(CheckXiQi1)用标签读等价Sw(8)条件表达式支持and/or/xor组合配合Wait可做多条件等待 判断1号吸头真空是否建立IfSw(CheckXiQi1)OnThenPrint真空 OKElsePrint真空 NG EndIfWaitSw(1)OnandSw(2)On 待机直到输入位1和2都开启WaitSw(1)OnorSw(2)On 待机直到输入位1或2开启WaitSw(1)OnxorSw(2)On 待机直到输入位1、2中恰有一个开启三、位输出On/Off置单个输出位为 ON通电/ OFF断电。这是最常用的输出指令电磁阀、指示灯都靠它。指令语法示例说明On 标签On takeair1置输出位 ON通Off 标签Off putair1置输出位 OFF断Ontakeair1 打开1号吸头吸真空Wait0.1 等真空建立Offputair1 关闭吹气四、字节与字 IOIn/Out/InW/OutW批量读写 8 位/16 位数据常用于和 PLC、上位机交换整组信号。指令语法示例说明In(n)In(0)返回端口 n 的输入状态一组 8 个输入位打包成一个 0~255 的整数可同时确认 8 个输入位的值Out(n, 值)Out(1, 255)写字节输出InW(n)InW(32)读字输入0~65535OutW(n, 值)OutW(34, 100)写字输出DecimalDigitDecimalDigit 5设置字 IO 的十进制显示位数影响 InW/OutW 的换算进制In()的典型用法是按位掩码B为二进制掩码判断某几位是否全部满足也常与Wait配合PrintIn(0) 打印输入位0~7的状态0~255WaitIn(0)and(B1111) 待机到输入位0~3全部打开WaitIn(0)255 待机到输入位0~7全部开启本项目用法IOLabels.dat输入字 32 LeftPutSigle 左摆料信号 输入字 33 RightPutSigle 右摆料信号 输入字 100 OnLine 是否在线 输出字 33 X 输出 X 坐标 输出字 34 Y 输出 Y 坐标 读左摆料信号PLC 给机械手的“开始摆料”指令IfInW(32)1ThenPrint收到左摆料信号 EndIf五、等待与同步Wait官方标准格式功能等待时间或等待输入位判断条件。格式有两种格式说明Wait 时间只指定时间待机指定时间后执行下一个命令。时间 0~2147483647最小有效位 0.01 秒Wait 输入条件[, 时间]只指定输入条件待机至条件成立同时指定输入条件与时间条件式成立或指定时间到都会执行下一个命令自带超时用Sw函数可以确认输入条件式是否成立或指定时间是否已到Wait1.5 待机1.5秒后继续WaitSw(3)On 待机直到输入位3开启无超时WaitSw(3)On,3 输入位3开启或3秒到都继续自带超时 吸料后等待真空检测到位最多等2秒超时则报警处理Ontakeair1WaitSw(CheckXiQi1)On,2IfSw(CheckXiQi1)OffThenPrint真空超时未建立 EndIf提示官方Wait支持and/or/xor组合条件见「二、Sw 函数」也支持用In()做多位掩码等待见「四、In 函数」。六、内存 IOMemSw/MemIn/MemInW内存 IO 是控制器内部变量区不占物理端子适合程序内部标志位、多任务间传数据、与 PLC 做软信号交换。指令语法示例说明MemSw(n)If MemSw(1) On读/写内存位MemIn(n)/MemOut(n, 值)MemOut(1, 255)内存字节读写MemInW(n)/MemOutW(n, 值)MemOutW(1, 100)内存字读写MemSw(1)On 置内存位1等价OnMemSw(1)IfMemSw(1)OnThenPrint标志已置位 EndIf七、系统状态读取补充IO 之外几个常用的只读状态函数函数说明Motor电机是否上电If Motor Off Then Motor On本项目启动时用Emg急停是否被按下TW串口/网络发送缓冲等待标志本项目WaitNet后判TW检查连接结果八、实战本项目怎么组织 IO1. 用标签代替位号IOLabels.dat本项目输入 18 个标签、输出 24 个标签全部起名真空检测CheckXiQi1~6、气缸到位CheckQiGangUp/Down1~6、吸真空takeair1~6、吹气putair1~6、气缸QiGang_Up/Down1~6。程序里一眼能看懂在控制什么。2. “变量 → IO”统一控制模式Main.prg 的 XQTWatchIO 后台线程主程序不直接碰 IO而是写业务变量由一个后台线程统一刷新电磁阀 后台线程根据变量刷新 IO节选 Xqt XQTWatchIO,NoEmgAbort 主程序启动后台任务FunctionXQTWatchIODoIfXQTaircylinder(1)FalseThenOnQiGang_Up1:OffQiGang_Down1 气缸缩回ElseOffQiGang_Up1:OnQiGang_Down1 气缸伸出 EndIfIfXQTtake(1)FalseThenOfftakeair1 关吸真空ElseOntakeair1 开吸真空 EndIfWait0.1LoopFend好处任何任务都能改变量输出状态不会互相打架换 IO 接线只需改一处映射。3. 真空检测做取料确认取料流程里吸真空后等待CheckXiQi到位再抬升保证真吸到料。4. 字 IO 与 PLC/上位机握手左/右摆料信号用InW(32)/InW(33)接收checkCoord前先读当前摆料坐标字放完一盘再通过通信通知上位机——IO 管硬握手TCP 管数据交换各司其职。九、实用要点能用标签就别用裸位号换线、加机构时只改IOLabels.dat程序不用动。输出尽量集中在后台线程统一刷新多个任务同时On/Off同一个输出会互相覆盖这是现场最常见的“输出乱跳”根因。字 IO 常用于 PLC 握手注意字节序、进制DecimalDigit和 0/1 定义要和 PLC 侧对齐。Wait自带超时参数Wait 输入条件, 时间在“条件成立或时间到”时都会继续是防死等的最简写法只有不写时间参数时才会一直等到条件成立。超时后记得用Sw()复核条件区分“成功”和“超时”。写输出前确认权限RC 的 IOMonitor 里bAllowChangeOutputs关闭时程序写输出会受限联调时先检查。IO 位号≠物理端子号位 8 不代表 PLC 卡第 8 脚一切以控制器 IO Map 为准。