4. I/O点表与信号定义

I/O点表是虚拟联调工程的“数据字典”,它决定了PLC程序、HMI画面、机器人接口、虚拟仿真模型之间能否对得上号。点表一旦出现命名冲突、方向写反、量纲缺失或安全属性遗漏,联调阶段就会出现“信号明明接通了,设备动作却相反”“模拟量数值差10倍”“急停信号被普通逻辑覆盖”等典型故障。本节围绕数字量、模拟量、脉冲量和总线信号四类对象,说明点表应如何定义命名、方向、量纲与安全属性,并给出可直接用于联调的字段组织方式。

一、四类信号的本质差异决定字段设计

数字量(DI/DO)只有0/1两种状态,核心字段是有效电平、常开/常闭、滤波时间与安全等级。例如“急停按钮”在电气上常用常闭触点,PLC侧DI点应定义为“0=已按下,1=未按下”,若点表只写“急停输入”,联调时极易把逻辑写反。模拟量(AI/AO)是连续量,必须写清量纲、量程、工程上下限、原始码值与工程值的换算关系,例如4~20mA对应0~1000mm,PLC原始码0~27648,则工程值= (原始码/27648)×(1000-0)+0。脉冲量(PI/PO)关注频率、占空比、计数方向与每脉冲当量,例如伺服编码器A/B相脉冲,每转2500脉冲,则1个脉冲对应0.144°。总线信号(如PROFINET、EtherCAT、Modbus TCP)不是单点,而是一段过程映像或报文,必须定义站号、槽号、偏移地址、数据类型、字节序与刷新周期。

I/O点表四类信号字段定义与联调映射关系 数字量 DI / DO 命名:区域_设备_功能_类型 方向:IN / OUT 量纲:0/1(布尔) 有效电平:高有效 / 低有效 触点:常开 NO / 常闭 NC 滤波:3~20ms 安全属性:安全 / 普通 模拟量 AI / AO 命名:区域_设备_物理量_类型 方向:IN / OUT 量纲:mm / ℃ / bar / % 量程:4~20mA / 0~10V 工程上下限:0~1000 原始码:0~27648 安全属性:超限报警 / 联锁 脉冲量 PI / PO 命名:轴_编码器_相_类型 方向:A/B相 / 计数方向 量纲:脉冲数 / Hz 每转脉冲:2500 P/R 每脉冲当量:0.144° 占空比:50% 安全属性:限位 / 超速 总线信号 命名:站_槽_偏移_类型 方向:读 / 写 量纲:字节 / 字 / 双字 站号:1~125 偏移:0~255 字节序:大端 / 小端 安全属性:看门狗 / 超时 虚拟联调映射层:点表字段 → PLC变量 → 仿真模型端口 → HMI标签 命名一致 · 方向一致 · 量纲换算一致 · 安全属性优先级一致 示例:某搬运工位点表片段 DB1.DBX0.0 Station1_Clamp_Extend_DO OUT 0/1 高有效 普通 DB1.DBW2 Station1_Press_Force_AI IN 0~1000N 4~20mA 联锁 DB1.DBD4 Axis1_Encoder_PI IN 2500P/R A/B相 限位

二、命名规则:让机器和人都能读懂

推荐采用“区域_设备_功能_类型”的分段命名,例如Line1_Robot1_Grip_Close_DO。分段之间用下划线,避免空格和中文,保证在PLC、仿真软件、数据库和脚本中都能直接引用。命名中必须体现方向:输入用_DI或_AI,输出用_DO或_AO,脉冲用_PI或_PO,总线用_BUS。同一功能在不同设备上应保持后缀一致,例如所有夹爪闭合输出都叫_Grip_Close_DO,这样批量生成映射脚本时才能用正则统一处理。

对于总线信号,命名要包含站号和偏移,例如PN_St3_Slot1_IB0_RobotStatus_BUS。这样在虚拟联调时,即使PLC变量名与仿真模型端口名不同,也能通过点表中的“站号+偏移”快速定位到具体字节。命名一旦确定,应在点表、PLC符号表、HMI标签库和仿真模型端口表中同步冻结,任何一方修改都必须走变更记录。

