最近在热线上总是碰到这样一些类似的case——客户在下载程序时,提示报错294:6(不能复制块***),如图1所示。这样的错误,是由于没有完全掌握CPU的技术参数,在编程过程中犯了一些错误而导致的。下面我将例举一个典型例子详细说明。

图1
有位客户描述他下载程序总是报错,提示OB1和FC块不能复制下载。我问他,您在下载之前做了什么操作,才导致出现这个问题的。
客户停顿想了想,说他在别人的项目中,增加了一些程序段,而且程序段都是使用的很简单的指令——将DI(数字量点)状态赋值到M区点。
的确都是很简单的指令,所以我怀疑客户可能使用的地址有问题,于是我问客户指令中都使用了什么地址,并且询问客户使用的是什么CPU(即CPU的型号)。开始客户很不解——觉得指令使用都是正确的,而且软件也没有报错(即:地址输入后没有出现红色报错),在我一再要求下,客户告诉项目组态的CPU型号是6ES7 314-6CG03-0AB0,程序段使用了I 128.0、I 128.1等DI组态的点地址,如图2所示,而且该组态地址是系统默认的,如图3所示。

图2

图3
表面上看似乎一切都很正常,地址也是系统自动分配的,通过交叉索引的方式找到使用该地址的FC块,如图4所示,询问客户是不是该FC下载时提示无法复制的报错信息——如图1所示。客户确认是这个FC块无法复制下载。

图4
在选型样本手册中介绍了这个型号的CPU相关技术参数——过程映像区地址,如图5所示。在图5中,可以看到6ES7 314-6CG03-0AB0的过程映像区的输入和输出都是128个字节,也就是说该CPU的过程映像区的输入、输出范围是I 0.0——I 127.7和Q 0.0——Q 127.7。而I 128.0、I 128.1等地址,已经超出了该CPU的过程映像区的使用范围,从而导致下载报错——无法复制FC块。

图5
其实,系统组态对CPU集成的I/O点分配地址,默认是从124开始的。只是该客户在项目组态时因为一些原因将一个DI模块的地址改成了124,导致系统组态对集成的I/O点分配地址默认从128开始分配。
如果真的需要这样分配,那么解决办法就只能是改变地址访问方式,即:使用MOVE指令。如图6所示。然后对M 100.0等点进行逐点操作。

图6
西门子网站有一篇常问问题:何时何处需要外设地址?可以去看看。
http://support.automation.siemens.com/CN/view/zh/18325417
同样的,在使用M区和定时器T区的地址做编程,使用时超出系统允许范围,而导致类似报错(见图1)。
例如,如图7所示,图中的CPU312、313、314对M区定义的最大数量是256个字节,即MB0——MB255,结果有些客户编程使用了MW300等地址,超出了M区的范围,而导致下载时报294:6的错误。

图7
还有如图8所示,图中的CPU312、313、314对S7定时器定义的最大数量是256个,即从T0——T255,而有些客户不注意该参数,使用定时器个数超出了256,如使用了T256、T257等,这样就会在下载报294:6的错误提示。

图8
同样的问题也会出现在计数器上,这些都是需要注意的。
总之,只有注意了CPU这些技术参数,才能避免上面的问题发生。