红绿灯控制系统数据库文件
迁移自http://adaishu.blog.163.com/blog/static/17583128620114610552690/
数据文件的设计
1. 交通灯属性表:lamp_attrib.dbf,以下假设为文件A
字段外部名 字段在文件中的名称 类型 长度 备注
交通灯名称 lamp_name Char 12 信号灯的代号
所在组号 lamp_group Char 2 组号为1,2,…
路口名称编号 lamp_wayid Char 3
交通灯类型 lamp_kind Char 2 表示红绿等灯
所在的方向 lamp_dir Char 3 见以下注
注:
1. 在交通灯的类别中,其值为:0:无灯,1:绿灯,2:红灯,3:黄灯,4:人行绿灯,5:人行红灯,6、7、8、10:转向绿灯;
2. 交通灯所在的方向的值说明:
如XYZ:X表示方向;Y表示是否为人行按钮控制的灯以及是哪个人行按钮控制;Z表示人行按钮控制的灯是车行方向的灯还是人行方向的灯;
X的值可以是A-P之间的任何一个字母;
Y的值可以是0、1、2、3、F;0、1、2、3分别表示是0、1、2、3号人行按钮,F表示该灯非人行按钮控制的灯;
Z的值可以是0、1、F;0代表该灯是车行方向的灯,1代表该灯是人行方向的灯,F代表该灯不时人行按钮控制的灯;
如AFF:表示A方向,不是人按钮控制,而是路口遥控或手控时所需要的灯;
如B00,表示B方向,为0号人行按钮控制,车行方向的交通灯,
如C01,表示C方向,为0号人行按钮控制,人行方向的交通灯。
2. 各星期或特殊日期的时间段表:week_segment.dbf,以下假设为文件B
字段外部名 字段在文件中的名称 类型 长度 备注
星期或日期 week_id char 4 星期1-7和特殊日值
时间段序号1 time_seg1 char 9 该时间段的起止时间值及控制类型
时间段序号2 time_seg2 char 9 如:00000630A
。。。 。。。 。。。 。。。
时间段序号24 time_seg24 char 9
注:
1.星期时间,即为星期几为这个时间段的设置,‘1’表示为星期一,‘2’表示为星期二,同理,‘1234567’表示为星期一到七,特殊日表示为具体的日期值,如:‘0501’表示为5月1日等
2。此表中的时间序号记录为时间段的字符串,如:00000630A,表示为0点0分到六点三十分,如果其值为00000000X,则表示为空,’A’说明见3
3。此表中的信号控制类型是用单个字母来具体表示,即A:稀疏,B:正常,C:松弛,D:稠密,E:拥挤,F:黄闪
3. 各相位时间段的周期表::time_seg_cyc.dbf,以下假设为文件C
字段外部名 字段在文件中的名称 类型 长度 备注
交通控制类型 con_type char 1 A,B,C,D,E,F
相位时间段1 time_id1 Char 5 以秒为单位
相位时间段2 time_id2 Char 5
。。。 。。。 。。。 。。。
相位时间段24 time_id24 Char 5
4. 各组灯的状态表:lamp_status.dbf,以下假设为文件D
字段外部名 字段在文件中的名称 类型 长度 备注
交通灯组号 lamp_group Char 2
相位时间段1工作状态 time_cyc1 Char 1
相位时间段2工作状态 time_cyc2 Char 1
。。。 。。。 。。。 。。。
相位时间段24工作状态 time_cyc24 Char 1
注:
1. 时间段工作状态值为:0:灭,1:亮,2:闪烁(此方式的时间间隔在控制机中固定),9表示为空
5.路口线圈的属性表:loop_attrib.dbf
字段外部名 字段在文件中的名称 类型 长度 备注
线圈名称 loop_name Char 12
路口名称编号 loop_wayid Char 3
线圈组号 loop_group Char 2
注:
1.同一个路口同一个车道的线圈编为同一组。
数据文件的配合使用:
1. 查询文件A得到本路口名称、本路口共有灯组多少和每个灯组的类别。
2. 从系统上取得系统时间(包括年、月、日、时、分、秒)。
3. 查询文件B中对应的星期和时段,从而取得信号灯的控制类型。
4. 查询文件C中对应的信号的控制类型,取得其控制步伐的亮、闪、灭时间长度。
5. 对于每一个步伐,从第一组灯到最后一组灯,向硬件端口写出其在本步伐中的工作方式(亮、闪、灭)。并且持续一个步伐的时间长度。
6. 当一个步伐持续时间到,则取下一个步伐,重复步骤4到步骤6。
7. 所有的步伐完成,则查询下一个周期的控制策略,重复步骤2到步骤7。