93329737
级别: 探索解密
精华主题: 0
发帖数量: 23 个
工控威望: 188 点
下载积分: 524 分
在线时间: 18(小时)
注册时间: 2009-04-14
最后登录: 2024-08-27
查看93329737的 主题 / 回贴
楼主  发表于: 2010-11-10 14:54
    用S7-200编程的三个实例的解析之三

         本文三例都是本人在网上回答网友的求助贴时编写的,其中第三贴把和其他网友辩论编出的梯形图是否正确的内容也写进来,供大家分析参考,有不对之处,望批评指正。

         一、网友求助:“如何使用200统计流量 :我使用的一个流量计它能输出脉冲信号,1000个脉冲为一个立方的,也可以输出4-20毫安的电流信号,20毫安对应每小时500立方,我现在的想用226的CPU来计算一个月该流量计的总流量,最好直接使用CPU模块实现,不建议再使用特殊模块。谢谢了。”
        回复:
                        《 一》、使用4-20ma的电流信号求统计流量:
       (一)、你可选用4-20ma电流输入模块,将电流信号接在模块的电流输入端,如没有,可选用0-10V电压输入模块,不过要多用一个500欧的精密电阻并接在电压输入端与地之间,再将电流输入信号接在电压输入端,这样4-20ma 电流流过500欧电阻时,就转变为2-10V的电压信号。”
      (二)、求出瞬时流量的公式:

             (1)、从模块的参数可知:20ma(或10V)模块对应的转换数字量设它为W20,你就可以求出4ma 对应的数字量W4:

                          W4 =W 20 ×4 ÷20 = W 20÷5。  

            (2)、20毫安对应每小时500立方,那么20毫安对应每秒钟为500 ÷3600=0.139立方,而“0.139立方”即为流量计输出20ma时的瞬时流量,此时对应的模块的数字量为W 20。而流量计输出4ma时对应的瞬时流量=0,但模块此时的数字量为W 20÷5,即瞬时流量N与对应的数字量W的关系是一条不过0点的直线,可推导出瞬时流量N的公式:N = 0.139×(W - W 20÷5)÷(W 20- W 20÷5) 简化为:
                            N = 1.39×(W -0.2× W 20)÷(8×W 20) ……(1)
       (三)、PLC程序处理:采用时间中断的方式进行瞬时流量的采集与累加:中断为秒中断:即每隔1秒从模块读取一次数据,按上式(1)求出瞬时流量N,再把N值加在累积区(如VD100)中,即可。
                                   《 二 》用脉冲计数方式求统计流量
        我们知道:用 1秒时间对输出脉冲进行计数采样,其计数值即为瞬时流量,N秒内的瞬时流量的累加值即为N秒内的总流量。若求某段时间的总流量,很多人都是采用先求出瞬时流量,再对某段时间的瞬时流量进行累加的方法来求总流量,这种方法如用单片机或计算机可以,但用PLC进行定时计数,由于扫描周期的影响,瞬时流量是测不准的。我认为:如果求瞬时流量不是为了闭环控制提供反馈信号而是为了进行累加求总流量的话,可不用求瞬时流量,直接对流量计的输出脉冲进行连续计数就可以了。具体编程思路是这样的:1、如输出脉冲的最高频率低于200HZ,可用普通输入点做计数信号的输入端,用它的前沿触发内部一双字存储器进行加一运算。如高于200HZ,就得选用带启动、复位控制的单相增计数方式的高速计数器进行计数。假设1000个脉冲为一个立方”,可知其一个脉冲为0.001立方的流量.。即累计的流量值的精度为0.001立方。如统计较长时间的总流量其精度不需要这么高,比如要求为0.1立方,此时的计数值应除以100,其商才为累计流量。3、一般流量计输出脉冲信号幅度为5V或12V,而PLC输入端要求输入信号的幅度为24V,故流量计的输出脉冲信号必需先做电平转换变成24V脉冲信号后,方可接入PLC的计数输入端,这样就得做一块电路板。如果流量精度为0.1立方,可在电路板上的电平转换线路前再增加一块4518(双十进制计数器)集成块,来构成二位十进制计数器,先对流量计输出脉冲进行计数,其输出的脉冲相当对流量计输出脉冲进行除以100的运算处理,再对它进行24V电平转换,去PLC计数口,这样进入PLC计数端的脉冲频率一定低于200HZ,就不需要用高速计数器计数,可大大的简化编程程序。见下图:


              程序说明:按下启动开关I2.1,读取此时的日期时间存入VB10(年)、VB11(月)、VB12(日)、VB13(时)中,I2.1的后沿使V2.0=1,V2.0的前沿使计数器VD100清0,V2.0=1时泵启动,流量计计量开始。如运行中断电,VD100、V2.0 及VB10、VB11等均具有断电保持原数据、状态的功能,所以复电后,不用按启动开关,由于V2.0=1,PLC自动进行累计流量。如累计流量结束,按一下停止按钮I2.2J就可:I2.2=1,立即将此时日期、时间出入VB20、VB21、VB22、VB23中,同时使V2.0=0,累计流量结束。

              二、网友求助:“如何用程序实现泵每五分钟起一次,工作五分钟后,再停五分钟,循环工作。”
        回复:下图是按着楼主要求用S7-200编写的梯形图,图中用一个按钮做电机运行与停车开关(I 0.0)



        不管哪种PLC都有通电延时定时器,你都可以按这样思路编程。  

                三、网友求助:“s7-200程序,一个输入,输出时四个输出中的任意一路输出,有什么简单的方法?欢迎大家热烈发帖。”
        回复:“s7-200程序,一个输入,输出时四个输出中的任意一路输出,有什么简单的方法?欢迎大家热烈发帖。”,
