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

让PLC弹钢琴!你会吗? 点击:7724 | 回复:67



lwb-sjz

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:12帖 | 3回
  • 年度积分:0
  • 历史总积分:49
  • 注册:2003年7月28日
发表于:2003-10-16 17:14:00
楼主
用三菱FX2N-128MR型PLC的输出控制钢琴的琴键上下动作进行乐曲的演奏,你会吗?



wanggq

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

 

  听写版《欢乐颂》整个乐曲可以分解成139个时段。这139个时段各自所对应的音符(在同一时段内可以有多个不同“音高”同时作响)的“空间数据”和“时间数据”相结合组成139组“二维数据”。

 

   这个版本的《欢乐颂》共计要用25个不同“音高”,所以我用25个bit来分别与它们对应。1个单字的数据寄存器存放不下25个bit 。故,存放1个“空间数据”需要占用两个数据寄存器,再加上“时间数据”占用1个数据寄存器,合起来1组“二维数据”共占用3个数据寄存器。

 

  如下图所示,我用竖直红线标注出曲谱中的14个需要加入短暂间隔(也是14个“时段”)的地方。在程序处理中与其它“时段”相同对待。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-06-29 21:50:06
62楼

 

  在FX2n的数据寄存器停电保持区域中,从D512至D650这139个数据寄存器中依次存放139个时段的“时间数据”;从D651至D789这139个数据寄存器中依次存放“空间数据”的高位字;从D790至D928这139个数据寄存器中依次存放“空间数据”的低位字。

 

  整个《欢乐颂》乐曲共占用417个数据寄存器。我们可以把这139组“二维数据”理解成417个“数据”被一个循次读取数据的程序所分组调用。

 

不沉舟

  • 精华:0帖
  • 求助:1帖
  • 帖子:9帖 | 120回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2008年2月28日
发表于:2009-07-03 14:49:14
63楼
看不懂!希望学习一下!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-07-24 15:51:01
64楼

 

   我们从上面的例子可以看到,写一个弹奏简单版本的《欢乐颂》的程序就占用了417个保持型数据寄存器,要是写一个弹奏《春江花月夜》或《二泉映月》的程序,PLC那有限的保持型数据寄存器资源对满足程序的需求就显得有些捉襟见肘了!所以,我们便提出新的要求:能否想办法在保证指定乐曲的音乐信息丝毫不减的前提下压缩所占用的保持型数据寄存器数目?譬如说:同样是实现弹奏前面指定版本的《欢乐颂》(一点儿都不减少其音乐信息的前提下),把占用的保持型数据寄存器数目由417个缩减成278个?

 

深圳高级民工

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2008年10月31日
发表于:2009-07-26 19:56:49
65楼

用10个小型的伺服马达,当成10个手指一样运动!

然后编译译码程序(将音符转化为PLC梯形图之类的程序),这一点可以借鉴CNC的G代码编译原理

思路应该这样,实现估计很难!

 

深圳高级民工

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2008年10月31日
发表于:2009-07-26 19:56:54
66楼

w12工控怪

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 244回
  • 年度积分:95
  • 历史总积分:188
  • 注册:2021年7月01日
发表于:2022-08-23 16:53:08
67楼

我很想看看您的东西!多向您学学。


热门招聘
相关主题

官方公众号

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