| 作者 | 主题 |
|---|---|
|
WWCWWC 至圣
经验值:79164 发帖数:9102 精华帖:157 |
楼主
主题:关于300、400的寻址验证引出的问题 关于300、400的寻址验证引出的问题 昨天在“找答案”栏目中,看到这样这个问题,是求助西门子300寻址的含义,问题贴链接: http://www.ad.siemens.com.cn/service/answer/solved_243572_1077.html 程序: OPN DB 130 A DBX [MD 1300] 这段程序不完整这里暂时不做解释,在下面有说明,主要来说明寻址方式。 而网友一再确认这个DBX [MD 1300] = M1308.0,我感觉这个理解存在问题,首先MD1300没有在调用前赋值(没有看到赋值程序段),那么,假设MD1300 = 0,根据: OPN DB 130 A DBX [MD 1300] 我认为如果MD130没有提前“赋值”,系统默认为0,这个地址应该指向DB130.DBX0.0这个地址,为确认我这个想法,我按网友的意思写了他描述的那段程序,并模拟仿真: 我在仿真器上使能DB130.DBX0.0,监控程序段STA值为1,说明在没有赋值相当于MD1300 = 0,这个地址应该是寻址到DB130.DBX0.0,为说明这个问题,我给MD1300赋值为1,那么,寻址地址应该指向DB130.DBX0.1,图示: 同样,我再次给MD1300 = L#10,那么,寻址地址应该指向的是DB130.DBX1.2,图示: 本来此问题已经说明到此,应该是说清楚了。但是,我在继续验证其它程序段时,发现一个另外的问题,图示: 当我取消DB130.DBX1.2的位使能,那么,我网络段3的简单程序,为什么没有了正常输出?声明下面地址是没有重复使用的。 A M 0.0 = M 0.1 监控的现象是,当DB130.DBX1.2 = 0,M0.0 = 1,按理M0.1 = 1,开始监控结果: 当,我给DB130.DBX1.2使能为1时,网络3使能输出正常。关闭DB130.DBX1.2 CPU并没有什么系统报警,图示: 诊断缓冲区没有这方面的报警信息。 我将网络2的那段程序补充成为完整一个网络程序,网络3程序可以正常,图示: 看来,STL编程语言要求虽然是低,但是,基本的程序完整性还是需要确保的,不然,出现意想不到的问题自己还不一定能够搞明白,好在我验证的程序段例子,程序做的非常简单、易懂,看的清楚明白。 希望那位网友看到此贴,也可以理解、参考300、400的寻址原则。 |