Engineer: 您好,西门子热线
Customer:您好,我遇到了一个CPU无法正常控制变频器的问题
Engineer: ?您用的是什么通讯方式?CPU的订货号是多少?用的是哪种变频器啊?
Customer:CPU的订货号是6ES7-314-6BF01-0AB0,采用CPU本体集成的PTP口,使用的是DRIVE ES SIMATIC集成的USS库来控制MM440变频器。
Engineer: 您详细描述一下遇到的技术问题
Customer: 我这里有两个MM440的变频器,变频器使用29、30端子,PTP口使用的是11#和4#针脚,正和正直连,负和负直连。当我直接控制一台变频器时一切正常。当时当我将第二台440变频器挂到USS总线上,在OB100中将变频器的数量改为2,下载程序,CPU无法启动。
Engineer: 在您的程序中,OB100里面调用的FC23的管脚怎么填写的?
Customer: PKW的数量为4,PZD的数量为2,只是将SANZ(从站个数)参数的值从“1”改为“2”,其他的参数都和原来一样,没有做任何修改。
Engineer: 您选择在线模式,确认一下程序里面DB100的容量是多少?
Customer: 46个字节
Engineer: 您的问题就出在这里,对于USS库来说,控制一个变频器需要46个字节,控制两个需要92个字节。
您可以在step7中选择在线模式(online mode)
在CPU的work memory中可以看到DB100容量:
控制1个变频器,DB100数据块容量(DB100内部容量为46字节)
控制2个变频器,DB100数据块容量(DB100内部容量为92字节)
用户数据块DB100是通过系统功能块SFC22自动建立的(见下图)。
在CPU的work memory里面没有该DB块时,数据块在CPU启动时会自动被创建。
但是如果该DB在CPU的工作存储区中已经存在, CPU启动时不会自动更新DB块的容量。如果新的DB块比之前DB块的数据容量小,系统不会报任何错误;但是如果新的DB块比之前的容量增大了, CPU程序无法访问到这些增加的数据区域,因此CPU就会报错
(见下图)
由于在FC23中调用了系统功能块SFC 46(CPU停止功能块),造成CPU无法启动。(见下图)
您可以在线将对应DB块删除,重启CPU,让系统将对应的DB块重新生成一下就可以了。
Customer:哦,原来最关键的问题是在DB块的容量上,我明白了,谢谢啊。。。。。。
在step7的程序中,可以在需要的情况下调用系统功能块SFC22自动创建数据块(DB),该功能可以使程序的编写更为灵活。但是自动创建的DB和普通DB相比,查看起来没有那么方便,存在很大的隐蔽性,只能在CPU的work memory 显示(即:只能通过在线查看功能块的方式来查看程序自动创建的DB,无法再step7的源程序中查看),这就为客户查看或检查程序带来了一定的困难,所以如果遇到相应问题应该首先排查这种可能性。