Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

30 KiB

PLSR Modbus通信协议

协议版本:V1.0
地址表修订:R5
目标平台:XDM-60T4-E
对标依据:信捷XD/XL系列PLC定位控制手册
对应需求: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开始保存为:

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_ADDRESSS1_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个保持寄存器:

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_SEQUENCESEGMENT_EVENT_NUMBERSEGMENT_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个寄存器:

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_ADDRESSS1_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:

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状态。

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。
这些线圈必须在协议处理层拒绝功能码0x050x0F写入。

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_ACTIVEPULSE_ACTIVE,可区分运动和等待。
  • 快照序号保证多字状态一致。
  • AB相x4计数、两轴AB以及混合输出资源检查。

8. 实现前检查