小车控制流程图
运料小车

第 6 页 共 36 页 ○7 联网通信功能; ○8 自检测、自诊断功能。 可以说,凡普通小型计算机能实现的功能,PLC 几乎也都可以做到。同时简单的归纳,PLC 有着以下几个特点: (1)高可靠性: ○1 所有的 I/O 接口电路均采用光电隔离,使工业现场的外电路与 PLC 内部电路之间电汽上 隔离。 ○2 各输入端均采用 R-C 滤波器,其滤波时间常数一般为 10~20ms. ○3 各模块均采用屏蔽措 施,以防止辐射干扰。 ○4 采用性能优良的开关电源。 ○5 对采用的器件进行严格的筛选。 ○6 良好的自诊断功能,一旦电源或其他软,硬件发生异常情况,CPU 立即采用有效措施, 以防止故障扩大。 ○7 大型 PLC 还可以采用由双 CPU 构成冗余系统或有三 CPU 构成表决系统,使可靠性更进一 步提高。 (2)丰富的 I/O 接口模块: PLC 针对不同的工业现场信号,如:交流或直流;开关量或模拟量;电压或电流;脉冲或 电位; 强电或弱电等。有相应的 I/O 模块与工业现场的器件或设备,如:按钮;行程开关; 接近开关;传感器及变送器;电磁线圈;控制阀等直接连接。另外为了提高操作性能,它还 有多种人-机对话的接口模块; 为了组成工业局部网络,它还有多种通讯联网的接口模块,等 等。
PLC 的主要特点 PLC 基于电子计算机,但并不等同于普通计算机。普通计算机进行入出信息变换时,大多 只考虑信息本身,信息入出的物理过程一般不考虑的实际使用。特别要考虑怎么适应于工业环境,如便于安装,便于维修及 抗干扰等问题,入出信息变换及可靠的物理实现,可以说是 PLC 实现控制的两个基本要点。 PLC 可以通过它的外设或通信接口与外界交换信息。其功能要比继电控制装置多的多、强 的多。 PLC 有丰富的指令系统,有各种各样的 I/O 接口、通信接口,有大容量的内存,有可靠的自 身监控系统,因而具有以下基本的功能: ○1 逻辑处理功能; ○2 数据运算功能; ○3 准确定时功能; ○4 高速计数功能; ○5 中断处理(可以实现各种内外中断)功能; ○6 程序与数据存储功能;
运料小车控制系统设计PPT课件

.
9
四、步的概念
3、步的动作
步的动作分为存储型、非存储型两种: 存储型:指那些需要在若干个步中都应为“ON”的动作,
在顺序功能图中,可以根据需要用置位指令S来将置 “ON”,用复位指令R来复位 。 非存储型:指那些只在步处于活动步时才为“ON”的动 作,当步转为非活动步时,动作也被复位,在顺序功能 图中,直接用线圈输出。步与它的非存储型动作“共存 亡” 。
.
6
三、顺序设计法简介
顺序控制:按照生产工艺和时间的顺序,在各个信号的作用下,根据 内部状态和时间的顺序,在生产过程中各个执行机构自动地有序的进 行操作,如前述小车运料系统工作过程可表示为图5.2。
初始状态
SB按下 I0.0·I0.2
工序1
Q0.0 前行
SQ2
I0.1 装料 定时8s
工序2
Q0.4 T37
流程图中有分支,系统会根据转换条件的不同选择不同的分支。
图b)中,当I0.0为ON时,功能图由步S1.0转到步S1.1,当I0.1
为ON时,功能图由步S1.0转到步S1.4,I0.0和I0.1不能同时为
1,选择序列的结束称为合并,图中两个分支在步S1.3前合并。
图 c)是选择性分支的一种特殊情况,即某一条分支上没有
T39
定时2s
T40
定时2s
T41
图5.9彩灯显示系统顺序功能图
.
17
图5.10 彩灯系统梯形图程序
//首次扫描位使 能初始步S0.0 //初始步S0.0开始
//按下启动按钮(I0.0)且各彩灯均为OFF时,程序 从步S0.0切换到步S0.1:第一盏灯亮状态
PLC控制运料小车

