课程设计论文PAC两位计算器程序设计.doc
课 程 设 计PAC两位计算器系 别:自动化系 专 业:自动化 班 级:0920391 组 长: 小组成员: 指导老师: 日 期:2012年4月14日目录1. 题目要求分析31.1课题内容1.2课题要求2.设计思路分析33.控制系统的I/O及地址分配44.电器控制系统原理图5 4.1系统框图4.2硬件选型5. 项目模拟设计75.1界面设计5.2程序设计 6.总结177.参考文献17PAC两位计算器程序设计1.题目要求分析1.1课题内容设计要求:在09十个数中分别任意选择数字,从0099进行四则运算,并将输入数、运算符号及结果均通过八段码显示。当结果超出两位数时,实现分时显示,当出错或溢出时也有相应的显示。1.2课题要求1)按题意要求,画出PLC端子接线图、控制梯形图。2) 完成PLC端子接线工作,并利用编程器输入梯形图控制程序,完成调试。3) 完成课程设计说明书。2.设计思路分析:在本次计算器设计中,依次考虑以下内容。(1)完成数字的输入由于计算器的按钮均为非自锁按钮,并且人为输入时按键按下时间一般会比一个扫描周期长,因此使用的正跳变触点完成一个数字的传送。例如,当按I00101键,表示输入“1”这个数字时,将数字“1”传送至存储器(2)输入并存储运算符1)“+”,“-”,“*”,“/”四个运算符分别对应于四个位寄存器%M00001%M0000再次按下1时进行1乘以10再加1结果传送至寄存器,当按下其中的一个运算符的瞬间,将其对应的寄存器置“1”。2)当第一次按下运算符或“=”时,做以下工作:将本次输入的运算符保存至%M00001%M00004中;将第一次输入的数据转存至%R00002中,并清除%R00001中的内容。3)当第二次或多次按下运算符或“=”,做以下工作:将上一次输入的运算符移入%M00005%M00008中,同时将本次输入的运算符仍存入%M00001%M00004,以备下次使用;使用%M00005%M00008中所保存的上次输入的运算符,进行需要的运算,计算结果仍放回%R00001中,同时将结果转存至%R00002,以备下次运算时使用。4)当进行除法运算时,需判断除数是否为零,当除数为零时不再进行计算,并显示“E”,表示溢出,此时需按下清零键方可进行正常运算。(3)输入的数据及计算结果的显示 将每次输入的数据及运算结果均存入%R00001,随时将%R00001的内容转换为BCD码存入%R00007,并进行显示。数据的显示 本项目为二位数的四则运算,因此采用两个数码分别显示个位数和十位数,因个位数与十位数的显示相类似,考虑采用子程序的形式完成BCD码(4)数字的显示。按下清零键 将所有用到的存储器%R00001和运算符对应的寄存器%M00001%M00008均清零,计算重新开始。3.控制系统的I/O及地址分配ME中I/O配置要求如表1,表2所示。表1 计算器设计I/O分配表a)输入b)输出输入功能说明输出功能说明%I00101数字1,按键SB1%Q00001个位数数码管A1段%I00102数字2,按键SB2%Q00002个位数数码管B1段%I00103数字3,按键SB3%Q00003个位数数码管C1段%I00104数字4,按键SB4%Q00004个位数数码管D1段%I00105数字5,按键SB5%Q00005个位数数码管E1段%I00106数字6,按键SB6%Q00006个位数数码管F1段%I00107数字7,按键SB7%Q00007个位数数码管G1段%I00108数字8,按键SB8%Q00008十位数数码管A2段%I00109数字9,按键SB9%Q00009十位数数码管B2段%I00100数字0,按键SB0%Q00010十位数数码管C2段%I00111+(加号) ,按键SB10%Q00011十位数数码管D2段%I00112-(减号),按键SB11%Q00012十位数数码管E2段%I00113*(乘号),按键SB12%Q00013十位数数码管F2段%I00114/(除号),按键SB13%Q00014十位数数码管G2段%I00115=(等号),按键SB14%Q00015-(负号)FF%I00116清除键,按键SB15表2数码管编码表整数型BCD码中间继电器abcdefg00000M00010111111010001M00011011000020010M00012110110130011M00013111100140100M00014011001150101M00015101101160110M00016101111170111M00017111000081000M00018111111191001M0001911110114.电器控制系统原理图4.1系统原理图4.1.14.1.1为PAC硬件连接图,16个输入,15个输出。4.1.2图4.1.2为数码管控制时序图,当按下数字“5”时,输出信号如上时序所示。4.2硬件选型 4.2.1数码管选型: 在本项目中选用共阴极2位数码管红光 5261BS,工作电压可选24V电压的数码管。 4.2.2按键选型:按键在本项目中选用非自锁型额定电压24V的按键,如上所示型号:DS-427(3A/24V 1.5A/24V)5. 项目模拟设计(1)项目触摸屏设计:图1根据题目要求在触摸屏上设计如图1界面,09数字输入,以及“+”,“-”,“*”,“/”四个运算符输入自定义“+”为:,“-”为:,“*”为: ,“/”为:。清除键输入,两个数码管和符号显示灯。(2)项目梯形图设计:1)子程序LDBK:图2如图2为主程序中控制数码管显示数字的子程序。AA,BB,CC,DD为输入,A,B,C,D,E,F,G为输出。2)主程序:图3图4图5如上图3,图4,图5中120条梯形图完成数字0099数字的输入功能。初始状态%R00001为0,当第一位输入时%R00001保存输入的数,第二次输入时,把第一次输入数乘以10再加上第二次输入的数,完成两位数输入功能。图6如图6中22到26完成“+”,“-”,“*”,“/”四个运算符分别对应于四个位寄存器%M00001%M0000当按下其中的一个运算符的瞬间,将其对应的寄存器置“1”保存其运算的状态。图7在图7中是进行“+”,“-”,“*”,“/”四个运算功能,在32条语句中,检测除数是否为0,若为0则出错溢出,数码管显示“E”。图8在图8中34条语句检测结果是否为负数,若为负数则界面负号点亮。,36,37,38条语句检测输出结果是否超出2为,若超出2位则用定时器进行分时显示,先显示千位和百位定时2秒后显示十位和个位。图9如图9是运用LDBK程序,完成BCD码显示数码管功能。R00007低四位显示个位,高四位显示十位。图10如图10是完成显示自定义在数码管中显示“+”,“-”,“*”,“/”的功能,自定义“+”为:,“-”为:,“*”为: ,“/”为:。图11图11中51条语句是显示“E”功能,52条语句实现灭0功能,例如00到09时十位上灭0。项目运行结果图:1)加法运算: 第一次输入:86 输入加号 第二次输入:21 结果107超过2位,进行分时显示,先显示1再显示07。2)减法运算: 第一次输入:86 输入减号 第二次输入:21 当86减21时得到65,当21减86时得到-65。3)乘法运算: 第一次输入:86 输入乘号 第二次输入:21 得到结果1806超过2位,进行分时显示,先显示18再显示06。4)除法运算: 第一次输入:86 输入除号 第二次输入:43得到结果25)溢出运算: 第一次输入:86 输入除号 第二次输入:0结果错误溢出,显示“E”。6.总结在本次项目2位计算器程序设计中,学习了一些之前没有学到的指令,虽然在现实生活中用PLC进行计算器编程运算是大材小用,但在调试的过程中发现其实并不是学习怎么编程出计算器的逻辑而更重要的是增强了PLC对数据的处理能力,更加了解了数据怎么在PLC处理过程。在项目调试过程中也出现了错误,需要注意几点如下:(1)地址重复问题,在子程序中用了M00010M00019,而在主程序也用了造成结果错误,所以在编程的过程中应注意自己之前用过的输入输出和寄存器。(2)在调试过程中出现执行加法运算结果再进行乘法运算出错。出错原因:是同时接通了ADD加法运算和MUL乘法运算造成结果混乱。解决办法:当第二次或多次按下运算符或“=”,做以下工作:将上一次输入的运算符移入%M00005%M00008中这样执行加法运算后按下乘号使其ADD加运算断开,只进行MUL乘法运算,输出正确结果。7.参考文献【1】可编程自动化控制器(PAC)技术及应用。【2】马竹梧·冶金工业出版社【M】。北京:机械工业出版社,2007.【3】康尼MPS生产线实验指导书,2008.【4】PAC系统实验实训装置实验指导书,南京康尼科技实业有限公司。【5】LogicDeveloper-PLC快速入门。GE智能平台。18