自-基于单片机的可编程逻辑控制设计

上传人:樱*** 文档编号:186651361 上传时间:2021-07-19 格式:DOC 页数:30 大小:4.76MB
返回 下载 相关 举报
自-基于单片机的可编程逻辑控制设计_第1页
第1页 / 共30页
自-基于单片机的可编程逻辑控制设计_第2页
第2页 / 共30页
自-基于单片机的可编程逻辑控制设计_第3页
第3页 / 共30页
自-基于单片机的可编程逻辑控制设计_第4页
第4页 / 共30页
自-基于单片机的可编程逻辑控制设计_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《自-基于单片机的可编程逻辑控制设计》由会员分享,可在线阅读,更多相关《自-基于单片机的可编程逻辑控制设计(30页珍藏版)》请在金锄头文库上搜索。

1、1、需求分析11项目概述2.2本设计的需求与意义31.3本设计的前景和特色42本实训的概要设计2硬件电路52.2软件的使用与程序的编写72.1上位机对梯形图的录入72.2通信模块程序的编写8.2.3下位机梯形图解释器程序的编写122.2.4整体系统框架的搭建,以及LCD显示与按键程序的编写163、详细设计13.1程序完成对uC/O-II操作系统的移植183.21SCPU.H的编写1.2.OS_PU_C.的编写193.23S_A.S03.2在系统中创建各模块并在主函数中添加各摸块任务。213.3在系统中编写key.和display文件程序224、调试过程28、实训总结及感想35本次实训体会:35

2、2 实训总结31 、CD显示与按键程序的编写为了将单片机的运行状态表示出来,在系统中添加了key.和splay.c文件,通过调试板上的液晶屏及添加相应的驱动程序,当GOF的按键被按下时,在屏上对应的显示出相应的状态,分为三种:运行态,停止态和故障态。使设备的运行态一目了然,同时也完善了工程项目的品质。、详细设计作者在实训中承担完成系统框架的搭建,并移植COS-II操作系统,以及完成对按键和显示两个模块程序的编写。C/OS实时嵌入式操作系统的结构 硬件层硬件驱动BSP实时操作系统内核RTOSFS文件系统、图形界面、系统管 理接口应用层APP应用层各任务调用关系及参数传递3.程序完成对uC/OS操

3、作系统的移植uC/O-II的代码大概分为类,这类分别为与处理器相关代码、uCOSII的配置代码和与处理器无关的代码。根据不同的处理器,我们需要修改的代码文件为S_CPU.H 、S_CPU_A.ASM 和OS_CPU_C.C,而在应用程序中使用C/OSII时,需要用户提供的是应用软件和C/OS-II的配置部分。3.2.OSCPU.的编写OS_CPUH包括了用# define 语句定义的、与处理器相关的常数、宏以及类型,栈增长方向定义,关中断和开中断定义,系统软中断的定义等等。系统内核与移植过程是无关的,用户只需要在应用系统开发过程中,通过配置OCSCFG.H文件来对内核进行裁剪,只使用应用系统需

4、要的功能,使系统最小最优化。例如STM2的堆栈是从上往下递减的,所以要将常数变量SSTK_GROWH定义为,即 define OSTK_GRWTH .2.2O_CU_C.的编写C/O中共定义了6个函数在该文件中但是最重要的是OSTaskStknit().其他都是对系统内核的扩展时用的.SakSkIit()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化.使建立好的进入就绪态任务的堆栈与系统发生中断并且将环境变量保存完毕时的栈结构一致.这样就可以用中断返回指令使就绪的任务运行起来./SI的移植范例要求用户编写1个简单的C函数:OTaskStkIni();OSaskCteHook(

5、);STskDelH();OSTaskwHook();OSTkdeHok();TskSatHoo();OSTakTikHook();OSInitHookegin();OSIniHoEnd();STBInitHoo();.2.3OS_C_.S这部分需要对处理器的寄存器进行操作。包括四个子函数:OSarHigRdy(),OSCtxSw(),OSItw(),OSTicISR()OStartHghRdy()由多任务系统启动函数OStar()中调用完成的功能是:设置系统运行标志位ORuninTRU;将就绪表中最高优先级任务的栈指针Lad到SP中,并强制中断返回.使就绪的最高优先级任务调整至运行态一样,使

