西门子6ES7223-1BF22-0XA8参数详细
现在上位机系统中很多要求具备流量计的流量累计功能,由此引出的几个问题,期望与大家分享。 问题1:自行编写流量累计程序 自行编写流量累计程序的原理,其实就是积分的*原始算法概念,把单位小间隔时间内的瞬时流量乘以单位间隔时间,得到单位小间隔时间内的流量,再把这些小流量累加起来,就的到了累计流量。 在流量累计编程中经常会遇到实数加法问题,实数加法运算的注意事项也应当引起编程人员的重视,请看下例程序(假设其在OB35中被调用,目的为每隔一定时间间隔就累计一次流量) L MD0 //累计流量存储值 L MD4 //流量瞬时值 +R T MD 0 以上的程序是否存在问题?很多人会认为没有问题,但实际情况是此程序在运行一段时间后就将出现错误。此程序在运行之初是正常的,因为累计流量初始值及流量瞬时值都为一个很小的浮点数,两数相加后,结果正确。但是当一段时间后,累计流量的数值逐渐增大,当它与瞬时流量的数值相差很远的时候,两者执行加法操作后,瞬时流量的数值将被忽略掉(如9999990.0与0.2做加法操作)。其实具备计算机常识的人都应当清楚这一点,这是由于浮点数的存储机制造成的,是所有计算机方面编程都需要考虑的问题。这个问题可以通过使用二次累加或多次累加的方法来解决。所以在编程时应避免数量级相差太多的浮点数之间进行运算。很多人反映“加法指令不好用了”,很有可能就是数量级相差很多的实数进行了加法运算。 问题2:累计流量误差问题 对于积分算法,取小的矩形对流量进行累计,肯定是矩形划分越细,误差越小,不存在误差是不可能的。 问题3:流量计与plc构成的系统的误差 流量计有多种多样,下面举些例子: 1、流量计本身没有累计流量功能,但可以把瞬时流量以模拟量的方式(例如4-20mA)输出。 此时累计流量的*大误差可以估算为: 流量计本身误差 * 流量计D/A误差 * 模拟量模块A/D误差 * PLC流量累计算法误差 假设上面所有误差都是1%,则*后的误差约为:4.06% 1.01*1.01*1.01*1.01=1.0406 对于某些流量计,本身的瞬时流量误差可能就是3%,所以这样的系统累计流量的误差可能还要大些。 2、流量计本身没有累计流量功能,但可以把瞬时流量以数字量的方式输出。 有些流量计提供数字量接口,可以连接PLC的数字量输入模板,流量计每流过一定流量后(例如0.1吨),此输入点就导通一次,PLC就把累计流量累加0.1吨即可。 此类系统避免了A/D,D/A转化的误差,以及PLC累计算法误差。但是会出现一定时间内累计流量不变化的情况,实时性不好(每0.1吨累积的时间)。 3、流量计本身有累计流量功能,同时可以把瞬时流量以模拟量的方式(例如4-20mA)输出,但无法将累计流量数值送出。 流量计本身累积流量的数值,*后很有可能与PLC的累计流量数值相差很大,原因可能是多方面造成的,除去系统累计流量误差的因素,如果PLC系统检修时,流量计还计量,则PLC无法累积这部分流量。 4、流量计本身有累计流量功能,同时可以通过通信的方式,把瞬时流量及累计流量数值送给PLC。这种情况*理想,但系统的成本也*高。 |
用户使用CPU315-2DP的CPU实现一个很复杂的工艺控制,时间要求很严格,有很多时间序列,例如A点信号为1后触发定时器1,定时5秒钟,时间到后,输出一电平给B点,触发定时器2,延迟3秒后,采集C传感器的值,触发定时器3,并每隔10秒计算一下(有个公式)等等,类似这样的工艺有很多段,每段都不太一样,使用定时器数量也不一样,用户程序编了,但还没完成,因为定时器不够用了,超过了plc能提供的定时器数量256个,所以就有了上面的那些报怨。 总结一下,用户报怨西门子plc能提供的定时器数量太少不够用,不能满足用户的需求(终于听明白了)。 听完用户的问题,用户也平静了许多,我心里也有底了。首先我没有给用户直接的答案,而是先关心一下用户调试程序的困难,我只是说了句:“您调试程序是不是不太方便啊?”我的话音刚落,用户的话匣子又打开了,诉苦啊,调试不方便,定时器走乱了,互相条件依存太多, ……总之没有好用的地方,快被折磨死了。听完用户所言后提醒自己,别再往用户“伤口” 上撒盐了,还是开药方吧,先把病看好了,接下来再聊别的。 不够用可以使用IEC定时器(SFB3-SFB5),只要CPU容量够用,数量没有限制,显然用户不知道此信息,否则他就不会报怨定时器不够用了,如果真的使用了IEC定时器编程,估计用户的程序会有一半是定时器的程序了,所以我先没有告诉他,免得又引出很多话,用户也不容易啊。 那给用户开了什么药方了呢? 方子很简单:定时器一个,加法指令一个(MW0=MW0+1)。 使用方法:因为用户所有定时器使用的时间单位都是秒,于是就将T1设定成1秒的定时器,程序运行后启动定时器,然后在定时时间到后执行MW0=MW0+1,即每定时到1秒钟MW0就加1,这样通过判断MW0的值就会得出相应的计时时间(秒),并能判断出时间过了多少秒,例如MW0=10,就是10秒,当MW0数值达到*大定时时间值后可以清零。这样就很好的满足了用户的需求,解决了问题,同时程序结构比较清晰,不容易乱。 |
- 西门子6ES7222-1HD22-0XA0参数详细 2023-10-26
- 西门子6ES7222-1BD22-0XA0参数详细 2023-10-26
- 西门子6ES7222-1HF22-0XA8参数详细 2023-10-26
- 西门子6ES7222-1EF22-0XA0参数详细 2023-10-26
- 西门子6ES7222-1BF22-0XA8参数详细 2023-10-26
- 西门子6ES7221-1EF22-0XA0参数详细 2023-10-26
- 西门子6ES7221-1BF22-0XA8参数详细 2023-10-26
- 西门子6ES7221-1BH22-0XA8参数详细 2023-10-26
- 6GK7243-1GX00-0XE0参数详细 2023-10-26
- 6GK7243-1EX01-0XE0参数详细 2023-10-26
- 6ES7241-1AA22-0XA0参数详细 2023-10-26
- 6ES7253-1AA22-0XA0参数详细 2023-10-26
- 6ES7277-0AA22-0XA0参数详细 2023-10-26
- 6ES7235-0KD22-0XA8参数详细 2023-10-26
- 6ES7232-0HD22-0XA0参数详细 2023-10-26
联系方式
- 地址:上海杨浦 上海市松江区广富林路4855弄88号3楼
- 邮编:200093
- 电话:15821971992
- 经理:聂聪
- 手机:15821971992
- 传真:021-33556143
- QQ:2724917714
- Email:2724917714@qq.com