登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:问个技术问题,西门子1200 PID相关。

点击:204 回复:5

现在想达到一个目的,上位机搞一个按钮,启动PID自整定(自动调整)。《目前已经完成》,但是出现一个问题。
PID工艺DB块有一个“起始值”,整定完成以后,监视值是自整定完成以后的数值,但是没找到BOOL变量把当前时间PID传送到起始值,
博图软件倒是有一个按钮,但是现场不可能随便弄个笔记本调试PID吧,更倾向于上位机点一下自整定就完成了。
我想到的办法是,RUN模式下,实时保存PID的数值到PID_TEMP,启动延迟以后把PID_TEMP传到的工艺DB块运行的PID里面,
除了这个办法,各位还有什么办法?
附件 1.jpg
24-05-17 18:23
//PID值缓存,PID模式3,自动运行状态下保存PID参数
#T_0(IN := #PID.State = 3,
    PT := T#5S);
//STEP1,缓存写入
IF #T_0.ET >= 2000 AND #T_0.ET <= 3000 THEN
   #PID.Retain.CtrlParams := #PID_TEMP;
END_IF;
//step2 实时保存PID参数
IF #T_0.ET>=4000 THEN
   #PID_TEMP := #PID.Retain.CtrlParams;
END_IF;
测试好像也能用,表情
之前玩欧姆龙的PID自整定,就自己整定完就OK了,啥也不用管,用法相对我们使用者来说可能更友好一些。
~~上面逻辑还是有问题。
调整过程中,状态=2,整定完成切换到3,就把整定好的数据用旧数据覆盖了。
改成整定状态字=9999(完成)把整定好的PID值写入PID_TEMP,
要把缓存数据写入的条件改一下,自动运作状态+没有整定。
T_0.IN := #PID.State = 3 AND #PID.PIDSelfTune.TIR.State = 0;、
应该可以了,后续有问题再说。
最后修改:2024/5/17 18:51:38
24-05-17 18:39
TIR.State 变量指示当前的精确调节阶段:
State = -100:无法进行精确调节。将首先执行预调节。
State = 0:初始化精确调节
State = 200:计算标准偏差
State = 300:尝试达到设定值
State = 400:尝试使用现有 PID 参数达到设定值
(如果预调节已成功)
State = 500:确定波动并计算参数
State = 9900:精确调节已成功
State = 1:精确调节未成功
经过实验,调节完成以后,TIR.State会保持在9900,逻辑上就很好搞了,
TIR.State=9900的时候给出一个上升沿,用于传送实际使用的PID值给PID_temp,还要断开T_0,避免反过来把实际的PID写到PID_TEMP。
24-05-17 21:11
PIDat没有标志?
启动PID自整定的变量在at完成后是不是自动变为off?类似欧姆龙是PIDAT启动位xx9.15
24-05-17 21:23

引用 知道一点 在 2024/5/17 21:23:38 发言【内容省略】

完全不一样啊。
PID工艺DB块的<起始值>不能通过某个变量写进去,可以在编程软件操作或者下载工艺DB块,
别无他法,只有外面暂存然后写进去,类似PLC脉冲停电记忆。
例如,打个比方,1200实际运行使用的PID参数是D1 D2 D3,在线修改,PID计算结果也会跟着动;
整定完毕以后,D1 D2 D3确实是变化了,有效的整定数值,但是这个值在PLC断电重启以后,会把PID工艺DB块的<起始值>写到D1 D2 D3.
非常蛋疼啊。
24-05-17 21:53
先说一下,没使用过西家PID,它对于那些参数不能使用变量感到不理解
PIDAT后得出的参数,如果只能通过“编程软件操作或者下载工艺DB块”
那没有使用电脑现场岂不是太尴尬了
是不是也不能将PIDat后的参数通过PLC程序写到DB块里?
如果可以,那就用一个PIDAT,结果送DB,在另一个工作PID使用
24-05-17 22:47

工控新闻

更多新闻资讯