技术论坛

S7-1500中累加计算怎么编程啊?

作者 主题
侠士

经验值: 1541
发帖数: 265
精华帖: 5
主题:【求助】S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 楼主 2017-04-17 08:41:30

刚接触S7-1500,现场有个计算长度的测量轮,原理就是单圈编码器计圈数乘以测量轮周长来计算钢板长度。在计算过程中要求在电脑上实时的显示钢板长度。这样我感觉只能用累加指令,用反馈回的码值除以单圈码值进行累加,计算完成后用确认信号将累加值清零,但是没找到方法。这样应该怎么编程啊?


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1387334&b_id=66&s_id=0&num=22

侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 楼主 1楼 2017-04-17 08:51:15

主要不知道累加指令或功能块应该用哪一个,算法在原来的设备上用过,但不是西门子的工控设备


 
以下网友喜欢您的帖子:

  
侠客

经验值: 835
发帖数: 64
精华帖: 0
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 2楼 2017-04-17 08:59:17

是计米器吧,用计数器.


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 楼主 3楼 2017-04-17 09:28:11
以下是引用惬魂影在2017-04-17 08:59:17的发言 >2楼

是计米器吧,用计数器.

计数器不好判断圈数啊?实时的在电脑上显示不容易啊


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 楼主 4楼 2017-04-17 09:32:18

比如,测量轮转的较快的话,一圈码值是8192,比如从4096开始计算,前半圈可以直接(8192-4096)/8192*周长计算,但第二圈开始是整圈,实时显示不太容易。即使满一圈减去前边的码值加上圈数周长,也很难在屏幕上做到实时显示,毕竟有时候需要非标尺寸停止的。。。。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 15853
发帖数: 1645
精华帖: 39
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 5楼 2017-04-17 09:50:43

这种卷轴累的,每转一圈  周长固定不变吗?还是随着转动 轴直径越来越大?


没做过此类项目,另外,单圈编码器的数据变化是否如此也不清楚,以下想法仅供参考:


如果是固定不变的,你用单圈的应该是0-8192,一圈之后再从0-8192?

那你可以采用进位的方式吧?

你的实际总长度=当前圈的长度+之前累加的长度(不包含当前圈);

另外也测算一下,根据你显示数据长度的单位,比如是1mm,算是多少编码器数为1mm,


这样程序判断一下,一旦编码器数为0重新开始转了,就把先前那一圈的长度累加出来加到之前累加的长度,当前圈的再从0开始计算,屏幕实时显示这2个的累加之后的值。


天道酬勤
以下网友喜欢您的帖子:

  
侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 楼主 6楼 2017-04-17 10:40:24
以下是引用Haohaobb在2017-04-17 09:50:43的发言 >5楼

这种卷轴累的,每转一圈  周长固定不变吗?还是随着转动 轴直径越来越大?


没做过此类项目,另外,单圈编码器的数据变化是否如此也不清楚,以下想法仅供参考:


如果是固定不变的,你用单圈的应该是0-8192,一圈之后再从0-8192?

那你可以采用进位的方式吧?

你的实际总长度=当前圈的长度+之前累加的长度(不包含当前圈);

另外也测算一下,根据你显示数据长度的单位,比如是1mm,算是多少编码器数为1mm,


这样程序判断一下,一旦编码器数为0重新开始转了,就把先前那一圈的长度累加出来加到之前累加的长度,当前圈的再从0开始计算,屏幕实时显示这2个的累加之后的值。

8192是取数字量编码2的13次方,是多圈型编码器改的,码值从0-8191,到8192时从零再次开始计算。测量轮的直径不变,长度等于第一圈的长度加圈数乘以周长加上最后的长度。

测算长度现在计算方式是∑1/8192*周长,但不知道1500中怎么计算。。。。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 15853
发帖数: 1645
精华帖: 39
回复:S7-1500中累加计算怎么编程啊?
推荐帖


