在组PROFIBUS-DP通信时常常会见到参数“Consistency”(数据的一致性),如果选“Unit”,数据的通信将以在参数“Unit”中定义的格式——字或字节来发送和接收,比如,主站以字节格式发送20字节,从站将一字节一字节地接收和处理这20字节。若数据到达从站接收区不在同一时刻,从站可能不在一个循环周期处理接收区的数据,如果想要保持数据的一致性,在一个周期处理这些数据就要选择参数“All”,通信数据大于2字节时,要调用SFC15“DPWR_DAT”(向DP标准从站写入连续数据)给数据打包,调用SFC14“DPRD_DAT”(读取DP标准从站的连续数据)给数据解包。
按照灵犀技术笔记《西门子S7-400,S7-300PLC相互之间的PROFIBUS-DP通讯》文中方法组态PROFIBUS-DP通信。不同的是“Consistency”属性选择“All”。
1.
编写主站程序
在系统块中找到SFC14、SFC15,并在OB1中调用。
CALL"DPRD_DAT"
SFC14
LADDR :=W#16#0
RET_VAL:=MW2
RECORD :=P#DB1.DBX0.0 BYTE 10
SFC14
解开主站存放在IB0~IB9的数据包并放在DB1.DBB0~DB1.DBB9中。
CALL"DPWR_DAT"
SFC15
LADDR :=W#16#0
RECORD :=P#DB2.DBX0.0 BYTE 10
RET_VAL:=MW4
SFC15
给存放在主站DB2.DBB0~DB2.DBB9中的数据打包,通过QB0~QB9发送出去。
2.
编写从站程序
在从站组织块OB1中调用SFC14、SFC15。
CALL"DPRD_DAT"
SFC14
LADDR :=W#16#0
RET_VAL:=MW2
RECORD :=P#DB1.DBX0.0 BYTE 10
CALL"DPWR_DAT"
SFC15
LADDR :=W#16#0
RECORD :=P#DB2.DBX0.0 BYTE 10
RET_VAL:=MW4
SFC14解开从站存放在IB0~IB9的数据包并放在DB1.DBB0~DB1.DBB9中。
SFC15
给存放在从站DB2.DBB0~DB2.DBB9中的数据打包,通过QB0~QB9发送出去。
按照灵犀技术笔记《西门子S7-400,S7-300PLC相互之间的PROFIBUS-DP通讯》文中方法组态PROFIBUS-DP通信。不同的是“Consistency”属性选择“All”。
1.
编写主站程序
在系统块中找到SFC14、SFC15,并在OB1中调用。
CALL"DPRD_DAT"
SFC14
LADDR :=W#16#0
RET_VAL:=MW2
RECORD :=P#DB1.DBX0.0 BYTE 10
SFC14
解开主站存放在IB0~IB9的数据包并放在DB1.DBB0~DB1.DBB9中。
CALL"DPWR_DAT"
SFC15
LADDR :=W#16#0
RECORD :=P#DB2.DBX0.0 BYTE 10
RET_VAL:=MW4
SFC15
给存放在主站DB2.DBB0~DB2.DBB9中的数据打包,通过QB0~QB9发送出去。
2.
编写从站程序
在从站组织块OB1中调用SFC14、SFC15。
CALL"DPRD_DAT"
SFC14
LADDR :=W#16#0
RET_VAL:=MW2
RECORD :=P#DB1.DBX0.0 BYTE 10
CALL"DPWR_DAT"
SFC15
LADDR :=W#16#0
RECORD :=P#DB2.DBX0.0 BYTE 10
RET_VAL:=MW4
SFC14解开从站存放在IB0~IB9的数据包并放在DB1.DBB0~DB1.DBB9中。
SFC15
给存放在从站DB2.DBB0~DB2.DBB9中的数据打包,通过QB0~QB9发送出去。