6、得整个系统得以运转. OSCtxSw()在任务级任务切换函数中调用的任务级切换是通过SWI或者TRP人为制造的中断来实现的.ISR的向量地址必须指向OStxS().这一中断完成的功能:保存任务的环境变量(主要是寄存器的值,通过入栈来实现),将当前P存入任务TCB中,载入就绪最高优先级任务的P,恢复就绪最高优先级任务的环境变量,中断返回这样就完成了任务级的切换. IntCxSw()在退出中断服务函数OIntxit()中调用,实现中断级任务切换.由于是在中断里调用,所以处理器的寄存器入栈工作已经做完,就不用作这部分工作了具体完成的任务:调整栈指针(因为调用函数会使任务栈结构与系统任务切换时堆栈标准

7、结构不一致),保存当前任务SP,载入就绪最高优先级任务的SP,恢复就绪最高优先级任务的环境变量,中断返回.这样就完成了中断级任务切换. OSickIS()系统时钟节拍中断服务函数,这是一个周期性中断,为内核提供时钟节拍.频率越高系统负荷越重.其周期的大小决定了内核所能给应用系统提供的最小时间间隔服务.一般只限于s级(跟MC有关),对于要求更加苛刻的任务需要用户自己建立中断来解决该函数具体内容:保存寄存器(如果硬件自动完成就可以省略),调用OSInEnte(),调用OSTmTic(),调用SIntExit(),恢复寄存器,中断返回.uC/OS的移植实例要求用户编写4个简单的汇编语言函数:OSar

8、HighRdy();OSCtSW();SIntCtx();SicISR();3.2在系统中创建各模块并在主函数中添加各摸块任务。主函数中依次完成:定义全局变量;声明个任务内函数.初始化uCO-I,此函数中建立了空闲任务和统计任务,建立开始TaskStart任务,控制权交给C/O-I内核,开始运行多任务。实现对STM32的初始化,并建立多个任务,包括建立各任务的堆栈,以及设置优先级。 创建各功能任务voi Taskxliner(oid *pda) 解释器任务 vod akCm(void *pdaa) 通信任务 voiaske (voi *pdat)按键任务 void TaskDisp(void

9、*data) 显示任务在系统框架中添加各任务的源文件sy.c 、key.c 、LD驱动文件lcd_4.c程序框架如下图:3.3在系统中编写key.c和dspayc文件程序编程思想:在ec文件中,按键按下时,通过I语句的判断,实现对状态位state的设定。流程图如下:在dilay.文件中,通过语句对状态位state的判断,在液晶屏上实现显示的功能,流程图如下:Ky.c中按键与状态位的设置程序:void KeyBardScan(vod)if(GPIO_ReaIntDtBit(GPO,GPIO_i_)=0)tte.Run=1;f(GPIORedIpDataBt(GPIF,GPIPin_2)=0)St

10、te.Sto=1;if(GPIO_eadnputDtt(GPOF,GPIO_P_3)=0)State.rong=1; 通过状态位stat的设定,在显示dislay中实现显示功能:voidDistte(void)f(State.R=1)CD_Putting(18, 200,设备运行, MA ,REEN),CStr(75,5, PLC设备状态, TE,LUE), CD_utStrng(145,220, ,BLUE,BLUE),LCD_PutStrin(145,240, , UE,BLUE), LCDutrg(,2,R, MGENTA,GREEN), L_utSti(114,20, ,BU,BLE)

11、,CD_Ptrin(114,240, ,BE,BLUE);StatRun=0;i(StateStp=1) LCD_Pttring(18,20, 设备停止, ITE,RED), LDPutting(75, 5, LC设备状态, WITE,LUE), LD_PutSrng(15,200, , BLUE,BLE),LCDPutSring(145,4, ,BLU,BUE),LCD_PtStin(114,2, WHITE,RE),LCDutrig(4,200, ,LE,BLUE),LCDutStng(114,4, ,BLUE,BLUE);Stt.t=0;i(Staerong=1) LD_PutStrig

12、(1, 240, 设备故障, WHITE,RED),CD_utStrin(7, 55, PLC设备状态,WHITE,BU), LCD_PuStrn(45,0, , BLUE,BLUE),LCD_PutStng(1,20, , BUE,BLUE), CDPutSrg(114,240,W, WHITE,RE),LCD_PutSng(14,220, , BLE,BLU),LC_Puring(11,00,,BLE,BLU);StteWrong=0;在LC上显示效果如下截图:运行状态停止状态故障状态4、调试过程虚拟串行驱动程序(VSP)是一个可在计算机(Windws)下操作的程序,此驱动程序会创造数个“

13、虚拟”的串行埠。 由一般程序看来,这些虚拟的串行端口跟实体的串行端口相同,唯一不同于传统传输的地方是在于程序所送出的信息是透过TCPIP局域网络送至虚拟串行端口,之后由E10再将所收到的信息传达至串行设备。 当串行设备要回传信息时,要先将信息传至E0,而后再藉由局域网络将信息传回至位于计算机端的虚拟串行驱动程序,当虚拟串行驱动程序收到信息后,又会将其传回给程序,就如同传统串行线。ommix为工业控制设计的串口设备调试工具,已被许多同行使用,主要特点: 1)、能根据设备的通讯协议,方便地生成多种冗余校验如dbs,并加上结束符,适用于大多数串口通讯的工业设备; 2)、能够混合输入16进制数、10进制数、ASCI字符,这种功能通过转义符“”实现; 3)、支持串口55,支持各种虚拟串口,可以自定义任意通讯参数组合,随时改变参数而不用关闭串口

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 社会学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号