发布于 2011-09-20 08:13:44
9楼
你的设定本身就存在不足,同一方向可以进入多个车辆,因此需要再加入两个接近开关,用于车辆进出的判断,现在增加设定I3,I4,其中I1I2装入口,I3 I4装出口,I1到I2方向 I4到I3方向判为车辆进放,否则为出,增加计数器Counter为通道内车辆数量,MaxNum为通道内允许的最大车辆数量则有
I0:地上出入口的地感信号;
I1:地下出入口的地感信号;
I2:系统异常复位;
Q0:地上绿灯;
Q1:地上红灯;
Q2:地下绿灯;
Q3:地下红灯;
//入口方向进入
A I2
FP #BitPlus1
a I1
jcn _001
l #Counter
l 1
+i
t #Counter
_001: nop 0
//入口方向出
A I1
FP #BitPlus2
a I2
jcn _002
l #Counter
l 1
+i
t #Counter
_002: nop 0
//出口方向进入
A I3
FP #BitPlus3
a I4
jcn _003
l #Counter
l 1
-i
t #Counter
_003: nop 0
//出口方向出
A I4
FP #BitPlus4
a I3
jcn _004
l #Counter
l 1
-i
t #Counter
_004: nop 0
//正数表示入口方向出进入的车辆数
A(
l #Counter
l 0
>I
)
A(
l #Counter
l #MaxNum
<I
)
= Q0:地上绿灯;
= Q3:地下红灯;
//负数表示出口方向进入的车辆数
A(
l #Counter
l 0
<I
)
A(
l #Counter
l #MaxNum
negi
>=I
)
= Q2:地下绿灯;
= Q1:地上红灯;
//为零表示两个方向均无车辆进入
a(
l #Counter
l 0
=i
)
= Q2:地下绿灯;
= Q0:地上绿灯;
an q0
an q2
= Q1:地上红灯;
= Q3:地下红灯;
a #Reset
jcn _005
l 0
t #Counter
_005: nop 0