首页 上一页 1 2 下一页 尾页

怎样在PLC上测试程序中某功能片断完成功能所消耗的时间? 点击:1604 | 回复:34



wanggq

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-11 14:52:17
楼主

 

  在PLC程序中插入某一指定“目标功能”的片断,方法是多种多样的。有时候我们想比较一下在同一PLC上以哪种方法来完成某指定“目标功能”所需的时间最短?

 



楼主最近还看过



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-11 15:54:26
1楼

 

  譬如有一指定“目标功能”为:在PLC 上自动查找出 D10-D69 这60个数据寄存器中的“最大值”和“最小值”。

 

  实现这一目标功能的方法有:①、“变址比较法”  ②、“移位比较法”  ③、“排序查找法”   ④、“检索查找法” 等等。

 

  现在我们来想办法测试一下这几种方法在相同的 FX2n 上完成指定“目标功能”各自需要多小时间?

 

         

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-12 13:49:01
2楼

 

  下面是用“变址比较法”查找 D10-D69 这60 个数据之“最大值”与“最小值”的程序片断:

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-12 14:14:11
3楼

 

  在上述片断的基础上再插入几条指令(如下图中红色凸显的部分),利用FX2n 中的0.1ms 时基的“高速环形计数器 D8099” 对原片断完成其功能所耗时间进行测试:

 

  测试出功能片断在完成指定查找“最大值”与“最小值”这一目标功能所消耗的时间长度(0.1ms 单位)记录在 D0 中。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-12 14:22:14
4楼

 

     这个片断完成其“目标功能”所消耗的时间约70 毫秒。(D0的内容显示为71.3毫秒)

           

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-12 14:41:07
5楼

 

  为了让控制程序的“控制实时性”好一些,我们总是希望指定功能程序的执行时间尽量的短。我们能不能把这一指定功能(查找60个数据的最大值和最小值)的片断完成指定功能所消耗的时间缩短一些呢?同样还是这个“变址比较法”,我们可以修改变址指针的范围和变址修饰的起点位置来达到减少一个所需的扫描周期:

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-12 14:47:40
6楼

 

  从D0 的显示数值692 我们可以看到少用一个扫描周期去完成相同的指定功能,就达到了“完成指定的查找功能”所消耗时间的减少之目的。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-13 13:21:16
7楼

 

  虽然将2楼的“变址比较法”经过改进,少用一个扫描周期所节省的时间也不够显著!因为从60个周期里减少1 个周期,毕竟减少的 1 个周期所占的比例太小!

 

  我们看一看用“检索查找法”可以提高多少速度:

 

  “变址比较法”、“移位比较法”、“排序查找法”  在完成指定功能时,都至少要用n-1 个扫描周期(n 是查找数据的个数),而“检索查找法”则只需 1 个扫描周期,所以它是几种方法中最快的一种。大约是上百倍的提高速度!

 

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-13 13:27:17
8楼

 

   下面是测试“检索查找法”的监视图片:

 

     D0 的显示数值为8 即0.8 mS

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:60帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2012-05-13 16:56:03
9楼
就程序功能片段而言执行时间显然含SER指令的是比较耗时的,为什么这里得出的比较结果不是这样的?因为3,5楼得出的消耗时间是多个扫描周期的累计时间并且包括其它程序的执行时间等,所以这种比较有点不公平,呵呵......我觉得应该在3,5楼的程序功能片段前后直接获取D8099时间差,再乘以执行次数来进行比较.

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-13 18:57:43
10楼

  对:winter938关于就程序功能片段而言执行时间显然含SER指令的是比较耗时的,为什么这里得出的比较结果不是这样的?因为3,5楼得出的消耗时间是多个扫描周期的累计时间并且包括其它程序的执行时间等,所以这种比较有点不公平,呵呵......我觉得应该在3,5楼的程序功能片段前后直接获取D8099时间差,再乘以执行次数来进行比较. 内容的回复:



  我认为是公平的!我们之所以看法不同,是因为我们对题目的理解不同。

 

  题目所指测试是对功能片断“完成指定任务所需时间”而言的,并不是指该功能片断“之构成所用的诸指令的执行时间总和”。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-13 19:26:46
