技术论坛

 【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

返回主题列表
作者 主题
不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
楼主    2023-03-17 10:36:04
主题:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序 精华帖 

A401CONT_C     41号子程序

这个程序是把300的FB41 CONT_C移植到了200 smart上的。

子程序内保留了原有的死区和抗积分饱和功能。

去掉了原来FB41程序里的过程值的缩放,过程值转换放在子程序外进行。缩放转换程序可放在中断程序里,也可在循环扫描程序里。

子程序通过指针的方式将外部的一些参数和程序运行中的数据进行间接寻址访问。可以在数据块里赋值。

本子程序要在定时中断程序内运行,PID程序的采样时间设定要与定时中断的定时时间一致。

由于是自制的PID,所以使用次数上可以超时8次。

应用程序时把其它不使用的程序删除,不要让程序间互相产生影响。

楼主在PID应用方面的经验不多,在程序的使用上请参考FB41的相关资料

https://www.ad.siemens.com.cn/productportal/prods/published/300list/prog_list4.html

程序没经过验证就发到论坛了,应用中若是有程序上的错误,烦请告知。

smart200标准化实践20230317.smart.zip


13478405725
天芯
至圣

经验值: 18770
发帖数: 2102
精华帖: 0
1楼    2023-03-17 11:30:04
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

下载来看看

WWCWWC
至圣

经验值: 71658
发帖数: 8009
精华帖: 145
2楼    2023-03-17 11:56:21
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

我理解的200smart PID控制回路数8路,是基于可以在软件的控制面板上可以调试PID参数的回路数。

如果你不使用向导调用的PID控制,而是用PID指令,那这个回路数不至于只有8路。

不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
3楼    2023-03-17 12:04:45
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

引用:如果你不使用向导调用的PID控制,而是用PID指令,那这个回路数不至于只有8路。

就算不使用向导调用PID,PID指令一样受到8回路的限制。

13478405725
WWCWWC
至圣

经验值: 71658
发帖数: 8009
精华帖: 145
4楼    2023-03-17 14:40:38
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

8个PID限制的理由是什么?

如果使用PID指令,这个只要你的V存储区有组够大的使用空间,我记忆中是没有限制PID控制的回路数的。

WWCWWC
至圣

经验值: 71658
发帖数: 8009
精华帖: 145
5楼    2023-03-17 15:20:13
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

很久没有做200samrt plc的PID控制了,之前做的也是用向导的通过控制面板调试PID参数的那种。

一个PID指令占用80个字节的回路数据存储空间,也就是说一个PID控制回路,只需要有80个字节的存储空间就可以了。

拿一个ST30为例,一个plc的V存储空间是12Kb,抛开其它控制需要的运算,如果10个pid控制,那么,需要的V存储空间是80*10 = 800字节。一个12Kb的plc V存储空间中,使用800byte应该没有问题的。

不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
6楼    2023-03-17 16:09:46
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

看图:LOOP值范围0到7

可以在程序中使用八条 PID 指令。 如果两条或两条以上的 PID 指令使用同一回路编号(即使它们的表地址不同),这些 PID 计算会互相干扰,输出不可预料。


13478405725
WWCWWC
至圣

经验值: 71658
发帖数: 8009
精华帖: 145
7楼    2023-03-17 16:22:42
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

没有达成共识是很难统一好思想的。

我在说调用PID指令方式,而你一直没有离开过向导,只有向导才有loop这说法。

上面我也说了,这个回路数8个的说法,实际上是可以调用软件中的PID控制面板,所以,才有回路数8个的限制,而调用控制面板实际上就是为了获取现场的PID参数。如果我已经获取了PID参数,我会需要调用向导来做PID控制?


不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
8楼    2023-03-17 16:33:21
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

达成什么共识?


帮肋中已经明确写出:如果两条或两条以上的 PID 指令使用同一回路编号(即使它们的表地址不同),这些 PID 计算会互相干扰,输出不可预料。


你可以挑战一下西门子的这个限制,看看能不能成功。如果成功了,告诉我,我联系管理员删了此帖。

13478405725
芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
9楼    2023-03-17 16:34:26
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

