4. PROFIdrive报文结构与状态机
PROFIdrive报文是SINAMICS驱动器与上位控制器之间周期数据交换的“语言”。报文本身并不神秘,它本质上是一段固定长度、固定含义的PZD(过程数据)字节序列,其中每个位、每个字都对应驱动器内部的一个参数或状态。理解报文结构,就是理解“控制器发什么、驱动器回什么、这些位如何驱动状态机”。
一、标准报文的帧格式与适用场景
PROFIdrive为不同应用定义了多种标准报文,常用类型包括1、2、3、5、102等。它们的区别在于PZD长度和内容组织:
- 标准报文1(PZD2/2):2个字输出(STW1、NSOLL_A)+ 2个字输入(ZSW1、NIST_A)。适用于基本转速控制,是最精简的闭环结构。
- 标准报文2(PZD4/4):在报文1基础上增加2个字,通常用于带附加设定值或实际值的场合,如转矩限幅、附加编码器值。
- 标准报文3(PZD2/2,含位置):常用于定位控制,输出含STW1和位置设定,输入含ZSW1和位置实际值。
- 标准报文5(PZD4/4):与报文3类似但扩展了附加数据,适合复杂定位或同步应用。
- 标准报文102(PZD6/6):用于安全集成或扩展工艺,包含更多控制字和状态字,如STW1、STW2、MOMRED等。
选择报文时,核心依据是:控制对象需要几个设定值、反馈需要几个实际值、是否涉及安全或位置控制。报文长度一旦确定,PLC的I/O地址映射和SINAMICS的互联参数(如P0922)就必须一致,否则会出现“数据错位”或“控制字无效”。
二、控制字STW1与状态字ZSW1的位定义
控制字STW1是控制器发给驱动器的“命令字”,状态字ZSW1是驱动器回给控制器的“反馈字”。以标准报文1为例,STW1的常用位定义如下:
| 位 | 名称 | 含义 |
|---|---|---|
| 0 | ON/OFF1 | 0=OFF1停车,1=运行使能 |
| 1 | OFF2 | 0=自由停车,1=正常运行 |
| 2 | OFF3 | 0=快速停车,1=正常运行 |
| 3 | 脉冲使能 | 0=禁止脉冲,1=使能脉冲 |
| 4 | 斜坡函数发生器使能 | 0=禁止,1=使能 |
| 5 | 斜坡函数发生器继续 | 0=保持,1=继续 |
| 6 | 设定值使能 | 0=禁止,1=使能 |
| 7 | 故障复位 | 0→1上升沿复位故障 |
| 8 | 点动1 | 0=停止,1=点动 |
| 9 | 点动2 | 0=停止,1=点动 |
| 10 | PLC控制 | 0=由PLC控制,1=由本地控制 |
| 11 | 反转 | 0=正转,1=反转 |
| 12 | 未使用 | — |
| 13 | 电动电位计升 | 0=停止,1=升速 |
| 14 | 电动电位计降 | 0=停止,1=降速 |
| 15 | CDS位0 | 命令数据组选择 |
状态字ZSW1的位定义与STW1形成对应关系:
| 位 | 名称 | 含义 |
|---|---|---|
| 0 | 准备接通 | 1=驱动器准备好,可以接收ON命令 |
| 1 | 准备运行 | 1=运行准备就绪 |
| 2 | 运行使能 | 1=运行使能已激活 |
| 3 | 故障 | 1=存在故障 |
| 4 | OFF2无效 | 1=OFF2未激活 |
| 5 | OFF3无效 | 1=OFF3未激活 |
| 6 | 禁止接通 | 1=禁止接通 |
| 7 | 报警 | 1=存在报警 |
| 8 | 设定值-实际值偏差 | 1=在容差范围内 |
| 9 | PLC控制请求 | 1=请求PLC控制 |
| 10 | 达到设定值 | 1=实际值达到设定值 |
| 11 | I²t过载 | 1=电机过载预报警 |
| 12 | 制动打开 | 1=制动器已打开 |
| 13 | 电机过载 | 1=电机过载报警 |
| 14 | 电机正转 | 1=电机正转运行 |
| 15 | 电机反转 | 1=电机反转运行 |
实际编程时,PLC通常用“控制字模板”来组织这些位。例如,要让驱动器以正转、斜坡使能、设定值使能的方式启动,STW1应写入十六进制0x047F(二进制0000 0100 0111 1111),即:位0=1、位1=1、位2=1、位3=1、位4=1、位5=1、位6=1、位7=0、位8=0、位9=0、位10=1、位11=0。这个值在西门子PLC中常写作W#16#047F。
三、状态机转换条件
PROFIdrive状态机描述了驱动器从“接通禁止”到“运行”的完整路径。核心状态包括:S1(接通禁止)、S2(准备接通)、S3(准备运行)、S4(运行)、S5(快速停车)、S6(自由停车)等。转换条件由STW1的位组合决定:
- S1→S2:ZSW1.6=0(无禁止接通)且ZSW1.0=1(准备接通)。
- S2→S3:STW1.0=1(ON/OFF1)且STW1.1=1(OFF2)且STW1.2=1(OFF3)。
- S3→S4:STW1.3=1(脉冲使能)且STW1.4=1(斜坡使能)且STW1.6=1(设定值使能)。
- S4→S5:STW1.2=0(OFF3触发),驱动器按快速停车斜坡制动。
- S4→S6:STW1.1=0(OFF2触发),驱动器自由停车,脉冲立即封锁。
- 任意状态→S1:STW1.7=1(故障复位)且故障已消除。
这些转换条件不是“建议”,而是驱动器内部逻辑的硬性判断。如果STW1的位顺序写错,例如先给脉冲使能再给ON命令,驱动器会停留在S2或S3,ZSW1.0和ZSW1.1会给出明确反馈,帮助定位问题。
四、SINAMICS参数映射
报文中的每个PZD字,最终都映射到SINAMICS的参数连接器(BICO)。以标准报文1为例:
- STW1 → r2090.0~r2090.15(控制字1的位)
- NSOLL_A → r2050.1(转速设定值)
- ZSW1 → r2089.0~r2089.15(状态字1的位)
- NIST_A → r2050.2(转速实际值)
在SINAMICS中,报文选择通过P0922参数完成。例如P0922=1对应标准报文1,P0922=2对应标准报文2,P0922=102对应标准报文102。选择后,驱动器会自动配置BICO互联,但用户仍需检查关键参数:P0840(ON/OFF1)、P0844(OFF2)、P0845(OFF3)、P0852(脉冲使能)、P1140(斜坡使能)、P1141(斜坡继续)、P1142(设定值使能)等是否与报文位对应。如果使用自由报文(P0922=999),则需要手动逐位互联。
从图中可以清晰看到:PLC发出的STW1位通过PZD通道进入驱动器,映射到r2090,再经BICO互联驱动P0840等参数;驱动器状态机根据这些位在S1~S6之间转换,最终通过ZSW1将当前状态回传给PLC。整个闭环中,任何一个位写错或互联遗漏,都会导致状态机停在某个中间状态,而ZSW1的反馈位就是最直接的诊断依据。
掌握报文结构、控制字/状态字位定义、状态机转换条件和SINAMICS参数映射,是PROFIdrive通信调试的基本功。实际工程中,建议先以标准报文1跑通基本启停,再根据工艺需求切换到报文2、3、5或102,并逐项核对BICO互联,避免“报文选对但位接错”的低级问题。