三、方向定义:从“谁产生、谁消费”出发

方向不是看信号在电气上往哪流,而是看“谁产生、谁消费”。以PLC为参照:传感器、按钮、机器人状态反馈进入PLC,定义为IN;PLC输出到继电器、阀岛、机器人使能,定义为OUT。虚拟联调中,仿真模型替代了部分真实设备,方向仍以PLC为参照,但要在点表中增加“虚拟/实物”标记,例如Source=Sim或Source=Real。这样当仿真模型输出一个Clamp_Closed_DI时,联调人员能立刻知道这是虚拟反馈,不是真实传感器。

方向写反的典型后果是:PLC输出Conveyor_Start_DO,仿真模型却把它当成输入,导致输送带永远不动。排查时先看点表方向列,再核对PLC变量声明是%Q还是%I,最后检查仿真模型端口是input还是output,三者必须一致。

四、量纲与换算:模拟量和脉冲量的关键字段

模拟量点表必须包含:物理量名称、单位、量程、工程上下限、原始码范围、换算公式、滤波时间、报警上下限。以压力变送器为例:量程0~10bar,输出4~20mA,PLC模拟量模块原始码0~27648。则工程值计算公式为:

工程值(bar) = (原始码 / 27648) × (10 - 0) + 0
若原始码 = 13824,则工程值 = 5.0 bar
报警上限 = 8.0 bar,报警下限 = 0.5 bar

脉冲量点表要写清每转脉冲数、每脉冲当量、计数方向定义和零点偏移。例如编码器2500P/R,机械减速比1:10,则电机转10圈对应25000脉冲,对应负载轴1圈。若点表只写“编码器脉冲”,联调时无法判断位置换算是否正确。总线信号则要写清数据类型(BOOL、INT、DINT、REAL)、字节序和刷新周期,例如PROFINET IO的Input 4 Bytes,偏移0~3,大端,刷新周期4ms。

五、安全属性:点表中不可妥协的一列

安全属性用于标记该信号是否参与安全逻辑、是否必须优先处理、是否允许被普通逻辑覆盖。建议至少分为三级:安全级(急停、安全门、超程限位)、联锁级(压力超限、温度超限、伺服使能)、普通级(指示灯、普通按钮)。安全级信号在虚拟联调中必须单独映射到安全PLC或安全仿真模块,不能与普通逻辑混在一个周期任务中。点表中应增加“安全等级”“失效安全值”“响应时间”三列。例如急停信号失效安全值为0(按下即断开),响应时间≤100ms;普通指示灯失效安全值可忽略。

安全级信号在虚拟联调中必须做“断线测试”:强制仿真模型输出安全级信号为失效状态,观察PLC是否在设定响应时间内进入安全停止。若未触发,说明点表安全属性未正确映射到安全程序。

六、可直接使用的点表字段模板

下表给出四类信号共用的字段结构,实际项目中可按设备类型增减列。建议用Excel或CSV维护,联调前导出为JSON供仿真脚本读取。

字段数字量示例模拟量示例脉冲量示例总线示例
变量名Line1_Clamp_Close_DOLine1_Press_Force_AIAxis1_Encoder_PIPN_St3_IB0_RobotStatus_BUS
方向OUTININ读
数据类型BOOLINTDINTBYTE[4]
量纲/单位0/1bar脉冲—
量程/范围—0~10bar0~25000偏移0~3
有效电平/换算高有效4~20mA→0~10bar2500P/R大端
安全等级普通联锁联锁看门狗
失效安全值00bar保持超时清零
虚拟/实物SimSimRealSim

点表完成后,用一段简单脚本做一致性检查:变量名是否重复、方向是否与PLC声明一致、模拟量上下限是否覆盖报警值、安全级信号是否都有失效安全值。检查通过后再进入虚拟联调,能避免大量低级错误。点表不是一次性文档,联调过程中每次信号变更都要回写点表并记录版本,否则仿真模型与PLC程序会逐渐失配。