多工位竞赛抢答器程序说明
一、关于“第 3 盏灯亮后方可抢答”
字面意思,在灯亮前提前按下按钮,是违规的。
但从软、硬件层面,参赛者的按钮动作,至软件检测到按钮信号,是有延迟的。延迟琮自两个方面,一个是输入信息检测手段造成的延迟,比如输入滤波,这个大概在5ms量级;另一个方面是人体固有的反应延迟。根据网上查到的资料,人对于光的刺激至作出反应,可能有150ms的延迟,即使经过训练,这个延迟时间也不可能降至0。因此,在物理灯亮后的最初150ms内检测的按钮信号,参赛者应当是在灯亮前就已经开始作出按钮动作,按规则,属于违规。
上述的解释,不一定得到所有人的同意,我把这一客观现象,做成参数,由评委、主持人通过参数来决定是否考虑人体的反应延迟。
1、三个抢答指示灯,按题目规则,是有规律的间隔1秒点亮。参赛者完全有可能根据对时间的掌握,预判第3个灯亮前的0.15秒开始行动。
从公平来讲,风险与收益相当。参赛者冒险挑战极限,获得收益,也是能服众的。
程序把第2个灯和第3个灯的点亮间隔,在一定范围内随机生成,引入亮灯动态调整时间参数VW106,取值范围0~1000ms,也就是在原1秒间隔的基础上,增加随机因素。比如VW=500ms,实际运行效果,间隔时间会在1000ms~1500ms间随机生成,增加预判亮灯的风险。预设VW106=0,相当于题目规定的固定1秒间隔。
2、增加人体反应延迟时间参数VW104,取值范围0~200ms,在第3个灯亮起后的VW104时间内检测到按钮事件,视为违规提前操作。预设VW104=0,相当于不考虑人体反应时间。
二、关于“同时”抢答的处理
无论在软硬件层面采取多强的措施,客观上均不能做到采样间隔时间为0,这就有一定机率检测到两个按钮几乎同时按下,无法分辨前后,所以,追求极致的时间分辨率没有经济价值。
S7-200smart属于入门级PLC,像本竞赛题的程序,扫描周期约在1-2ms量级,不会超过3ms,我认为对于人的反应而言,这个时间分辨是可以接受的。
有人会反对3ms不够精细,比如快1ms按下凭什么视为是同时按下?
但是,请问,快1ms,是谁提供的信息?肉眼分辨?还是另有一套更高精度的设备参与监控?如果存在更高精度的设备参与监控,那我们这一套的竞赛器,是否就是多余的了?结论:质疑没有逻辑。
对于“同时”抢答的处理,二个方向:
1、选一个抢答成功;
2、允许同时抢答均获得抢答权。
程序引入一个参数V100.0,当V100.0=OFF(预设值)时,只允许一个抢答成功,多个同时抢答的从中选择一个;当V100.0=ON时,多个抢答均有效,点亮各自的抢答成功指示灯。
由于程序是串行扫描指令,如果固定顺序扫描工位,对于多个同时抢答的情况,扫描工位靠前的总能优先获得抢答权。本程序考虑了这个问题,采取工位扫描顺序不固定的方式,各工位优先扫描的机会均等,弥补程序串行扫描的不足。
三、有人违规抢答后,是否结束抢答
这个决策权归主持人。主持人可以宣布发生违规抢答时,是继续,还是终止,而在程序层面,违规抢答不会造成抢答终止。
【大显身手】基于Smart200多工位竞赛抢答器.rar