西门子plc300编写交通红绿灯程序梯形图如上图所示:
用西门子PLC300的计时块来搭建脉冲程序的具体 *** 作步骤如下:
1首先要在画面上显示出总缆。
2然后将总缆窗口拖至左侧,这样方便我们查找计时程序块。
3这时候插入启动按钮,这里是做的一个简捷的按钮,在实际中做一个笛自锁比较好。
4然后在总缆中插入时间计时块并输入脉冲时间及位号。
5之后再加入两个时间常闭点,这样能实现互锁。
6想要在硬件上调试的话,可以再加两个输出灯来进行调试。
unsigned char counter;
sbit red_nb=P2^0;
void main()
{
TMOD=
TH0
TL0
ET0
TR0
while(1) //根据楼主所给,有4种状态
{
state1;
state2;
state3;
state4;
}
}
void timer0() interrupt 1 //定时器0
{
TH0=0x3c;
TL0=0xb0;
counter++;
}
void state1() //控制南北红灯亮,东西绿灯亮,30s
{
unsigned char temp = 30;
red_nb=1;
green_dx=1;
while(1)
{
if( counter>19){counter=0;temp--} //每次counter=20,即1s,temp自减
if(temp) break; //当temp为0时,即30秒,退出状态1,进入状态2
}
}
没经过测试,完全是5分诱惑不大。。
;交通灯模拟实验程序
GEWEI EQU 21H ;个位数据
SHIWEI EQU 23H ;十位数据
SCANLED EQU 25H
SCANMODE EQU 26H
RED EQU 28H ;定义灯的缓冲区
GREEN EQU 29H
YELLOW EQU 32H
NUMTIM EQU 33H
LED EQU 34H
ORG 000H
JMP START
ORG 0BH
JMP TIMER0 ;定时器0中断入口
ORG 100H
START:MOV SP,#50H
MOV R0,#20H
MOV R5,#20
CLR0:MOV @R0,#00H
INC R0
DJNZ R5,CLR0
MOV TMOD,#01H ;设置定时器
MOV TH0,#HIGH(65536-5000)
MOV TL0,#LOW(65536-5000)
SETB TR0
MOV IE,#10000010B ;端口初始化
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#00H
MOV P3,#0FFH
MOV R3,#10
MOV R2,#3
MOV R1,#10
MOV R7,#200
MOV RED,#10
MOV YELLOW,#3
MOV GREEN,#10
MOV NUMTIM,#10
MOV LED,#0FFH
AJMP $
;============================================================= TIMER0:PUSH ACC ;定时器部分,负责交通灯的及时和数码管动态扫描
PUSH PSW
MOV TH0,#HIGH(65536-5000) ;重新赋初值
MOV TL0,#LOW(65536-5000)
DJNZ R7,RET0
MOV R7,#200
MOV A,SCANMODE ;调用扫描
MOV B,#4
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN
JMP @A+DPTR
TAB_SCAN: AJMP RED_LIGHT
AJMP YEL_LIGHT
AJMP GRE_LIGHT
AJMP YEL_LIGHT
RET0: MOV A,NUMTIM
LCALL BIN_BCD
MOV SHIWEI,A
MOV GEWEI,B
INC SCANLED
MOV A,SCANLED
MOV B,#4
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN0
JMP @A+DPTR
TAB_SCAN0:AJMP SCAN_L1
AJMP SCAN_L2
SCAN_L1: MOV P2,#0
MOV A,SHIWEI
JMP END_SCAN
SCAN_L2: MOV P2,#1
MOV A,GEWEI
JMP END_SCAN
END_SCAN:MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,LED
MOV P1,A
POP PSW
POP ACC
RETIRED_LIGHT:MOV LED,#11111100B
MOV NUMTIM,RED
DEC RED
MOV A,RED
CJNE A,#0FFH,RET0
MOV RED,#10
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
JMP RET0
YEL_LIGHT:MOV LED,#11110011B
MOV NUMTIM,YELLOW
DEC YELLOW
MOV A,YELLOW
CJNE A,#0FFH,RET0
MOV YELLOW,#3
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
JMP RET0
GRE_LIGHT:MOV LED,#11001111B
MOV NUMTIM,GREEN
DEC GREEN
MOV A,GREEN
CJNE A,#0FFH,RET1
MOV GREEN,#10
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
RET1:JMP RET0 BIN_BCD:MOV B,#10
DIV AB
RET DELAY: MOV R5,#02
D1: MOV R6,#200
D2: MOV R7,#200
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH;共阴字码表
DB 07H,7FH,6FH,77H,7CH,39H,5EH
DB 79H,71H,76H,73H,3EH,00HEND
PLC控制梯形图设计
十字路口南北及东西方向均设有红、黄、绿三个信号灯,六个灯以一定的时间顺序循环往复工作。如下表所示:
方向
时间顺序
南北方向
南北绿(8s),东西红(8s)
南北黄(21s),东西红(21s),
南北红(101s),东西绿(8s),东西黄(21s)
东西方向
东西红(101s),南北绿(8s),南北黄(21s)
东西绿(8s),南北红(8s)
东西黄(21s),南北红(21s)
相应的元器件安排如下:
元器件
作用
X000
起动及循环起点,南北绿,东西红。
Y000
南北绿输出
Y001
南北黄输出
Y002
东西红输出
Y003
东西绿输出
Y004
东西黄输出
Y005
南北红输出
M0
中间继电器,把X000的状态保持。
T0
东西红定时
T1
东西绿定时
T2
东西黄定时
T3
南北绿定时
T4
南北黄定时
T5
南北红定时
根据以上分析,其梯形图可设计如图1
要求:
1、一路延时60S,
一路延时40S
(演示时为节省时间,一路延时15S,一路延时10S>>
两路时间分别用不同的数码管显示;
--相同的,即可。
--比如:
--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。
--东西红灯、南北绿灯,两个方向的数字显示,都是40s倒计时。
--两路时间虽然不同,数码管显示应该是相同的,完全可以用一组数码管显示。
2紧急通行控制,如某一方向现为红灯,通过按键强行切换为绿灯,而另一路改为红灯,延时若干秒(10S)后,恢复原状态(红灯)继续倒数
--不应恢复原状态。
--比如:
--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。
--在 59s 时,即仅仅剩下 1s 时,被强制转换了红绿灯。
--那么 10s 后,再恢复原状态
--原状态,仅仅有 1s,还恢复它干什么
--这时间,可能,都不够汽车起步用的。
--恢复原来的半截状态,显然不合理。
以上就是关于西门子plc300编写交通红绿灯程序梯形图全部的内容,包括:西门子plc300编写交通红绿灯程序梯形图、C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急!、设计一个交通灯控制电路程序(单片机)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)