项目七PLC控制运料小车的运行1.项目任务本项目的任务设计一个运料小车往返运动PLC控制系统。
系统控制要求如下:小车往返运动循环工作过程说明如下:小车处于最左端时,压下行程开关SQ4,SQ4为小车的原位开关。
按下启动按钮SB2,装料电磁阀YC1得电,延时20s,小车装料结束。
接着控制器KM3、KM5得电,向右快行;碰到限位开关SQ1后,KM5失电,小车慢行;碰到SQ3时,KM3失电,小车停止。
此后,电磁阀YC2得电,卸料开始,延时15s后,卸料结束;接触器KM4、KM5得电,小车向左快行;碰到限位开关SQ2,KM5失电,小车慢行;碰到SQ4KM4失电,小车停止,回到原位,完成一个循环工作过程。
整个过程分为装料、右快行、右慢行、卸料、左快行、左慢行六个状态,如此周而复始的循环。
图7-1 运料小车往返运动示意图2.任务流程图本项目的具体学习过程见图2-2。
图7-2 任务流程图学习所需工具、设备见表7-1。
表7-1 工具、设备清单1.功能图编程的特点功能图也叫状态图。
它是用状态元件描述工步状态的工艺流程图。
功能转移图与步进梯形图表达的都是同一个程序,其优点是让用户每次考虑一个状态,而不必考虑其它的状态,从而使编程更容易,而且还可以减少指令的程序步数。
功能转移图中的一个状态表示顺序控制过程中的一个工步,因此步进梯形图也特别适用于时间和位移等顺序的控制过程,也能形象、直观的表示顺序控制。
功能编程开始时,必须用STL使STL接点接通,从而使主母线与子母线接通,连在子母线上的状态电路才能执行,这时状态就被激活。
状态的三个功能是在子母线上实现的,所以只有STL接点接通该状态的负载驱动和状态转移才能被扫描执行。
反之,STL接点断开,对应状态就为被激活,前一状态就自动关闭。
状态编程的这一特点,使各状态之间的关系就像是一环扣一环的链表,变得十分清晰单纯,不相邻状态间的繁杂连锁关系将不复存在,只需集中考虑实现本状态的三大功能既可。
智能小车系统设计流程图

(3)单片机控制部分
控制部分采用了主从结构,主控制器负责黑线检测,金属检测,电机驱动等工作。从控制器负责显示,路程计算,速度计算,运行时间计算等工作。主从之间采用波特率为19200的串行通信。具体电路见1-5。
2:系统的软件设计
(1)路面检测程序流程图见1-6。外部四组红外线检测传感器共用一个中断源,进入中断服务程序后查询具体是哪一路传感器遇到黑线。
4:电源选择
方案一:所有器件采用单一电源,这样供电比较简单;但是由于电动机启动瞬间电流很大,而且PWM驱动的电动机电流波动较大,会造成电压不稳定,有毛刺等干扰,严重时可能造成单片机系统掉电,缺点十分明显。
方案二:双电源供电。将电动机驱动电源与单片机以及其周边电路电源完全隔离,利用光电耦合器传输信号。这样做虽然不如单电源方便灵活,但可以将电动机驱动所造成的干扰彻底消除,提高了系统稳定性。
1-3
我们采用了200HZ的周期信号控制,通过对其占空比的调整,对车速进行调节。最小脉宽为0.2ms速度分为5档,可以满足车速调整的精度要求。同时可以控制电动机的转向。
(2)路面黑线检测模块的电路设计与实现,具体电路见1-4,为了检测路面黑线,在车的前部安装了四个反射式红外传感器,分成左右两组,由传感器先后通过黑线的顺序可以知道小车现在跑道的位置,以便跑回原跑道。
1-6
(2)显示程序由主控CPU发送开始标志,slave mcu开始打开计数器开始计时间。当master mcu每检测到霍尔元件翻转一次便向slave mcu发送一个标志,slave mcu便累加一次计算之后送去显示。速度检测我们采用单位时间内计算共有多少个脉冲计算后即可得到速度值。
三测试结果及误差分析
我们认为本设计的稳定性更为重要,故采用方案二。
PLC课程设计---运料小车控制模拟

