楼主最近还看过
回复内容:
对:jian.du关于上电的时候怎么知道传进去的就是最大值和最小值呢?内容的回复:
本来是作为在需要考察40个从现场采集来的数据中“最大值和最小值分别是什么数值”这一功能要求提出的题目。我们可以认为 D10-D49 中的数据是 K-32768 到 K32767 之间的任意数值!
答案1 只是原理性的表达。用一个“开机脉冲”来启动“逐次比较”的功能片断是不实用的。因为在实际应用中,PLC 刚上电时 D10-D49 中的数据都是0,这时启动“逐次比较”的功能片断经 40 个扫描周期后“数据比较”的结果出来:D8 和 D9 中的内容都是“0” !但是,作为试验,我们可以在开机前用PLC的外设人为的给D10-D49 随便输入40个杂乱无序的数据,然后让PLC 进入RUN 。PLC 经 40 个扫描周期后就自动比较出这 40 个杂乱无序的数据中的“最大值”和“最小值”,并将最大值寄存于 D9 ,将最小值寄存于 D8 中(针对答案1)
在实用中,D10-D49 范围内的数据是控制过程中现场采集的,我们把这段范围的数据当作“源数据”。但是这里我们为了避开“数据采集”的细节, 单独实验这个“寻找最大值和最小值”的功能片断,也为了避免每次实验都要花费时间去传输几十个数据,我们可以假定自动采集的 40个数据是寄存在FX1S 的保持型寄存器之中的 D130-D169 这段范围,在每次查找之前把这 40 个数据传送到 D10-D49 作“移位读出”指令的“目标操作数1”(请原谅我称呼“移位读出指令”的第1个操作数为“目标操作数1”而编程手册上却是称其为“源 S ”);而 D129 中寄存一个常数 K40 ,以便用来在每次查找之前把移位读出指令的“指针”预先设置成“查找数据的个数 40”
我认为:编程手册(版本号Y992D87701A)第198页对“移位读出”指令的讲解是有错误的。
根据编程手册对<应用指令>的操作数“源”的定义:其内容不随指令执行而变化的操作数称为“源”,用(S)表示,可以利用变址修饰的“源”用(S.)表示。当“源”有多个时,分别以(S1.)、(S2.)···表示。
又根据编程手册对<应用指令>的操作数“目标”的定义:其内容随指令执行而变化的操作数称为“目标”,用(D)表示,可以利用变址修饰的“目标”用(D.)表示。当“目标”有多个时,分别以(D1.)、(D2.)···表示。
所以,我认为编程手册第198页对“移位读出”指令的讲解应当作如下的修改: