$4_开关量输入输出通道与顺序控制-3(NEW)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

XI’ANJIAOTONGUNIVERSITY工业系统的驱动与控制——顺序控制工程训练中心IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-2§2.1开关量通道的读写控制“PC+采集卡”的控制系统用户人-机界面采集卡工业系统机-机界面数据通道端子板(电气接口)线接好后,不再改变要改变的是控制流程,如何控制?IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-3§2.1开关量通道的读写控制“PC+采集卡”的控制系统数据通道被控对象控制流程或者算法IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-4§2.1开关量通道的读写控制采集卡的工作原理采集卡的操作寄存器读写端口读写基地址BaseBase+3地址偏移量offset寄存器的地址=基地址Base+偏移量offset由所用的寄存器确定由板卡跳线确定DI_REGDO_REGAD_REGDA_REGDI0..15DO0..15AD0..15DA0..1采集卡工业系统PC总线IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-5§2.1开关量通道的读写控制DI/O通道的工作过程采集卡inportb(port)DI/DO电路板DO_1DO_2DO_3DO_4DO_5DO_6DI_1DI_2DI_3DI_4DI_5DI_6+5VGNDoutportb(port,0x15)0x1500010101111101100xF6如果不发送00010100,1号灯一直亮,必须用outportb重新改变其状态00010101信息0V。。。+5V载体IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-6§2.1开关量通道的读写控制控制系统中几个常用的C语言函数键盘输入:while(!kbhit()){…}/*如果没有按下任意键继续*/while(bioskey(0)&0xFF!=27){…}/*输入ESC键退出循环*/I/O端口读写:inportb(BASEADDR+6);outportb(BASEADDR+13,0x05);延时:delay(milliseconds)延时若干毫秒sleep(seconds)延时若干秒IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-7训练内容1:观察演示程序的DI/O操作训练系统接线示意(P109)CN1CN2CN4CN3工控机背面DI/DO电路板DO_1DO_2DO_3DO_4DO_5DO_6DI_1DI_2DI_3DI_4DI_5DI_6+5VGNDA1B1A2B2A3B3A4B4A5B5A6B6A17B17A18B18A19B19A20B20DI_1DI_2DI_3DI_4DI_5DI_6DO_1DO_2DO_3DO_4DO_5DO_6D.GNDD.GND+5V+12V至采集卡CN4自采集卡CN36线2线6线IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-8训练内容2光电对管遮光控制LED(P110训练(1))DI/DO电路板DO_1DO_2DO_3DO_4DO_5DO_6DI_1DI_2DI_3DI_4DI_5DI_6+5VGNDIndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-9总结:训练内容2程序main(){intDI[6],DO[6],I,DI_out,DO_out;for(i=0;i6;i++)DO[i]=0;DO_out=creat_DO(DO);/*初始化,使红色LED熄灭*/outportb(BASE_ADDRESS+13,DO_out);clrscr();while(!kbhit()){DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);/*获取光电对管状态*/for(i=0;i6;i++)DO[i]=DI[5-i];DO_out=creat_DO(DO);outportb(BASE_ADDRESS+13,DO_out);/*输出*/}outportb(BASE_ADDRESS+13,0);/*清零*/}IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-10训练内容3脉冲列计数(P110训练(2))DI/DO电路板DO_1DO_2DO_3DO_4DO_5DO_6DI_1DI_2DI_3DI_4DI_5DI_6+5VGNDIndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-11训练内容2:脉冲计数器脉冲的计数方法整个脉冲:01,10看上升沿:01看下降沿:10一个周期算完成一次遮挡IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-12训练内容2:脉冲计数器难点:多计数或少计数解决的办法——覆盖整个时间段:每个循环只DI一次,并把本次获得的值存为下次计数判断使用。使用中断方式每次循环DI输入2次或2次以上将会出现少计数IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-13Y训练内容3:脉冲计数器程序流程图DI:输入当前的对管状态判断2号光路是否遮断计数器counter=01号光路是否通断1次(与上次比较)计数器counter=counter+1DO输出counter保存本次的对管状态按键了么?(结束指令)NYY结束输出结果N..main(){intDI[6],DI_out,I;i=0;clrscr();printf(TypeAnyKeytoEnd\n);while(!kbhit()){DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);/*if(now_di[2]==0)i=0;*//*清零*/while(DI[1]==0)/*判断光1是否被遮挡*/{if(DI[0]==1){DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);if(DI[0]==0)i++;/*光0被遮挡,计数器加1*/}DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);printf(i=%d\n,i);}}}IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-15编程要领需要解决的问题是什么?——抓住主要问题如何解决?——理清思路,画出流程图编写代码:力求简洁,不要写一堆无效代码,以免影响思路模块化代码调试多写多练IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-16§2.2开关量通道用于顺序控制顺序控制的基本知识顺序控制:使工业系统按事先规定的时间或者条件顺序地动作。工步:执行器的一个动作开关量用于顺序控制:“开”、“关”、“启动”、“停止”、危险报警IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-17§2.2开关量通道用于顺序控制顺序控制的实现时间控制:delay(milliseconds);sleep(seconds);定时器中断:8253、8254……条件控制:逻辑判断if...else…switch(){case1:case2:default:}IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-18§2.2开关量通道用于顺序控制电机控制系统举例一个系统包含3台电机,分别为M1、M2、M3。系统启动时,3台电机按顺序启动,关闭时按相反顺序进行。每台电机有一个指示灯,启动正常运转时指示灯亮。另外有3个指示灯表示系统状态:系统正常运转时,绿灯亮;如果系统负荷较大时,系统发出警告,黄灯亮;系统超负荷工作,系统错误报警,红灯亮。MMM正常警告报警220~IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-19§2.2开关量通道用于顺序控制电机控制系统模拟光电对管0-3:输入负荷load(0-0x0F)光电对管4:系统启动开关光电对管5:系统关闭开关LED0-2:电机1-3的工作指示灯LED3:系统正常(load≤10)LED4:警告(10<load≤13)LED5:错误报警(load>13)MMM正常警告报警220~IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-20§2.2开关量通道用于顺序控制电机控制系统流程图开始顺序关闭3个电机并熄灭指示灯系统启动?顺序启动3个电机,并点亮指示灯正常系统关闭?负载≤10负载≤13警告报警点亮工作状态指示灯YNYYNNYNIndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-21第二次作业任选一道DIO通道顺序控制的题目,画出程序流程图,并编写程序(P111)包装机楼梯照明系统电梯LED闪烁自动洗衣机要求使用DI/O实验板模拟IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-22第二次作业包装机有一个工业包装流水线,每一箱装6件产品,箱子装满时打包机开始动作,完成一个包装箱需6个动作。提示:绿色LED1对应产品,每遮挡一次表示装了一件产品,挡了6下后,对应6个红色LED依次发光,表示打包完成。IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-23第二次作业楼梯照明系统一幢楼房从底层到顶层有6盏楼梯照明灯,每一盏灯都有红外接收装置检测是否有人经过该灯的照明区域。若有人经过,灯自动亮,持续3分钟后熄灭。编写程序,模拟一个人从底层到顶层,顺次经过6盏照明灯时,灯自动亮,3分钟后熄灭。提示:真实模拟可以使用gettime()函数。IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-24第二次作业电梯两层电梯,用户在任何一层呼叫,电梯门开,用户进入后按关门按钮,电梯门关闭,电梯起动,到达目的层后停止,电梯门开,人离去后15秒电梯门自动关闭。提示:先定义一组动作,如遮挡光电对管0表示开电梯门,遮挡光电对管1表示关门等IndustryTrainingCenter《工程训练》——开关量通道的输入输出DI/O2-25第二次作业LED闪烁利用延时程序使LED闪烁。闪烁可以有多种模式,如亮暗长短不一,或有一定的节奏,或低位每闪10次高位闪一次。LED闪烁(1)main(){shorttemp1=0,temp=1;while(!kbhit()){temp1=inportb(0x220+6);while(temp1==254)/*1#*/{outportb(0x220+13,temp);delay(10000);temp=temp1;if(temp32)temp=1;temp1=inportb(0x220+6);if(temp1==253)break;elsetemp1=254;}LED闪烁(2)while(temp1==253)/*2#*/{temp=21;/*(21)10=(010101)2*/outportb(0x220+13,temp);delay(60000);temp=42;/*(42)10=(101010)2*/outportb(0x220+13,temp);delay(60000);temp1=inportb(0x220+6);if(temp1==251)break;elsetemp1=253;}LED闪

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功