签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
一个应用,基于高速计数器实现定长切割,当达到计数长度后,需要中断事件将高速计数器当前值清零,开始再次技术,我遇到的问题是高速计数器当前值无法清零,求大佬指导,
S7-200SMART高速计数器中断子程序清零当前计数值
提问者:weirilin
第10000个脉冲执行清零。但是清零动作中第10001个脉冲来到,结果被清掉。下一个回合白白少了一个脉冲。
如果觉得一个两个脉冲没什么所谓,就清零啦。
你最好就是习惯使用当前值减过去值得到增量。而你喜欢把过去值一直看成0而已。所以当前值减0就是当前值。省脑。(54322234-54321234=多少?很难算是吧。看着都烦。1000-0=多少?这个都不用算:1000。)这个数是plc算的,又不花你脑汁。
这习惯的好处没发现罢了,遇到的时候你想起来就够了。例如同一把尺上存在两个观察点移动,当一个离开了,你清零不?清了,后面这个坐标不要了?后面这个没走完第三个又来了。没法从0开始算了吧?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=64&a_id=1871705&s_id=83&num=7
以下你再赞我一次吧。
当高计(其实不只是高计,任何32位值都是)计数到达很大值,几乎过零的时候。再加一点点值就变正个位数了。这个情景就好像水表,到了99999再加2就变000001了。
此时你依旧用当前值减过去值。例如:1-99999。人计算,计算机计算,当然等于-99998。但是plc的减法指令计算1-99999(请把这个99999值看作是32位二进制中的很大值。)
(因为很大值书写和记忆比较困难,最大值:4294967295。所以我想用99999类比为最大值。方便说明。)
此时1-99999=2
说明99999加1等于00000。00000加1等于1。所以1-99999是等于2的。
所以,当前值-过去值,永远等于增量。反向旋转的话增量永远是负值,说明这是反转。
我只是把一些经验介绍给大家而已。
再说,你说那个当前值,只是编程者准备写入到高速计数器当中的当前值。这是一个期望值,不是高计正在计算的当前值。这个值要通过执行hsc指令才会实实在在地反映到高计的当前值。懂意思不?
HC0;这个地址才是高计的实时当前值。
跟着学习,哈哈
可以直接使用向导的额,,,或者在中断程序里面直接将0给当前值SMD38不就可以了吗!或者定长中断的话,将需要的长度传送给预设值SMD42不就行了?哪有那么复杂的!你试着用向导一下,这个是200smart的做法。
跟着大神学习smart精进中。
SM37.6 HSC0 更新当前值:TRUE:将新当前值写入 HSC0 当前值
SMD38赋值0
SM37.7 HSC0 使能位:TRUE:启用
即可
楼主只是想把计数器归零。
知道。但是更要知道他归零想干什么。
两层意思。第一归零这个操作是没错的。第二。在这“干什么”当中,通过“归零”来实现是不完美的。有更好的一条路达到这个目的。
现在是通过归零达到目的和减法达到目的来比较。
这个方法很好的。不复位完全避免丢脉冲的可能性。但是很大比例的人都认为过零时候会出问题。都不敢这么用。
怎么才能科普到每个人?
引用6楼详细内容:
-32768-32767=16#8000 -16#7FFF =1 + 溢出标志
理解这些,的确需要对数据的二进制编码原码补码和加法有所了解。
引用7楼详细内容:
是不是可以这样理解。
普通的数学计算,所有的数值是在一条直线,两个数之间差值可以无穷大。
PLC的数学计算,所有的数值是在一个圆上,两个个数之间的差值永远不会超过周长。
圆上面任何一个地方都可以是0。
引用8楼详细内容:
达到最大值后的减法还真没想到,可以试试。
注意了。你错了。不超过半周长减1。在你这个圆上距离最远的两点就是半周长减1。
自己减自己就是周长。例如(此处我用16位做例)0-65536=-65536。65536却又是自己。所以显然没有65536这个数的。只能减1。32768就是半周,65536减1后的一半只能是32767。所以能找到的两个数最大距离就是32767。与0距离最远的值是32767或者是-32767,32768已经无法表示的了。
引用<如果我的切割长度大于最大的计数值,过零,是不是好要计过了几次零,Z像脉冲>
不是Z相。是计数起始值。计算途径过几次起始值。
还有。当结束值在起始值的正半圈,或者整数圈后的正半圈。可以直接计算,再加圈数。当结束值在起始值的背半圈,那么计算就麻烦了。
最好别让两次检测之间的距离超过半圈。比较短的距离下结一次帐,然后把每次的增量累加起来。直到累加到设定值。
不论是有符号数,还是无符号数,两点之间的距离不超数的表示范围,可保证减法的正确无误,是数制的设计问题,已经在计算机发展初期完美解决,可以看看计算机的基础理论就行了。
如要在这里讲清楚原理,三言二语是达不到效果的,除非原本就已经掌握二进制表示方法和运算规则。
当结束值在起始值的正半圈,或者整数圈后的正半圈。可以直接计算,再加圈数。当结束值在起始值的背半圈
分享
扫码分享好友 任选多种好礼
收藏
有帮助
1. 文件大小:上传文件的大小请限制在2M以内。
2. 文件格式:请不要上传.exe文件,系统支持的格式有:.avi,.wmv,.mp3,.rar,.zip,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.wma,.asf,.txt,.7z
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录