西门子 PLC SFC14/15 80B1故障

SFC14/15

S7-300/400/1500 PLC中,SFC14/15用于将分站的IO数据批量读取到DB块中。MOVE(L T)指令只能最多传送4byte。因此,使用SFC14/15能够简化程序段。

LADDR 硬件地址,16进制
RET_VAL 返回值,0表示无故障,其它值表示故障
RECORD 数据块指针,例如( P#DB13.DBX0.0 byte 100),注意byte和数据长度之间有空格。

转载请保留 http://www.cnblogs.com/lion-zheng/

80B1故障

在使用中,碰到了80B1故障,帮助文件的描述为

The length of the specified destination area is not identical to the user data
length configured with STEP 7.

即,DB块中的数据长度,和分站的数据长度不一致。

网络结构

我使用的网络是315-2PN/DP和SIMOTION D435-2PN/DP进行的iDevice通讯。Simotion作为iDevice从站,分配了I/O各100个byte。PLC作为主站,以下是PLC侧的硬件配置。Simotion的地址为300(16#12C)

故障现象

100个byte的通讯量比较大,我实际需要的大约为80个,因此我定义了DB3,包含80个byte。在OB1中调用SFC14之后,出现了801B报警。

解决方法

DB块中的数据长度,需要和硬件组态中定义的分站数据长度一致。将DB3改为100个byte。故障消失。


解决的方法很简单,就是DB块的数据长度,要和分站长度一致。但解决这个问题的过程中也被一些因素误导,花了一些时间。例如,分站的数据长度,对于iDevice,并没有32byte/64byte这样的限制。另外,SFC14/15在小于4byte时,并不检查数据长度。

转载请保留 http://www.cnblogs.com/lion-zheng/
Zheng lei 2017 - 0522

原文地址:https://www.cnblogs.com/lion-zheng/p/6889928.html