作者 | 主题 |
---|---|
holdkcsxyz 至圣 经验值: 13223 发帖数: 1852 精华帖: 22 |
楼主 2021-05-20 15:33:49
主题:S7-200Smart的延长函数和数据的分辨率问题 -------------------------------------------------------------- (1):S7-1200的Q0.0输出周期为125us,占空比50%的脉冲串。 -------------------------------------------------------------- (2):实测波形(周期250us/50%占空比时输出给Smart的波形,非125us周期时的波形) -------------------------------------------------------------- (3):3.1:S7-200SmartCR60的I0.0中断中接收1200的脉冲串,在IO中断中调用延长函数。延长函数的缓存队头地址是&VB5000;队尾地址是&VB6000;从状态表看出地址中每个值都间隔1个时钟数==125us.每毫秒的定时中断中统计出每一毫秒内I0.0中断了8次即125us.由此延长函数的分辨率达到125us。 如果将延长延量设置成1则将输入点延长125us后再输出;如果将延长延量设置成8则将输入点延长1ms后再输出;如果将延长延量设置成4则将输入点延长0.5ms后再输出. 3.2: 1ms的定时中断中统计1ms内I0.0中断的次数基本恒定为8,说明每125us中断一次。 3.3:延长函数内容如下,功能和以前的延时时间戳类似,感觉这个函数这样书写可能是时序较优,但没有足够的数据说明它的时序是最优的,而且测试过这个延长函数的极限运行时序是80us-100us左右,再低的时序可能是不行的。应该有工程师有时序更优的写法。 延长函数: A:输入是布尔量的翻转; B:输出是字节的第0位的反复翻转。 C:{(延长尾针-延长首针)/4+1}=={(延长延量+延长均量)*4/延长均量} 延长均量==X的平均------{X的平均:N个(延长输入下降沿时刻的延长时钟-延长输入上升沿时刻的延长时钟)叠加加和起来后之后除于N} 3.4:以下两张图片是100us时序下延长函数运行图片,每毫秒中断次数为10次,延长输入点是最密集的100us脉冲(开关控制位Q16.5==0;Q16.2==1此时开关控制位让延长输入在最密集的时钟刻度间隔里翻转---即每个时钟源刻度翻转一次延长输入),时钟源的每个刻度==100us;由状态表可以看出每个数据的间隔是1==一个时钟刻度100us,即输入点每100us翻转一次. 而且当延长输入点不是特别密集的脉冲比如是脉宽是1ms的脉冲时(开关控制位Q16.5==1;Q16.2==0此时开关控制位让延长输入在1ms的定时中断中反复翻转,此时延长输入点的状态不是最密集的状态,即每个1ms定时中断翻转一次延长输入),延长函数可以稳定的运行在80us左右的时序中,延长输入如果是很稀疏的话运行时序可以更短。 3.5:延长输入是1ms脉冲,延长函数运行在80us的时序下图片,此时每毫秒中断12次到13次之间12.5次左右,时钟源的每个刻度==80us(开关控制位Q16.5==1;Q16.2==0)。由状态表可以看出每个数据间隔12或13即12.5*0.08ms==1ms输入点是1ms脉宽的脉冲沿,理想测量误差0.08/2==0.04ms。 3.6:以下图片是125us时序下,示波器是Q0.0的输出波形,输出Q0.0和输入V16.0计数完全相同的状态表图片和示波器图片(1000us里有4个上升沿),示波器显示Q0.0的下降沿由于没有负载因此无法消耗能量有拖尾,这个可类比485没合适终端电阻的话通讯信号质量可能会有问题。测试平台另一台ST60。 *以下图片是不带负载125us时序下的Q0.0波形图 *以下图片是带负载125us时序下的Q0.0波形图 3.7:以下图片是100us时序下,示波器图是Q0.0的输出波形(1000us里有5个上升沿),程序里没有统计计数差值。 *以下图片是不带负载100us时序下的Q0.0波形图 *以下图片是带负载100us时序下的Q0.0波形图 3.8:例程里还有个延长入出函数:是延长函数的多个输入点的循环版,只介绍接口数据。 延长入出函数的结构体数据构成较复杂:(包含公共变量,私有变量,临时变量,函数指针,指针变量,指针常量等类化C的概念,虽然也没太多作用) 公共函数指针: 延长指针:函数入口地址理解为函数指针。 公共全局只读: 延长时钟:可以是时间时钟也可以是脉冲源。 延长个数:输入点个数及FOR循环次数。 私有全局读写: 延长入缓:缓存上次输入。 延长出节:输出翻转的字节。 延长存针:存数据指针,数据类型为指针变量。 延长取针:取数据指针,数据类型为指针变量。 私有全局只读: 延长输入:延长输入点,类型布尔量。 延长延量:延长需要的具体延长量,以延长时钟为依据。 延长首针:延长缓冲区开头指针,数据类型为指针常量。 延长尾针:延长缓冲区末尾指针,数据类型为指针常量。 局部临时读写: 出超缓存:判断输出超长需要翻转时缓存。 延长循缓:纯粹由FOR循缓指令本身读写。 3.9 :将IO中断中的延长子程序全部改成全局变量编程可减少参数传递和局部变量运算,可改善总体时序,减小抖动,由于Smart的任何中断只能立刻中断OB1主程序但不能中断正在执行的低级中断,所以减少定时中断,串口中断等其它中断中的执行语句和时间可以减少最高等级I0.0中断的抖动。由此单一的较少内容的对时序要求稍高的代码段用全局变量编程有优势。以上所有说明S7-200Smart的底层软件架构很强大。 -------------------------------------------------------------- (4):PID向导的输出分辨率及PWM向导的占空给定数据处理。 以下图片给出一种PID输出控制PWM占空比的加热灯管控制,可以达到理想的较优分辨率。 算法虽然重要,但输入输出传感器数据的调理也很重要,应该不亚于非原创性,背书型的算法。 经反复开环给定测试灯管的控制周期固定在40ms比较合适,即固定在40000us. PID的输出是去控制PWM的占空比.怎么让PID运算出来的占空比输出数字量在0-40000这4万个挡位范围内每一个数字量都遍历到很重要。 4.1:PID向导的输出是模拟量,范围是双极性-20000---+20000以配合40000us的全周期最优分辨率的占空比调节。 4.2 :PWM向导分辨率us 4.3 :PID输出命名成算法输出。 4.4:算法输出是一个-20000到+20000的有符号双极性整数变量。 4.5:将算法输出-20000-+20000映射到0-40000占空给定,这个数据处理办法可能是最优的,也不一定,甚至也有可能是错误的。也可以直接以+12768为分类依据对-20000-+20000进行分类,具体以实际项目为准,不必以0为依据。 4.6:得出占空比给定。 .PDF改.smart打开. ------------------------------------------------------------------------ 关于输入数据的一个处理方法: 其实不太用关心量纲这个问题,PID只关心偏差以及以直带曲的线性关系。 举个例子:传感器AIW 0-27648 对应0-200度;(1)AIW 0-27648这个参数是西门子单极性模拟量ADC的固有特性基本无法改变,其实我选择的话我一定选双极性即-27648---+27648,这个数据范围的可回旋余地大。(2)0-200度是由所选的传感器量程决定的。这个参数其实是可以作缩放的,比如把0-200度缩放成0-100000(1/500=0.002摄氏度)(这个上限可根据现场实际定。太大可能没用:就0-27648对应0-200,可以将200缩放到27648(0.0072摄氏度)可能已经是极限了)这意味着传感器侧数字量变化1,实际温度变化1/500摄氏度(0.002摄氏度),此时就把摄氏度这个量纲变换成0.002摄氏度这个量纲了,你可能觉得这个缩放没用,其实就实践而言是有点用的,因为你只有对每个环节都放大到一定程度观察才能大概找准系统的极限分辨率,只有实践过并收集到足够数据作支持才能看出来用处,当然给定值也要缩放相应倍数,并且配合滤波来用。 以上两点都不明显考虑量纲,而只是严格考虑两点确定的这条直线。 以上对输入输出的处理可以类比戴着放大镜,拿着镊子,更准确的组装;虽然没有实质的改变手和眼睛的精确程度,但是借助工具更好的完成了组装任务。 ------------------------------------------------------------------------ 实验测试以及实践证明S7-200Smart在这个时序下稳定处理的这个函数是一些小型PLC完成不了的,包括少些中端的日系PLC。 |
WOWUWUWU 至圣 经验值: 10815 发帖数: 1820 精华帖: 0 |
1楼 2021-05-21 10:22:35
主题:回复:S7-200Smart的延长函数和分辨率数据处理 学习了,长知识了,谢谢。 |
手机用户20200103FZF48F 奇侠 经验值: 5981 发帖数: 795 精华帖: 1 |
2楼 2021-05-21 10:23:24
主题:回复:S7-200Smart的延长函数和分辨率数据处理 值得学习,谢谢。 |
欣欣向蓉 奇侠 经验值: 6690 发帖数: 111 精华帖: 0 |
3楼 2021-05-21 10:29:58
主题:回复:S7-200Smart的延长函数和分辨率数据处理 |
木头515 侠圣 经验值: 2167 发帖数: 256 精华帖: 0 |
4楼 2021-05-21 16:55:16
主题:回复:S7-200Smart的延长函数和分辨率数据处理 学习了,有想法啊。
低头做事,抬头做人!!
|