11楼

 

  就好比我们考量甲、乙两个小组的成员都从同一地点出发,到达某指定的地点完成集结任务,看哪一个小组最先完成任务。甲组成员乘汽车,但途中遇交通不畅,所以汽车跑跑停停。而乙组成员骑自行车,穿小道一路顺当。最终乙组成员比甲组成员早10天到达集结地点。你总不能说汽车再怎么说也比自行车跑得快嘛,应该把甲组在途中因堵车而停顿的时间扣除,只算汽车在各段路上实际跑起来的时间总和吧?

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-13 19:42:16
12楼

 

  从发出“查找”命令开始,到查找完指定范围的全部数据之时终止。这就是我们所考量的“对象”。

 

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:60帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2012-05-14 08:30:29
13楼
3,5楼的程序查找任务用循环在一个扫描周期内完成,再测量执行时间进行比较,当然SER可能仍然会占优,但相信不会对比相差那么明显。

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-05-14 08:40:12
14楼

复制出来一段一段测试也不错,呵呵。。。。。。。。。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-05-14 10:06:01
15楼

引用 winter938 的回复内容:3,5楼的程序查找任务用循环在一个扫描周期内完成,再测量执行时间进行比较,当然SER可能仍然会占优,但相信不会对比相差那么明显。



对啊,要在一个扫描周期 中,测试 某一段程序的执行时间 才有可比性,(例如用循环来处理 查找最大数,或最小数) 若干个周期怎么比啊,你考虑PLC 的中断处理时间了吗?

 

楼主 没有把问题说清楚! 这样的比较 没有实际意义;


 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-14 13:11:26
16楼

 

   不知你们怎么会不能理解:从启动“查找极值”的命令开始,至完成“在指定范围内搜遍所有数据并查找出最大值与最小值”为止,这一期间的时间才是“完成任务所需的时间”!

        

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-14 13:14:26
17楼

 

  并不是比较两组指令各自在程序中总共执行所用的时间!

         

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-14 13:46:09
18楼

 

  你们是想知道相关指令的执行时间吗?那就请查阅《使用手册》(版本号:Y992D69401A)第71页或其它资料。

 

  基本指令(譬如:LD、AND、SET、……等等)在FX2n的执行时间为0.08微秒;应用指令(譬如:MOVFX2n上的执行时间为1.52微秒;

 

  FMOV  执行时间为69.1+2.8n (n 为点数)

 

  ......

 

  你们把“变址比较法”(参照№2楼的片断)所用的每条指令在执行该指令时所耗的时间累加起来,再乘以59(周期数)最后得到它们的总和。在这个总和所代表的一段时间内,“查找任务”能够完成吗?事实上在这段计算出来的时间内根本远远不能达到“完成任务”的目的!

        

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-14 19:23:03
19楼

 

  我仔细看了一下《使用手册》(版本号:Y992D69401A)第71页的内容,发现它是有些错误的,譬如 “LDP” 这样的指令的步数是2步,但它却给标示成1步:该指令的执行时间在编程手册上标示的是44微秒,而它却标示成0.08微秒!不仅如此,而且它的内容还很不全,很多指令的相关数据也没有列出来。

 

  

  关于指令在FX2n上的执行时间请参阅《编程手册》(版本号:Y992D87701A)第441页至445页的相关内容

  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-05-14 19:38:58
20楼

 

《编程手册》(版本号:Y992D87701A)第441页至445页的相关内容

 

LDP :  44微秒

 

FMOV :(条件ON时)69.1+2.8 n 微秒  (条件OFF时)6.4  微秒

 

RST  V :   (条件ON时)22 微秒       (条件OFF时)18  微秒

 

LD> :    1.52 微秒    

 

LD< :    1.52 微秒    

 

MOV :   (条件ON时)1.52 微秒    (条件OFF时)1.52  微秒

 

INC :     (条件ON时)18.8 微秒    (条件OFF时)6.4  微秒

 

构成“变址比较法”的各条指令在完成指定任务(从60个数据中查找到其最大值与最小值)的过程中所执行的时间总和为:5653.1 微秒 约:5.65 毫秒。

 

44×5969.12.8×26.4×582218×581.52×5×5918.8×586.4

 

259674.7371.21066448.41096.8

 

5653.1 (微秒)

 


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页