功能表图在单片机编程中应用方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
功能表图在单片机编程中应用方法

功能表图在单片机编程中应用方法摘 要 介绍功能表图中典型序列结构在C语言中的表达方法、软件定时器的用法及其功能表图的表达、基于状态机思想的单片机主程序架构以及应用实例。使用该文方法编程可使程序更易于模块化和更便于修改,可提高单片机运行效率和系统的实时性。 关键词 功能表图;单片机;编程;程序设计 中图分类号:TP313 文献标识码:A 文章编号:1671—7597(2013)031-114-03 功能表图也称顺序功能表图或称状态转移图,它是描述控制系统过程、功能和特征的一种图形。功能表图作为一种控制系统的设计工具包含了状态机的思想。它在较复杂的PLC程序设计中的应用已充分显示出优越性。利用功能表图设计PLC程序不仅明显提高设计效率,而且设计的程序可读性好、便于调试和修改。笔者在单片机编程中使用功能表图法同样获得很好的效果。 该文的程序例均用Keil C51语言编写。 1 概念说明 为了实际使用的便利我们对功能表图的某些概念做更具体的说明。 1)关于“步”:步是控制系统中一个相对不变的状态。这里所指的系统状态在物理上通常是由控制器的输出所决定。所以“步”总是与特定的输出联系在一起的。在以单片机为中心的控制器中,从广义角度看,“输出”可以是对单片机端口的赋值,可以是对一个标志变量的赋值,也可以是调用一个数据处理子程序。如果一个步不涉及端口赋值,那么这个步是一个虚拟意义上的步,我们称之为虚步。 2)关于“转换条件”:当转换条件由多个条件组成时,我们可以将它们划分为预备条件和触发条件。预备条件即预先需准备好的条件。触发条件即为转换发生的“点火”条件。在编程时我们将预备条件放在内层判断,将触发条件放在外层判断。这样安排的好处是:当触发条件不成立时不需要对预备条件进行无效的重复判断,以节约单片机的程序执行时间。 3)关于“路”的定义:如果一个序列中最多只有一个步活动则这个序列称为一路。同一路中不同的步不能同时活动。不同路的步可以同时活动。只有一个步的序列,称为单步路。我们可以设计多路结构的程序以完成多任务操作。在C语言程序中我们用一个无符号单字节型变量表示同一路各步的进展,这样从形式上保证同一路不会出现二个以上步同时活动。 2 功能表图的C语言表达 2.1 单序列的C语言表达 图1为第1路第i步到第m步单序列的功能表图。 4 基于状态机思想的单片机主程序架构 图6显示的主程序流程图是一种基于状态机思想的主程序架构。其的特点是单大循环、模块化、按步无等待轮询。 输入查询模块将端口值输入到内存变量,后续要引用的端口输入改为引用对应的内存变量。这样安排是保证同一扫描周期内的输入变量值保持不变。前公共处理模块用于处理预先要处理的非步内事务,以及来自中断服务程序的消息(标志)所触发的事务。后公共处理模块用于处理下一扫描周期开始前需要处理的非步内事务,如保存本次扫描的端口输入值,以便检测该输入的跳变情况。各路模块是指各路序列对应的程序模块。各种中断服务程序处理强实时性事务。中断服务中如有耗时长且实时性要求不高的事务,应该使用标志,将此类事务引到主程序中处理。 5 应用实例 举一个简单的实例来进一步说明功能表图的使用方法。图7为一个单车道车辆闯红灯抓拍的功能表图。本例不考虑两车紧跟闯红灯、车辆检测器误动作及红灯故障等情况。停车线两侧埋有2个车辆检测器的地感线圈。车辆先进入线圈1再进入线圈2。对闯红灯的车辆需要抓拍3张照片作为违章证据。 上述代码中,Capture()为抓拍子程序。TM1的定义及相关代码见3。51单片机定时器0做时标定时器,TM1计时单位为10ms。biSen1与biSen2分别为车辆检测器1和2的状态变量,=0为有车。biSen10为前一扫描周期的biSen1值。语句biSen10==1 biSen1==0表示车辆检测器1输出为下降沿,即车辆进入线圈1时的车辆检测器1输出状态的变化。 6 结束语 该文探讨了功能表图在单片机编程中的应用方法。该方法已应用于产品开发的单片机编程中,实践表明使用该方法具有以下优点:1)可更清晰地描述编程思路,便于交流,减少疏漏。2)使程序更易于模块化,便于修改。3)可提高单片机的运行效率,增加系统的实时性。 参考文献 [1]GB/T 21654-2008顺序功能表图用GRAFCET规范语言. [2]GB/T 6988.6-93控制系统功能表图的绘制. [3]张惠生.控制系统功能表图在PLC程序设计中的应用研究[J].北京建筑工程学院学报,2003(12). [3]张俊.状态机思路在单片机程序设计中的应用[J].今日电子,2009(2). [4]贺海峰.基于

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档