只看楼主 只看精华 7楼 2017-04-17 10:48:07
以下是引用工作狂人在2017-04-17 10:40:24的发言 >6楼

8192是取数字量编码2的13次方,是多圈型编码器改的,码值从0-8191,到8192时从零再次开始计算。测量轮的直径不变,长度等于第一圈的长度加圈数乘以周长加上最后的长度。

测算长度现在计算方式是∑1/8192*周长,但不知道1500中怎么计算。。。。

以下是引用Haohaobb在2017-04-17 09:50:43的发言 >5楼:这种卷轴累的,每转...

引用5楼详细内容:

这种卷轴累的,每转一圈  周长固定不变吗?还是随着转动 轴直径越来越大?


没做过此类项目,另外,单圈编码器的数据变化是否如此也不清楚,以下想法仅供参考:


如果是固定不变的,你用单圈的应该是0-8192,一圈之后再从0-8192?

那你可以采用进位的方式吧?

你的实际总长度=当前圈的长度+之前累加的长度(不包含当前圈);

另外也测算一下,根据你显示数据长度的单位,比如是1mm,算是多少编码器数为1mm,


这样程序判断一下,一旦编码器数为0重新开始转了,就把先前那一圈的长度累加出来加到之前累加的长度,当前圈的再从0开始计算,屏幕实时显示这2个的累加之后的值。

怎么算什么意思?不知道程序怎么写吗?如果不知道是否有特殊的功能块,那就用最简单的函数指令写累加呗!


天道酬勤
以下网友喜欢您的帖子:

  
侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 楼主 8楼 2017-04-17 10:53:34
以下是引用Haohaobb在2017-04-17 10:48:07的发言 >7楼

怎么算什么意思?不知道程序怎么写吗?如果不知道是否有特殊的功能块,那就用最简单的函数指令写累加呗!

以下是引用工作狂人在2017-04-17 10:40:24的发言 >6楼:8192是取数字量编码2...

引用6楼详细内容:

8192是取数字量编码2的13次方,是多圈型编码器改的,码值从0-8191,到8192时从零再次开始计算。测量轮的直径不变,长度等于第一圈的长度加圈数乘以周长加上最后的长度。

测算长度现在计算方式是∑1/8192*周长,但不知道1500中怎么计算。。。。

以下是引用Haohaobb在2017-04-17 09:50:43的发言 >5楼:这种卷轴累的,每转...

引用5楼详细内容:

这种卷轴累的,每转一圈  周长固定不变吗?还是随着转动 轴直径越来越大?


没做过此类项目,另外,单圈编码器的数据变化是否如此也不清楚,以下想法仅供参考:


如果是固定不变的,你用单圈的应该是0-8192,一圈之后再从0-8192?

那你可以采用进位的方式吧?

你的实际总长度=当前圈的长度+之前累加的长度(不包含当前圈);

另外也测算一下,根据你显示数据长度的单位,比如是1mm,算是多少编码器数为1mm,


这样程序判断一下,一旦编码器数为0重新开始转了,就把先前那一圈的长度累加出来加到之前累加的长度,当前圈的再从0开始计算,屏幕实时显示这2个的累加之后的值。

用SCL写累加指令?其实就是不知道1500中有没有相应的FC块可以用。。。。。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 15853
发帖数: 1645
精华帖: 39
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 9楼 2017-04-17 11:17:28
以下是引用工作狂人在2017-04-17 10:53:34的发言 >8楼

用SCL写累加指令?其实就是不知道1500中有没有相应的FC块可以用。。。。。

以下是引用Haohaobb在2017-04-17 10:48:07的发言 >7楼:怎么算什么意思?不...

引用7楼详细内容:

怎么算什么意思?不知道程序怎么写吗?如果不知道是否有特殊的功能块,那就用最简单的函数指令写累加呗!

以下是引用工作狂人在2017-04-17 10:40:24的发言 >6楼:8192是取数字量编码...

引用6楼详细内容:

