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



lwb-sjz

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



高渐飞

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 101回
  • 年度积分:0
  • 历史总积分:426
  • 注册:2002年4月07日
发表于:2009-06-20 16:32:52
41楼

当然琴键还有一个参数,那就是按下的幅度,所以需要有每一个键的起始按键时间,以及持续时间、按键幅度(每一次的按键变换都需要建立一个信息点)

这样可以把连续的音乐转换成离散控制列表,只是这个表可能很长

wanggq

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

 

对于“高渐飞”网友 的:

   “没有实际的意义,让钢琴自动弹起来,一般都使用人工智能控制技术,不会用反映比较慢的PLC的”

 

 


 

 


  申明一下:“写个程序让PLC弹钢琴(或 风琴、电子琴)”的目的不是想欣赏“钢琴(或 风琴、电子琴)演奏”!而是作为PLC编程练习!闲着没事嘛,做做练习不碍着别人的!!就是一个“玩”!“玩”的同时也锻炼了思维!!

 

  嘿嘿!军人打靶训练,把枪对准“人形靶”射击,并不是他们对“人形靶”有“仇恨”!他们打靶训练的“实际意义”就是以“训练”提高他们的枪法!


wanggq

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

 

        作为一种练习嘛,可以选择各种各样的题目,不一定非得是工业控制的实际项目不可。各种题目的练习做得多了,也就练熟了解决各种各样工艺要求的方法和措施。当然,有机会或有条件也要尽可能的多参加一些实际的控制工程。把模拟练习与实战演习都运用起来。最终目的是提高我们的工控水平!

 

wanggq

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

 

言归正传,我们再回到“让PLC弹奏《欢乐颂》”的“工艺”这个话题上来!

 

  现在再来谈音符的“时值”:

 

  根据“冰岛的雨季”网友的曲谱,该版本的《欢乐颂》总共只用了4 种音符。它们是:2 分音符、4 分音符、4 分附点音符、8 分音符。用下图来描述:




独来独往

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 378回
  • 年度积分:0
  • 历史总积分:937
  • 注册:2006年5月25日
发表于:2009-06-20 19:39:43
45楼

没有下文了吗?期待中..............

ZONELD

  • 精华:1帖
  • 求助:0帖
  • 帖子:21帖 | 105回
  • 年度积分:0
  • 历史总积分:1313
  • 注册:2009年4月21日
发表于:2009-06-20 21:34:17
46楼

联系编程这个应用还可以.

说明不了什么问题.

77777777

  • 精华:0帖
  • 求助:0帖
  • 帖子:35帖 | 819回
  • 年度积分:0
  • 历史总积分:1964
  • 注册:2004年4月18日
发表于:2009-06-20 22:18:14
47楼

编程 加上 上位机用点技巧或许可以

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-06-20 22:43:01
48楼
 回复“独来独往” 的:

            “没有下文了吗?期待中..............”


 


 


 

  回复内容:

   请不要着急。会有下文的!  我去忙一下工作,(接到一个定单!)  等有空闲才来上网!对于回复帖子的问题,有空才来打理,不把它当成正事。

 

wanggq

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

<接第44楼的内容>

 

  第44楼的内容对音符的“时值”的描述是用一个相对的概念来描述的。用一个“相对概念”不能具体的落实到PLC程序中,所以,我们再把该版本的《欢乐颂》中的各个音符的具体“时值”转换成实实在在的“数据”!

 

wanggq

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

 

    很多网友对于这一类的控制问题,感到困惑的是:怎样把一个给定的曲谱转换成PLC可以理解的“语言”?

 

  我们“工控人”从控制的角度看“曲谱”,它就是一组数据!我们把给定的“曲谱”翻译成“数据”之后,写个程序让PLC去处理这些“数据”就不成问题了。

 

  下面,我抛砖引玉,向网友们介绍一种把给定“曲谱”转换成“数据”的方法。我想大家对自动液压控制系统不会很陌生吧!在液压控制原理图中,常用一种图表来描述系统中所有电磁阀在自动循环周期内的工作状态对时间的函数关系。与此相仿,我也画一个“琴键动作”对“时间”的函数关系图表供大家参考:

 