这确实是个不错的帖子,我也没用什么随机函数,凭着PLC由于扫描周期影响定时器的定时精度的考虑,用S7-200编写了楼主提出的控制要求的梯形图,并在S7-200上运行,证明程序符合楼主要求。梯形图如下,有兴趣的网友可以试用一下。
     (原图)


     (后改图)



          ***有网友提出异议:
1:
这个程序的输出不具备随机性,因此不能说符合楼主要求。简单地说:如果某一时刻I0.0输入ON,输出为Q0.0,那么15ms后再次输入,则输出一定不是Q0.0了。这就不符合随机性要求。随机性的原则是:无论何时输入I0.0,输出Q0.0-Q0.3的机会相等。
2:
楼上的程序未必是真正意义上的随机输出。有限个输出符合要求不意味着总能随机输出。还是用随机数输出的指令,让plc给出在(0,1)范围内的伪随机数RAND(x),用取整指令对4*RAND(x)+1取整,其结果一定是1,2,3,4中随机的某一个,再让此随机结果分别与1,2,3,4比较,采用分支程序根据比较结果把程序执行引向不同的输出
          我的答复: 根据楼主要求:“一个输入,输出时四个输出中的任意一路输出,”就是说在输入信号=1时,Q0.0-Q0.3 四个输出端中必须有一路输出=1,且不是有规律出现,我是按这个原则编程的。11楼你说“15ms后再次输入,则输出一定不是Q0.0了”你对T32的用意理解错了,这里用T32构成振荡器,是在输入信号I0.0 =1的后沿起的300MS内,对MB0计数用的,300MS后MB0计数停止,由于这种定时计数不稳定性,使MB0每次计数结果不相等,但MB0的低二位(即M0.0与M0.1二位值)的状态只有四种:00、01、10、11,按梯形图四路输出支路的M0.0、M0.1的组合,不管计数值为多少,总有且只有一路为串联通道状态,当下一个输入信号到来时间内(即I0.0=1)使M2.0=1,这样四路输出中总有且只有一路输出=1,当输入信号结束后的300MS内MB0又计数,计数停止,M0.0与M0.1的状态是随意的,但只能在0-3之间变化,也就是说总有一路M0.0与M0.1串联处于通道状态的。我认为本梯形图符合楼主要求。从统计学观点来看,多次的输入,其四路出现导通的概率应该是相等的。

            ****网友再提出异议: 你还是没有理解“随机性”。就你的程序,再举个特殊点的例子来说明我在11楼的观点:如果某一时刻I0.0输入时,输出为Q0.0,5ms时I0.0断开,10ms时再次输入I0.0,那么按照你的程序,输出是确定的:不是Q0.0就是Q0.1,而不可能是Q0.2或Q0.3,因为这期间T32最多翻转一次。这就谈不上随机性了。
        再回复: 15楼网友:你说的问题我明白,但楼主要求用S7-200编程,PLC通常内部存储器计数频率很低,所以才用15ms定时器搭成振荡器,如果想要是输入信号宽度为几ms,可用高速计数器计数,这样就得用外输入计数脉冲来代替T32,而且最高为20KHz。如你再要求输入脉宽为几微秒,PLC根本不能胜任,就得用计算机编程了,而计算机也有最高频率限制,所以不能把问题太绝对化。(将T32的定时时间改为 1ms,程序仍能正常工作,这样几毫秒输入脉宽就能正常运行)
         ****网友再提出异议: 不是我要求脉宽为几微秒,只是举个例子而已。无论T32的定时时间是15ms还是1ms,性质是不变的:即不能保证任意时刻I0.0输入时Q0.0-Q0.3输出的概率相等。

        再回复:17楼网友说:“不是我要求脉宽为几微秒,只是举个例子而已。无论T32的定时时间是15ms还是1ms,性质是不变的:即不能保证任意时刻I0.0输入时Q0.0-Q0.3输出的概率相等。”对此结论我不理解,如果你的依据来源于15楼你说的“如果某一时刻I0.0输入时,输出为Q0.0,5ms时I0.0断开,10ms时再次输入I0.0,那么按照你的程序,输出是确定的:不是Q0.0就是Q0.1,而不可能是Q0.2或Q0.3,因为这期间T32最多翻转一次。这就谈不上随机性了。”。如果是这样说明你对程序没有看细,就以你说的输入条件,第一次输入,MB1可能计数为0或1,当第二次输入时,MB1的计数值不是仍为0或1而是0、1或2,为什么?MB1计数是累加计数的而不是从0计数,怎么会不可能出现Q0.2或Q0.3为输出呢?我们还是以楼主的求助内容来讨论问题吧:楼主说“s7-200程序,一个输入,输出时四个输出中的任意一路输出,有什么简单的方法?”。1、用S7-200编程,就限制了输入信号的脉宽不能小于5ms(普通输入口对信号的前后沿滞后时间为几毫秒,用其做计数输入口只能计200HZ以下的脉冲频率),2、输入信号的宽度是随意的,即使脉宽相同,由于扫描周期的影响,再加上MB1为累加计数,故使MB1的每次计数值波动性大,即MB1最低二位数(M1.0、M1.1)的状态为不固定的。从统计学观点来看,多次的输入,其四路各自出现导通的概率应该是相等的。这和抛钱看正反面的概率是一样的。3、真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。
         我是本着上述二个原则编写的程序,通过上机运行,多次输入,且输入脉宽长短变化,其四路输出是随机的,所以我仍坚持我编写的梯形图符合楼主要求。
       ***网友再提出异议:
       1、10楼的程序是否改过了,我记得原来有两个定时器。
       2、对于“如果是这样说明你对程序没有看细,就以你说的输入条件,第一次输入,MB1可能计数为0或1,当第二次输入时,MB1的计数值不是仍为0或1而是1或2,为什么?MB1计数是累加计数的而不是从0计数,怎么会不可能出现Q0.2或Q0.3为输出呢?”的回复:(针对先前的程序)
