新疆维吾尔族自治区西门子授权总代理---伊犁哈萨克自治州西门子电机维修授权合作伙伴
- 供应商
- 广东湘恒智能科技有限公司
- 认证
- 西门子PLC
- 西门子伺服电机
- 西门子触摸屏
- 西门子电缆
- 西门子变频器
- 西门子模块
- 联系电话
- 13510737515
- 手机号
- 13185520415
- 联系人
- 董海波
- 所在地
- 惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)
- 更新时间
- 2024-05-25 07:00
我们可以验证这个结论,即通过修改db1.dbx2.0的值,可以直接改变输出参数rs_result(m100.2),而不论ob1中是否对rs_result(m100.2)进行了置位操作,如图5所示。
图5
既然我们已经分析出问题出现在fb块上,那么这个问题如何解决呢?
我们知道对于fb功能块,除了in、out类型接口参数,还有一个in_out类型接口参数。对于in_out类型的接口参数,在调用执行时首先将实参读入,然后进行逻辑运算,后再将逻辑运算的结果传递给实参进行输出。可见相对于out类型接口参数而言,in_out类型接口参数是要先读入实际参数的值,这样就可以保持上面的逻辑运算结果不会因为fb块的调用执行而被修改。
所以我们可以将fb1作如下修改,如图6所示。
图6 fb1
图7 修改后在ob1中调用fb1
修改程序后进行测试,结果与预想的一致,即可以通过set_trig(m100.0)、rset_tri(m100.1)对rs_result(m100.2)进行置位、复位操作,如图8所示
图8
现在我们简单总结一下:fb功能块在调用时,外部实际参数通过输入、输出和输入/输出接口传递给其背景数据块对应的地址。在fb内部,程序直接操作背景数据块地址进行逻辑运算。对于fb功能块的使用我们要特别注意参数传递的规则。这些规则很隐蔽,一般不易引起我们的重视。并且在出现问题时,如果不了解这些规则那就真的是“猜的中开头,猜不中结尾”,出错成为新常态了。
展开全文