这段时间帮人开发一个变频器的profibus产品,结果遇到一些概念性的问题,记下来以便今后使用,profidrive是profibus在驱动器领域的应用(profile),它主要规定了在驱动过程中传输数据的格式,
PKW是控制数据。PZD是过程数据。两者都可以读写。在目前的版本中,PKW已经被废弃了,只有PZD,不过由于兼容性的原因在一些profibus的应用上还会有这个东西。先说说PPO。这个实际就是对数据结构的定义。
PKW是控制数据。PZD是过程数据。两者都可以读写。在Profibus中规定了这两种数据的格式。在目前使用的版本中,PKW已经被废弃了,只有PZD,不过由于兼容性的原因在一些profibus的应用上还会有这个东西。PKW是一种周期性传输的数据,并且只能传输一个数据,PZD的读写和数据定义是在参数化过程中预先定义好的,在传输中在输出缓冲区写好,设备就能传输给下面的设备,同理读入的数据也是设备先读好再传输到profibus的输入缓冲区。而PKW的格式稍微复杂一点,占用了八个字节,由4个字组成。定义了数据的读出/写入,数据的寄存器号,以及数据的读写内容。再来说说PPO。这个实际就是对Profibus传输I/O数据结构的定义。规范中定义了PPO1-PPO5五种数据格式。每种格式由PKW(可能没有)和PZD报文构成,PKW在前面,占四个字节,如果是PPO3,PPO4两种报文就没有PKW,其关系参加下表:
PKW | PZD | ||||||||||||
PKE | IND | PWE | PZD1 STW ZSW | PZD2 HSW HIW | PZD3 | PZD4 | PZD5 | PZD6 | PZD7 | PZD8 | PZD9 | PZD10 | |
1st word | 2nd word | 3rd word | 4th word | 1st word | 2nd word | 3rd word | 4th word | 5th word | 6th word | 7th word | 8th word | 9th word | 10th word |
PPO1 |
| ||||||||||||
PPO2 |
| ||||||||||||
| PPO3 |
| |||||||||||
PPO4 |
| ||||||||||||
PPO5 |
从表中看出PZD1和PZD2是比较重要的,每种报文都支持,在变频器的应用中其实对应的是变频器的控制和频率参数。STW在输出报文中是指控制命令,ZSW在输入报文中表示实际的状态,主要是指变频器的启停和正反转,HSW在输出报文中指频率设定值,HIW在输入报文中指实际频率值,PZD1-PZD10的读写请求和寄存器号是在Parameter中定义的,每个PZD在参数化数据中占三位,第一位是功能码(读/写)第二三位是寄存器号,占用16位。具体在GSD文件中都有详细的定义,可以参照GSD文件。下面重点说一下PKW.
PKW数据结构:
Word 1 | 参数 ID (PKE) | ||
| 15 12 | 11 | 10 0 |
AK | SPM | 参数号码 (PNU) | |
Word 2 | 参数子索引 (IND) | ||
| 15 8 | 7 0 | |
Word 3 | PWE1 在 CME-PD01 为保留 | ||
Word 4 | PWE2 读写参数值 |
参数PKE由参数号和功能码构成。BIT11为保留位。bit15-12在输出缓存区为功能码,在输入缓冲区为返回状态。
输出缓冲区:功能码的定义如下:输出缓存区第一个字节的15-12位
请求识别ID | 含义 |
0 | 无请求 |
1 | 请求参数值 |
2 | 写入参数值 |
3 | 写入双字参数值 |
x | xx |
对于输入缓存区,定义如下:
输入缓存区的一个字节的15-12位:
响应识别ID | 含义 |
0 | 无响应 |
1 | 传送参数值(字符) |
7 | 请求无法进行(有错误码) |
如果响应ID为7的时候在PWE1位置回复具体错误原因
NO. | 说明 | 说明 |
0 | 不合法的参数号码 | 参数不存在 |
1 | 参数值无法更改 | 参数只读/无法变更现在值 |
2 | 最小或最大值未到达/超出 |
|
18 | 其他错误 |
|
输出缓存区的第二个字定义了参数索引号 ,其定义如下(西门子定义)西门子的做法是以1000作为基本索引号,11-0以千为偏移量的值,而15-12位为1000的整数倍。