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

怎样求绝对值 点击:8472 | 回复:61



二子

    
  • 精华:4帖
  • 求助:0帖
  • 帖子:218帖 | 191回
  • 年度积分:0
  • 历史总积分:1036
  • 注册:2004年4月08日
发表于:2008-08-20 10:29:08
楼主
在欧姆龙中,求一个数的绝对值,由相关的方法吗?谢谢



雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-20 19:18:48
1楼
用比较方法,小于0时,用0减负数即正数。大于O时,本身就是正数。

YLYN

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 133回
  • 年度积分:0
  • 历史总积分:312
  • 注册:2008年6月21日
发表于:2008-08-20 22:35:25
2楼
看不明白     

siren

  • 精华:36帖
  • 求助:0帖
  • 帖子:426帖 | 6724回
  • 年度积分:0
  • 历史总积分:21846
  • 注册:2002年3月09日
发表于:2008-08-20 23:06:02
3楼

直接加绝对值指令即可。

雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-21 06:31:46
4楼

引用YLYN 的回复内容:看不明白     




先用比较的方法,看要转换绝对值的数是不是小于0,如果小于0即是负数就用0减去此负数值,结果就是正数。即负数的绝对值。

如果要转换的数值大于0那么,此数值的绝对值就是正数,即正数的绝对值。

newchp

  • 精华:3帖
  • 求助:0帖
  • 帖子:113帖 | 3966回
  • 年度积分:0
  • 历史总积分:9364
  • 注册:2006年7月15日
发表于:2008-08-21 07:04:49
5楼
omron C型机好像没有绝对值指令.楼上的方法可行

YLYN

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 133回
  • 年度积分:0
  • 历史总积分:312
  • 注册:2008年6月21日
发表于:2008-08-21 09:00:29
6楼

你怎么知道这个数是小于“0”,还是大于“0”?比如:dm100里的“0034”?cmp #0 dm100

雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-21 18:07:35
7楼

dm100里的“0034”与0比较当然是大于0了,没有必要去计算什么了。

在计算中,如果出现负数,CPU会自动识别的。只要你用cmp #0 dm100这个指令做比较即可。

YLYN

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 133回
  • 年度积分:0
  • 历史总积分:312
  • 注册:2008年6月21日
发表于:2008-08-21 20:26:26
8楼

还是不明白,具体到cmp #0 dm100 不论dm100里是什么数只能有2种可能:等于或小于

请明确给出完整的程序

雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-21 21:36:22
9楼
如图中的比较与减法指令有应用,其D0中的值就是D100的绝对值。

YLYN

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 133回
  • 年度积分:0
  • 历史总积分:312
  • 注册:2008年6月21日
发表于:2008-08-22 13:20:27
10楼

试了半天没出结果,经专家指点,应该用CPS比较命令。

 

但是CPS只适用二进制,为解决lz问题,我认为出负数的可能只有减法运算,既然这样,在做d1-d2,前先比较 d1与 d2,小就改成d2-d1

雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-22 18:13:58
11楼

你采用的是哪种型号的PLC?

我用的是OMRON CP1H的PLC做的梯形程序。型号的不同指令应用就有所不一样。

YLYN

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 133回
  • 年度积分:0
  • 历史总积分:312
  • 注册:2008年6月21日
发表于:2008-08-22 20:18:10
12楼

你试过吗?

还可以利用“借位”标志CY作补码运算更简单

雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-22 20:19:39
13楼

比较运算只不过是求绝对值的一种方法。

利用“借位”标志CY作补码运算也可以实现的。

张家界

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 106回
  • 年度积分:0
  • 历史总积分:699
  • 注册:2005年11月03日
发表于:2008-08-23 12:33:53
14楼

张家界

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 106回
  • 年度积分:0
  • 历史总积分:699
  • 注册:2005年11月03日
发表于:2008-08-23 12:44:09
15楼
梯形图见上,首先声明的是一个数的正负取决与最高位的状态,如果为1则为负值,第一种方法采用多位传送的方式传送15位数据到D1中将B15屏蔽掉,第二种方法采用字逻辑与的方式将其与#7FFF运算,由于B15为0则D2中的B15为0,其D2肯定是绝对值数值,其他方法请大家多多研究。

雪世界

  • 精华:9帖
  • 求助:0帖
  • 帖子:428帖 | 4411回
  • 年度积分:0
  • 历史总积分:20190
  • 注册:2005年8月04日
发表于:2008-08-23 20:41:35
16楼
引用YLYN 的回复内容:

试了半天没出结果,经专家指点,应该用CPS比较命令。

 

但是CPS只适用二进制,为解决lz问题,我认为出负数的可能只有减法运算,既然这样,在做d1-d2,前先比较 d1与 d2,小就改成d2-d1



YLYN 说的对,是用带符号比较CPS,而不是CMP。

zhaochunpeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2008年8月25日
发表于:2008-08-25 06:56:26
17楼
 还是张家界说得比较简单透切,一句话即可搞定,不需要做任何处理值得推广。

busy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2008年8月25日
发表于:2008-08-25 06:58:16
18楼
还是张家界说得比较简单透切,一句话即可搞定,不需要做任何处理值得推广。

YLYN

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 133回
  • 年度积分:0
  • 历史总积分:312
  • 注册:2008年6月21日
发表于:2008-08-25 21:54:52
19楼

没哪么简单,如果这么简单还要补码运算干吗?

请看看“带符号二进制减发”指令

张家界

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 106回
  • 年度积分:0
  • 历史总积分:699
  • 注册:2005年11月03日
发表于:2008-08-26 07:41:53
20楼

各位:就像我上面说的一样,求绝对值就是将负号拿掉,仅此而已。

不要走太多弯路,就像我以前做格雷码编码器的数据输入一样,需要通过每位的异或运算计算,现在就一个GRY命令即可。


热门招聘
相关主题

官方公众号

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