首页 理论教育程序编写的注意事项与技巧

程序编写的注意事项与技巧

【摘要】:图13-15 建立DB1数据分配如图13-16所示,在OB1中调用特殊功能块SFC14和SFC15,完成从站数据的读和写。图13-16 调用SFC14和SFC15在图13-16中,LADDR表示硬件组态时PZD的起始地址;RE-CORD表示数据块中定义的PZD数据区相对应的数据地址;RET_VAL表示程序块的状态字,可以以编码的形式反映出程序的错误等状态。PKE→DB1.DBW0IND→DB1.DBW2PWE1→DB1.DBW4参数值的高字位PWE2→DB1.DBW6参数值的低字位3)将DB1.DBX12.0开始的8个字节写入从站。4 PKW,4 PZD word cons4个字参数数据,用SFC14/15编程;4个字过程数据,字连续,用MOVE指令编程。

1.对PZD(过程数据)的读写

1)在STEP7中对PZD(过程数据)读写参数时调用SFC14和SFC15;

2)SFC14(“DPRD_DAT”)用于读Profibus从站(MM440)的数据;

3)SFC15(“DPWR_DAT”)用于将数据写入Profibus从站(MM440);

4)硬件组态时PZD的起始地址:W#16#108(即264)。

(1)建立数据块DB1

如图13-15所示,将数据块中的数据地址与从站(MM440)中的PZD、PKW数据区相对应。

978-7-111-38359-8-Chapter13-20.jpg

图13-15 建立DB1

(2)数据分配

如图13-16所示,在OB1中调用特殊功能块SFC14和SFC15,完成从站(MM440)数据的读和写。

978-7-111-38359-8-Chapter13-21.jpg

图13-16 调用SFC14和SFC15

在图13-16中,LADDR表示硬件组态时PZD的起始地址(W#16#108即264);RE-CORD表示数据块(DB1)中定义的PZD数据区相对应的数据地址;RET_VAL表示程序块的状态字,可以以编码的形式反映出程序的错误等状态。

1)W#16#108(即263)是硬件组态时PZD的起始地址

2)将从站数据读入DB1.DBX8.0开始的4个字节(P#DB1.DBX8.0 BYTE 4)

PZD1→DB1.DBW8(状态字)

PZD2→DB1.DBW10(实际速度)

3)将DB1.DBX20.0开始的4个字节写入从站(P#DB1.DBX20.0 BYTE 4)

DB1.DBW20→PZD1(控制字)

DB1.DBW22→PZD2(给定速度)

(3)控制实现

如图13-17所示,在本例中设定值和控制字可以从数据块DB1中传送,DB1.DBW20设为047E再变为047F后DB1.DBW22中的频率值将输出;状态字和实际值可从DB1.DBW8,DB1.DBW10读出。

978-7-111-38359-8-Chapter13-22.jpg

图13-17 控制实现的程序

1)控制命令W#16#47F(含义见表13-5),启动变频器运行。

表13-5 MM440变频器PROFIBUS-DP通信控制字定义

978-7-111-38359-8-Chapter13-23.jpg

(续)

978-7-111-38359-8-Chapter13-24.jpg

2)给定速度5000含义是500.0r/min。

2.对PKW(参数区)读写

(1)数据传送规则

对PKW区数据的访问是同步通信,即发一条信息,得到返回值后才能发第二条信息。PKW一般为4个字,定义如下:

978-7-111-38359-8-Chapter13-25.jpg

A为常用值:1、2、3、6、7、8。

其中1:读请求(无数据分组);2:写请求(无数据分组、单字);3:写请求(无数据分组、双字);6:读请求(有数据分组);7:写请求(有数据分组、单字);8:写请求(有数据分组、双字)。

PNU为参数号:当读写0002~1999的参数时,直接将数值转换为十六进制即可;当读写2000~3999的参数时,将数值减去2000再转换为十六进制。

B为数据分组编号,常用值为0、1、2。

C为参数选择位,常用值为0、8。当读写0002~1999的参数时,该位为0;当读写2000~3999的参数时,该位为8。

(2)应用举例(如图13-18所示)

1)在Step7中对PKW(参数区)读写参数时同样调用SFC14和SFC15;

2)SFC14(“DPRD_DAT”)用于读PROFIBUS从站的数据;

