lingcore
级别: 探索解密
精华主题: 0
发帖数量: 5 个
工控威望: 103 点
下载积分: 596 分
在线时间: 6(小时)
注册时间: 2010-12-15
最后登录: 2018-07-10
查看lingcore的 主题 / 回贴
楼主  发表于: 2010-12-16 04:06
许多教科书上都有抢答器的例子,但不少抢答器是不公平的,也就是说,如果两个人在同一PLC扫描周期内按下抢答按钮,抢答程序只接受程序位置上排在前面的抢答者的按钮信号。

附件是一个公平抢答器的设计过程。
附件: 一个保证公平的抢答器.doc (58 K) 下载次数:145
网站提示: 请不要用迅雷下载附件,容易出错
lingcore
级别: 探索解密
精华主题: 0
发帖数量: 5 个
工控威望: 103 点
下载积分: 596 分
在线时间: 6(小时)
注册时间: 2010-12-15
最后登录: 2018-07-10
查看lingcore的 主题 / 回贴
1楼  发表于: 2010-12-17 00:43
回复1楼:

不太明白您的意思,这里尽力理解和回答。

PLC一个周期的工作过程是:读入数据,处理数据,输出数据。

在同一个周期内,外部信号到达PLC有快有慢,在“读入数据阶段”,所有输入数据都从外部复制到内部寄存器,因此在处理数据阶段,CPU所看到的输入数据全部来自前一个数据输入阶段所读入的数据,已经无法分辨它们的先后顺序,因此对程序而言,所有输入数据都是同时得到的,没有先后之分。

三菱的K1X0相当于X1,X2,X3,X4。对CPU而言,无论用K1X0去访问这四个变量,还是分别用X1,X2,X3,X4访问它们,结果是一样的。

原帖只是对一个现有程序的一个改进,也许会有更好的解决方案。比如,S7-200有一个物理读指令,可以在一个周期的工作过程中直接读入外部信号,不必等待周期结束再读。有兴趣的朋友也许可以考虑如何用这样的质量把抢答器做的更好。使用中断或许是一种解决方案,但是中断程序一般执行时间比较长,而且书写中断程序也比较复杂,时间分析也比较困难。

抢答器指令数量并不多,执行速度很快,因此一个周期的时间并不长。要得到更好的结果,还可以去找速度更快的PLC。绝对公平不存在,但是,只有使PLC工作周期越短,那么精确程度就越高。

欢迎进一步探讨,最好直接给出更好的程序。
[ 此帖被lingcore在2010-12-17 23:09重新编辑 ]