当边沿指令的隐含参数从现在的1024个减少到8个的时候。你的程序只能使用8个上升沿下降沿。

懂我意思吗?

pid可能一样含有隐含参数,不能超过8个。除非你自己制作边沿指令,自己制作pid。

芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
10楼    2023-03-17 23:23:49
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

楼主

我是咽不下这个问题,一定要问问你。

你说:“本子程序要在定时中断程序内运行”。

试问,100个pid要挤在同一个瞬间撑开定时中断的执行时间。本来50微秒的中断程序突然变成50毫秒。是一种什么体验?

作为天花板的你,不是没考虑这事情吧?

要是我,我就使用Bitime的尺度,自己感知上次执行到现在的时间流逝数量。然后即时用于作为采样时间计算积分和微分。随便在主扫描中调用,喜欢50毫秒执行一次也行,喜欢400毫秒执行一次也型,上次48毫秒前执行过,现在就52毫秒了,执行一次吧。或者不忙的时候5毫秒执行一次,忙的时候但是又不重要的话就1000毫秒左右执行一次吧。甚至这100个pid排队执行吧,排到什么时候就什么时候,100毫秒也好200毫秒也好,自己看着办。

不知道是不是有99%的人都认为编程软件提供的pid就一定要恒定间隔执行呢?所以连你的程序都要定时执行。

说个不贴切的例子:路上开车多长时间看一次后视镜?教练说10秒。(可以)。限速120我都开到120了我看后视镜干嘛?(可以看灰啊)倒车入库了,我看两边后视镜都没有时间看前面了,我看前面干嘛?(可以看风啊)

这就是采样周期。采样了就执行一次,只要采样间隔不影响执行反应速度,选大选小看情况,能变的。

看管水龙头放水到水池那个小明,看见放水可能15分钟都不会放满的,他选择1分钟间隔往窗外瞅一次行不行?快满了的时候就可能要每隔15秒看一次了。

我不支持固定时间,而且还是很多路pid。

怎么你写程序都不关心扫描时间的?排序那个也是,这个也是。小型机嘛,你以为大型机高性能机啊。

我没看你程序,是我看你描述猜的,要是我说错了,直接联系我,我删了此帖。

不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
11楼    2023-03-18 08:44:03
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

芳工,你可以选择让PID不在中断程序里运行,我相信你有这样的本事来实现。但我要考虑的是大多数人的应用,简单,实用。程序在资源有限的情况下突破8回路的PID限制才是本帖的意义,

13478405725
Zane
至圣

经验值: 76176
发帖数: 19321
精华帖: 377
12楼    2023-03-18 09:47:07
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

楼主的思路完全可行,至于中断处理,可以采用中断分时处理的方法,比如10个PID,调用周期100ms,可以定义10ms定时中断,在中断里1~10循环计数,按计数序号分别每次调用一个PID回路即可,对扫描周期亦不会有太大的影响。


如果,扫描周期比较短,而PID调用周期更大,要求不高的话,模拟量的双向转化即使放在OB1执行也未尝不可。


早在200时期,就有用户这么应用的。

Zane 注册自动化系统工程师 Always save before download
芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
13楼    2023-03-18 10:01:53
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

不。就sm0.0调用就是了。里面执不执行隔多久执行就是你搞好就可以啦。

其实外观就像向导一样。就是你可以调用1000次的区别。

芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
14楼    2023-03-18 10:31:14
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

这个采样时间和执行时间,真的很多人不知道怎么选择的,如果用户不做选择的话,还是由程序自己决定分时操作对扫描周期比较好。你100毫秒执行一次和100毫秒加1个周期(100个周期)执行一次,对用户没有影响,仅仅把扫描周期摊开了。摊开就摊开吧。

8个pid同一中断里面执行没什么影响,100个pid在同一个中断里面执行,就像快车道出现一道伸缩缝,咯噔一下……有些事情刚好遇上这个扫描周期就奇奇怪怪的了。我也说不准什么情况,例如有时候有个脉冲怎么长了那么多?有时候气缸怎么打不准了?刀口对不准了?等等

Zane
至圣

