1、马达测试。按下START按钮,马达运转;按下STOP按钮,马达停止,在STOP按钮保持ON时,按下TEST按钮,可测试马达运转是否正常;
2、控制流程。第0组: 检测到X0 START按钮有信号,触发Y0马达通电。第2组: 检测到X1 TEST按钮有信号,触发Y0马达通电。第4组: 检测到X2 STOP按钮有信号与TEST按钮无信号,触发Y0马达断电。第7组: 检测到X3 马达故障有信号,触发Y0马达断电;
3、程序调试。当所有的程序编辑完成之后,就可以将程序通过串口下发至PLC中,同时在触摸屏软件上实现在线模式,进行程序调试,监控PLC动作运行状态。
你的意思是K1按下,D1输出低电平,再按一次K1,D1输出高电平?
这……这里的按键检测就不需要使用延时了,使用while不用怕会阻塞后面的程序执行。事实在公司写程序,在检测按键时我从来不用延时,当然也不是使用这种while等待按键松开的方式。有兴趣可以一起研究一下,呵呵
#include <reg51.h>#define KEY1 ( 1 << 0 )
#define KEY2 ( 1 << 1 )
#define KEY3 ( 1 << 2 )
#define KEY4 ( 1 << 3 )
#define KEY5 ( 1 << 4 )
#define KEY6 ( 1 << 5 )
sbit D1 = P0 ^ 0
sbit D2 = P0 ^ 1
sbit D3 = P0 ^ 2
sbit D4 = P0 ^ 3
sbit D5 = P0 ^ 4
sbit D6 = P0 ^ 5
void main( void )
{
while(1)
{
P1 = 0xff
if( !(P1&KEY1) )
{
D1 = ~D1
while( !(P1&KEY1) )
}
if( !(P1&KEY2) )
{
D2 = ~D2
while( !(P1&KEY2) )
}
if( !(P1&KEY3) )
{
D3 = ~D3
while( !(P1&KEY3) )
}
if( !(P1&KEY4) )
{
D4 = ~D4
while( !(P1&KEY4) )
}
if( !(P1&KEY5) )
{
D5 = ~D5
while( !(P1&KEY5) )
}
if( !(P1&KEY6) )
{
D6 = ~D6
while( !(P1&KEY6) )
}
}
}
如图所示,这就是一个自锁程序。当X0为On时,Y0输出,Y0触点为ON,当X0断开时,Y0触点还是导通的,所以Y0还是有输出的,这就是Y0把自己锁住了,就是自锁。
望采纳。。。。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)