在T218的设定值被设置成(K)168 的情形下,T218的最大当前值就是(K)168 。它与D8099的最大值(K)32767相乘所得之积为(K)5504856,对应于十六进制为(H)53FF58 。低16位的数据为(H)FF58;高16位的数据为(H)53 。
也就是说:把T218的设定值设置成(K)168 时,则 你取乘积的高16位的数据 顶多只能达到 7位 二进制数 (B)101 0011 况且这个最大数据中为1 的位数 没有达到 6 位。很显然,不大于这个数据的 且有6 位 1 的数据是 11 1111 。所以程序中那个“统计输出点数的指令”对高16位数据统计出有6个 1 时,所定格下来的输出状态必然是 Y0、Y1、Y2、Y3、Y4、Y5 这 6个位ON,其余10个位OFF 。这个状态数据就是(K)63, 对应于(H)3F 。
现在可以做结论了。D8099的最低两个bit 信息的变化是很快的。b0 每隔 0.1 mS 就改变一次状态、b1 每隔 0.2 mS 改变一次状态。虽然把这两个bit 组合起来它们的变化也是有规律的:00 - 01 - 10 - 11 - 00 循环出现(周期为0.4 mS),但是对于任何人的反应速度来说这个 0.4 mS 都是太短暂了,任何人都根本不可能把握得住!再加上用“移位寄存器”把这个高速变化的信息打乱撒向16个bit 。(PLC在每一个扫描周期里都要移动这16个bit 的内容)这样做出的结果对于任何“抽签者”来说必然是“随机的结果”!
『 如果我们已经知道解老师他们的实际应用需要,我可以直接奔这个实际要求的“目标功能”去写出程序:
当考生按下“抽签”按钮X5,PLC(FX2n-48MT)的Y0 ~ Y17 这16个输出位就随机的出现6个位ON 。 』
“K1M0”的内容是“D8099”最低4个bit 内容之复制品。虽然这4个bit 是“D8099”内容的(十六进制)最低一位的数据当然的与“D8099”时钟脉冲是取自同一块晶体,但是我认为在94楼的答案中“D8099当前值”与“K1M0当前值”的乘积也不会形成<winter938>所说的那个“最小公倍数周期”(3.2768秒与1.6毫秒的最小公倍数周期为3.2768秒)。因为一个PLC程序的扫描运行周期并不是“精确固定”的,对它来讲还有“最大扫描周期”、“最小扫描周期”及“当前扫描周期”之分。某一“扫描周期”与另一“扫描周期”相差个零点几个毫秒到1点几个毫秒那是再平常不过的事了!仅凭这零点几个毫秒到1点几个毫秒的差异就足以使两者乘积的状态产生成千上万的不同组合。而仅凭人工操作按键,任何人都无法预知他操作按键之后“K4Y0”字中将要出现哪6个输出位为ON!