经验值: 76176
发帖数: 19321
精华帖: 377
15楼    2023-03-18 10:55:07
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

也就是做做温度,压力,流量,液位等慢反应过程控制,通道数多点,采样周期慢点,精度要求也不高。


做不到面面俱到的,毕竟是低成本的应用罢了

Zane 注册自动化系统工程师 Always save before download
芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
16楼    2023-03-18 11:31:36
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

能按照这种思路做,不就做到了?就是因为低成本,就要讨论低成本的做法。而不是一味地鼓吹使用高端设备去解决。否则低成本就没有存在意义。

相信有人有能力把6轴机械人的直线移动动作写进去plc,然后用通讯控制6个伺服。算法没有不能转换的。但是到了这种地步就真的太为难plc了,根本处理能力不足。这就必须用较高端的东西控制。

低成本下能够有足够的条件做好的,是可以选择的。

一方面,对于低成本可能专家觉得8个pid足够了。

一方面,你想突破这限制,就要知道自己是站在哪里去突围。你不可能在井口叫下面一只青蛙跳上来,它就可以跳上来。这扫描周期问题,就是下面青蛙面临的问题。一个低成本的plc能不能瞬间承受你大量的数据处理事务?

我不是要推翻你无限次调用的目标,只是不要站在高处看更高的风景而已,你先下来看看……

xiatianyun
侠圣

经验值: 4856
发帖数: 735
精华帖: 10
17楼    2023-03-18 12:47:27
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

200smart的PID回路数限制在8条其实是没道理的,一个和硬件无关的数学算法而已,受限制的只是计算能力和内存容量。

WWCWWC说的对,其实就是向导捆绑导致的。

不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
18楼    2023-03-18 18:17:30
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

引用:可以定义10ms定时中断,在中断里1~10循环计数,按计数序号分别每次调用一个PID回路即可,对扫描周期亦不会有太大的影响。


是的,可以这样做,我发出来的程序只是一个例程而以,更多方式的应用可以自行创造

13478405725
不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
19楼    2023-03-18 18:33:52
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

因为官方的指令就是在中断程序中使用的,我没打算改变此应用习惯。


你说的直接把采样时间参数做为定时运行的时间参数,在控制要求不高的情况下,可以这样实现。

13478405725
芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
20楼    2023-03-19 10:26:03
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

哈哈,恰恰精密的时候用可变的采样时间执行时间更好。除非你已经把中断时间设定死了1毫秒。

小明看水位的时间间隔是15秒看一眼精密  还是  时刻盯着眼睛不离开的精密?这个就是理由。不服来辩。

不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
21楼    2023-03-19 11:00:20
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

看了此言论,一定没有调试过大滞后大惯量的过程系统。不想再与你探讨。

13478405725
芳季
至圣

经验值: 66528
发帖数: 14736
精华帖: 100
22楼    2023-03-19 11:44:44
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

没聊到点上就离开就这个结果。不聊就不聊。放弃的不是我。

没有达成共识是很难统一好思想的。谁对谁错还不知道。就算我错了,我也是坚持去聊出个对错的。

我的观点:不是固定时间执行就是最好的。所以不能凭一个定时中断执行100个pid。

不聊了。

不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
25楼    2023-03-19 12:52:59
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

按你的说法,200 smart、 300、 400、 1200、 1500的PID指令,官方建议此指令工作在中断程序里都是不合适的做法?等到你能说服官方把这条建议更改了再觉得自己的观点没问题吧。

13478405725
不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
26楼    2023-03-19 12:54:58
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

按你的说法,200 smart、300、400、1200、1500的PID指令,官方建议此指令工作在中断程序里都是不合适的做法?等到你能说服官方把这条建议更改了再觉得自己的观点没问题吧。

13478405725
不欲勿施
奇侠

经验值: 8115
发帖数: 842
精华帖: 14
29楼    2023-03-20 08:57:56
主题:回复:【S7-200 Smart开源标准化编程】应用数量可以超过8个的PID程序

是背景数据的索引指针,你得从头把我的标准化程序帖子开始研读,才能知道SMD2040的由来与作用。

13478405725
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。