6SL3130-7TE25-5AA3参数详细
s7-300在用户下载程序到cpu的时候就已经存储到mmc卡上了,那么在软件菜单栏中的download user program to memory card与save to memory card栏目又起什么作用?它们之间是个什么关系有何区别?
答:download user program to memory card该菜单命令用于将用户程序写入cpu的存储卡。
假如cpu有一个用于存储卡的插槽,并支持本功能(例如,cpu416),而且插入了一个存储卡,则可以将step 7项目下载至卡中。只有当cpu处于stop模式时才能执行该功能。
save to memory card
此菜单命令将打开一个对话框,从中可将当前用户程序、项目数据及其他数据保存到存储卡。
如果在项目管理器中选择一个cpu或者cpu上的一个文件夹,并与cpu有一个在线连接,则可使用此菜单命令。该对话框允许您将数据保存到已插入cpu插槽中的存储卡
上周,客户反映当wincc集成到step7中做变量上传时,发生了很诡异的事情:当选择db块中的operator control and monitoring选项时,对钩出现后瞬间消失?!如下图所示(仅示意)。
一开始真心不相信。眼见为实,客户发来了项目,果真如此。进一步检测,发现该db为fb背景数据块,找到相关fb,做了如下测试:
1. 项目中其它的fb和db块没有问题
2. 新创建的fb和db块没有问题
3. 使用reorganize进行项目重组无效
4. 创建新项目,拷贝原项目中的问题fb和db块无效
由此,推断问题出现在该fb中,打开fb,也未发现异常。如下图所示。
事到如今,只能采取笨方法 —— 排除法了。
1. 将问题fb复制,删除所有network程序
编译存盘后,重新生成db,设置监控属性无效。推断问题出现在interface的接口参数中。
2. 删除interface中所有wincc监控变量(标记为绿色三角)
编译存盘后,重新生成db,设置监控属性有效。推断问题出现在interface中的wincc监控变量中。
3. 逐一取消interface中wincc监控变量的s7_m_c属性,如下图所示
发现问题所在!interface中定义的输入参数的结构变量control.manual_auto_chain的s7_m_c属性被取消后,db设置监控属性有效!
经过反复测试,fb中定义的结构变量超过24个字符,即可产生先前描述的诡异现象。删除多余的字符(control.manual_auto_chain->; control.manual_auto_chai),问题解决,如下图所示。
在step7帮助中未发现对于变量名称长度有24个字符的限制,而在wincc中,变量定义rawtag时有24个字符的限制,可能和此有关。
db中的结构变量名称定义过长,虽然是小概率事件,但也给了我们一个很好的参考
程序中any的第一个字表示数据类型为字节,第2个字表示字节数为12,第3个字表示不是db,第
4个字表示i区。因为起始地址(idrivebaseinaddress)是字节地址(图中用16个b表示),需要将它左移3位,相当于乘以8(一个字节8位),作为间接寻址的指针的基础,再用od指令叠加上指针*高字节的地址区信息16#81。
any用的是i区,不是pi区。
假设i区的起始地址(idrivebaseinaddress)为x,sfc20的输入参数(any)的实际地址为p#ix.0 byte 12。
当然也可以在调用sfc20时直接写p#ix.0 byte 12,不过老外这种模板的优点是通用,灵活。但是要看懂程序的门槛比较高
如图所示,pid向导会生成一个存储区说是用来装参数的,pid指令在用的时候tbl也是用来指定参数表的首地址的。我就想问,pid指令的tbl是需要重新分配存储区呢还是直接用向导生成的,如果是后者,应该从生成的存储区的哪个字节开始?
答:
1、指令中tbl 是回路表的起始地址,loop 是回路编号。如图为vb0开始。
2、pid指令的tbl向导生成的。
pid指令(功能块)使用了一个120个字节的v区参数表来进行控制回路的运算工作;除此之外,pid向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“suggest address”,则向导将自动为你设定当前程序中没有用过的v区地址。 自动分配的地址只是在执行pid向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致pid控制不执行