协议版本:V1.0
地址表修订:R5
目标平台:XDM-60T4-E
对标依据:信捷XD/XL系列PLC定位控制手册
对应需求:PLSR需求规格统计.mdR5变更:取消Modbus通信历史区;S0、S1改为在1000~9199数据池中运行时指定首地址
的动态数据块;其余PLSR参数和状态固定映射到Modbus保持寄存器。取消固定S0槽和
每轴内嵌S1数据。
R4变更:已定义固定字段的PLSR地址标记为已占用;仅未定义字段的扩展区保持保留。
R3变更:区分工程已占用地址和PLSR推荐预留地址。
R2变更:区分可选操作数、固定相对布局和信捷固定软元件地址;增加Y0~Y3公共参数、
K0~K4参数组及运行状态地址与本项目Modbus字段的逐项对应表。
本文所有地址均为Modbus PDU中的零基地址。例如:
| 本文地址 | 传统4xxxx写法 |
|---|---|
| 200 | 40201 |
| 5160 | 45161 |
上位机如果使用“地址从1开始”显示,应在本文地址基础上加1。代码、报文和测试用例
统一使用本文零基地址,禁止直接把40201作为PDU地址发送。
0x10一次写完,禁止拆成多个0x06后立即触发。示例:32位数0x12345678从地址A开始保存为:
A+0 = 0x1234
A+1 = 0x5678
| 标记 | 含义 |
|---|---|
| RO | 只读,主站写入应返回非法数据地址或非法数据值 |
| RW-S | 影子参数可读写,COMMIT成功后才进入运行配置 |
| RW-L | 运行时可读写,按字段定义立即或在控制周期内生效 |
| WO-T | 只写触发字段;写入后产生一次命令处理 |
| RES | 保留,读回0,写入拒绝 |
当前工程的通用Modbus数组尚未实施字段级读写权限。接入PLSR时必须增加地址权限校验,
不能仅依赖文档约束上位机。
COMMIT_AXIS命令。ACTIVE_GENERATION。SET_TARGET_FREQUENCY命令。本协议区分三类地址,不得混为一谈:
S0_BASE_ADDRESS和S1_BASE_ADDRESS保存其运行时首地址;S0、S1数据本身不固定。SELECTED_S2选择K0~K4。因此,“对标信捷固定地址”表示每个信捷字段都能唯一映射到本项目字段并保持等效语义,
不表示主站可以把SFD900直接当作Modbus地址900访问。若后续需要兼容信捷软元件编号,
应增加独立的地址转换层;已经实施并冻结的Modbus PDU地址不得直接改义。
工程标准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的
物理地址兼容模式。
| 地址 | 名称 | 类型 | 权限 | 说明 |
|---|---|---|---|---|
| 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 | 保留 |
| 位 | 含义 |
|---|---|
| 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 | 保留 |
| 值 | 命令 | 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 | - | 确认并清除最近事件锁存 |
| 值 | 名称 | 含义 |
|---|---|---|
| 0 | IDLE | 尚未处理命令 |
| 1 | ACCEPTED | 已接受,异步执行中 |
| 2 | SUCCESS | 执行成功 |
| 3 | REJECTED | 命令被拒绝,查看错误码 |
| 4 | DUPLICATE | 相同序号,未重复执行并返回上次结果 |
CMD_SEQUENCE为16位循环序号。主站发送新命令时递增,通信重试必须保持原序号。
从站缓存最近序号及完整结果;相同序号不得再次产生运动。
每轴占160个保持寄存器:
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 |
下表给出信捷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 |
| 偏移 | 名称 | 类型 | 权限 | 说明 |
|---|---|---|---|---|
| +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数据块不得重叠,活动写入也不得破坏其他轴正在提交的数据。
| 偏移 | 名称 | 类型 | 权限 | 说明 |
|---|---|---|---|---|
| +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 | 本项目资源冲突检查增强字段 |
每轴有5套S2,每套16个寄存器:
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 | 保留 |
编码与信捷配置语义对应:
| 值 | 单位 |
|---|---|
| 0 | 脉冲个数/Hz |
| 1 | 1 μm |
| 3 | 0.01 mm |
| 5 | 0.1 mm |
| 7 | 1 mm |
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引脚由板型适配表定义。
状态读取应采用快照:从站更新所有多字字段后最后递增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 | 状态快照序号,最后更新 |
| 值 | 状态 |
|---|---|
| 0 | UNINITIALIZED |
| 1 | IDLE |
| 2 | ACCEL |
| 3 | RUN |
| 4 | DECEL |
| 5 | WAIT |
| 6 | PAUSED |
| 7 | COMPLETED |
| 8 | STOPPED |
| 9 | ERROR |
| 位 | 含义 |
|---|---|
| 0 | 指令活动,包括运动、等待和暂停 |
| 1 | 物理脉冲正在输出 |
| 2 | 正方向 |
| 3 | AB模式 |
| 4 | 位置有效 |
| 5 | 正硬限位有效 |
| 6 | 负硬限位有效 |
| 7 | 正软限位到达 |
| 8 | 负软限位到达 |
| 9 | 急停锁存 |
| 10 | 影子配置已修改但未提交 |
| 11 | 活动配置有效 |
| 12~15 | 保留 |
| 值 | 原因 |
|---|---|
| 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 |
S0和S1不设置固定数据块地址。主站在1000~9199范围内自行选择不重叠的连续区域,
写入数据后,把首地址分别写入目标轴的S0_BASE_ADDRESS和S1_BASE_ADDRESS。
动态数据池共8200个保持寄存器,可容纳至少4个满100段的S0数据块、4个S1数据块,
并保留余量。数据池地址已经由PLSR占用,其他模块不得用于通信历史或其他功能。
分配必须满足:
10+段数×10个寄存器,范围不得越过9199。AXIS_SHADOW_GENERATION并发送COMMIT_AXIS。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。
| S0偏移 | 名称 | 类型 | 权限 | 说明 |
|---|---|---|---|---|
| +0~+1 | SEGMENT_COUNT | U32 | RW-S | 1~100 |
| +2~+9 | RESERVED | - | RES | 对标信捷保留8个寄存器 |
段号N取1~100:
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。
| 值 | 条件 | 行为 |
|---|---|---|
| 0 | PULSE_COMPLETE | 本段数量完成后跳转 |
| 1 | WAIT_TIME | 完成后等待指定毫秒数,0按1 ms |
| 2 | WAIT_SIGNAL | 完成后等待位信号有效 |
| 3 | ACT_TIME | 从段开始计时,到时放弃剩余脉冲并跳转 |
| 4 | EXT_SIGNAL | 输入上升沿到来时跳转;若脉冲先完成则等待边沿 |
| 5 | EXT_OR_COMPLETE | EXT边沿或脉冲完成先到者触发跳转 |
| 值 | 来源 | 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条件只允许有效的外部输入来源。
| 值 | 来源 |
|---|---|
| 0 | CONSTANT |
| 1 | HOLDING_VOLATILE |
| 2 | HOLDING_BACKUP |
| 3 | HOLDING_FLASH |
跳转值范围0~100:
动态跳转变量在发生段转换时读取。超出范围应进入ERROR,不得越界访问S0。
为对标信捷“正在发脉冲标志”等位状态,每轴分配16个只读线圈:
该线圈范围已经定义固定状态字段,属于PLSR已占用的线圈地址。其他模块不得覆盖;代码
接入前仍须扫描现有线圈使用情况,若发现历史冲突,必须升级地址表修订号后整体调整。
线圈只是兼容性只读镜像,权威状态全部位于每轴保持寄存器实时状态区;不读取线圈也能
取得完整PLSR状态。
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写入。
INSTRUCTION_ACTIVE与PULSE_ACTIVE,可区分运动和等待。