D软元件操作 点击:999 | 回复:10



buddy_yang

    
  • 精华:0帖
  • 求助:7帖
  • 帖子:10帖 | 55回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2012年3月28日
发表于:2016-01-20 17:04:03
楼主

各位,最近遇到一个问题,希望高手们指教一下:


比如:D1和D2两个字,我要把D1的高8位取出作为D3的低8位,D2的低8位取出作为D3的高8位,应该怎么操作最好?谢谢!




芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2016-01-20 19:05:30
1楼

D1D2一起右移4位。结果,D1就是你要的结果。

如果你觉得明白,请鼓掌。

放晴

  • 精华:2帖
  • 求助:16帖
  • 帖子:17帖 | 84回
  • 年度积分:0
  • 历史总积分:271
  • 注册:2015年11月01日
发表于:2016-01-20 22:10:33
2楼

楼主用的是三菱、台达或者汇川?只了解这三种plc用D来表示数据寄存器

他们都有SMOV指令,可以完成你要的操作。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2016-01-20 23:16:37
3楼

楼上,说起来这个smov指令好像有点印象,可以,我还要看看书才会用了。但是我第一时间想起的就是32位右移四位,直接获得结果,简单直观易懂。

buddy_yang

  • 精华:0帖
  • 求助:7帖
  • 帖子:10帖 | 55回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2012年3月28日
发表于:2016-01-21 09:37:31
4楼


回复内容:

对: 放晴 楼主用的是三菱、台达或者汇川?只了解这三种plc用D来... 内容的回复!


三菱QPLC,指令不是很熟

乖乖小笨熊

  • 精华:2帖
  • 求助:0帖
  • 帖子:1200帖 | 11283回
  • 年度积分:2326
  • 历史总积分:62523
  • 注册:2006年8月05日
发表于:2016-01-21 16:45:38
5楼

1、适合初学者的,直接如此:

老鸟还是用移位指令较方便


sileizhihen

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 473回
  • 年度积分:0
  • 历史总积分:2657
  • 注册:2011年7月11日
发表于:2016-01-21 19:20:34
6楼

D1和HFF00进行与运算放到寄存器1里面,D2和H00FF进行与运算放到寄存器2里面,寄存器1与寄存器2进行异或运算放到寄存器3里面,在对寄存器3进行上下8位互换得出的结果move到D3

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2016-01-21 19:42:12
7楼

哇,楼上这个程序,……

放晴

  • 精华:2帖
  • 求助:16帖
  • 帖子:17帖 | 84回
  • 年度积分:0
  • 历史总积分:271
  • 注册:2015年11月01日
发表于:2016-01-23 01:41:15
8楼

楼主,不好意思,我说错了

Q系列中没有smov指令,只有L和FX系列有

1楼具体方法为-----[DROR D1 K8]

             ---[MOV D1 D3] 


6楼为---[WAND D1 HFF00 D1]

     ---[WAND D2 H00FF D2]

     ---[XOR D1 D2 D3](认为应该是字或运算而不是字异或)

     ---[SWAP D3]


根据6楼的思路,

可得“从任意n个D中任取连续的m位,组合而成一个新的D”的一种普适方法,

例如:

     从D1中取低3位放到D3的高3位,从D2中的低4位放到D3的低4位,

   

   即利用字与运算分别“取出”D1和D2中的需要部分==>

    利用sfl或sfr等移位指令移位==> 

    利用字或运算组合得到D3

     

  

        

           

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2016-01-23 08:44:36
9楼

楼上的程序为何不直接左移,把低三位推到高三位,反正空缺补0 。你选择了先与在移,而为何不是先移再与呢?

放晴

  • 精华:2帖
  • 求助:16帖
  • 帖子:17帖 | 84回
  • 年度积分:0
  • 历史总积分:271
  • 注册:2015年11月01日
发表于:2016-01-23 11:50:09
10楼

回复内容:

对:芳季 楼上的程序为何不直接左移,把低三位推到高三位,反正空缺补0 。你选择了先与在移,而为何不是先移再与呢?     内容的回复:

都行啊,只是与运算对象换成H e 000


热门招聘
相关主题

官方公众号

智造工程师