3)SFC15(“DPWR_DAT”)用于将数据写入PROFIBUS从站;

4)硬件组态时PKW的起始地址:W#16#100(即256)。

978-7-111-38359-8-Chapter13-26.jpg

图13-18 应用举例

在图13-18中,具体的参数解释如下:

1)W#16#100(即256)是硬件组态时PKW的起始地址。

2)将从站数据读入DB1.DBX0.0开始的8个字节(P#DB1.DBX0.0 BYTE 8)。

PKE→DB1.DBW0

IND→DB1.DBW2

PWE1→DB1.DBW4参数值的高字位

PWE2→DB1.DBW6参数值的低字位

3)将DB1.DBX12.0开始的8个字节写入从站(P#DB1.DBX20.0 BYTE 8)。

DB1.DBW12→PKE

DB1.DBW14→IND

参数值的高字位DB1.DBW16→PWE1

参数值的低字位DB1.DBW18→PWE2

3.参数读写总结

(1)读写0002~1999的参数

1)如读P0700,700=2BC(HEX):

978-7-111-38359-8-Chapter13-27.jpg

2)如读P1082,1082=43A(HEX):

978-7-111-38359-8-Chapter13-28.jpg

3)如写P1082,1082=43A(HEX):

978-7-111-38359-8-Chapter13-29.jpg

(2)读写2000~3999的参数

如读P2010,10=A(HEX):

978-7-111-38359-8-Chapter13-30.jpg

4.MM440变频器PROFIBUS-DP通信状态字定义

表13-6为MM440变频器PROFIBUS-DP通信状态字定义。

表13-6 MM440变频器PROFIBUS-DP通信状态字定义

978-7-111-38359-8-Chapter13-31.jpg

5.MM440变频器通信编程指令的选择

图13-19所示为MM4系列变频器(包括MM440)的所有组态类型,这些组态类型的不同,其含义也不同,所对应的编程语言也有所区别。具体如下:

978-7-111-38359-8-Chapter13-32.jpg

图13-19 MM4系列变频器的硬件组态类型

(1)Standard Telegram 1

标准报文1:2个字输出/2个字输入,用MOVE指令(L/T指令)编程。

(2)4 PKW,2 PZD(PPO1)

PPO1,4个字参数数据,用SFC14/15编程;2个字过程数据,用MOVE指令(L/T指令)编程。

(3)0 PKW,2 PZD(PPO 3)

PPO3,没有参数数据,2个字过程数据,用MOVE指令(L/T指令)编程。

(4)4 PKW,4 PZD whole cons

4个字参数数据,用SFC14/15编程;4个字过程数据,整体连续,用SFC14/15编程。

(5)4 PKW,4 PZD word cons

4个字参数数据,用SFC14/15编程;4个字过程数据,字连续,用MOVE指令编程。

(6)0 PKW,4 PZD whole cons

没有参数数据;4个字过程数据,整体连续,用SFC14/15编程。

(7)0 PKW,4 PZD word cons

没有参数数据;4个字过程数据,字连续,用MOVE指令(L/T指令)编程。

(8)MM430/440 only:PZD>4

仅对MM430/440:PZD大于4个字。

(9)4 PKW,6 PZD(PPO2)

PPO2,4个字参数数据,用SFC14/15编程;6个字过程数据,用SFC14/15编程。

(10)4 PKW,6 PZD word cons

4个字参数数据,用SFC14/15编程;6个字过程数据,字连续,用MOVE指令编程。

(11)0 PKW,6 PZD(PPO4)

PPO4,没有参数数据;6个字过程数据,用SFC14/15编程。

(12)0 PKW,6 PZD word cons

没有参数数据;6个字过程数据,字连续,用MOVE指令(L/T指令)编程。

(13)4 PKW,8 PZD whole cons

4个字参数数据,用SFC14/15编程;8个字过程数据,整体连续,用SFC14/15编程。

(14)4 PKW,8 PZD word cons

4个字参数数据,用SFC14/15编程;8个字过程数据,字连续,用MOVE指令(L/T指令)编程。

(15)0 PKW,8 PZD whole cons

没有参数数据;8个字过程数据,整体连续,用SFC14/15编程。

(16)0 PKW,8 PZD word cons

没有参数数据;8个字过程数据,字连续,用MOVE指令(L/T指令)编程。