九江西门子S7-200代理商
经常有客户咨询软冗余的问题,其中有很大一部分问题是冗余链接建立不了,即两个CPU之间不能同步冗余数据。这种情况下,首先就要检查相关功能块的参数设置,其中很容易出现的一个问题就是调用冗余通信块 FB101“SWR_ZYK” 时生成的背景数据块长度不对。这种问题的隐蔽性很强,一旦出现非常不容易排查。
下面我们就来分析一下出现这种问题的原因,进而避免问题的产生。这里我们以两个S7-400 CPU之间建立ISO 链接为例进行说明,这种情况下需要用到的功能块如图1所示。
图1
首先我们在 OB1 中调用功能块 FB101, 并为其生成背景数据块 DB5,这时我们来看看背景数据块 DB5 的长度。如图2所示,可见实际生成的 DB5 只有 100 个字节,正常的 DB5 长度应该为 358 个字节,DB5长度错误。
图2
如果这时我们下载程序到 CPU 中,则 CPU SF 亮红灯,CPU 诊断缓冲区报写区域长度错误,如图3所示。
图3
如果实际中遇到了这种问题,可以先删除已经生成的错误的 DB5,然后在程序中加载好FB104 “SWR_AG_COM” 后再重新为 FB101 生成一个新的背景数据块 DB5。这时我们再查看 DB5 的块长度为 358 个字节,如图4所示,问题解决。
图4
OK,回过头来分析一下问题的根源。通过上面的解决办法我们不难发现,调用 FB101 并为其生成背景数据块之前必须先加载 FB104 这个功能块到程序中。那么 FB101 与 FB104 之间是什么关系呢?通过查看FB101 的块属性,如图5所示,可以看到在 FB101 中调用了 FB104,所以在调用 FB101 之前需要先将FB104 加载到程序。
图5
类似 FB104 这种在其他块中被间接调用的块非常容易被忽视,所以在实际的应用过程中要特别留意一下。顺便说一下类似 FB104 这种块在程序中的加载方法:
1、可以先在程序中调用一次 FB104,然后再将 FB104 删除。
2、直接从软冗余库中将 FB104 拷贝到当前程序中。状态字的第8位为二进制结果位BR。
在梯形图中,用方框表示功能(FC)、功能块(FB)和某些指令。
图1中的FC1有3个双整数输入参数和1个双整数输出参数。输入变量IN_VAL乘以系数Par1,除以系数Par2后,得到输出参数OUT_VAL。SAVE指令将RLO保存到BR位中。
图1
图2是OB1调用FC1的程序。I0.0的常开触点接通时,FC1的EN(Enable,使能输入)输入为1,才能执行FC1。如果FC1的EN端有能流流入,而且执行时无错误(除数非零),使能输出ENO(Enable Output)端有能流流出。EN和ENO均为BOOL型。
图2
如果FC1执行出错(除数Party2为零,见图2的右图),它的ENO端没有能流流出。ENO可以作为下一个方框的EN输入,即几个方框可以串联。只有前一个方框被正确执行,与它连接的后面的程序才能被执行,这种连接方式具有连锁的功能。
状态字中的二进制结果位BR对应于梯形图中方框指令的ENO。BR位为 1,ENO端有能流流出,反之ENO端没有能流流出。
图1中右边的SAVE指令对BR位的处理是至关重要的,如果没有它,FC1的ENO不能反映FC1的执行是否出错。
下面是删除图1中的SAVE指令后,对应的语句表程序。
A(
L #IN_VAL
L #Par1
*D
T #MID_VAL
AN OV
SAVE
CLR
A BR
)
JNB _001
L #MID_VAL
L #Par2
/D
T #OUT_VAL
_001: NOP 0
在后两条指令之间添加下面的3条指令,FC1的ENO就能反映FC1的执行是否出错。
AN OV
SAVE
CLR
执行指令“AN OV”后,如果除法指令没有出错(溢出位OV为0),RLO为1;如果除法指令出错(溢出位为1),RLO为0。SAVE指令将RLO送给BR位,CLR指令将RLO清零。
除了SAVE指令,还有两条指令影响BR位。
当RLO=1时,JCB指令中断程序的顺序执行,并跳转到跳转目的地。如果 RLO = 0, 则不跳转。
当RLO=0时,JNB指令中断程序的顺序执行,并跳转到跳转目的地。如果 RLO = 1, 则不跳转。
在STEP7中如何创建库并将自己写得FC块、FB块放入自己创建的库中。另外如何给自己写得FC快、FB块加密?
答:(1)在STEP7中如何创建库并将自己写得FC块、FB块放入自己创建的库中。-----
西门子STEP7内库制作 :
在做一个项目时如一些经常使用的功能,如设备累计使用时间,使用SFC17及SFC19在step7内做报警等等。可以日常时间做一些库放在STEP7内C:\Program Files\Siemens\Step7\S7LIBS内,以后做做项目时在编辑的块内可以看见自己做的库内容,方便调用,可显著减少编程时间。具体做法:
打开SIMATIC Manager编程软件。
2点击文件内新建项目。
3给新建项目命名,将项目类型选择为库。存储位置可以不用该默认,确认设置后进入项目。
4项目中插入FB,FC块,编辑FB,FC块内部变量全部使用局域变量,不使用如M,I,Q,共享数据块或其他全局数据。如果使用全局数据可能会造成同线圈输出等问题,注意OB不能作为库使用。
5做好后保存块后即可在以后项目中使用,很方便。
(2)另外如何给自己写得FC快、FB块加密?---
如何实现程序块保护:
1.打开程序编辑窗口LAD/FBD/STL;
2.将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单 File—>Generate source 生成);
3.在LAD/FBD/STL 窗口中关闭您的程序块,并在SIMATIC Manager项目管理窗口的source文件夹中打开上一步所生成的source文件;
4.在程序块的声明部分,TITLE行下面的一行中输入” KNOW_HOW_PROTECT”;
5.存盘并编译该source文件(选择菜单File?Save,File?Compile);
6.现在就完成了程序块的加密保护
- 萍乡西门子S7-200代理商 2024-05-08
- 景德镇西门子S7-200代理商 2024-05-08
- 南昌西门子S7-200代理商 2024-05-08
- 江西西门子S7-200代理商 2024-05-08
- 宁德西门子S7-200代理商 2024-05-08
- 龙岩西门子S7-200代理商 2024-05-08
- 南平西门子S7-200代理商 2024-05-08
- 漳州西门子S7-200代理商 2024-05-08
- 泉州西门子S7-200代理商 2024-05-08
- 三明西门子S7-200代理商 2024-05-08