qiyun0528
級別: *
|
圖片:
最近我在學習300的編程,還是遇到了些問題,希望大家的幫助,下面的這個截圖,希望知道的回答下,在次很感謝大家了? 為什么我接通I0。2的時候,然后再接通I0。0 Q0。0為什么沒有輸出呢? |
---|---|
|
wwcwwc
級別: VIP會員
|
如果你在線或者軟件安裝有仿真,可以運行在線、仿真測試。程序我看沒有錯誤,關鍵是看MD4與MD6的實際值,同時有可能地址存在重置。 |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
因為:MD4由MB4,MB5,MB6,MB7組成,其中MB6,MB7是他的低字 MD6由MB6,MB7,MB8,MB9組成,其中MB6,MB7是他的高字。 你給MD4賦值為6,其寫入最低字中,也就是MB7中的值為6,其16進制代碼為:16#0000 0006 由于MD4,與MD6存在交叉地址空間,因此此時的MD6的16進制代碼為:16#0006 0000 接下來,你給MD6賦值4,因此4寫入低字空間,MD6的16進制代碼為 16#0000 0004,看見了沒有,這個操作將MD4的低字MB6,MB7同時清零了。 因此,此時MD4的值為0,而MD6的值為4. 又由于你使用CMP >=R 指令,而MD4的值為0,因此其浮點數也為0,而MD6的值為4,其浮點數必定不為0,16進制4的浮點數應該為:5.60519e-045)因此,MD6的值始終大于MD4的值,能流不導通。 在此段程序中,樓主做了兩個初學者極大的錯誤: 1、使用地址重疊,一般不是特殊需求應避免使用重疊地址,這可能導致正常數據被意外修改。 2、使用了浮點數比較,因為浮點數是近似值,因此使用浮點數比較可能導致一些意外情況。 Good Luck~ |
---|---|
|
hanqin
級別: 論壇先鋒
|
絕對的高手 |
---|---|
|