8192是取数字量编码2的13次方,是多圈型编码器改的,码值从0-8191,到8192时从零再次开始计算。测量轮的直径不变,长度等于第一圈的长度加圈数乘以周长加上最后的长度。

测算长度现在计算方式是∑1/8192*周长,但不知道1500中怎么计算。。。。

以下是引用Haohaobb在2017-04-17 09:50:43的发言 >5楼:这种卷轴累的,每...

引用5楼详细内容:

这种卷轴累的,每转一圈  周长固定不变吗?还是随着转动 轴直径越来越大?


没做过此类项目,另外,单圈编码器的数据变化是否如此也不清楚,以下想法仅供参考:


如果是固定不变的,你用单圈的应该是0-8192,一圈之后再从0-8192?

那你可以采用进位的方式吧?

你的实际总长度=当前圈的长度+之前累加的长度(不包含当前圈);

另外也测算一下,根据你显示数据长度的单位,比如是1mm,算是多少编码器数为1mm,


这样程序判断一下,一旦编码器数为0重新开始转了,就把先前那一圈的长度累加出来加到之前累加的长度,当前圈的再从0开始计算,屏幕实时显示这2个的累加之后的值。

这种功能性的fc,没有用过的,只能不好说有没有,我认为可以自己尝试写啊,scl或者stl,当然前者可能更可行些;

如果一定要确认是否有可用的块,打400问吧,比较他们是经过培训的,应该更了解一些。


天道酬勤
以下网友喜欢您的帖子:

  
至圣

经验值: 20130
发帖数: 2777
精华帖: 23
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 10楼 2017-04-17 11:41:43
以下是引用工作狂人在2017-04-17 08:41:30的发言 >楼主

刚接触S7-1500,现场有个计算长度的测量轮,原理就是单圈编码器计圈数乘以测量轮周长来计算钢板长度。在计算过程中要求在电脑上实时的显示钢板长度。这样我感觉只能用累加指令,用反馈回的码值除以单圈码值进行累加,计算完成后用确认信号将累加值清零,但是没找到方法。这样应该怎么编程啊?

你这是板材卷绕的计长?还是单纯的不卷绕只是输送棍上的计长?

提问题时麻烦把背景多交待一些


Less is more……
以下网友喜欢您的帖子:

  
侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 楼主 11楼 2017-04-17 13:20:39
以下是引用唐诗宋瓷在2017-04-17 11:41:43的发言 >10楼

你这是板材卷绕的计长?还是单纯的不卷绕只是输送棍上的计长?

提问题时麻烦把背景多交待一些

以下是引用工作狂人在2017-04-17 08:41:30的发言 >楼主:刚接触S7-1500,现...

引用楼主详细内容:

刚接触S7-1500,现场有个计算长度的测量轮,原理就是单圈编码器计圈数乘以测量轮周长来计算钢板长度。在计算过程中要求在电脑上实时的显示钢板长度。这样我感觉只能用累加指令,用反馈回的码值除以单圈码值进行累加,计算完成后用确认信号将累加值清零,但是没找到方法。这样应该怎么编程啊?

板材直接在辊道上计长。计完长度后直接剪切。下次会注意。。。。。。其实感觉只是一种方式,现有的设备运行的挺好,公司计划再上一套。但原先用的是AB的CONTROLLOGIX,价格太贵,考虑用西门子替代,做些技术储备。。。。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 20130
发帖数: 2777
精华帖: 23
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 12楼 2017-04-17 13:42:08
以下是引用工作狂人在2017-04-17 13:20:39的发言 >

板材直接在辊道上计长。计完长度后直接剪切。下次会注意。。。。。。其实感觉只是一种方式,现有的设备运行的挺好,公司计划再上一套。但原先用的是AB的CONTROLLOGIX,价格太贵,考虑用西门子替代,做些技术储备。。。。

也就是“定长控制”了


Less is more……
以下网友喜欢您的帖子:

  
侠士