假定某一时刻I0.0输入时,Q0.0输出,说明MB0此时=0。再过10ms,I0.0再次输入并持续5ms,此时段内T32可能翻转,也可能不翻转,但翻转最多一次。故MB0或者是0,或者是1,而不可能是2或者3.
      3、针对现在改过的程序:Q的输出与I0.0的持续时间有关,是可以人为控制的。因此也不是随机的。
      再回复: 最终定下的梯形图如下,望有条件有兴趣的网友在S7-200 PLC上运行试验,看看能否符合楼主的要求。



         梯形图是做过改动,只是简化程序,缩短二次输入的间隔时间,原程序是I 0.0 驱动断电延时定时器T100,用I 0.0 由1变0起到T100由1变0止的间隔时间对MB0进行计数,这是考虑手动按钮做输入,其二次输入的最小间隔时间在几百毫秒以上才选用这种控制方式的。考虑到你在5楼提出“如果某一时刻I0.0输入时,输出为Q0.0,5ms时I0.0断开,10ms时再次输入I0.0,”,即二个输入信号间隔10ms,由于此时T100还没有变0,会使第二次输入失效,故将“原用I 0.0 由1变0起到T100由1变0的间隔时间对MB0进行计数”的计数方式改为“在I0.0=1的时间对MB1进行计数,I0.0 的后沿将MB1的计数结果送入MB0”,这样就可缩短二次输入信号的间隔时间,而且也简化了程序。但“一个输入,输出时四个输出中的任意一路输出”的设计思路并没变。现在要论証一下你在21楼说的话“假定某一时刻I0.0输入时,Q0.0输出,说明MB0此时=0。再过10ms,I0.0再次输入并持续5ms,此时段内T32可能翻转,也可能不翻转,但翻转最多一次。故MB0或者是0,或者是1,而不可能是2或者3.”,
        前面我讲过几次,MB0 或MB1是累加计数,不是清0后计数,假设在输入时间内,MB1最多计一个数,MB1从0开始,第一次计数值为0或1,第二次为0或1或2,第三次为0或1或2或3,第四次为0或1或2或3(或4时即为0)。。。。怎么“不可能是2或者3”呢?多次输入,使MB1的最低二位出现0、1、2、3的几率相等,这就是我编程的依据,如你有充足的理论依据能驳倒我的编程思路我欢迎,如还像前面的说法,我认为就此停止吧。
dutian2328
级别: 探索解密
精华主题: 0
发帖数量: 25 个
工控威望: 108 点
下载积分: 560 分
在线时间: 5(小时)
注册时间: 2010-08-23
最后登录: 2014-04-02
查看dutian2328的 主题 / 回贴
1楼  发表于: 2010-11-14 21:13
图没有↑来