| @@ -1,657 +0,0 @@ | |||
| # PLSR Modbus通信协议 | |||
| > 协议版本:V1.0 | |||
| > 地址表修订:R5 | |||
| > 目标平台:XDM-60T4-E | |||
| > 对标依据:[信捷XD/XL系列PLC定位控制手册](./信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf) | |||
| > 对应需求:[PLSR需求规格统计.md](./PLSR需求规格统计.md) | |||
| > | |||
| > R5变更:取消Modbus通信历史区;S0、S1改为在1000~9199数据池中运行时指定首地址 | |||
| > 的动态数据块;其余PLSR参数和状态固定映射到Modbus保持寄存器。取消固定S0槽和 | |||
| > 每轴内嵌S1数据。 | |||
| > R4变更:已定义固定字段的PLSR地址标记为已占用;仅未定义字段的扩展区保持保留。 | |||
| > R3变更:区分工程已占用地址和PLSR推荐预留地址。 | |||
| > R2变更:区分可选操作数、固定相对布局和信捷固定软元件地址;增加Y0~Y3公共参数、 | |||
| > K0~K4参数组及运行状态地址与本项目Modbus字段的逐项对应表。 | |||
| ## 1. 地址和数据约定 | |||
| ### 1.1 地址表示 | |||
| 本文所有地址均为Modbus PDU中的**零基地址**。例如: | |||
| | 本文地址 | 传统4xxxx写法 | | |||
| |---:|---:| | |||
| | 200 | 40201 | | |||
| | 5160 | 45161 | | |||
| 上位机如果使用“地址从1开始”显示,应在本文地址基础上加1。代码、报文和测试用例 | |||
| 统一使用本文零基地址,禁止直接把`40201`作为PDU地址发送。 | |||
| ### 1.2 字节序和字序 | |||
| - 单个16位寄存器使用Modbus大端字节序。 | |||
| - 32位数据占两个寄存器,高16位在前、低16位在后。 | |||
| - 64位数据占四个寄存器,从最高16位到最低16位依次排列。 | |||
| - 有符号数采用二进制补码。 | |||
| - 写入32位或64位命令参数时必须使用功能码`0x10`一次写完,禁止拆成多个`0x06`后立即触发。 | |||
| 示例:32位数`0x12345678`从地址A开始保存为: | |||
| ```text | |||
| A+0 = 0x1234 | |||
| A+1 = 0x5678 | |||
| ``` | |||
| ### 1.3 访问权限 | |||
| | 标记 | 含义 | | |||
| |---|---| | |||
| | RO | 只读,主站写入应返回非法数据地址或非法数据值 | | |||
| | RW-S | 影子参数可读写,COMMIT成功后才进入运行配置 | | |||
| | RW-L | 运行时可读写,按字段定义立即或在控制周期内生效 | | |||
| | WO-T | 只写触发字段;写入后产生一次命令处理 | | |||
| | RES | 保留,读回0,写入拒绝 | | |||
| 当前工程的通用Modbus数组尚未实施字段级读写权限。接入PLSR时必须增加地址权限校验, | |||
| 不能仅依赖文档约束上位机。 | |||
| ### 1.4 原子提交规则 | |||
| 1. 每轴保存S0、S1动态数据块首地址;S2、D和公共参数使用固定地址影子区。 | |||
| 2. 主站写完某轴配置后,发送`COMMIT_AXIS`命令。 | |||
| 3. 从站完整检查段数、输出冲突、频率、跳转、限位和参数范围。 | |||
| 4. 校验成功后原子复制到该轴运行配置,并更新`ACTIVE_GENERATION`。 | |||
| 5. 校验失败时运行配置保持不变,返回错误码和错误数据块号。 | |||
| 6. 已启动任务不受后续影子参数写入影响;运行中调频使用`SET_TARGET_FREQUENCY`命令。 | |||
| 7. COMMIT成功后轴使用S0、S1、S2和D的私有不可变运行快照;修改原动态数据块不得 | |||
| 影响已经提交或已经启动的任务。 | |||
| ### 1.5 信捷地址与本项目地址的关系 | |||
| 本协议区分三类地址,不得混为一谈: | |||
| 1. **可选操作数地址**:信捷PLSR的S0、S1由用户在指令中指定。本项目用每轴固定的 | |||
| `S0_BASE_ADDRESS`和`S1_BASE_ADDRESS`保存其运行时首地址;S0、S1数据本身不固定。 | |||
| D在本项目中选择Q输出点,S2通过`SELECTED_S2`选择K0~K4。 | |||
| 2. **固定相对偏移**:S0头部、每段10字、S1两个双字以及S2套组内部字段的相对 | |||
| 布局固定。本项目保持这些功能布局。 | |||
| 3. **固定绝对软元件地址**:信捷为Y0~Y3固定分配SFD、HSD、SD和SM地址。本项目不把 | |||
| 这些编号直接作为Modbus PDU地址,而是在第4章提供确定的一一对应关系。 | |||
| 因此,“对标信捷固定地址”表示每个信捷字段都能唯一映射到本项目字段并保持等效语义, | |||
| 不表示主站可以把`SFD900`直接当作Modbus地址900访问。若后续需要兼容信捷软元件编号, | |||
| 应增加独立的地址转换层;已经实施并冻结的Modbus PDU地址不得直接改义。 | |||
| ## 2. 现有占用和推荐预留方案 | |||
| 工程标准Modbus保持寄存器范围为0~9999。下表中的数值全部是**本项目Modbus PDU | |||
| 零基地址**,不是信捷SFD、HSD或SD软元件编号。信捷不同类型的软元件拥有彼此独立的 | |||
| 编号空间,例如SFD和SD可以出现相同编号,不能直接合并到一个Modbus保持寄存器空间。 | |||
| 当前占用情况及推荐预留方案如下: | |||
| | Modbus保持寄存器范围 | 数量 | 当前状态 | 推荐用途 | 信捷PLSR对应关系 | 所有者/建议使用者 | | |||
| |---:|---:|---|---|---|---| | |||
| | 0~199 | 79 | 保留 | 无 | 无 | 待定 | | |||
| | 200~255 | 56 | 保留 | PLSR全局信息、命令和应答 | 指令调用与诊断增强;信捷无同地址区 | PLSR | | |||
| | 256~895 | 640 | 已占用 | 四轴S0/S1基址、D、S2和实时状态 | S0/S1为动态操作数;其余对应Y0~Y3固定参数和状态,详见4.1~4.4 | PLSR | | |||
| | 896~999 | 104 | 保留 | 推荐作为PLSR动态数据块描述符或近期扩展区 | 无固定信捷地址 | 待定 | | |||
| | 1000~9199 | 8200 | 已占用 | S0/S1动态数据池,运行时指定各数据块首地址 | 对应信捷可动态指定首地址的S0和S1数据块 | PLSR | | |||
| | 9200~9999 | 800 | 保留 | 推荐用于PLSR后续扩展或事件历史,也可在地址冻结前另行分配 | 无 | 待定 | | |||
| 标为“已占用”的范围已经确定具体字段或数据结构,其他模块不得覆盖,即使对应代码尚未 | |||
| 全部实现,也应视为地址协议已经占位。标为“保留”的范围没有确定字段,推荐用途不构成 | |||
| 占用;正式分配前仍可调整,但必须更新本地址表修订号并完成全工程冲突检查。 | |||
| 本表规定“已确定的数据放在本项目哪个Modbus地址”;第4章解决“该字段对应信捷哪个固定 | |||
| 软元件地址”。两张表必须结合使用。V1.0不提供把`SFD900`直接解释为PDU地址900的 | |||
| 物理地址兼容模式。 | |||
| ## 3. 全局信息、命令和应答:200~255 | |||
| | 地址 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | 200 | PROTOCOL_MAGIC_0 | U16 | RO | 固定`0x504C`,ASCII `PL` | | |||
| | 201 | PROTOCOL_MAGIC_1 | U16 | RO | 固定`0x5352`,ASCII `SR` | | |||
| | 202 | PROTOCOL_VERSION_MAJOR | U16 | RO | 主版本,V1为1 | | |||
| | 203 | PROTOCOL_VERSION_MINOR | U16 | RO | 次版本 | | |||
| | 204 | ADDRESS_MAP_REVISION | U16 | RO | 地址表修订R5为5 | | |||
| | 205 | AXIS_COUNT | U16 | RO | 固定4 | | |||
| | 206 | MAX_SEGMENTS | U16 | RO | 固定100 | | |||
| | 207 | CAPABILITY_FLAGS | U16 | RO | 能力标志,见3.1 | | |||
| | 208~209 | GUARANTEED_MAX_HZ | U32 | RO | 100000 | | |||
| | 210~211 | EXTENDED_MAX_HZ | U32 | RO | 200000,非保证扩展区 | | |||
| | 212 | REFRESH_CAPABILITIES | U16 | RO | bit0=1 ms,bit1=0.1 ms | | |||
| | 213 | GLOBAL_STATUS | U16 | RO | 全局状态标志 | | |||
| | 214~215 | RESERVED | - | RES | 保留 | | |||
| | 216 | CMD_CODE | U16 | RW-L | 命令码,见3.2 | | |||
| | 217 | CMD_AXIS | U16 | RW-L | 0~3;`0xFFFF`表示允许的全轴命令 | | |||
| | 218 | CMD_FLAGS | U16 | RW-L | 命令选项 | | |||
| | 219 | CMD_RESERVED | - | RES | 保留 | | |||
| | 220~223 | CMD_ARG0 | U64/I64 | RW-L | 命令参数0 | | |||
| | 224~227 | CMD_ARG1 | U64/I64 | RW-L | 命令参数1 | | |||
| | 228~229 | CMD_ARG2 | U32/I32 | RW-L | 命令参数2 | | |||
| | 230 | CMD_PAYLOAD_GENERATION | U16 | RW-L | 期望使用的影子参数代号 | | |||
| | 231 | CMD_SEQUENCE | U16 | WO-T | **最后写入**;新序号触发一次命令 | | |||
| | 232 | ACK_SEQUENCE | U16 | RO | 最近处理完成的命令序号 | | |||
| | 233 | CMD_RESULT | U16 | RO | 处理结果,见3.3 | | |||
| | 234 | CMD_ERROR_CODE | U16 | RO | 错误码 | | |||
| | 235 | CMD_ERROR_DETAIL | U16 | RO | 错误字段或数据块号 | | |||
| | 236~239 | ACK_DATA | U64 | RO | 命令返回数据 | | |||
| | 240 | GLOBAL_SHADOW_GENERATION | U16 | RO | 最近收到的全局影子代号 | | |||
| | 241 | GLOBAL_ACTIVE_GENERATION | U16 | RO | 已生效的全局配置代号 | | |||
| | 242 | LAST_EVENT_SEQUENCE | U16 | RO | 全局最近事件序号 | | |||
| | 243 | LAST_EVENT_AXIS | U16 | RO | 最近事件轴号 | | |||
| | 244 | LAST_EVENT_SEGMENT | U16 | RO | 最近事件段号,1~100 | | |||
| | 245 | LAST_EVENT_REASON | U16 | RO | 最近事件原因 | | |||
| | 246 | SELF_TEST_STATUS | U16 | RO | 自测状态 | | |||
| | 247 | SELF_TEST_ERROR | U16 | RO | 自测错误 | | |||
| | 248~255 | RESERVED | - | RES | 保留 | | |||
| ### 3.1 CAPABILITY_FLAGS | |||
| | 位 | 含义 | | |||
| |---:|---| | |||
| | 0 | PULSE/DIR | | |||
| | 1 | AB相x4计数 | | |||
| | 2 | 四轴独立运行 | | |||
| | 3 | 100段路径 | | |||
| | 4 | 相对定位 | | |||
| | 5 | 绝对定位 | | |||
| | 6 | 软限位 | | |||
| | 7 | 齿隙补偿 | | |||
| | 8 | FOLLOW参数 | | |||
| | 9 | 工程单位换算 | | |||
| | 10 | 0.1 ms刷新 | | |||
| | 11 | Backup SRAM检查点 | | |||
| | 12 | 命令序号防重 | | |||
| | 13~15 | 保留 | | |||
| ### 3.2 CMD_CODE | |||
| | 值 | 命令 | CMD_ARG0 | 说明 | | |||
| |---:|---|---|---| | |||
| | 0 | NOP | - | 不执行 | | |||
| | 1 | COMMIT_AXIS | - | 校验指定轴的S0/S1动态块及S2/D固定参数,并创建运行快照 | | |||
| | 2 | START | - | 异步启动指定轴 | | |||
| | 3 | STOP_DECEL | - | 指定轴减速停止;轴`0xFFFF`表示全部轴 | | |||
| | 4 | STOP_IMMEDIATE | - | 指定轴立即停止;轴`0xFFFF`表示全部轴 | | |||
| | 5 | PAUSE | - | 减速暂停 | | |||
| | 6 | RESUME | - | 继续暂停任务 | | |||
| | 7 | SET_POSITION | I64位置 | 设置逻辑当前位置并置`position_valid` | | |||
| | 8 | CLEAR_POSITION | - | 当前位置清零并置有效 | | |||
| | 9 | CLEAR_TOTAL | - | 清零累计输出脉冲 | | |||
| | 10 | SAVE_CONFIG | - | 固定配置保存到Flash | | |||
| | 11 | LOAD_CONFIG | - | 加载已保存固定配置,不自动启动 | | |||
| | 12 | RESET_ERROR | - | 清除可恢复错误 | | |||
| | 13 | SELF_TEST | 测试掩码 | 执行内部自测 | | |||
| | 14 | SET_TARGET_FREQUENCY | U32频率 | 运行中调频,在S2刷新周期内开始生效 | | |||
| | 15 | CLEAR_EVENT | - | 确认并清除最近事件锁存 | | |||
| ### 3.3 CMD_RESULT | |||
| | 值 | 名称 | 含义 | | |||
| |---:|---|---| | |||
| | 0 | IDLE | 尚未处理命令 | | |||
| | 1 | ACCEPTED | 已接受,异步执行中 | | |||
| | 2 | SUCCESS | 执行成功 | | |||
| | 3 | REJECTED | 命令被拒绝,查看错误码 | | |||
| | 4 | DUPLICATE | 相同序号,未重复执行并返回上次结果 | | |||
| `CMD_SEQUENCE`为16位循环序号。主站发送新命令时递增,通信重试必须保持原序号。 | |||
| 从站缓存最近序号及完整结果;相同序号不得再次产生运动。 | |||
| ## 4. 每轴固定块:256~895 | |||
| 每轴占160个保持寄存器: | |||
| ```text | |||
| AXIS_BASE(axis) = 256 + axis × 160,axis取0~3 | |||
| ``` | |||
| | 轴 | AXIS_BASE | 范围 | | |||
| |---:|---:|---:| | |||
| | 0 | 256 | 256~415 | | |||
| | 1 | 416 | 416~575 | | |||
| | 2 | 576 | 576~735 | | |||
| | 3 | 736 | 736~895 | | |||
| ### 4.1 信捷固定地址逐轴对应 | |||
| 下表给出信捷Y0~Y3固定软元件区与本项目轴块的唯一对应关系。信捷使用Y点名称, | |||
| 本项目板级输出使用Q点名称;表中的Y0~Y3表示信捷对标轴序号,不等于本项目Q点编码。 | |||
| | 本项目轴 | 信捷脉冲轴D | 本项目轴块 | 信捷公共参数 | 信捷K0动态参数 | 信捷K1 | 信捷K2 | 信捷K3 | 信捷K4 | | |||
| |---:|---|---:|---|---|---|---|---|---| | |||
| | 0 | Y0 | 256~415 | SFD900~943 | HSD460~479 | SFD950~969 | SFD970~989 | SFD990~1009 | SFD1010~1029 | | |||
| | 1 | Y1 | 416~575 | SFD1030~1073 | HSD480~499 | SFD1080~1099 | SFD1100~1119 | SFD1120~1139 | SFD1140~1159 | | |||
| | 2 | Y2 | 576~735 | SFD1160~1203 | HSD500~519 | SFD1210~1229 | SFD1230~1249 | SFD1250~1269 | SFD1270~1289 | | |||
| | 3 | Y3 | 736~895 | SFD1290~1333 | HSD520~539 | SFD1340~1359 | SFD1360~1379 | SFD1380~1399 | SFD1400~1419 | | |||
| 信捷固定运行状态地址与本项目实时状态区对应如下: | |||
| | 本项目轴 | 信捷运行标志 | 信捷方向标志 | 信捷实时SD区 | 信捷累计脉冲 | 本项目实时状态区 | | |||
| |---:|---|---|---|---|---:| | |||
| | 0 | SM1000 | SM1001 | SD1000~1011 | HSD0~1 | 384~415 | | |||
| | 1 | SM1020 | SM1021 | SD1020~1031 | HSD4~5 | 544~575 | | |||
| | 2 | SM1040 | SM1041 | SD1040~1051 | HSD8~9 | 704~735 | | |||
| | 3 | SM1060 | SM1061 | SD1060~1071 | HSD12~13 | 864~895 | | |||
| 信捷段事件中断号固定为Y0对应`I6000~I6099`、Y1对应`I6100~I6199`、Y2对应 | |||
| `I6200~I6299`、Y3对应`I6300~I6399`。本项目不复用PLC中断号,而通过 | |||
| `SEGMENT_EVENT_SEQUENCE`、`SEGMENT_EVENT_NUMBER`和`SEGMENT_EVENT_REASON`发布等效事件。 | |||
| 常用起始地址速查: | |||
| | 轴 | S0/S1动态基址配置 | D/公共参数 | S2-K0 | 实时状态 | | |||
| |---:|---:|---:|---:|---:| | |||
| | 0 | 256 | 272 | 304 | 384 | | |||
| | 1 | 416 | 432 | 464 | 544 | | |||
| | 2 | 576 | 592 | 624 | 704 | | |||
| | 3 | 736 | 752 | 784 | 864 | | |||
| ### 4.2 S0/S1动态基址和选择信息:AXIS_BASE+0~15 | |||
| | 偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +0 | S0_BASE_ADDRESS | U16 | RW-S | S0数据块在1000~9199动态池中的零基首地址 | | |||
| | +1 | S0_WORD_COUNT | U16 | RW-S | S0实际占用字数,必须等于`10+段数×10` | | |||
| | +2 | S1_BASE_ADDRESS | U16 | RW-S | S1数据块在1000~9199动态池中的零基首地址 | | |||
| | +3 | SELECTED_S2 | U16 | RW-S | 选择固定参数套组K0~K4,取值0~4 | | |||
| | +4 | AXIS_SHADOW_GENERATION | U16 | RW-S | 主站写完S0、S1和轴参数后最后递增 | | |||
| | +5 | AXIS_ACTIVE_GENERATION | U16 | RO | 最近成功COMMIT的代号 | | |||
| | +6 | AXIS_CONFIG_STATUS | U16 | RO | bit0影子完整,bit1活动配置有效,bit2影子已修改 | | |||
| | +7 | EXPECTED_S0_CRC16 | U16 | RW-S | COMMIT时核对S0数据块CRC16,防止写入中途启动 | | |||
| | +8 | EXPECTED_S1_CRC16 | U16 | RW-S | COMMIT时核对S1的4个字 | | |||
| | +9 | OPERAND_FLAGS | U16 | RW-S | 当前必须为0,保留动态数据块属性扩展 | | |||
| | +10 | ACTIVE_S0_BASE_ADDRESS | U16 | RO | 最近成功COMMIT快照的S0来源首地址 | | |||
| | +11 | ACTIVE_S1_BASE_ADDRESS | U16 | RO | 最近成功COMMIT快照的S1来源首地址 | | |||
| | +12~+15 | RESERVED | - | RES | 保留 | | |||
| `AXIS_BASE+0~15`只保存操作数地址、固定参数组选择和原子提交信息,不保存S0、S1 | |||
| 数据本体。S0和S1可以被不同轴共享;COMMIT后各轴使用私有快照,后续改写动态数据池 | |||
| 不会改变已提交任务。S0和S1数据块不得重叠,活动写入也不得破坏其他轴正在提交的数据。 | |||
| ### 4.3 D及脉冲公共参数:AXIS_BASE+16~47 | |||
| | 偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +16 | D_PULSE_A_POINT | U16 | RW-S | PULSE点或AB的A点,点编码见4.6 | | |||
| | +17 | D_DIR_B_POINT | U16 | RW-S | DIR点或AB的B点 | | |||
| | +18 | D_OUTPUT_MODE | U16 | RW-S | 0=PULSE/DIR,1=AB相 | | |||
| | +19 | PULSE_OUTPUT_POLARITY | U16 | RW-S | 0正常,1反相 | | |||
| | +20 | DIRECTION_POLARITY | U16 | RW-S | 0正逻辑,1负逻辑 | | |||
| | +21 | COUNT_EDGE | U16 | RO | PULSE/DIR固定0=物理上升沿;AB固定4=x4 | | |||
| | +22 | DIRECTION_DELAY_MS | U16 | RW-S | 默认10 ms | | |||
| | +23 | PULSE_UNIT | U16 | RW-S | 单位编码见4.5 | | |||
| | +24~+25 | PULSES_PER_REV | U32 | RW-S | 每转指令脉冲数,必须非0 | | |||
| | +26~+27 | MOVE_UNITS_PER_REV | U32 | RW-S | 每转移动量,单位为所选工程单位,必须非0 | | |||
| | +28 | SEGMENT_SEND_MODE | U16 | RW-S | 0完成方式,1后续方式 | | |||
| | +29 | SOFT_LIMIT_ENABLE | U16 | RW-S | 0关闭,1启用 | | |||
| | +30 | POS_LIMIT_INPUT | U16 | RW-S | 正限位输入点编码,`0xFFFF`无输入 | | |||
| | +31 | NEG_LIMIT_INPUT | U16 | RW-S | 负限位输入点编码,`0xFFFF`无输入 | | |||
| | +32 | LIMIT_INPUT_POLARITY | U16 | RW-S | bit0正限位、bit1负限位;0常开,1常闭 | | |||
| | +33 | COMMON_FLAGS | U16 | RW-S | 保留扩展标志,当前必须写0 | | |||
| | +34~+35 | SOFT_POSITIVE_LIMIT | I32 | RW-S | 正软限位逻辑坐标 | | |||
| | +36~+37 | SOFT_NEGATIVE_LIMIT | I32 | RW-S | 负软限位逻辑坐标 | | |||
| | +38~+39 | BACKLASH_POSITIVE | U32 | RW-S | 正向齿隙补偿量 | | |||
| | +40~+41 | BACKLASH_NEGATIVE | U32 | RW-S | 反向齿隙补偿量 | | |||
| | +42~+43 | ELECTRICAL_ORIGIN | I32 | RW-S | 电气原点位置 | | |||
| | +44 | AB_COUNT_MODE | U16 | RO | 固定4,表示x4边沿计数 | | |||
| | +45 | OUTPUT_RESOURCE_FLAGS | U16 | RO | 输出能力和占用状态 | | |||
| | +46~+47 | RESERVED | - | RES | 保留 | | |||
| 信捷公共参数地址设为`B`:Y0/Y1/Y2/Y3的`B`分别为SFD900/SFD1030/SFD1160/SFD1290。 | |||
| 本项目公共字段按下表与信捷固定地址对应;无直接对应项属于本项目增强字段。 | |||
| | 本项目偏移 | 本项目字段 | 信捷固定地址/字段 | | |||
| |---:|---|---| | |||
| | +16 | D_PULSE_A_POINT | PLSR的D操作数(Y0~Y3),不是SFD参数 | | |||
| | +17 | D_DIR_B_POINT | B+6,脉冲方向端子 | | |||
| | +18 | D_OUTPUT_MODE | B+0中的脉冲输出类型/AB相配置 | | |||
| | +19 | PULSE_OUTPUT_POLARITY | B+0中的脉冲输出逻辑 | | |||
| | +20 | DIRECTION_POLARITY | B+0中的方向逻辑 | | |||
| | +21、+44 | COUNT_EDGE、AB_COUNT_MODE | 本项目固定语义,信捷无独立参数地址 | | |||
| | +22 | DIRECTION_DELAY_MS | B+7 | | |||
| | +23 | PULSE_UNIT | B+0中的脉冲单位字段 | | |||
| | +24~+25 | PULSES_PER_REV | B+2~B+3 | | |||
| | +26~+27 | MOVE_UNITS_PER_REV | B+4~B+5 | | |||
| | +28 | SEGMENT_SEND_MODE | B+1 | | |||
| | +29 | SOFT_LIMIT_ENABLE | B+0中的软限位使能位 | | |||
| | +30~+31 | POS/NEG_LIMIT_INPUT | B+15的高、低字节 | | |||
| | +32 | LIMIT_INPUT_POLARITY | B+12中的限位端子极性位 | | |||
| | +34~+35 | SOFT_POSITIVE_LIMIT | B+20~B+21 | | |||
| | +36~+37 | SOFT_NEGATIVE_LIMIT | B+22~B+23 | | |||
| | +38~+39 | BACKLASH_POSITIVE | B+8 | | |||
| | +40~+41 | BACKLASH_NEGATIVE | B+9 | | |||
| | +42~+43 | ELECTRICAL_ORIGIN | B+10~B+11 | | |||
| | +45 | OUTPUT_RESOURCE_FLAGS | 本项目资源冲突检查增强字段 | | |||
| ### 4.4 S2参数套组:AXIS_BASE+48~127 | |||
| 每轴有5套S2,每套16个寄存器: | |||
| ```text | |||
| S2_BASE(axis, set) = AXIS_BASE(axis) + 48 + set × 16 | |||
| set取0~4 | |||
| ``` | |||
| | 相对S2偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +0~+1 | DEFAULT_FREQUENCY_HZ | U32 | RW-S | 段频率为0时使用,同时定义加减速斜率基准 | | |||
| | +2 | ACCEL_TIME_MS | U16 | RW-S | 默认速度对应的加速时间,0表示无加速 | | |||
| | +3 | DECEL_TIME_MS | U16 | RW-S | 默认速度对应的减速时间,0表示无减速 | | |||
| | +4 | BACKLASH_TIME_MS | U16 | RW-S | 齿隙补偿加减速时间 | | |||
| | +5 | CURVE_MODE | U16 | RW-S | 0直线,1=S形,2=正弦,3保留 | | |||
| | +6~+7 | MAX_FREQUENCY_HZ | U32 | RW-S | 最高速度限制 | | |||
| | +8~+9 | START_FREQUENCY_HZ | U32 | RW-S | 任务起始速度 | | |||
| | +10~+11 | END_FREQUENCY_HZ | U32 | RW-S | 任务终止速度 | | |||
| | +12 | FOLLOW_PERFORMANCE | U16 | RW-S | 1~100 | | |||
| | +13 | FOLLOW_FEEDFORWARD | U16 | RW-S | 0~100% | | |||
| | +14 | REFRESH_PERIOD | U16 | RW-S | 0=1 ms,1=0.1 ms | | |||
| | +15 | RESERVED | - | RES | 保留 | | |||
| S2第0套保存在Backup SRAM动态区,第1~4套属于固定配置并由`SAVE_CONFIG`保存到Flash。 | |||
| 信捷每套S2参数也采用20个软元件的固定步长,其中PLSR字段使用`P+0~P+14`, | |||
| `P+15`保留,`P+16~P+19`为ZRN参数。本项目只映射PLSR所需的前16个寄存器: | |||
| | 本项目S2偏移 | 信捷参数组偏移 | 含义 | | |||
| |---:|---:|---| | |||
| | +0~+1 | P+0~P+1 | 默认速度/频率 | | |||
| | +2 | P+2 | 加速时间 | | |||
| | +3 | P+3 | 减速时间 | | |||
| | +4 | P+4 | 补间/补偿加减速时间 | | |||
| | +5 | P+5 | 脉冲加减速模式 | | |||
| | +6~+7 | P+6~P+7 | 最高速度 | | |||
| | +8~+9 | P+8~P+9 | 起始速度 | | |||
| | +10~+11 | P+10~P+11 | 终止速度 | | |||
| | +12 | P+12 | FOLLOW性能参数 | | |||
| | +13 | P+13 | FOLLOW前馈补偿参数 | | |||
| | +14 | P+14 | 脉冲频率刷新时间 | | |||
| | +15 | P+15 | 保留 | | |||
| ### 4.5 PULSE_UNIT编码 | |||
| 编码与信捷配置语义对应: | |||
| | 值 | 单位 | | |||
| |---:|---| | |||
| | 0 | 脉冲个数/Hz | | |||
| | 1 | 1 μm | | |||
| | 3 | 0.01 mm | | |||
| | 5 | 0.1 mm | | |||
| | 7 | 1 mm | | |||
| ### 4.6 Q点和I点编码 | |||
| PLC点名采用八进制风格编号,寄存器中使用连续逻辑ID,避免把Q10误解成十进制第10点: | |||
| | ID | 输出点 | MCU | ID | 输出点 | MCU | | |||
| |---:|---|---|---:|---|---| | |||
| | 0 | Q0 | PF6 | 9 | Q11 | PG6 | | |||
| | 1 | Q1 | PF8 | 10 | Q12 | PH9 | | |||
| | 2 | Q2 | PF7 | 11 | Q13 | PH8 | | |||
| | 3 | Q3 | PF9 | 12 | Q14 | PH7 | | |||
| | 4 | Q4 | PI8 | 13 | Q15 | PH6 | | |||
| | 5 | Q5 | PE6 | 14 | Q16 | PF11 | | |||
| | 6 | Q6 | PE5 | 15 | Q17 | PB0 | | |||
| | 7 | Q7 | PE4 | 16 | Q20 | PH5 | | |||
| | 8 | Q10 | PG7 | 65535 | 无输出点 | - | | |||
| 输入点采用相同连续ID规则:I0~I7对应0~7,I10~I17对应8~15,I20对应16, | |||
| `0xFFFF`表示无输入点。具体MCU引脚由板型适配表定义。 | |||
| ### 4.7 实时状态:AXIS_BASE+128~159 | |||
| 状态读取应采用快照:从站更新所有多字字段后最后递增`SNAPSHOT_SEQUENCE`;主站读取前后 | |||
| 两次序号一致时,才能认为本次状态一致。 | |||
| | 偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +128 | AXIS_STATE | U16 | RO | 状态枚举见4.8 | | |||
| | +129 | AXIS_STATUS_FLAGS | U16 | RO | 方向、输出和限位等标志 | | |||
| | +130 | ERROR_CODE | U16 | RO | 当前锁存错误 | | |||
| | +131 | ERROR_DATA_BLOCK | U16 | RO | 出错字段或段号 | | |||
| | +132 | CURRENT_SEGMENT | U16 | RO | 当前段号1~100,空闲为0 | | |||
| | +133 | TOTAL_SEGMENTS | U16 | RO | 当前任务总段数 | | |||
| | +134 | ACTIVE_S2 | U16 | RO | 当前S2套组0~4 | | |||
| | +135 | LAST_STOP_REASON | U16 | RO | 完成、STOP、限位、急停或错误 | | |||
| | +136~+137 | CURRENT_FREQUENCY_HZ | U32 | RO | 当前实际指令频率 | | |||
| | +138~+139 | TARGET_FREQUENCY_HZ | U32 | RO | 当前目标频率 | | |||
| | +140~+141 | SEGMENT_EMITTED | U32 | RO | 本段已发指令脉冲/AB计数边沿 | | |||
| | +142~+143 | SEGMENT_REMAINING | U32 | RO | 本段剩余数量 | | |||
| | +144~+147 | LOGICAL_POSITION | I64 | RO | 当前逻辑位置 | | |||
| | +148~+151 | TOTAL_PULSE_COUNT | U64 | RO | 总累计输出量 | | |||
| | +152~+155 | TASK_EMITTED | U64 | RO | 本次任务累计输出量 | | |||
| | +156 | SEGMENT_EVENT_SEQUENCE | U16 | RO | 每次段事件递增 | | |||
| | +157 | SEGMENT_EVENT_NUMBER | U16 | RO | 最近事件段号 | | |||
| | +158 | SEGMENT_EVENT_REASON | U16 | RO | 完成、ACT、EXT、STOP等 | | |||
| | +159 | SNAPSHOT_SEQUENCE | U16 | RO | 状态快照序号,最后更新 | | |||
| ### 4.8 AXIS_STATE | |||
| | 值 | 状态 | | |||
| |---:|---| | |||
| | 0 | UNINITIALIZED | | |||
| | 1 | IDLE | | |||
| | 2 | ACCEL | | |||
| | 3 | RUN | | |||
| | 4 | DECEL | | |||
| | 5 | WAIT | | |||
| | 6 | PAUSED | | |||
| | 7 | COMPLETED | | |||
| | 8 | STOPPED | | |||
| | 9 | ERROR | | |||
| ### 4.9 AXIS_STATUS_FLAGS | |||
| | 位 | 含义 | | |||
| |---:|---| | |||
| | 0 | 指令活动,包括运动、等待和暂停 | | |||
| | 1 | 物理脉冲正在输出 | | |||
| | 2 | 正方向 | | |||
| | 3 | AB模式 | | |||
| | 4 | 位置有效 | | |||
| | 5 | 正硬限位有效 | | |||
| | 6 | 负硬限位有效 | | |||
| | 7 | 正软限位到达 | | |||
| | 8 | 负软限位到达 | | |||
| | 9 | 急停锁存 | | |||
| | 10 | 影子配置已修改但未提交 | | |||
| | 11 | 活动配置有效 | | |||
| | 12~15 | 保留 | | |||
| ### 4.10 段事件和停止原因 | |||
| | 值 | 原因 | | |||
| |---:|---| | |||
| | 0 | NONE | | |||
| | 1 | PULSE_COMPLETE | | |||
| | 2 | WAIT_TIME_COMPLETE | | |||
| | 3 | WAIT_SIGNAL_ACTIVE | | |||
| | 4 | ACT_TIME | | |||
| | 5 | EXT_SIGNAL | | |||
| | 6 | EXT_OR_COMPLETE_BY_EXT | | |||
| | 7 | EXT_OR_COMPLETE_BY_PULSE | | |||
| | 8 | STOP_DECEL | | |||
| | 9 | STOP_IMMEDIATE | | |||
| | 10 | POS_LIMIT | | |||
| | 11 | NEG_LIMIT | | |||
| | 12 | EMERGENCY_STOP | | |||
| | 13 | ERROR | | |||
| | 14 | NORMAL_TASK_COMPLETE | | |||
| ## 5. S0/S1动态数据池:1000~9199 | |||
| S0和S1不设置固定数据块地址。主站在1000~9199范围内自行选择不重叠的连续区域, | |||
| 写入数据后,把首地址分别写入目标轴的`S0_BASE_ADDRESS`和`S1_BASE_ADDRESS`。 | |||
| 动态数据池共8200个保持寄存器,可容纳至少4个满100段的S0数据块、4个S1数据块, | |||
| 并保留余量。数据池地址已经由PLSR占用,其他模块不得用于通信历史或其他功能。 | |||
| 分配必须满足: | |||
| 1. S0首地址和S1首地址均位于1000~9199。 | |||
| 2. S1固定占4个寄存器;S0占用`10+段数×10`个寄存器,范围不得越过9199。 | |||
| 3. 任意两个同时存在的数据块不得重叠;允许多个轴只读共享同一个完整数据块。 | |||
| 4. 主站写完数据后计算CRC16,再写入轴基址、字数和期望CRC,最后递增 | |||
| `AXIS_SHADOW_GENERATION`并发送`COMMIT_AXIS`。 | |||
| 5. COMMIT重新检查范围、长度、CRC和字段内容,成功后复制私有快照;CRC不一致时拒绝 | |||
| 启动并返回“动态数据块正在变化”。 | |||
| ### 5.1 S1数据块 | |||
| S1首地址记为`S1_BASE`,由`S1_BASE_ADDRESS`指定: | |||
| | S1偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +0~+1 | S1_POSITION_MODE | U32 | RW | 0相对,1绝对 | | |||
| | +2~+3 | S1_START_SEGMENT | U32 | RW | 0或1从第1段开始,2~100从指定段开始 | | |||
| S1只包含上述两个双字字段。异步调用、命令序号、轴选择、S2选择以及S0/S1基址均不属于S1。 | |||
| ### 5.2 S0头部 | |||
| | S0偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +0~+1 | SEGMENT_COUNT | U32 | RW-S | 1~100 | | |||
| | +2~+9 | RESERVED | - | RES | 对标信捷保留8个寄存器 | | |||
| ### 5.3 每段10寄存器布局 | |||
| 段号`N`取1~100: | |||
| ```text | |||
| SEGMENT_BASE(N) = S0_BASE_ADDRESS + N × 10 | |||
| ``` | |||
| | 段内偏移 | 名称 | 类型 | 权限 | 说明 | | |||
| |---:|---|---|---|---| | |||
| | +0~+1 | SEGMENT_FREQUENCY | U32 | RW-S | 0表示使用所选S2默认速度 | | |||
| | +2~+3 | SEGMENT_PULSE_COUNT | I32 | RW-S | 完整INT32范围,负数表示反向 | | |||
| | +4 | WAIT_CONFIG | U16 | RW-S | 高8位等待条件,低8位参数来源类型 | | |||
| | +5~+6 | WAIT_VALUE_OR_REFERENCE | U32 | RW-S | 常数值或变量/点编号 | | |||
| | +7 | JUMP_SOURCE_TYPE | U16 | RW-S | 低8位有效,高8位必须为0 | | |||
| | +8~+9 | JUMP_VALUE_OR_REFERENCE | U32 | RW-S | 常数段号或变量编号 | | |||
| 段1位于`S0+10`,段100位于`S0+1000`,最后占用到`S0+1009`。 | |||
| ### 5.4 WAIT_CONFIG高8位 | |||
| | 值 | 条件 | 行为 | | |||
| |---:|---|---| | |||
| | 0 | PULSE_COMPLETE | 本段数量完成后跳转 | | |||
| | 1 | WAIT_TIME | 完成后等待指定毫秒数,0按1 ms | | |||
| | 2 | WAIT_SIGNAL | 完成后等待位信号有效 | | |||
| | 3 | ACT_TIME | 从段开始计时,到时放弃剩余脉冲并跳转 | | |||
| | 4 | EXT_SIGNAL | 输入上升沿到来时跳转;若脉冲先完成则等待边沿 | | |||
| | 5 | EXT_OR_COMPLETE | EXT边沿或脉冲完成先到者触发跳转 | | |||
| ### 5.5 WAIT_CONFIG低8位 | |||
| | 值 | 来源 | WAIT_VALUE_OR_REFERENCE含义 | | |||
| |---:|---|---| | |||
| | 0 | CONSTANT | 直接常数 | | |||
| | 1 | HOLDING_VOLATILE | 普通保持寄存器零基地址 | | |||
| | 2 | HOLDING_BACKUP | Backup SRAM保持变量编号/地址 | | |||
| | 3 | HOLDING_FLASH | Flash固定参数编号/地址 | | |||
| | 4 | INPUT_POINT | I点逻辑ID | | |||
| | 5 | INTERNAL_COIL | 普通内部线圈零基地址 | | |||
| | 6 | RETAINED_COIL | 掉电保持内部线圈编号 | | |||
| 对于WAIT_TIME和ACT_TIME,动态数值为无符号毫秒数;对于WAIT_SIGNAL、EXT_SIGNAL和 | |||
| EXT_OR_COMPLETE,动态数值表示位或输入点。EXT条件只允许有效的外部输入来源。 | |||
| ### 5.6 JUMP_SOURCE_TYPE | |||
| | 值 | 来源 | | |||
| |---:|---| | |||
| | 0 | CONSTANT | | |||
| | 1 | HOLDING_VOLATILE | | |||
| | 2 | HOLDING_BACKUP | | |||
| | 3 | HOLDING_FLASH | | |||
| 跳转值范围0~100: | |||
| - 0:顺序进入下一段;最后一段为0时任务结束。 | |||
| - 1~100:跳转到指定段。 | |||
| - 等于当前段:允许有意无限循环。 | |||
| 动态跳转变量在发生段转换时读取。超出范围应进入ERROR,不得越界访问S0。 | |||
| ## 6. 线圈映射:100~163 | |||
| 为对标信捷“正在发脉冲标志”等位状态,每轴分配16个只读线圈: | |||
| 该线圈范围已经定义固定状态字段,属于PLSR已占用的线圈地址。其他模块不得覆盖;代码 | |||
| 接入前仍须扫描现有线圈使用情况,若发现历史冲突,必须升级地址表修订号后整体调整。 | |||
| 线圈只是兼容性只读镜像,权威状态全部位于每轴保持寄存器实时状态区;不读取线圈也能 | |||
| 取得完整PLSR状态。 | |||
| ```text | |||
| AXIS_COIL_BASE(axis) = 100 + axis × 16 | |||
| ``` | |||
| | 偏移 | 名称 | 权限 | 说明 | | |||
| |---:|---|---|---| | |||
| | +0 | INSTRUCTION_ACTIVE | RO | 指令仍处于运行/等待/暂停状态 | | |||
| | +1 | PULSE_ACTIVE | RO | 当前物理脉冲正在输出 | | |||
| | +2 | COMPLETED | RO | 最近任务正常完成 | | |||
| | +3 | ERROR | RO | 轴处于错误状态 | | |||
| | +4 | WAITING | RO | 正在等待段条件 | | |||
| | +5 | PAUSED | RO | 已暂停 | | |||
| | +6 | POSITION_VALID | RO | 逻辑位置有效 | | |||
| | +7 | CONFIG_VALID | RO | 活动配置有效 | | |||
| | +8 | POS_HARD_LIMIT | RO | 正硬限位有效 | | |||
| | +9 | NEG_HARD_LIMIT | RO | 负硬限位有效 | | |||
| | +10 | POS_SOFT_LIMIT | RO | 正软限位到达 | | |||
| | +11 | NEG_SOFT_LIMIT | RO | 负软限位到达 | | |||
| | +12 | EMERGENCY_STOP | RO | 软件急停锁存 | | |||
| | +13 | SEGMENT_EVENT_TOGGLE | RO | 每次段事件翻转,便于PLC/HMI边沿检测 | | |||
| | +14 | AB_MODE_ACTIVE | RO | 当前使用AB模式 | | |||
| | +15 | RESERVED | RO | 固定0 | | |||
| 轴0线圈范围100~115,轴1为116~131,轴2为132~147,轴3为148~163。 | |||
| 这些线圈必须在协议处理层拒绝功能码`0x05`和`0x0F`写入。 | |||
| ## 7. 对标信捷与本项目增强的边界 | |||
| ### 7.1 保持信捷语义 | |||
| - S0头部、每段10寄存器布局、等待类型编码和跳转编码与信捷功能一致。 | |||
| - S1仅包含相对/绝对和起始段。 | |||
| - S0、S1由调用方在动态数据池中指定首地址,不绑定轴,也不设置固定数据块地址。 | |||
| - S2选择0~4套参数,并保留信捷速度、曲线、补偿、FOLLOW和刷新参数。 | |||
| - 段频率为0时使用S2默认速度。 | |||
| - 运行中修改目标频率在刷新周期内生效,且不改变剩余脉冲数。 | |||
| ### 7.2 地址编码边界 | |||
| - 不把HD、HSD、SFD、SM编号直接复刻为Modbus PDU地址,但必须维持第4.1、4.3和4.4节 | |||
| 规定的一一对应关系。 | |||
| - 不复制XDPPro配置界面。 | |||
| - D通过本项目连续逻辑ID保存Q点,并通过轴号、板型映射和资源冲突检查对应信捷Y轴语义。 | |||
| ### 7.3 本项目增强 | |||
| - 四轴独立影子参数和原子COMMIT。 | |||
| - 命令序号防止Modbus重试造成重复运动。 | |||
| - 64位逻辑位置、累计量和任务计数。 | |||
| - 独立`INSTRUCTION_ACTIVE`与`PULSE_ACTIVE`,可区分运动和等待。 | |||
| - 快照序号保证多字状态一致。 | |||
| - AB相x4计数、两轴AB以及混合输出资源检查。 | |||
| ## 8. 实现前检查 | |||
| - [ ] 在`modbus_rtu_slave.h`中增加本地址表常量。 | |||
| - [ ] 协议处理层实施RO、RW-S、RW-L、WO-T权限。 | |||
| - [ ] 功能码`0x10`写多字数据时保持原子性。 | |||
| - [ ] CMD_SEQUENCE写入时对命令参数做一致性快照。 | |||
| - [ ] COMMIT校验四轴Q点、定时器和AB点对冲突。 | |||
| - [ ] 状态发布最后更新SNAPSHOT_SEQUENCE。 | |||
| - [ ] 测试地址边界895/896、999/1000、9199/9200和9999。 | |||
| - [ ] 测试S0/S1动态块的边界、重叠、共享、长度和CRC校验。 | |||
| - [ ] 使用四轴各100段执行读写和并发运行压力测试。 | |||
| - [ ] 按第4.1、4.3和4.4节逐项验证信捷固定地址对应关系,无遗漏、无一对多歧义。 | |||
| @@ -2,7 +2,6 @@ | |||
| > 矩阵版本:V1.0 Rev.B | |||
| > 基准资料:[信捷XD/XL系列PLC定位控制手册](./信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf) | |||
| > 对应规格:[PLSR需求规格统计.md](./PLSR需求规格统计.md) | |||
| > 对标原则:信捷PLSR已有功能全部纳入,本项目增强功能允许保留;Y0~Y3的PLSR固定软元件 | |||
| > 地址按[PLSR地址映射](./PLSR地址映射.md)一比一对应。 | |||
| @@ -35,7 +34,7 @@ | |||
| | 负数表示反向 | 49 | 有符号脉冲数量决定方向 | 已纳入 | | |||
| | 频率增减与方向无关 | 49 | 速度规划与方向符号分离 | 已纳入 | | |||
| | 段频率0使用默认速度 | 56 | 使用当前S2默认速度 | 已纳入 | | |||
| | 段脉冲数0的行为 | 56 | 实机确认连续/终止语义后冻结 | 待实机确认 | | |||
| | 段脉冲数0的行为 | 56 | 项目冻结为跳过当前段且不输出脉冲;最后一段则完成任务 | 已冻结差异 | | |||
| | 相对定位 | 17、69等 | 支持相对模式 | 已纳入 | | |||
| | 绝对定位 | 17、69等 | 支持绝对模式 | 已纳入 | | |||
| | 绝对目标等于累计位置时不输出 | 50 | 零脉冲直接完成 | 已纳入 | | |||
| @@ -85,7 +84,7 @@ | |||
| | 方向输出点 | 31、60等 | 从有效未占用Q点配置 | 等效实现 | | |||
| | 方向延时 | 31、41 | 默认10 ms,单位ms可配置 | 已纳入 | | |||
| | PULSE/DIR | 29、49 | 最多四轴 | 已纳入 | | |||
| | AB相输出 | 29、70等 | 最多两轴,x4边沿计数 | 增强 | | |||
| | AB相输出 | 29、70等 | 最多两轴,一个完整正交周期计1个指令脉冲 | 增强 | | |||
| | 脉冲单位 | 28~29 | 支持脉冲模式 | 已纳入 | | |||
| | 1 μm、0.01/0.1/1 mm当量 | 28 | 内核直接换算并保存余数 | 增强 | | |||
| | 每转脉冲数和每转移动量 | 28、60等 | 公共参数 | 已纳入 | | |||
| @@ -107,7 +106,7 @@ | |||
| | Modbus状态监控 | 原子状态快照 | 增强 | | |||
| | 参数原子提交 | 影子参数加COMMIT | 增强 | | |||
| | 命令防重 | 命令序号保证只执行一次 | 增强 | | |||
| | 四轴资源检查 | PULSE/DIR轴数 + 2×AB轴数不超过4 | 增强 | | |||
| | 四轴资源检查 | PULSE/DIR轴数 + 2×AB轴数 + 2×CW/CCW轴数不超过4 | 增强 | | |||
| | 自测和错误数据块号 | 参数、状态机、计数、跳转、定时器和冲突诊断 | 增强 | | |||
| ## 7. 关闭准则 | |||
| @@ -1,524 +0,0 @@ | |||
| # PLSR 需求确认清单 | |||
| > 清单版本:V1.0 Rev.B(S0/S1动态地址及固定参数映射确认) | |||
| > 创建日期:2026-08-04 | |||
| > 对应需求文档:[PLSR需求规格统计.md](./PLSR需求规格统计.md) | |||
| ## 填写说明 | |||
| 1. 在选中的选项前将 `[ ]` 修改为 `[x]`。 | |||
| 2. 标有“单选”的项目只能选择一项。 | |||
| 3. 标有“多选”的项目可以选择多项。 | |||
| 4. 不清楚的硬件参数可以选择“待上板实测”。 | |||
| 5. 如果没有填写,需求评审时默认采用标有“建议”的选项。 | |||
| 6. 补充内容直接填写在横线或“备注”后。 | |||
| 确认人:_虞文昊___________________ | |||
| 确认日期:_________2026/8/4_________ | |||
| 计划开始日期:_________2026/8/4_____ | |||
| 计划验收日期:_______2026/8/25_______ | |||
| --- | |||
| ## 1. 开发板范围 | |||
| ### 1.1 首版验收平台(单选) | |||
| - [ ] 只验收 XDM-60T4-E,T10-E 仅保留兼容设计(建议) | |||
| - [ ] 同时验收 XDM-60T4-E 和 XDM-60T10-E | |||
| - [ ] 只验收 XDM-60T10-E | |||
| - [x] 只验收 XDM-60T4-E | |||
| 补充型号或要求:____________________________________________ | |||
| ### 1.2 MCU 和时钟 | |||
| - [x] 确认使用 STM32F407,外部晶振 12 MHz,CPU 168 MHz(建议) | |||
| - [ ] 参数需要修改 | |||
| 修改内容:____________________________________________________ | |||
| ## 2. 轴数和输出点 | |||
| ### 2.1 V1.0 轴数(单选) | |||
| - [ ] 单轴(建议) | |||
| - [ ] 双轴 | |||
| - [x] 四轴(V1.0 的 PULSE/DIR 最多四轴,AB 相最多两轴) | |||
| - [ ] 其他:________轴 | |||
| ### 2.2 四轴输出点 | |||
| 脉冲输出点:Q0、Q1、Q2、Q3 | |||
| 脉冲 MCU 引脚:Q0/PF6、Q1/PF8、Q2/PF7、Q3/PF9 | |||
| 脉冲定时器/通道:Q0/PF6/TIM10_CH1、Q1/PF8/TIM13_CH1、Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1 | |||
| AB 相输出点对:AB轴0使用 Q0(A)/Q1(B),AB轴1使用 Q2(A)/Q3(B)。 | |||
| 每个 PULSE/DIR 轴占用一个高速输出点,每个 AB 轴占用两个高速输出点,且满足 | |||
| `PULSE/DIR轴数 + 2 × AB轴数 ≤ 4`。 | |||
| 方向点允许从 XDM-60T4-E 的有效输出点 `Q0~Q7、Q10~Q17、Q20` 中运行时配置; | |||
| 不得与任何正在使用的脉冲点或其它已占用输出点冲突。四轴全部启用时,方向点白名单为: | |||
| | 方向输出点 | MCU 引脚 | 方向输出点 | MCU 引脚 | | |||
| |---|---|---|---| | |||
| | Q4 | PI8 | Q5 | PE6 | | |||
| | Q6 | PE5 | Q7 | PE4 | | |||
| | Q10 | PG7 | Q11 | PG6 | | |||
| | Q12 | PH9 | Q13 | PH8 | | |||
| | Q14 | PH7 | Q15 | PH6 | | |||
| | Q16 | PF11 | Q17 | PB0 | | |||
| | Q20 | PH5 | | | | |||
| - [x] 上述映射已经原理图确认 | |||
| - [ ] 上述映射已经上板实测 | |||
| - [ ] 映射尚未确认,开发前需要核对(建议在第 1 周第一天完成) | |||
| ### 2.3 输出点配置方式(单选) | |||
| - [ ] 编译时固定脉冲点和方向点 | |||
| - [x] 运行时从支持列表中配置(建议) | |||
| - [ ] 任意 Q 点均可配置 | |||
| ## 3. 伺服脉冲接口 | |||
| ### 3.1 输出形式(单选) | |||
| - [ ] PULSE/DIR(建议) | |||
| - [ ] CW/CCW | |||
| - [ ] PULSE/DIR 和 CW/CCW 都支持 | |||
| - [x] PULSE/DIR 和 AB 都支持 | |||
| ### 3.2 有效边沿(单选) | |||
| - [x] 上升沿(建议) | |||
| - [ ] 下降沿 | |||
| - [ ] 参数可配置 | |||
| ### 3.3 输出极性(单选) | |||
| - [ ] 高电平有效 | |||
| - [ ] 低电平有效 | |||
| - [x] 参数可配置(建议) | |||
| - [ ] 待上板实测 | |||
| ### 3.4 伺服驱动器电气参数 | |||
| 伺服品牌及型号:______________________________________________ | |||
| 最大接收频率:________________ Hz | |||
| 最小高电平时间:______________ us | |||
| 最小低电平时间:______________ us | |||
| 最小方向建立时间:____________ us | |||
| 最小方向保持时间:____________ us | |||
| - [ ] 参数来自伺服驱动器手册 | |||
| - [ ] 参数已经示波器实测 | |||
| - [x] 暂时未知,按保守值实现并在联调时确认 | |||
| ### 3.5 AB 相计数定义 | |||
| - [x] 采用 x4 边沿计数:A 或 B 每次有效跳变计 1 个指令脉冲 | |||
| - [x] AB 模式的目标频率表示每秒有效计数边沿数 | |||
| - [x] 一个完整 AB 正交周期对应 4 个指令脉冲 | |||
| - [x] 停止时允许保持在任一合法正交状态,下一次运动从该状态继续 | |||
| ## 4. 频率和脉冲数量 | |||
| ### 4.1 V1.0 保证频率范围(单选) | |||
| - [x] 1 Hz~100 kHz(建议) | |||
| - [ ] 1 Hz~200 kHz | |||
| - [ ] 其他:________ Hz~________ Hz | |||
| - [ ] 先按 100 kHz 实现,最高值由上板测试决定 | |||
| ### 4.2 频率误差(单选) | |||
| - [ ] 不超过 ±0.1%(建议) | |||
| - [ ] 不超过 ±0.5% | |||
| - [x] 只要求使用最佳定时器分频值,不设固定百分比 | |||
| - [ ] 其他:________________ | |||
| ### 4.3 单段脉冲数量(单选) | |||
| - [x] 完整有符号32位,范围 -2,147,483,648~2,147,483,647,对标信捷 | |||
| - [ ] 无符号 32 位,方向单独设置 | |||
| - [ ] 64 位脉冲数量 | |||
| - [ ] 其他:________________ | |||
| ### 4.4 正常完成脉冲误差(单选) | |||
| - [x] 必须为 0 个脉冲(建议) | |||
| - [ ] 允许误差:±________个脉冲 | |||
| ## 5. 定位模式 | |||
| ### 5.1 支持模式(多选) | |||
| - [x] 相对定位(必须,建议勾选) | |||
| - [x] 绝对定位(必须,建议勾选) | |||
| - [x] 设置当前位置 | |||
| - [x] 当前逻辑位置清零 | |||
| ### 5.2 绝对位置无效时的处理(单选) | |||
| - [x] 禁止绝对定位,必须先设置或清零当前位置(建议) | |||
| - [ ] 自动将当前位置视为 0 | |||
| - [ ] 自动读取保存值,即使上次异常掉电 | |||
| - [ ] 其他:________________________________________________ | |||
| ### 5.3 位置单位(单选) | |||
| - [ ] PLSR 内核只使用脉冲和 Hz,工程单位由上位机换算(建议) | |||
| - [ ] PLSR 直接支持 mm、mm/s | |||
| - [ ] PLSR 直接支持角度、rpm | |||
| - [x] 同时支持脉冲单位和工程单位,对标信捷 | |||
| 如需工程单位,请填写: | |||
| ``` | |||
| 脉冲、1 mm、0.1 mm、0.01 mm、1 μm | |||
| ``` | |||
| 每圈指令脉冲数:____________ | |||
| 电子齿轮比:________________ | |||
| 机械减速比:________________ | |||
| 丝杠螺距:________________mm | |||
| ## 6. 多段路径 | |||
| ### 6.1 最大段数(单选) | |||
| - [x] 100 段,对标信捷(建议) | |||
| - [ ] 32 段 | |||
| - [ ] 16 段 | |||
| - [ ] 其他:________段 | |||
| ### 6.2 每段参数(多选) | |||
| - [x] 有符号脉冲数量(必须) | |||
| - [x] 目标频率(必须) | |||
| - [ ] 段起始频率 | |||
| - [ ] 段结束频率 | |||
| - [x] 等待类型 | |||
| - [x] 等待参数 | |||
| - [x] 下一段编号 | |||
| - [ ] 本段加速时间 | |||
| - [ ] 本段减速时间 | |||
| - [ ] 本段曲线类型 | |||
| ### 6.3 段起止频率配置方式(单选) | |||
| - [ ] 每段显式配置起始频率和结束频率 | |||
| - [x] 只配置每段目标频率,由 S2 和相邻段自动推导(建议) | |||
| - [ ] 两种方式都支持;显式值优先,未配置时自动推导 | |||
| ### 6.4 段间条件(多选) | |||
| - [x] 当前段脉冲发送完成(必须) | |||
| - [x] 等待指定时间(建议) | |||
| - [x] 等待指定输入点(建议) | |||
| - [x] 输入有效或本段完成 | |||
| - [x] 指定下一段(建议) | |||
| - [ ] 有限循环(建议) | |||
| - [x] 从指定段号开始(建议) | |||
| - [ ] 上述功能 V1.0 全部实现 | |||
| - [x] ACT 指定时间后跳段 | |||
| - [x] EXT 外部输入立即跳段 | |||
| - [x] 跳转值为 0:顺序执行 | |||
| - [x] 最后一段跳转值为 0:结束 | |||
| - [x] 跳转到自身:无限循环 | |||
| - [x] “有限循环”没有独立循环次数字段,需要通过寄存器、计数器和动态下一段编号实现。 | |||
| - [ ] V1.0 只实现顺序执行,其余放到 V1.1 | |||
| ### 6.5 多段衔接方式(多选) | |||
| - [x] 完成方式(建议) | |||
| - [x] 后续方式(建议) | |||
| - [x] 两种方式均作为 V1.0 强制验收项 | |||
| - [ ] V1.0 只实现完成方式 | |||
| ## 7. 加减速曲线 | |||
| ### 7.1 V1.0 曲线(多选) | |||
| - [x] 无加减速(建议)将加速度时间设为0 | |||
| - [x] 直线/梯形加减速(必须,建议勾选) | |||
| - [x] S 形加减速(必须,建议勾选) | |||
| - [x] 正弦曲线加减速 | |||
| - [ ] 正弦曲线作为 V1.1 加分项 | |||
| ### 7.2 参数方式(单选) | |||
| - [x] S2 保存默认速度和默认加减速时间,按斜率计算(对标信捷) | |||
| - [ ] 直接为每次任务设置总加速时间和总减速时间(建议,接口更直观) | |||
| - [ ] 两种方式均支持 | |||
| ### 7.3 短距离处理(单选) | |||
| - [x] 自动压缩为三角或短距离曲线(建议) | |||
| - [ ] 无法完成完整曲线时拒绝启动 | |||
| - [ ] 其他:________________________________________________ | |||
| ## 8. 调用方式和运行控制 | |||
| ### 8.1 调用方式(多选) | |||
| - [ ] 同步等待(建议) | |||
| - [x] 异步返回(建议) | |||
| - [ ] 两种方式均作为 V1.0 强制功能 | |||
| ### 8.2 运行中控制(多选) | |||
| - [x] 动态修改当前段目标频率(必须) | |||
| - [x] 频率刷新周期可选 `1 ms` 或 `0.1 ms` | |||
| - [x] 刷新周期保存在 S2 中,调频应在所配置的 `1 ms` 或 `0.1 ms` 内开始生效 | |||
| - [x] uC/OS-II Tick 保持 `1 ms`;`0.1 ms` PLSR刷新由独立硬件定时器触发 | |||
| - [x] 减速停止(必须) | |||
| - [x] 立即停止(必须) | |||
| - [x] 暂停(建议) | |||
| - [x] 继续(建议) | |||
| - [ ] 暂停和继续放到 V1.1 | |||
| ### 8.3 重复 START(单选) | |||
| - [ ] 运行中拒绝并返回 BUSY,不影响当前任务(建议) | |||
| - [ ] 中止当前任务并启动新任务 | |||
| - [ ] 将新任务加入队列 | |||
| - [x] 运行中拒绝并且不用返回 BUSY,不影响当前任务(建议) | |||
| ### 8.4 通信断开时的运动行为(单选) | |||
| - [ ] 已启动任务继续运行,记录通信断开状态(建议) | |||
| - [ ] 通信超时后减速停止 | |||
| - [ ] 通信超时后立即停止 | |||
| - [x] 已启动任务继续运行,不用记录通信断开状态 | |||
| - [ ] 参数可配置 | |||
| ## 9. 累计数据和掉电保存 | |||
| ### 9.1 必须保存的数据(多选) | |||
| - [x] 输出点和输出极性 | |||
| - [x] S2 参数套组 | |||
| - [x] 默认运行和衔接模式 | |||
| - [x] 总累计脉冲数 | |||
| - [ ] 正向、反向累计脉冲数 | |||
| - [x] 当前逻辑位置及独立有效标志 | |||
| - [ ] 当前逻辑位置有累计位置,但无独立有效标志 | |||
| - [ ] 未完成任务及剩余路径 | |||
| ### 9.2 参数保存方式(单选) | |||
| - [ ] 内部 Flash 双备份、版本号和 CRC(建议) | |||
| - [ ] 只使用 Backup SRAM | |||
| - [ ] 外部 EEPROM/FRAM,型号:________________ | |||
| - [x] 其他:___固定参数使用 Flash;动态参数使用 Backup SRAM,例如累计位置和第 0 套动态参数_____________________________________________ | |||
| ### 9.3 运行中突然掉电的恢复等级(单选) | |||
| - [ ] 只保证已完成任务和检查点;上电不续跑,位置可能无效(建议) | |||
| - [x] 有 VBAT,恢复 Backup SRAM 最近检查点;上电不续跑 | |||
| - [ ] 要求累计位置零脉冲误差恢复,需要增加 FRAM 或掉电检测 | |||
| - [ ] 要求自动继续未完成运动(不建议,需单独安全评审) | |||
| 板卡是否安装并有效连接 VBAT: | |||
| - [x] 是 | |||
| - [ ] 否 | |||
| - [ ] 未确认 | |||
| 允许异常掉电丢失的最大累计数据:____________________________ | |||
| - [x] 异常掉电后恢复最近检查点供诊断,但将独立 `position_valid` 标志清零 | |||
| - [x] 重新清零、设置位置或完成回零前,禁止绝对定位 | |||
| ## 10. 安全输入和伺服状态 | |||
| ### 10.1 V1.0 输入信号(多选) | |||
| - [x] 急停;V1.0 无外部硬件切断回路,由软件立即停止脉冲输出 | |||
| 信捷明确指出“脉冲发送完成”不等于“伺服到位”,In-position 必须读取伺服反馈信号。 | |||
| - [x] 正限位 | |||
| - [x] 负限位 | |||
| - [ ] 伺服 Ready | |||
| - [ ] 伺服 Alarm | |||
| - [ ] 伺服 In-position | |||
| - [ ] V1.0 不接入上述硬件信号,只预留软件接口(建议按任务书最小范围) | |||
| ### 10.2 限位触发后的行为(单选) | |||
| - [x] 减速停止,禁止继续向限位方向运动(建议) | |||
| - [ ] 立即停止,禁止继续向限位方向运动 | |||
| - [ ] 可按每个输入单独配置 | |||
| - [ ] V1.0 不适用 | |||
| ### 10.3 急停行为(单选) | |||
| - [ ] 硬件切断脉冲输出,同时软件记录状态(建议用于正式设备) | |||
| - [x] 软件立即停止 | |||
| - [ ] 软件减速停止 | |||
| - [ ] V1.0 不适用 | |||
| ## 11. Modbus 接口 | |||
| ### 11.1 接口功能(多选) | |||
| - [x] 读取配置和实时状态(必须) | |||
| - [x] 写入单段和多段参数(必须) | |||
| - [x] 启动、停止和清零(必须) | |||
| - [x] 暂停和继续 | |||
| - [x] 保存和加载参数(必须) | |||
| - [x] 自测和错误复位(必须) | |||
| ### 11.2 参数提交方式(单选) | |||
| - [x] 影子参数写入完成后,通过提交命令原子生效(建议) | |||
| - [ ] 每写一个寄存器立即生效 | |||
| - [ ] 其他:________________________________________________ | |||
| ### 11.3 多字数据寄存器顺序(单选) | |||
| - [x] 高字在前、低字在后(建议) | |||
| - [ ] 低字在前、高字在后 | |||
| ### 11.4 命令防重(单选) | |||
| - [x] 使用命令序号;相同序号只执行一次(建议)普通参数读写不需要 | |||
| - [ ] 不使用命令序号 | |||
| - [ ] 其他:________________________________________________ | |||
| ## 12. 自测和诊断 | |||
| ### 12.1 V1.0 自测项目(多选) | |||
| - [ ] 参数版本和 CRC(本项目增强项,不作为信捷对标前提) | |||
| - [x] 输出点冲突 | |||
| - [x] 定时器时钟和分频 | |||
| - [x] 频率、段数和脉冲数量范围 | |||
| - [x] 路径跳转和循环(包括跳转目标及死循环) | |||
| - [x] 计数溢出 | |||
| - [x] 状态机非法转换 | |||
| - [ ] 外部输入回接脉冲输出 | |||
| - [x] 频率、参数块、段数据范围检查 | |||
| - [x] 当前段和当前输出频率监控 | |||
| - [x] 累计脉冲溢出标志 | |||
| - [x] 正负限位停止错误 | |||
| - [x] PLSR 每段中断 | |||
| - [x] 脉冲错误码和错误数据块号 | |||
| ### 12.2 测试设备(多选) | |||
| - [ ] 示波器 | |||
| - [x] 逻辑分析仪 | |||
| - [ ] 伺服驱动器和电机 | |||
| - [ ] 外部脉冲计数器 | |||
| - [x] PC Modbus 测试工具 | |||
| 现有设备型号:________________________________________________ | |||
| ## 13. 性能和资源预算 | |||
| ### 13.1 是否接受当前建议指标 | |||
| - [ ] 频率误差不超过 ±0.1% | |||
| - [ ] 正常完成脉冲误差为 0 | |||
| - [x] 调频在 S2 配置的 1 ms 或 0.1 ms 内开始生效 | |||
| - [ ] PLSR 平均 CPU 占用率不超过 20% | |||
| - [ ] PLSR 静态 RAM 不超过 8 KiB | |||
| - [ ] 脉冲级中断最坏时间不超过 100 kHz 周期的 25% | |||
| - [ ] 运行阶段禁止动态内存分配 | |||
| - [ ] 连续运行 24 小时无异常 | |||
| - [x] 最大额定频率:100 kHz | |||
| - [x] 频率刷新周期:1 ms 或 0.1 ms | |||
| - [x] 定位数值范围:32 位有符号数 | |||
| - [x] 正常完成按指定脉冲数量停止 | |||
| 需要修改的指标:________________________________________________ | |||
| ## 14. 交付范围 | |||
| ### 14.1 必须交付(多选) | |||
| - [ ] PLSR 源代码和头文件 | |||
| - [ ] 定时器、GPIO 和板型适配代码 | |||
| - [ ] Modbus 通信协议 | |||
| - [ ] 参数保存模块 | |||
| - [ ] 需求规格书 | |||
| - [ ] 软件设计说明书 | |||
| - [ ] 测试方案 | |||
| - [ ] 测试记录和测试报告 | |||
| - [ ] 上位机测试工具 | |||
| - [ ] 示例程序和使用说明 | |||
| ### 14.2 四周周期(单选) | |||
| - [ ] 接受当前四周开发计划(建议) | |||
| - [ ] 周期调整为:________周 | |||
| - [ ] 硬件和需求冻结后再确定周期 | |||
| ## 15. 后续版本和排除项 | |||
| ### 15.1 后续版本或加分项(多选) | |||
| - [ ] AB 相正交脉冲输出(已纳入 V1.0) | |||
| - [ ] 外部输入脉冲回读诊断 | |||
| - [ ] 多轴输出(四轴独立输出已纳入 V1.0) | |||
| - [ ] 超过 100 kHz 输出 | |||
| - [x] 完整机械回零(ZRN独立指令,仍为后续项) | |||
| - [ ] 齿隙补偿(已纳入V1.0 PLSR) | |||
| - [ ] FOLLOW 前馈控制(已纳入V1.0 PLSR) | |||
| - [ ] 编码器实际位置监控 | |||
| ### 15.2 确认 V1.0 不包含(多选) | |||
| - [x] 编码器闭环位置控制 | |||
| - [x] 多轴插补 | |||
| - [x] 电子凸轮和龙门同步 | |||
| - [ ] 信捷专用软元件地址兼容(已改为V1.0必须一比一对应,不再属于排除项) | |||
| - [x] XDPPro 参数界面兼容 | |||
| - [x] 完整复制信捷全部运动指令语法 | |||
| ## 16. 最终确认 | |||
| ### 16.1 需求处理结果(单选) | |||
| - [ ] 清单尚未填写完成 | |||
| - [ ] 已填写,但仍有项目需要硬件实测 | |||
| - [x] 已填写,同意据此更新 V1.0 需求规格书 | |||
| - [ ] 已填写并确认,可以开始软件设计和实现 | |||
| 仍需讨论的问题: | |||
| 1. CW/CCW 双脉冲不纳入 V1.0;V1.0 实现 PULSE/DIR 与 AB 相输出。 | |||
| 2. 急停无外部硬件切断,由软件立即停止脉冲输出。 | |||
| 3. AB 相最多同时运行两轴,采用 x4 边沿计数;点对为 Q0/Q1 和 Q2/Q3,定时器/DMA方案仍需上板验证。 | |||
| 确认人签字:____________________ | |||
| 确认日期:______________________ | |||
| ## 17. 信捷 PLSR 功能超集补充确认 | |||
| - [x] 信捷PLSR已有功能全部作为V1.0最低基线,本项目增强功能继续保留 | |||
| - [x] Y0~Y3的PLSR固定HSD、SFD、SD、SM和I地址按信捷手册一比一对应 | |||
| - [x] S1只保存相对/绝对模式和起始执行段;异步调用不占用S1字段 | |||
| - [x] S0和S1在Modbus动态数据池中指定首地址,不设置固定数据块地址,不永久绑定到轴 | |||
| - [x] COMMIT时创建轴运行快照,提交后修改原S0/S1动态数据块不影响已提交或已运行任务 | |||
| - [x] 除S0和S1外,S2、D、公共参数、命令和状态全部映射到固定保持寄存器地址 | |||
| - [x] 取消16条Modbus通信历史,其原地址空间释放给S0/S1动态数据池 | |||
| - [x] 段频率为0时使用S2默认速度 | |||
| - [x] 脉冲数0的确切语义在实现冻结前通过信捷实机或厂家资料确认 | |||
| - [x] Wait时间、Wait信号、ACT、EXT、EXT或完成按信捷触发时序实现 | |||
| - [x] Wait时间范围1~2,147,483,647 ms,0按1 ms处理 | |||
| - [x] 跳转目标支持常数和运行时变量,0为顺序/结束,自身为无限循环 | |||
| - [x] 每段产生包含轴号、段号和结束原因的段事件 | |||
| - [x] 支持脉冲、1 μm、0.01 mm、0.1 mm和1 mm单位 | |||
| - [x] 支持每转脉冲数、每转移动量及累计余数换算 | |||
| - [x] 支持软限位、方向逻辑、方向延时和限位输入极性 | |||
| - [x] 方向延时默认10 ms,单位ms并可配置 | |||
| - [x] 支持正反向齿隙补偿及补偿加减速时间 | |||
| - [x] S2支持FOLLOW性能参数和FOLLOW前馈补偿参数 | |||
| - [x] 绝对目标等于当前位置时零脉冲完成 | |||
| - [x] START接受后锁存运行,触发条件消失不终止任务 | |||
| - [x] 100 kHz以上至200 kHz属于非保证扩展区,通过板级测试后开放 | |||
| @@ -1,18 +1,48 @@ | |||
| # PLSR 需求规格书 | |||
| > 文档版本:V1.0 Rev.B(S0/S1动态地址及固定参数映射基线) | |||
| > 更新日期:2026-08-04 | |||
| > 文档版本:V1.3 Rev.A(需求冲突统一冻结版) | |||
| > 更新日期:2026-08-05 | |||
| > 目标平台:XDM-60T4-E | |||
| > 软件平台:STM32F407 + uC/OS-II | |||
| ## 目录 | |||
| - [1 概述](#1-概述) | |||
| - [1.1 项目背景](#11-项目背景) | |||
| - [1.2 定义](#12-定义) | |||
| - [2 功能需求](#2-功能需求) | |||
| - [2.1 系统与硬件功能](#21-系统与硬件功能) | |||
| - [2.2 脉冲输出功能](#22-脉冲输出功能) | |||
| - [2.3 定位功能](#23-定位功能) | |||
| - [2.4 S0、S1、S2、D 功能模型](#24-s0s1s2d-功能模型) | |||
| - [2.5 单段与多段路径](#25-单段与多段路径) | |||
| - [2.6 加减速与段内变频](#26-加减速与段内变频) | |||
| - [2.7 调用与多段衔接模式](#27-调用与多段衔接模式) | |||
| - [2.8 运行控制](#28-运行控制) | |||
| - [2.9 状态机与状态监控](#29-状态机与状态监控) | |||
| - [2.10 Modbus 通信](#210-modbus-通信) | |||
| - [2.11 参数与累计数据保存](#211-参数与累计数据保存) | |||
| - [2.12 自测与诊断](#212-自测与诊断) | |||
| - [2.13 安全与异常处理](#213-安全与异常处理) | |||
| - [3 性能需求](#3-性能需求) | |||
| - [3.1 脉冲性能](#31-脉冲性能) | |||
| - [3.2 实时性能](#32-实时性能) | |||
| - [3.3 可靠性](#33-可靠性) | |||
| - [3.4 工程单位与换算边界](#34-工程单位与换算边界) | |||
| - [4 其它需求](#4-其它需求) | |||
| - [4.1 验收要求](#41-验收要求) | |||
| - [4.2 交付物](#42-交付物) | |||
| - [4.3 后续版本或加分项](#43-后续版本或加分项) | |||
| - [4.4 不在当前范围内](#44-不在当前范围内) | |||
| - [4.5 实施验证事项](#45-实施验证事项) | |||
| - [5 参考资料](#5-参考资料) | |||
| [TOC] | |||
| ## 1 概述 | |||
| ### 1.1 项目背景 | |||
| 本项目计划在新一代 XDM 系列 PLC 中实现一个高性能定位脉冲输出模块, | |||
| 通过 PLC 指令或 Modbus 命令驱动伺服驱动器,完成四轴独立位置控制。 | |||
| 本项目计划在新一代 XDM 系列 PLC 中实现一个高性能定位脉冲输出模块, 通过 | |||
| PLC 指令或 Modbus 命令驱动伺服驱动器,完成四轴独立位置控制。 | |||
| 项目当前已有以下基础: | |||
| @@ -25,11 +55,12 @@ | |||
| 本项目以信捷 PLC 的 PLSR 功能作为最低功能基线:信捷 PLSR 已有的功能和 | |||
| 可观察运行语义均应具备;本项目已有的四轴资源管理、Modbus原子提交、命令防重、 | |||
| 64位累计、诊断和Backup SRAM等增强功能继续保留。Y0~Y3的PLSR操作数、公共参数、 | |||
| K0~K4参数组和固定状态地址必须与信捷手册一比一对应;不复制XDPPro参数配置界面。 | |||
| 64位累计、诊断和Backup | |||
| SRAM等增强功能继续保留。Y0~Y3的PLSR固定配置参数和固定状态地址必须与信捷手册 | |||
| 一比一对应;S0、S1保持动态首地址语义,S2、D保持指令操作数语义;不复制XDPPro参数配置界面。 | |||
| 逐项对应关系见[PLSR信捷对标追踪矩阵](./PLSR信捷对标追踪矩阵.md)。矩阵中未关闭的 | |||
| 差异不得宣称为“严格功能对标完成”。 | |||
| 差异不得宣称为"严格功能对标完成"。 | |||
| V1.0 的目标范围如下: | |||
| @@ -51,7 +82,7 @@ V1.0 的目标范围如下: | |||
| ### 1.2 定义 | |||
| | 名称 | 定义 | | |||
| |---|---| | |||
| | --- | --- | | |||
| | PLSR | 本项目的定位脉冲输出模块,支持单段及多段位置控制 | | |||
| | PULSE/DIR | 脉冲加方向的伺服控制接口,PULSE 表示位置增量,DIR 表示方向 | | |||
| | AB 相输出 | A、B 两路相差 90° 的正交脉冲接口,通过相位先后表示方向 | | |||
| @@ -62,7 +93,7 @@ V1.0 的目标范围如下: | |||
| | 完成方式 | 上一段脉冲发送完后,才开始向下一段频率加减速 | | |||
| | 后续方式 | 在上一段内提前变频,使段结束时已经达到下一段频率 | | |||
| | S0 | 路径数据块,保存段数、频率、脉冲数、等待和跳转参数 | | |||
| | S1 | 用户执行参数,保存定位模式、起始段和调用方式 | | |||
| | S1 | 用户执行参数,仅保存定位模式和起始段 | | |||
| | S2 | K0~K4运动参数套组,保存速度限制、起止频率、加减速、补偿、FOLLOW和刷新周期 | | |||
| | D | 输出轴或脉冲输出点 | | |||
| | 控制周期 | PLSR 更新状态和速度规划的周期,由 S2 配置为 1 ms 或 0.1 ms | | |||
| @@ -74,7 +105,7 @@ V1.0 的目标范围如下: | |||
| ### 2.1 系统与硬件功能 | |||
| | 编号 | 需求 | 优先级 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | FR-SYS-01 | 系统应运行在 STM32F407 和 uC/OS-II 平台上 | 必须 | | |||
| | FR-SYS-02 | 系统应使用 12 MHz 外部晶振并运行于 168 MHz 主频 | 必须 | | |||
| | FR-SYS-03 | 首版应在 XDM-60T4-E(STM32F407IG)上完成验收 | 必须 | | |||
| @@ -86,7 +117,7 @@ V1.0 的目标范围如下: | |||
| 已知主要输出点如下: | |||
| | PLC 点 | MCU 引脚 | | |||
| |---|---| | |||
| | --- | --- | | |||
| | Q0 | PF6 | | |||
| | Q1 | PF8 | | |||
| | Q2 | PF7 | | |||
| @@ -116,8 +147,8 @@ Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1,仍应通过上板波形测试确认。 | |||
| ### 2.2 脉冲输出功能 | |||
| | 编号 | 需求 | V1.0 指标 | | |||
| |---|---|---| | |||
| | FR-PUL-01 | 输出形式 | PULSE/DIR、AB 相;不支持 CW/CCW 双脉冲 | | |||
| | --- | --- | --- | | |||
| | FR-PUL-01 | 输出形式 | PULSE/DIR、AB 相、CW/CCW 双脉冲 | | |||
| | FR-PUL-02 | PULSE/DIR 有效计数边沿 | 固定为物理上升沿 | | |||
| | FR-PUL-03 | 脉冲占空比 | 50% | | |||
| | FR-PUL-04 | 输出频率范围 | 1~100,000 Hz | | |||
| @@ -128,20 +159,64 @@ Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1,仍应通过上板波形测试确认。 | |||
| | FR-PUL-09 | 输出点 | 脉冲点和方向点可配置且不得重复 | | |||
| | FR-PUL-10 | 运行调频 | 修改目标频率后不改变剩余脉冲数量 | | |||
| | FR-PUL-11 | 四轴运行 | 四轴可独立启动、停止、调频和查询状态 | | |||
| | FR-PUL-12 | AB 相方向和计数 | 通过A、B相位先后控制方向;采用x4计数,A或B每次有效跳变计1个指令脉冲 | | |||
| | FR-PUL-13 | AB 相轴数 | 最多同时运行两轴;AB轴0使用 Q0(A)/Q1(B),AB轴1使用 Q2(A)/Q3(B) | | |||
| | FR-PUL-14 | 高速点资源 | PULSE/DIR轴数 + 2 × AB轴数不得超过4,启动前必须检查资源冲突 | | |||
| | FR-PUL-15 | AB 相频率 | 目标频率表示每秒有效计数边沿数,一个完整AB周期对应4个指令脉冲 | | |||
| | FR-PUL-12 | AB 相方向和计数 | 通过A、B相位先后控制方向;一个完整A/B正交周期计1个指令脉冲 | | |||
| | FR-PUL-13 | AB 相轴数 | 最多同时运行两轴;物理点对固定为 Q0(A)/Q1(B)、Q2(A)/Q3(B),逻辑轴可动态申请空闲点对 | | |||
| | FR-PUL-14 | 高速点资源 | PULSE/DIR轴数 + 2 × AB轴数 + 2 × CW/CCW轴数不得超过4,启动前必须检查资源冲突 | | |||
| | FR-PUL-15 | AB 相频率 | 目标频率表示每秒完整AB周期数;每周期含4次相位跳变,但只计1个指令脉冲 | | |||
| | FR-PUL-16 | 默认速度 | 段频率为0时使用当前S2套组的脉冲默认速度 | | |||
| | FR-PUL-17 | 扩展频率 | 100,001~200,000 Hz作为非保证扩展区,仅在板级测试通过后开放并报告警告 | | |||
| 手册对“段脉冲个数为0”同时描述了使用默认速度,但没有明确连续输出或零距离的 | |||
| 终止语义。V1.0实现冻结前必须使用信捷实机或厂家确认该行为,并将结果写入追踪矩阵; | |||
| 不得自行把0定义为普通非法参数后仍宣称严格对标。 | |||
| 系统支持三种输出模式: | |||
| | 模式编号 | 输出模式 | 说明 | | |||
| | --- | --- | --- | | |||
| | 0 | PULSE/DIR | 脉冲+方向输出 | | |||
| | 1 | AB 相 | 正交脉冲输出 | | |||
| | 2 | CW/CCW | 双脉冲方向输出 | | |||
| 要求: | |||
| - 三种模式均应支持正反方向控制; | |||
| - 输出模式运行前不可修改; | |||
| - 输出点必须支持资源冲突检查; | |||
| - 不同轴之间高速输出资源不得重复占用。 | |||
| 高速输出资源按以下规则统一: | |||
| - 物理高速资源固定为Q0~Q3,不改变其MCU引脚和定时器映射; | |||
| - 逻辑运动轴不永久绑定高速资源,START时申请、任务终止时释放; | |||
| - PULSE/DIR占用1个高速资源;AB相和CW/CCW各占用2个高速资源; | |||
| - AB相及CW/CCW只能使用Q0/Q1或Q2/Q3有效点对; | |||
| - 正常完成、STOP或ERROR退出后必须释放本任务占用的高速资源; | |||
| - 运行期间输出模式、高速点绑定和定时器资源保持锁定。 | |||
| CW/CCW模式下,正向只允许CW端输出脉冲,反向只允许CCW端输出脉冲;另一端和停止 | |||
| 状态均保持无效电平,任何时刻禁止CW、CCW同时输出。 | |||
| - **FR-PUL-20:** PLSR任务正常完成、STOP停止或ERROR退出后必须释放高速输出资源。 | |||
| - **FR-PUL-21:** CW/CCW必须遵守上述互斥输出和停止安全电平规则。 | |||
| - **FR-PUL-22:** 单段脉冲数量为0时跳过当前段,不输出脉冲并进入下一段;若为最后一段则完成任务。 | |||
| AB模式的段脉冲数量按完整正交周期累计。每完成`00→相邻相位→相邻相位→相邻相位→00` | |||
| 的一轮四相位状态转换,段剩余脉冲数减1;四次相位跳变不得分别扣减脉冲数量。正反方向 | |||
| 通过相位先后顺序区分。 | |||
| 最小有效脉宽、输出极性及最高可靠频率还应满足 PLC 输出电路和伺服驱动器 | |||
| 的电气要求。100 kHz 是 V1.0 建议保证值,更高频率需通过硬件测试后开放。 | |||
| 当段目标频率为0时: | |||
| 使用当前 S2 默认速度。 | |||
| 如果: | |||
| 默认速度 <= 0 | |||
| 则: | |||
| - 禁止启动; | |||
| - 返回 DEFAULT_SPEED_INVALID。 | |||
| ### 2.3 定位功能 | |||
| #### 2.3.1 相对定位 | |||
| @@ -171,7 +246,7 @@ Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1,仍应通过上板波形测试确认。 | |||
| #### 2.3.3 位置与累计计数 | |||
| 系统应维护以下 64 位数据: | |||
| 系统内部应维护以下64位增强数据: | |||
| - 当前逻辑位置。 | |||
| - 本次任务累计脉冲数。 | |||
| @@ -179,12 +254,17 @@ Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1,仍应通过上板波形测试确认。 | |||
| 上位机应能够读取并清零累计数据。运行期间禁止清零或设置当前位置。 | |||
| 信捷兼容的固定累计状态`HSD0~15`仍按每个值两个16位寄存器组成32位数据;内部64位 | |||
| 累计不得改变该固定地址布局。将内部值发布到信捷兼容状态前必须进行范围检查,超出32位 | |||
| 范围时报告累计溢出,不得静默截断。 | |||
| ### 2.4 S0、S1、S2、D 功能模型 | |||
| 项目采用与信捷 PLSR 相似的逻辑模型,但不要求使用相同的物理寄存器地址。 | |||
| 项目采用信捷PLSR的S0、S1、S2、D逻辑模型。Y0~Y3固定配置和状态地址必须按 | |||
| [PLSR地址映射](./PLSR地址映射.md)一比一对应;S0、S1保持动态首地址语义。 | |||
| | 参数 | 功能 | 主要内容 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | S0 | 路径数据块 | 总段数、每段频率、脉冲数、等待及跳转 | | |||
| | S1 | 用户执行参数 | 仅包含相对/绝对模式和起始执行段;异步调用属于指令接口而非S1字段 | | |||
| | S2 | 运动参数套组 | K0~K4,包含默认频率、最高频率、起止频率、加减速、曲线、补偿、FOLLOW和刷新周期 | | |||
| @@ -196,11 +276,13 @@ Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1,仍应通过上板波形测试确认。 | |||
| PLSR_Start(S0路径, S1执行参数, S2参数套组, D输出轴) | |||
| ``` | |||
| Modbus实现应为S0和S1提供动态数据池。调用方在池内选择不重叠的连续区域,并把 | |||
| S0、S1首地址传给目标轴;数据块不永久绑定到轴,多个轴允许只读共享同一数据块。 | |||
| COMMIT成功时为目标轴创建不可变运行快照,随后修改原动态数据块不得影响已经启动 | |||
| 或已经提交的轴任务。除S0和S1数据块首地址动态指定外,S2、D、公共参数、命令和 | |||
| 运行状态均使用固定的Modbus保持寄存器地址。 | |||
| S0和S1由调用方在未占用数据区选择不重叠的连续首地址;数据块不永久绑定到轴,多个轴 | |||
| 允许只读共享同一数据块。COMMIT成功时为目标轴创建不可变运行快照,随后修改原动态 | |||
| 数据块不得影响已经启动或已经提交的轴任务。K0~K4固定配置和固定运行状态使用 | |||
| [PLSR地址映射](./PLSR地址映射.md)规定的信捷原地址;D只指定输出资源,不自拟固定参数地址。 | |||
| **FR-CMD-04:** PLSR指令必须支持`S0、S1、S2、D`四个操作数语义,分别表示路径数据、 | |||
| 用户执行参数、K0~K4系统运动参数组和输出资源配置。 | |||
| 每个输出轴必须提供第0~4套S2参数: | |||
| @@ -220,8 +302,8 @@ COMMIT成功时为目标轴创建不可变运行快照,随后修改原动态 | |||
| S2 的控制刷新周期只允许配置为 `1 ms` 或 `0.1 ms`。系统OS Tick保持1 ms; | |||
| 0.1 ms运动控制刷新应由独立硬件定时器触发,不得通过提高全局OS Tick实现。 | |||
| 运行中修改目标频率后, | |||
| 系统应在当前 S2 所配置的刷新周期内开始应用新目标;该指标表示调频响应时间, | |||
| 运行中修改目标频率后, 系统应在当前 S2 | |||
| 所配置的刷新周期内开始应用新目标;该指标表示调频响应时间, | |||
| 不表示脉冲输出周期。 | |||
| ### 2.5 单段与多段路径 | |||
| @@ -236,11 +318,12 @@ S2 的控制刷新周期只允许配置为 `1 ms` 或 `0.1 ms`。系统OS Tick | |||
| 下一段编号 | |||
| ``` | |||
| S0应提供与信捷每段数据等效的字段和动态引用能力,但不要求复刻HD寄存器地址: | |||
| S0应提供与信捷每段数据一致的相对布局和动态引用能力;S0首地址由调用方动态指定: | |||
| - 等待条件和等待参数均可表达常数或受支持的数据/位变量引用。 | |||
| - 跳转目标可为常数或运行时数据变量引用,范围0~100。 | |||
| - Wait时间范围1~2,147,483,647 ms,配置0时按1 ms处理;计时从本段脉冲完成后开始。 | |||
| - Wait时间范围1~2,147,483,647 ms,配置0时按1 | |||
| ms处理;计时从本段脉冲完成后开始。 | |||
| - Wait信号在本段完成后判断;若信号已有效则立即跳段,否则保持WAIT直至有效。 | |||
| - ACT从本段开始输出时计时;时间到时放弃本段剩余脉冲并跳段;若脉冲先完成则等待ACT到时。 | |||
| - EXT采用输入上升沿;运动中触发立即放弃剩余脉冲并跳段,脉冲先完成则等待后续EXT边沿。 | |||
| @@ -250,7 +333,7 @@ S0应提供与信捷每段数据等效的字段和动态引用能力,但不要 | |||
| 多段路径应满足: | |||
| | 编号 | 需求 | 优先级 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | FR-SEG-01 | 每段可独立设置有符号脉冲数量 | 必须 | | |||
| | FR-SEG-02 | 每段可独立设置目标频率 | 必须 | | |||
| | FR-SEG-03 | 段起止频率由S2和相邻段目标频率自动推导,不要求每段显式配置 | 必须 | | |||
| @@ -264,10 +347,33 @@ S0应提供与信捷每段数据等效的字段和动态引用能力,但不要 | |||
| | FR-SEG-11 | 支持从指定段号开始;跳转到自身表示有意无限循环 | 必须 | | |||
| | FR-SEG-12 | 每个实际完成或被条件切换的段均产生带轴号、段号和原因的段事件 | 必须 | | |||
| | FR-SEG-13 | 最后一段使用等待类条件时保持WAIT/运行状态,直到条件成立或STOP,不得静默结束 | 必须 | | |||
| | FR-SEG-14 | 最大路径段数固定为100;超过限制时拒绝执行并返回SEGMENT_OVERFLOW | 必须 | | |||
| 运行期间除当前目标频率外,其余路径参数修改不得影响当前任务。新参数应在 | |||
| 下一次成功提交并启动时生效。 | |||
| 每段数据增加以下逻辑字段: | |||
| | 字段 | 说明 | | |||
| | --- | --- | | |||
| | PulseCount | 有符号脉冲数量 | | |||
| | TargetFrequency | 目标频率 | | |||
| | WaitType | 等待类型 | | |||
| | WaitSourceType | 等待数据来源 | | |||
| | WaitAddress | 等待变量地址 | | |||
| | WaitParameter | 等待参数 | | |||
| | JumpType | 跳转来源 | | |||
| | JumpAddress | 跳转变量地址 | | |||
| | NextSegment | 下一段编号 | | |||
| 支持: | |||
| - 常量等待; | |||
| - 输入等待; | |||
| - 数据变量等待; | |||
| - 动态跳转; | |||
| - 条件循环。 | |||
| ### 2.6 加减速与段内变频 | |||
| 系统应支持: | |||
| @@ -305,10 +411,25 @@ S0应提供与信捷每段数据等效的字段和动态引用能力,但不要 | |||
| ### 2.8 运行控制 | |||
| #### 2.8.1 PLSR启动触发规则 | |||
| PLSR启动采用上升沿触发方式。 | |||
| | 编号 | 需求 | 优先级 | | |||
| | --- | --- | --- | | |||
| | FR-CMD-01 | PLSR启动必须检测启动信号上升沿 | 必须 | | |||
| | FR-CMD-02 | 启动成功后,解除启动条件不会影响当前任务 | 必须 | | |||
| | FR-CMD-03 | 已经接受的任务必须锁存执行参数,不受原参数区修改影响 | 必须 | | |||
| 禁止: | |||
| - 启动信号持续有效导致重复启动; | |||
| - 通信结束或调用返回导致运动停止。 | |||
| 系统至少应支持以下命令: | |||
| | 命令 | 行为 | 优先级 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | START | 校验并启动任务 | 必须 | | |||
| | STOP_DECEL | 按减速曲线停止 | 必须 | | |||
| | STOP_IMMEDIATE | 完成本次有效脉冲后关闭输出 | 必须 | | |||
| @@ -325,13 +446,69 @@ S0应提供与信捷每段数据等效的字段和动态引用能力,但不要 | |||
| 命令边界行为: | |||
| - IDLE 状态收到 START 时,校验通过后接受。 | |||
| - 运行、减速、等待或暂停状态再次收到 START 时拒绝执行,不重启任务,也不要求返回BUSY。 | |||
| - 运行、减速、等待或暂停状态再次收到 START | |||
| 时拒绝执行,不重启任务,也不要求返回BUSY。 | |||
| - ERROR 状态收到 START 时,应拒绝执行,必须先清除错误。 | |||
| - 相同命令序号重复到达时,应返回上次结果,不得重复执行运动。 | |||
| - 多次 STOP_IMMEDIATE 应按幂等命令处理。 | |||
| - CLEAR_POSITION、SET_POSITION 和 CLEAR_TOTAL 在运行期间应被拒绝。 | |||
| - 发生数值溢出时应报告错误,不得依赖整数回绕。 | |||
| #### 2.8.2 参数修改生效规则 | |||
| 运行过程中参数修改规则: | |||
| | 参数 | 运行中修改 | | |||
| | --- | --- | | |||
| | 目标频率 | 允许,立即生效 | | |||
| | STOP命令 | 允许 | | |||
| | PAUSE命令 | 允许 | | |||
| | 方向 | 禁止 | | |||
| | 脉冲数量 | 禁止 | | |||
| | 路径段数据 | 禁止 | | |||
| | 输出模式 | 禁止 | | |||
| | 输出点配置 | 禁止 | | |||
| | 加减速参数 | 下一次启动生效 | | |||
| 启动时必须生成不可变运行快照。 | |||
| **FR-PUL-23:** 运行过程中禁止直接修改方向;必须终止当前任务后重新提交并启动。 | |||
| #### 2.8.3 PAUSE、RESUME、STOP语义 | |||
| ##### PAUSE | |||
| 暂停要求: | |||
| 1. 按当前减速曲线降低速度; | |||
| 2. 输出频率降为0; | |||
| 3. 保存当前段号; | |||
| 4. 保存剩余脉冲数量; | |||
| 5. 等待RESUME。 | |||
| ##### RESUME | |||
| 恢复: | |||
| - 从暂停位置继续执行; | |||
| - 不重新加载路径; | |||
| - 不重新计算已完成段。 | |||
| ##### STOP_DECEL | |||
| 减速停止: | |||
| - 按当前减速曲线停止; | |||
| - 当前任务结束。 | |||
| ##### STOP_IMMEDIATE | |||
| 立即停止: | |||
| - 完成本次有效脉冲输出后关闭; | |||
| - 锁存停止原因; | |||
| - 不自动恢复。 | |||
| ### 2.9 状态机与状态监控 | |||
| PLSR 至少应包含以下状态: | |||
| @@ -364,7 +541,29 @@ ERROR 错误 | |||
| - 当前段已发送脉冲数,以及最近一次段事件的轴号、段号和结束原因。 | |||
| 绝对模式目标等于当前累计位置时不得输出脉冲;完成状态不得依赖必须出现一次 | |||
| “运行标志下降沿”,应直接返回零位移完成结果。 | |||
| "运行标志下降沿",应直接返回零位移完成结果。 | |||
| 增加 PLC 用户可观察状态: | |||
| | 状态 | 说明 | | |||
| | --- | --- | | |||
| | BUSY | 当前轴存在已接受但尚未终止的任务,包括运动、WAIT和PAUSED | | |||
| | PULSE_ACTIVE | 当前物理脉冲正在输出;WAIT和PAUSED期间为0 | | |||
| | DONE | 当前任务正常完成并锁存 | | |||
| | WAIT | 当前任务正在等待段条件 | | |||
| | ERROR | 当前任务异常结束并锁存错误 | | |||
| #### 2.9.1 DONE定义 | |||
| 采用方案A: | |||
| - 运动正常完成后 DONE 置1; | |||
| - DONE保持有效; | |||
| - 下一次 START 成功接受后清零; | |||
| - DONE 不依赖 BUSY 下降沿。 | |||
| - STOP_DECEL、STOP_IMMEDIATE和ERROR结束不得置DONE。 | |||
| **FR-STA-01:** DONE只表示正常完成,并按上述方案A产生、保持和清零。 | |||
| ### 2.10 Modbus 通信 | |||
| @@ -392,9 +591,9 @@ ERROR 错误 | |||
| 8. 协议应包含版本号,新增字段时不得改变既有寄存器语义。 | |||
| PLSR内存地址、数据类型和固定占用规则见 | |||
| [PLSR地址映射](./PLSR地址映射.md);Modbus报文、访问权限和提交规则另见 | |||
| [PLSR Modbus通信协议](./PLSR_Modbus通信协议.md)。地址分配必须避开现有演示、 | |||
| Backup SRAM保持区。原Modbus通信历史功能不纳入PLSR版本,原历史寄存器区域释放给 | |||
| [PLSR地址映射](./PLSR地址映射.md)。地址分配必须避开现有演示、 | |||
| Backup | |||
| SRAM保持区。原Modbus通信历史功能不纳入PLSR版本,原历史寄存器区域释放给 | |||
| S0/S1动态数据池使用。 | |||
| ### 2.11 参数与累计数据保存 | |||
| @@ -411,20 +610,22 @@ S0/S1动态数据池使用。 | |||
| 保存规则如下: | |||
| 1. 固定配置参数使用内部 Flash 保存。 | |||
| 2. 动态参数、累计位置和第0套动态S2参数使用有VBAT维持的 Backup SRAM 保存。 | |||
| 2. 动态参数、累计位置和第0套动态S2参数使用有VBAT维持的 Backup SRAM | |||
| 保存。 | |||
| 3. 不得每个脉冲写 Flash。 | |||
| 4. 正常完成、正常停止、清零和设置位置后,应保存一致累计值。 | |||
| 5. SAVE_CONFIG 返回成功后,重新上电必须完整恢复固定配置。 | |||
| 6. 重新上电不得自动继续未完成运动。 | |||
| 7. 异常掉电或异常复位后可恢复最近检查点供诊断,但必须清除 `position_valid`。 | |||
| 7. 异常掉电或异常复位后可恢复最近检查点供诊断,但必须清除 | |||
| `position_valid`。 | |||
| 8. 重新清零、设置当前位置或完成回零前,禁止绝对定位。 | |||
| 9. 任意掉电瞬间零脉冲误差恢复需要额外硬件,Backup SRAM单独不能保证。 | |||
| 测试报告应记录板卡是否安装 VBAT 以及最终采用的数据恢复等级。 | |||
| XDM-60T4-E 已确认安装有效 VBAT,Backup SRAM 可用于保持动态检查点; | |||
| 测试报告应记录板卡是否安装 VBAT 以及最终采用的数据恢复等级。 XDM-60T4-E | |||
| 已确认安装有效 VBAT,Backup SRAM 可用于保持动态检查点; | |||
| 当前逻辑位置必须具有独立的 `position_valid` 标志。 | |||
| ### 2.11.1 信捷等效脉冲公共参数 | |||
| #### 2.11.1 信捷等效脉冲公共参数 | |||
| 每个轴必须提供以下与PLSR直接相关的公共参数,字段地址严格采用 | |||
| [PLSR地址映射](./PLSR地址映射.md)中的信捷原地址,不得采用自定义轴块偏移: | |||
| @@ -463,11 +664,30 @@ XDM-60T4-E 已确认安装有效 VBAT,Backup SRAM 可用于保持动态检查 | |||
| 外部诊断和测试至少包括: | |||
| - 使用示波器或逻辑分析仪测量输出频率。 | |||
| - 统计实际脉冲边沿数量。 | |||
| - 检查占空比和方向建立时间。 | |||
| - 检查梯形、S 形和正弦曲线。 | |||
| - 进行连续运行和频繁启停压力测试。 | |||
| | 诊断项 | 要求 | | |||
| | --- | --- | | |||
| | 软件累计脉冲 | 记录实际发送数量 | | |||
| | 硬件边沿计数 | 记录输出实际边沿 | | |||
| | 差值诊断 | 判断输出异常 | | |||
| | 频率记录 | 保存当前和最高频率 | | |||
| | 段事件记录 | 记录结束原因 | | |||
| 用于定位: | |||
| - 参数错误; | |||
| - 状态机错误; | |||
| - 定时器异常; | |||
| - 输出资源异常。 | |||
| ### 2.13 安全与异常处理 | |||
| - 上电、复位、HardFault 和看门狗复位时,脉冲输出必须保持无效。 | |||
| @@ -476,7 +696,8 @@ XDM-60T4-E 已确认安装有效 VBAT,Backup SRAM 可用于保持动态检查 | |||
| - 清除错误不得自动重新启动未完成运动。 | |||
| - 配置限位输入后,限位有效时应禁止向该方向启动,但允许反向离开限位。 | |||
| - 运动中限位触发默认执行减速停止。 | |||
| - V1.0 急停没有外部硬件切断回路;急停输入由软件立即禁止脉冲输出并锁存状态。 | |||
| - V1.0 | |||
| 急停没有外部硬件切断回路;急停输入由软件立即禁止脉冲输出并锁存状态。 | |||
| - 软件急停不具备独立硬件安全回路的故障容错能力,不得宣称为安全认证急停。 | |||
| 至少应定义以下错误: | |||
| @@ -500,12 +721,44 @@ Flash数据无效或保存失败 | |||
| 内部计数异常 | |||
| ``` | |||
| 运动控制事件优先级: | |||
| 急停 | |||
| > | |||
| 硬限位 | |||
| > | |||
| STOP_IMMEDIATE | |||
| > | |||
| STOP_DECEL | |||
| > | |||
| PAUSE | |||
| > | |||
| 正常运行 | |||
| 要求: | |||
| - 高优先级事件不能被低优先级命令覆盖; | |||
| - 错误清除后禁止自动恢复运动。 | |||
| ### 2.13.1 错误码补充 | |||
| 新增: | |||
| | 错误码 | 说明 | | |||
| | --- | --- | | |||
| | DEFAULT_SPEED_INVALID | 默认速度非法 | | |||
| | SEGMENT_OVERFLOW | 路径段数超过100 | | |||
| | OUTPUT_MODE_INVALID | 输出模式非法 | | |||
| | RESOURCE_CONFLICT | 输出资源冲突 | | |||
| | PARAMETER_LOCKED | 运行参数禁止修改 | | |||
| | DONE_STATE_ERROR | 完成状态异常 | | |||
| ## 3 性能需求 | |||
| ### 3.1 脉冲性能 | |||
| | 编号 | 性能项 | 验收指标 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | PR-01 | 保证频率范围 | 1 Hz~100 kHz | | |||
| | PR-02 | 固定频率误差 | 使用可实现的最佳定时器分频值,记录目标值、实际值及误差,不设统一百分比限值 | | |||
| | PR-03 | 正常完成脉冲误差 | 0 个脉冲 | | |||
| @@ -520,7 +773,7 @@ Flash数据无效或保存失败 | |||
| 设计评审并记录原因: | |||
| | 编号 | 性能项 | 初始指标 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | PR-RT-01 | 控制更新周期 | S2 可配置为 1 ms 或 0.1 ms | | |||
| | PR-RT-02 | 脉冲产生 | 由硬件定时器维持,不受 OS 调度影响 | | |||
| | PR-RT-03 | 脉冲级中断最坏执行时间 | 实测并记录,不得导致脉冲数量错误 | | |||
| @@ -532,7 +785,7 @@ Flash数据无效或保存失败 | |||
| ### 3.3 可靠性 | |||
| | 编号 | 性能项 | 验收指标 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | PR-REL-01 | 连续运行 | 测试时长由测试方案确定,运行期间不得出现计数错误或任务失联 | | |||
| | PR-REL-02 | 频繁启停 | 不产生额外脉冲和非法状态转换 | | |||
| | PR-REL-03 | 异常参数 | 拒绝执行且不影响当前合法任务 | | |||
| @@ -542,7 +795,8 @@ Flash数据无效或保存失败 | |||
| ### 3.4 工程单位与换算边界 | |||
| - PLSR内核同时支持脉冲模式和当量模式,当量单位为1 μm、0.01 mm、0.1 mm或1 mm。 | |||
| - PLSR内核同时支持脉冲模式和当量模式,当量单位为1 μm、0.01 mm、0.1 | |||
| mm或1 mm。 | |||
| - 当量模式根据每转指令脉冲数和每转移动量换算频率与脉冲数量。 | |||
| - 换算层必须定义舍入方式并保存累计余数,连续多段运动不得持续产生单向舍入漂移。 | |||
| - 上位机仍可提前换算,但不得成为使用工程单位的唯一途径。 | |||
| @@ -553,7 +807,7 @@ Flash数据无效或保存失败 | |||
| ### 4.1 验收要求 | |||
| | 编号 | 验收项 | 合格标准 | | |||
| |---|---|---| | |||
| | --- | --- | --- | | |||
| | AT-01 | 固定频率 | 1 Hz~100 kHz 使用最佳定时器分频值,并记录实际误差 | | |||
| | AT-02 | 固定脉冲数 | 正常完成误差为 0 个 | | |||
| | AT-03 | 正反转 | 方向电平和脉冲数量正确 | | |||
| @@ -568,13 +822,27 @@ Flash数据无效或保存失败 | |||
| | AT-12 | 重复命令 | 相同命令序号不产生重复运动 | | |||
| | AT-13 | 掉电恢复 | 不自动运动,位置有效性符合恢复等级 | | |||
| | AT-14 | 上电安全 | 上电和复位期间无意外脉冲 | | |||
| | AT-17 | 四轴独立运行 | 四轴可独立启动、停止、调频,状态和累计数据互不串扰 | | |||
| | AT-18 | AB 相输出 | 两个AB轴可独立运行;采用x4计数,完整周期4个计数边沿,方向、频率和数量正确 | | |||
| | AT-17 | 四轴独立运行 | 四轴同时以100 kHz运行时无丢脉冲、重复脉冲和异常周期,且状态和累计数据互不串扰 | | |||
| | AT-18 | AB 相输出 | 两个AB轴可独立运行;一个完整正交周期计1个指令脉冲,周期频率、相位方向和数量正确 | | |||
| | AT-19 | S0等待与跳转 | 六种等待条件、动态参数来源、提前/延后触发和0/指定/自身跳转语义与信捷一致 | | |||
| | AT-20 | 公共参数 | 单位换算、软限位、方向延时、齿隙补偿和FOLLOW参数均通过测试 | | |||
| | AT-21 | 零值及边界 | INT32最小值、频率0、脉冲数0和绝对零位移行为完成对标测试 | | |||
| | AT-21 | 零值及边界 | INT32最小值、频率0、脉冲数0跳段和绝对零位移行为符合本规格 | | |||
| | AT-22 | 段事件和监控 | 每段事件、运行标志、当前段计数和累计计数可被稳定读取 | | |||
| 新增测试: | |||
| - FR-TEST-01四轴100 kHz并发测试; | |||
| - PLSR启动上升沿测试; | |||
| - BUSY/DONE状态测试; | |||
| - DONE保持及清零测试; | |||
| - PULSE/DIR测试; | |||
| - AB相测试; | |||
| - CW/CCW测试; | |||
| - PAUSE/RESUME测试; | |||
| - STOP优先级测试; | |||
| - 参数运行修改测试; | |||
| - 输出诊断一致性测试。 | |||
| 正式测试应使用开发板、逻辑分析仪和PC Modbus测试工具,并记录测试固件、 | |||
| 参数、接线、测量设备、原始波形和测试结论。 | |||
| @@ -591,33 +859,19 @@ Flash数据无效或保存失败 | |||
| - 上位机调试或测试工具。 | |||
| - 示例程序和使用说明。 | |||
| ### 4.3 开发周期 | |||
| 项目周期按任务书要求控制为 4 周: | |||
| | 周期 | 主要工作 | 周交付物 | | |||
| |---|---|---| | |||
| | 第 1 周 | 确认定时器映射;完成单段频率、计数和方向 | 定时器驱动、单段演示、基础波形 | | |||
| | 第 2 周 | 完成定位、状态机、梯形曲线、调用模式和调频 | PLSR 核心模块、单轴测试记录 | | |||
| | 第 3 周 | 完成多段、衔接模式、等待跳转、S 形、Modbus 和保存 | 多段演示、协议草案、恢复测试 | | |||
| | 第 4 周 | 完成正弦曲线、诊断、压力测试、修复和文档 | 交付固件、设计书、测试报告 | | |||
| 如果硬件映射、伺服接口或验收条件在第 1 周结束前仍未确认,应从关键条件 | |||
| 冻结之日重新评估四周周期。 | |||
| ### 4.4 后续版本或加分项 | |||
| ### 4.3 后续版本或加分项 | |||
| - 完整机械回零。 | |||
| ### 4.5 不在当前范围内 | |||
| ### 4.4 不在当前范围内 | |||
| - 编码器闭环控制和位置误差修正。 | |||
| - 多轴直线或圆弧插补。 | |||
| - 电子凸轮和龙门同步。 | |||
| - 完整复制信捷 PLSR、PLSF、DRVI、DRVA、ZRN、STOP 和 GOON 语法。 | |||
| - 兼容信捷专用软元件地址和 XDPPro 界面。 | |||
| - XDPPro参数配置界面兼容。 | |||
| ### 4.6 实施验证事项 | |||
| ### 4.5 实施验证事项 | |||
| 以下事项不改变V1.0需求范围,属于设计、实现和上板验收阶段需要验证的内容: | |||
| @@ -626,7 +880,7 @@ Flash数据无效或保存失败 | |||
| 3. 两个 AB 轴的定时器/DMA同步方案及上板波形验证。 | |||
| 4. 四轴100 kHz并发及0.1 ms控制刷新时的CPU和中断资源实测结果。 | |||
| 5. Backup SRAM检查点的具体更新时机和诊断数据允许损失量。 | |||
| 6. 信捷PLSR段脉冲数为0时的确切输出与终止语义。 | |||
| 6. 段脉冲数为0时无脉冲输出、跳过当前段并正确进入下一段或完成任务。 | |||
| ## 5 参考资料 | |||
| @@ -634,7 +888,7 @@ Flash数据无效或保存失败 | |||
| 2. [实现 PLSR 指令](./实现PLSR指令.pdf) | |||
| 3. [信捷 XD/XL 系列 PLC 定位控制手册](./信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf) | |||
| 4. [C 语言规范](../c语言规范.pdf) | |||
| 5. 当前工程 `Core`、`Modbus`、`Middlewares`、`EWARM` 和 `HostComputer` 目录 | |||
| 5. 当前工程 `Core`、`Modbus`、`Middlewares`、`EWARM` 和 `HostComputer` | |||
| 目录 | |||
| 6. [PLSR地址映射](./PLSR地址映射.md) | |||
| 7. [PLSR Modbus通信协议](./PLSR_Modbus通信协议.md) | |||
| 7. [PLSR信捷对标追踪矩阵](./PLSR信捷对标追踪矩阵.md) | |||