1 概述1.1 PLC的基本概念在PLC的发展过程中,美国电器制造商协会(NEMA)经过四年的调查,于1980年把这种新型的控制器正式命名为可编程控制器(Programmable Controller),英文缩写为PC,并且作如下定义:“可编程控制器是一种数字运算操作的是的电子系统,专为在工业环境下应用而设计。
它使用可编程序的存储器来存储指令,用来在其内部存储执行逻辑运算,顺序控制,计数,计时和算术运算等操作的指令。
并且通过数字式和模拟式的输入和输出,控制各种类型的机械或生产过程。
PLC及其有关外部设备,都应按易于与工业系统联成一个整体,易于扩充其功能的原则设计。
”定义强调了PLC应直接应用于工业环境,它必须有很强的抗干扰能力,广泛的适应能力和应用范围。
这是区别于一般微机控制系统的一个重要特征。
1.2 PLC的发展PLC自问世以来,经过40多年的发展,在美,德,日等工业发达的国家已成为重要的产业之一。
世界总销售额不断上升,生产厂家不断涌现,品种不断翻新,产量产值大幅度上升而价格不断下降。
目前,世界上有200多个厂家,较有名的公司有美国:AB通用电气,莫迪康公司;日本:三菱,富士,欧姆龙,松下电工等:德国:西门子公司;法国:TE施耐德公司;韩国:三星,LG公司等。
1.3 PLC的发展趋势(一)大型化为适应大规模控制系统的要求,大型PLC向着大存储容量,高速度,高性能,增加I|O点数的发展方向。
主要表现在以下几个方面:1.增强网络通信功能:;2.发展智能模块;3.外部故障诊断功能;4.编程语言、编程工具标准化、高级化5.实现软件、硬件标准化6.编程组态软件发展迅速(二)小型化发展小型PLC,其目的是为了占领广大的、分散的、中小型的工业控制场合,使PLC不仅成为继电器控制柜的替代物,而且超过继电器控制系统的功能。
小型PLC朝着简易化、体积小、功能强、价格低的方向发展。
1.4 PLC的主要功能1.开关量逻辑控制;2.模拟量控制;3.闭环过程控制;4.定时控制;5.计数控制;6.顺序(步进)控制;7.数据处理;8.通信和联网。
控制流程图

三、小车的来回动作控制
XXXXXXXXXXXXX
标准PLC的接线图
欧规PLC的接线图
图3-12 输入信号的接线图
XXXXXXXXXXXXX
(3)输出点接线:当PLC内部程序中的输出点 线圈接通时,对应的输出点的内部输出继电器 接通,使对应的COM端则与输出端子导通。当 PLC内部程序中的输出点线圈断开时,对应的 输出点的内部触点断开,COM端则与输出端子 断开。
案例4
现有一套小单机,主要控制一些继电器、接触器、 电磁阀、指示灯等开关量信号,并通过一些按钮、 行程开关、接近开关、光电开关等开关量输入信 号。统计后,输入信号需要18个,输出信号需要 20个,请选择性价比较高的三菱PLC?
XXXXXXXXXXXXX
二、PLC的硬件结构
1、PLC的硬件结构组成图
XXXXXXXXXXXXX
输入输出点分配图
XXXXXXXXXXXXX
扩展模块信号分配点
XXXXXXXXXXXXX
按照下面的控制工艺流程图,画出电气原理图
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
X1 A点
小车第二次 开始装料
T2
装料完后第 二次右行到C
点
X3 点
到达C点后 第二开始卸料
T3
C点卸料后完 成后回到点
X1 A点
Y1阀开 T0 K50
Y3小车右行
Y2 阀开 T1 K70
Y4 小车左行
Y1阀开 T2 K50
Y3 小车右行
Y2 卸料 T3 K70
PLC控制运料小车讲解

