- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模糊控制
1、
由于s12xs没有了模糊指令,使单片机运用模糊控制增加了不少难度,但经过研究发现,还是可以通过matlab接口来实现的,本人也在努力中,希望有更多的人来共同研究~对于实际模糊控制系统,由于在高级语言中模糊控制程序的实现比较复杂,因此引入模糊控制存在一定的困难,程序代码的过于复杂也会严重影响模糊控制系统的开发周期。而Matlab 系统及其工具箱中提供了一些能够独立完成某些Matlab功能的C/C++库函数,这些库函数可以直接应用到C/C++平台中,脱离系统完成Matlab 某些功能,极大的方便了实际应用。Matlab Fuzzy Logic 工具箱的独立C代码就是一个这样的C 语言库[1]。独 立 的 C 代码模糊推理引擎函数库fis.c 位于Matlab 目录下的toolbox\fuzzy\fuzzy 目录中,它包含了在C 语言环境下调用Matlab Fuzzy Logic工具箱建立的模糊推理系统的数据文件(*.fis)进行模糊逻辑推理的一系列C 函数,其基本原理是利用C 代码实现Matlab 中的模糊推理系统(FIS)功能。该目录下还有一个C 代码程序fismain.c,它实际上是利用fis.c 库函数来实现模糊推理系统的一个实例。正确地熟悉了 fis.c 库函数中的函数定义,在应用程序中正确调用,即可实现模糊推理系统功能。例如,从Matlab 的模糊推理系统文件(*.fis)读入系统数据,可用下面的语句:fisMatrix=returnFismatrix(fis_file,fis_row_n,fis_col_n);建立基于C 代码的模糊推理系统,可用下面的语句:fisBuildFisNode(fis,fisMatrix,fis_col_n,MF_POINT_N)。但是需要说明的是,在独立C代码函数库fis.c 中只定义了Matlab Fuzzy Logic工具箱的11 种隶属函数以及AND、OR、IMP 和AGG 四种逻辑操作函数。所以在利用Matlab 的模糊逻辑工具箱建立用于独立C 代码引擎的模糊推理系统时,不允许采用自定义的隶属度函数和逻辑操作函数来设计系统,除非修改fis.c 函数库[2]。设计基于独立的 C 代码模糊推理引擎的模糊控制程序主要有以下两个步骤:(1) 利用 Matlab 的模糊逻辑工具箱建立一个模糊推理系统,并将系统存为扩展名为fis 的数据文件。注意只能使用Matlab 定义的隶属度函数和逻辑操作函数,(2) 在 C 语言应用程序中实现Matlab 中定义的模糊推理系统功能。两者之间的接口就是独立C 代码模糊推理引擎函数库fis.c。基于S12的模糊控制调试心得小可不才在博客发了一篇有关S12的模糊控制的日志(《MC9S12DG128模糊控制崩溃之旅》)。并跟一些志同道合的网友展开了较为深入的讨论。现应部分网友同仁的要求将我调试成功的心得体会写在如下,由于本人也只是懂得一些皮毛,而且有很多问题并未深究,难免有不妥或错误之处,还请各位包涵并指正,谢谢!在此以飞思卡尔智能小车的方向控制为例,文中可能会提到一些变量,但不会对该变量作深入的探究,敬请原谅!首先必须明确你的被控量是什么?它的变化范围(即论域)多大?它是不是可以由S12的模糊机输出?隶属度函数是什么类型的?然后是模糊控制的两个输入量是什么?它们的论域是多大?是否要量化?隶属度函数是什么类型的?在这里,被控量是小车转角,向上回朔是舵机的转角,再向上就是用来控制舵机的PWM波的占空比,也就是说你的被控量是PWM波的占空比;一旦你的舵机安装方式确定后,小车前轮的左右极限转角也就定死了,也就是说你的PWM波的占空比的变化范围也就确定了,即被控量的论域确定了,以我的为例是1225到1725,显然S12的模糊机无法直接输出这么大的数值,在此对于输出量的隶属度函数我选用的是单值的,对应9个等级(0-8),即对应9个PWM占空比值,即对应9个角度值。模糊语言等级、输出等级以及实际PWM占空比值的对应关系如下。该对应关系在代码中就是://输出角度等级的隶属度函数const uchar OUTPUT_MFS[9]={? ?? ?? ?? ?? ?? ?? ?? ?? ?0,1,2,3,4,5,6,7,8? ?? ?? ?? ?? ?? ?? ?? ?? ?};如果说你要的输出量是一个浮点型的,即带小数。我通常采用的方法是将输出量同比增大10倍或是100倍,如果允许增大那么多倍的话。这样你的输出就可以是uchar的拉,要还原成小数的话,只要在后续的运算中相应地除以10或100.输出确定之后,你可以先不管模糊控制的中间过程,而是应该先确定你的控制输入量。在此选
文档评论(0)