调用FB41 无值输出
刘玉蓉
发布于2014-10-15 17:05
749
0
标签:
问题有点多耐心看一下:
我的思路是 在OB35里面调用FB1:
CALL "调用PID" , "FB1背景块"
COM_RST:=M2.0
CYCLE :=T#200MS
在FB1里面调用FB41(PID)背景块为DB41 实参的值我在共享数据块DB2里面给定的(有图的)时间是200毫秒没错的我设定好了。怎么会没有输出值呢,帮个忙看一下,还有就是PID调节面板有没有说明的,麻烦发个链接,看一下。我的PID面板的参数有没有错误的。
问题补充:
刚刚试了一下 好了,是输入的P I D 参数不能为0,我把DB2.DBD10 DB2.DBD14 DB2.DBD18 DB2.DBD22给删了,假如我想用这些 DB2.DBD10 DB2.DBD14 DB2.DBD18 DB2.DBD22赋值的话应该怎么做呢,还有就是还有就是PID调节面板有没有说明的。
图片说明: 1,PID调节 2,FB41 3,FB4值
佳答案
我个人感觉你的设计比较复杂,你可以直接在周期性中断OB35中调用PID控制块FB41,然后在CYCLE参数中输入采用时间就可以了,当然你也可以在自动生成的背景数据块如DB1,其变量与对应的FB41的变量声明表中的变量一一对应,可以在数据显示方式下修改实际值,即可以“Actual Value”(实际值)中进行修改参数值,也可以通过对应的FB41的变量声明表来修改,操作比较简单,没有必要使用共享数据块,实际工作中也没有这样做,方法如下:
FB41“CONT_C”用于连续控制,它是系统固化的纯软件PID控制器,运行过程中循环扫描、计算所需的全部数据存储在分配给FB41的背景数据块里,所以可以无限次调用。在SIMAITC管理器中,依次展开你的项目到Blocks(块),选择菜单Insert(插入)/S7 Block(S7块)/Organization Block(组织块),插入OB35;
双击打开OB35,依次展开左边Libraries(库)/Standard Library(标准库)/PID Control Blocks(PID控制块),双击下面的FB41 “CONT_C”ICONT,就在OB35下插入一个FB41,在调用块“CONT_C”上面“???”填写背景数据如DB1,就会出现下面对话框:
LAD/STL/FBD
The instance data block DB1 doesn’t exist, Do you want to generate it?(背景数据块DB1不存在,你是否要产生它?“,点击”Yes“,就自动建立一个背景数据块DB1,
这里有几个问题必须明确:
FB41 中参数PV_IN(浮点格式过程变量输入)必须是实数,一般通过在OB1中调用规范化块FC105把整形值转换为以工程单位表示的介于下限和上限之间的实型值(即浮点格式)给DB1.DBD10,直接提供给参数PV_IN;
同时在OB1中,将FB41参数LMN_PER(I/O格式的PID输出值)通过赋值指令MOVE经PID输出值经过D/A转换后送出如到PQW3;
需要在OB100中重启PID,程序结构如下:
Network 1
S DB1.DBX 0.0 //重启PID
Network2
R DB1.DBX 0.0
参考下列链接《用Step7中SFB41/FB 41、SFB42/FB42、SFB43/FB43实现PID控制》
https://www.ad.siemens.com.cn/download/Html/download.aspx?DownloadID=1231&TreeID=8&URL=/Download/Upload/AS/application/A0018.pdf