PLC控制运料小车一、课题要求:要求:根据给定的设备和仪器仪表,在规定的时间内完成程序的设计、安装、调试等工作,达到课题规定的要求。
二、设计原则:按照完成的工作是否达到了全部或部分要求,由实验老师对其结果进行评价。
三、课题内容:其中启动按钮S01用来开启运料小车,停止按钮S02用来手动停止运料小车(其工作方式见考核要求2选定)。
按S01小车从原点起动, KM1接触器吸合使小车向前运行直到碰SQ2开关停, KM2接触器吸合使甲料斗装料5秒,然后小车继续向前运行直到碰SQ3开关停,此时KM3接触器吸合使乙料斗装料3秒,随后KM4接触器吸合小车返回原点直到碰SQ1开关停止,KM5接触器吸合使小车卸料 5秒后完成一次循环。
四、设计要求:1、编程方法由实验老师指定:⑴用欧姆龙系列PLC简易编程器编程⑵用计算机软件编程2、工作方式:A.小车连续循环与单次循环可按S07自锁按钮进行选择,当S07为“0”时小车连续循环,当S07为“1”时小车单次循环;B.小车连续循环,按停止按钮S02小车完成当前运行环节后,立即返回原点,直到碰SQ1开关立即停止;当再按启动按钮S01小车重新运行;C.连续作3次循环后自动停止,中途按停止按钮S02则小车完成一次循环后才能停止;3、按工艺要求画出控制流程图;4、写出梯形图程序或语句程序;5、用欧姆龙系列PLC简易编程器或计算机软件进行程序输入;6、在考核箱上接线,用电脑软件模拟仿真进行调试。
五、输入输出端口配置:输入设备输入端口编号接考核箱对应端口启动按钮S01 0000 SO1停止按钮S02 0001 SO2开关SQ1 0002 电脑和PLC自动连接开关SQ2 0003 电脑和PLC自动连接开关SQ3 0004 电脑和PLC自动连接选择按钮S07 0005 S07六、问题:小车工作方式设定:A.小车连续循环与单次循环可按S07自锁按钮进行选择,当S07为“0”时小车连续循环,当S07为“1”时小车单次循环;B.小车连续循环,按停止按钮S02小车完成当前运行环节后,立即返回原点,直到碰SQ1开关立即停止;当再按启动按钮S01小车重新运行;C.连续作3次循环后自动停止,中途按停止按钮S02小车完成一次循环后才能停止。
51单片机智能小车PWM调速前进程序源代码、电路原理图和器件表