wanggq

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

<紧接第50楼的内容>

 

  单有音符的“时间数据”还不够!还必须有音符在键盘上的“空间数据”。把音符的“时间数据”和“空间数据”组合起来成一系列的“二维数据组”。若对演奏要求不是太严的话,这一系列的“二维数据组”就基本能够反映出乐曲的主要面貌了。

 

      下面,我们再来看看这音符在键盘上的“空间数据”是怎样建立起来的:

 

  请网友们先思考一下,我为什么要把这个版本的《欢乐颂》所包含的音符在键盘上的“空间信息”分成两个组来进行编码?这样会带来什么好处?

wanggq

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

 

    我抽空把这个听写版的《欢乐颂》(前12拍)片断所对应的“二维数据”给网友们写出来了,谨供大家参考:

 

  如果有对其中的数据感到疑惑的网友,就请这些网友把您所感到的疑惑具体的讲出来。我再抽空解释。

 

wanggq

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

 

  我只写了这个听写版《欢乐颂》的前12拍,其余的部分数据留给感兴趣的网友自己去完成。因为我认为“授人以渔”更重于“授人以鱼!让网友们自己有练习和交流的机会。

 

wanggq

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

 

  下面是“让PLC弹钢琴”(弹奏这个听写版的《欢乐颂》)的程序:

 

duwendi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2009年6月19日
发表于:2009-06-29 12:39:05
55楼

用PLSY 和PWM 指令输出不同的脉冲量来改变音调,脉冲量由键盘输入信号控制

wanggq

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

 

  楼上这位“ duwendi ”网友没有看懂楼主的话题!是用PLC来控制钢琴(也可以是风琴或电子琴)键盘的弹奏,而不是您所理解的“用‘弹奏键盘’来产生输入信号去控制PLC的输出内容”! 您颠倒了“控制”和“被控制”的关系!

 

wanggq

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

 

  再者,PLC输出的“脉冲量”根本不能确定“音调”!PLC输出的“脉冲宽度”也不可能确定“音调”!您用“ PWM ”指令是徒劳的。

 

  有关“让PLC唱歌”的知识请参阅《手把手教您写“让PLC唱歌”的程序》。决定“音调”的因素是“振动频率”。在PLC上用“ PLSY ”指令来实现对“音调”的控制,是利用输出脉冲的“频率”来作“控制参数”的。

 

   用“ PLSY ”指令来实现对“音调”的控制,属于《写个程序叫PLC “唱歌”》的话题。 而楼主的这个话题是“写个程序让PLC弹琴”,用PLC的不同“输出位”去控制键盘乐器上不同音名的“琴键”。键盘乐器上不同音名的琴键分别对应的“音高频率”由乐器自身决定。

 

wanggq

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

 

  当前,在这个主题下讨论的是怎样具体的写出PLC程序来实现让键盘乐器演奏出指定的乐曲。请注意:这里的控制设备是PLC,被控制的对象是键盘乐器(包括钢琴、风琴、电子琴等)。

 

wanggq

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

 

   请网友们注意,我贴在第52楼的由听写版《欢乐颂》前12拍片断为蓝本写出的“二维数据”块包含了音符的两个主要信息,即:“音高”和“时值”。这“音高”就是某些网友说的“音调”。但是,我却不是用“频率参数”来表示“音高”的,而是用各音符所对应在键盘上的“位置编码”(即:空间数据)来表示“音高”的!因为这是在讨论用PLC来弹奏键盘乐器。

 

wanggq

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

 

  通常,为键盘乐器谱写的曲谱都是复音的(在一个时间内有几个音在同时作响)。我之所以选择这个由“冰岛的雨季”网友听写出来的《欢乐颂》版本为蓝本来作练习,是因为它比较简单,它最多不超过3个音在同一时间内同时作响。这样比较容易被初学的网友分析和理解。

 

  如果有网友把我提供给大家参考的弹奏这一版本《欢乐颂》的程序用于控制电子琴,那就要注意:请使用中高档的“复音电子琴”。而那种低档的“单音电子琴”是不能演奏“复音”版本的乐曲的。

 


热门招聘
相关主题

官方公众号

智造工程师