经验值: 1541
发帖数: 265
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 楼主 13楼 2017-04-17 23:13:35
以下是引用唐诗宋瓷在2017-04-17 13:42:08的发言 >12楼

也就是“定长控制”了

以下是引用工作狂人在2017-04-17 13:20:39的发言 >:板材直接在辊道上计...

引用详细内容:

板材直接在辊道上计长。计完长度后直接剪切。下次会注意。。。。。。其实感觉只是一种方式,现有的设备运行的挺好,公司计划再上一套。但原先用的是AB的CONTROLLOGIX,价格太贵,考虑用西门子替代,做些技术储备。。。。

就是定尺,不知道有什么简便点的办法吗?
 
以下网友喜欢您的帖子:

  
至圣

经验值: 12688
发帖数: 2083
精华帖: 23
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 14楼 2017-04-17 23:32:00

单纯做累积可参考全球技术资源文档(条目ID号48799854)"在STEP 7 (TIA Portal) 中,如何实现流量累积功能?"



 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 15楼 2017-04-18 09:50:43

TOTAL=TOTAL+X。这还需要专门一个块吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12688
发帖数: 2083
精华帖: 23
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 16楼 2017-04-18 15:53:40
以下是引用shine在2017-04-18 09:50:43的发言 >15楼

TOTAL=TOTAL+X。这还需要专门一个块吗?

但也要考虑采样间隔之类,累积其实也是一种定积分的思想。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1730
发帖数: 104
精华帖: 6
回复:S7-1500中累加计算怎么编程啊?
精华帖精华帖星级3级


只看楼主 只看精华 17楼 2017-04-20 11:37:52

 这个就是相邻两个PLC程序扫描周期读到的编码器实际读数之差的累加,但必须注意编码器度数溢出时的处理。下面截取以前做的其中累计脉冲的程序例子:


#MaxPulseVal := 8192.0;//读取到的编码器最大度数
//------------------------------------------------------------------
#tempData.r_currCycleEncoderVal := UDINT_TO_REAL(#actEncoderVal);//读取到的编码器当前值
//------------------------------------------------------------------
#tempData.r_encoderValPerCycle := #tempData.r_currCycleEncoderVal - #TempData.r_lastCycleEncoderVal; //两个周期的度数差
#tempData.b_I_OverFlowFlag := ABS(#tempData.r_encoderValPerCycle) > #MaxPulseVal / 2;//判断编码器是否旋转是否超过一圈

//判断是正转超出还是反转超出

IF #tempData.b_I_OverFlowFlag THEN
  IF #tempData.r_encoderValPerCycle > 0.0 THEN               //underflow 说明是反转超出一圈
    #tempData.r_effectEncoderValPerCycle := - (#MaxPulseVal - #tempData.r_currCycleEncoderVal + #tempData.r_lastCycleEncoderVal);
  ELSE                                          //overflow说明是正转超出一圈    #tempData.r_effectEncoderValPerCycle := #MaxPulseVal - #tempData.r_lastCycleEncoderVal + #tempData.r_currCycleEncoderVal;
  END_IF;
ELSE
  #tempData.r_effectEncoderValPerCycle := #tempData.r_encoderValPerCycle; //正常范围
END_IF;

#tempData.r_lastCycleEncoderVal := #tempData.r_currCycleEncoderVal;


#tempData.r_TotalPulse := #tempData.r_actPosition + #tempData.r_effectEncoderValPerCycle;//脉冲总数



 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6859
发帖数: 1351
精华帖: 5
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 18楼 2017-04-26 14:14:32

 脉冲速度慢的话, 累加 INC指令

速度快的话,使用高速计数器,甚至需要中断来做计算


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3903
发帖数: 913
精华帖: 0
回复:S7-1500中累加计算怎么编程啊?


只看楼主 只看精华 19楼 2017-04-26 18:04:08

 你的测量轮周长是增加的吗,还是固定不变的


自强不息,厚德载物。
以下网友喜欢您的帖子:

  
收起
S7-1500中累加计算怎么编程啊?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。