51单片机智能小车PWM调速前进程序源代码、电路原理图、电路器件表从控制电路角度划分,智能小车电路板分为核心板和驱动板。
核心板上的处理器的芯片型号是:STC15W4K56S4,这是一款51单片机。
驱动板上有电源电路、电机驱动电路以及一些功能模块接口。
智能小车前进只要控制智能小车四个轮子向前转动就可以了。
智能小车四个轮子由四个直流减速电机驱动。
直流减速电机驱动芯片采用L293D,一片电机驱动芯片L293D可以驱动两个直流减速电机,智能小车用到4个直流减速电机,需要用到两片L293D电机驱动芯片。
但有时候我们需要控制智能小车的速度,不希望智能小车全速前进。
比如在“智能小车循迹实验”中,如果智能小车速度过快,来不及反应做出方向的调整,智能小车会很容易跑离轨迹,这样就需要调整控制智能小车的速度了。
那么怎么样实现智能小车前进速度的调节呢?调节智能小车的速度,实际上是调节电机的运转速度,PWM调速是目前电机的主流调速方式。
智能小车采用脉宽调制(PWM)的办法来控制电机的转速,从而控制智能小车的速度。
在此种情况下,电池电源并非连续地向直流电机供电,而是在一个特定的频率下为直流电机提供电能。
不同占空比的方波信号,调节对直流电机的通断电,能起到对直流电机调速作用。
这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上。
这样,改变L293D使能端EN1和EN2上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了直流电机转速。
智能小车PWM调速前进程序如下:首先,定义了2个变量,这2个变量用于设置智能小车的速度。
unsigned char pwmval_left_init=6; //调节此值可以调节小车的速度。
unsigned char pwmval_right_init=6; //调节此值可以调节小车的速度。
通过以下函数初始化定时器0,每1毫秒中断一次。
void Timer0_Init(void) //定时器0初始化{TMOD=0x01;TH0=0xf8;TL0=0xcd;TR0=1;ET0=1;EA=1;}下面我们看定时器0的中断处理函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目标携带装置控制流程图:
程序展示:
#define DEBUG 0 // set to 1 to print to serial monitor, 0 to disable #include <Servo.h> Servo headservost int EchoPin = 2; // const int TrigPin = 3; // const int leftmotorpin1 = 4; // const int leftmotorpin2 = 5; const int rightmotorpin1 = 6; const int rightmotorpin2 = 7 const int HeadServopin = 9; // const int Sharppin = 11; // const int maxStart = 800; //run dec time // Variables int isStart = maxStart; // int currDist = 0; // boolean running = false; void setup() { Serial.begin(9600); // pinMode(EchoPin, INPUT); pinMode(Sharppin, INPUT); for (int pinindex = 3; pinindex < 11; pinindex++) {
body_lturn(); } else{
body_rturn(); } return; } // void totalhalt() { digitalWrite(leftmotorpin1, HIGH); digitalWrite(leftmotorpin2, HIGH); digitalWrite(rightmotorpin1, HIGH); digitalWrite(rightmotorpin2, HIGH); headservo.write(70); // set servo to face forward running = false; return; delay(1000); } // void body_lturn() {
pinMode(pinindex, OUTPUT); // set pins 3 to 10 as outputs } // headservo.attach(HeadServopin); // headservo.write(70); delay(2000); headservo.write(20); delay(2000); } void loop() { if(DEBUG){
running = true; digitalWrite(leftmotorpin1, LOW); digitalWrite(leftmotorpin2, HIGH); digitalWrite(rightmotorpin1, HIGH); digitalWrite(rightmotorpin2, LOW); delay(1500); totalhalt(); } // void body_rturn() { running = true; digitalWrite(leftmotorpin1, HIGH); digitalWrite(leftmotorpin2, LOW); digitalWrite(rightmotorpin1, LOW); digitalWrite(rightmotorpin2, HIGH); delay(1500); totalhalt(); } void randTrun(){ long randNumber; randomSeed(analogRead(0)); randNumber = random(0, 10); if(randNumber > 5) {
digitalWrite(rightmotorpin2, LOW); delay(1000); } // void whichway() { running = true; totalhalt(); // first stop! headservo.write(20); delay(1000); int lDist = MeasuringDistance(); // check left distance totalhalt(); // headservo.write(120); // turn the servo right delay(1000); int rDist = MeasuringDistance(); // check right distance totalhalt(); // if(lDist < rDist) {
body_rturn(); } else {
body_lturn(); } }
Serial.print("running:"); if(running){ Serial.println("true"); } else{
Serial.println("false"); } } if (isStart <= 0) { if(running){ totalhalt(); //
} int findsomebody = digitalRead(Sharppin); if(DEBUG){ Serial.print("findsomebody:"); Serial.println(findsomebody); } if(findsomebody > 0) { isStart = maxStart; } delay(4000); return; } isStart--; delay(100); if(DEBUG){ Serial.print("isStart: "); Serial.println(isStart); } currDist = MeasuringDistance(); // if(DEBUG){ Serial.print("Current Distance: "); Serial.println(currDist); } if(currDist > 30) { nodanger(); } else if(currDist < 15){
backup(); randTrun(); } else { //whichway(); randTrun(); } } / long MeasuringDistance() { long duration; //pinMode(TrigPin, OUTPUT); digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(5); digitalWrite(TrigPin, LOW); //pinMode(EchoPin, INPUT); duration = pulseIn(EchoPin, HIGH) return duration / 29 / 2; } // void nodanger() { running = true; digitalWrite(leftmotorpin1, LOW); digitalWrite(leftmotorpin2, HIGH); digitalWrite(rightmotorpin1, LOW); digitalWrite(rightmotorpin2, HIGH); return; } // void backup() { running = true; digitalWrite(leftmotorpin1, HIGH); digitalWrite(leftmotorpin2, LOW); digitalWrite(rightmotorpin1, HIGH);