jww
級別: 探索解密
![]() |
新手請教:1. 可不可以用PROFIBUS線(xiàn)進(jìn)行MPI通信(在兩臺S7 300之間)? 2.我安裝的STEP7 V5.4中文版軟件編程窗口下左側目錄的“庫”里文件不全,只有SMATIC-NET-CP文件,如何補全? 敬請高手指教。謝謝! |
---|---|
|
deanhao
級別: *
![]() |
1,可以的。 2 找一找庫文件,這個(gè)我倒是沒(méi)有遇到過(guò)。 |
---|---|
|
jww
級別: 探索解密
![]() |
用PROFIBUS線(xiàn)進(jìn)行MPI通信(在兩臺S7 300之間),是不是兩端接上DP頭,電阻都打在ON,然后按照MPI的編程操作就行了?我是這樣進(jìn)行的,但兩臺300 PLC不通訊錯在哪里呢?請高手指教! |
---|---|
|
wwcwwc
級別: VIP會(huì )員
![]() ![]() |
回519樓:請問(wèn)你的硬件組態(tài)怎樣?發(fā)幾個(gè)圖片你看看 ![]() ![]() 在組態(tài)完成后,加OB82;OB85;OB86;OB87;OB122塊上去. |
---|---|
|
jww
級別: 探索解密
![]() |
感謝520樓,我用的兩臺PLC 是西門(mén)子300 CPU314 訂貨號是314-1AG14-0AB0,不能進(jìn)行MPI通信(利用PROFIBUS線(xiàn))的原因可能是這款PLC不支持PROFIBUS通信,它的硬件設置里就不能進(jìn)行PROFIBUS通信設置。非常感謝,我說(shuō)的對嗎? |
---|---|
|
hhjauto
級別: 探索解密
![]() |
在FC中,定義臨時(shí)變量#TEMP12、#TEMP4、#TEMP5、#TEMP6、#TEMP7均為DWord類(lèi)型。#TEMP12用于計算指針偏移量,#TEMP4-7用于指向4個(gè)ARRY[1……112]BOOL類(lèi)型的數組)STL代碼如下: OPN #IN0 //打開(kāi)相應的DB …… …… L DBW 8 //DBW8保存了一個(gè)值為112的INT數據 L 8 /I SLD 3 L P#DBX 0.0 //這里為何是用P#DBX0.0而不是用P#0.0?可否用P#0.0? +D T #TEMP12 //相加之后#TEMP12的內容是怎樣的? L P#DBX 10.0 T #TEMP4 L #TEMP12 +D T #TEMP6 //我的問(wèn)題是:用到P#DBX byte.bit來(lái)相加,則高字節的內容是否相加?對尋址有無(wú)影響? L #TEMP12 +D T #TEMP7 L #TEMP12 +D T #TEMP5 L DBW 8 M001: T #TEMP3 …… …… A DBX[#TEMP4] A DBX[#TEMP5] = DBX[#TEMP6] …… …… L #TEMP3 LOOP M001 |
---|---|
|
hhjauto
級別: 探索解密
![]() |
就我的理解,將P#DBX byte.bit裝入到32位指針中,指針的內容為1000_0100_0000_0BBB_BBBB_BBBB_BBBB_BXXX。而若是將這樣的2個(gè)32位指針相加,那么第25、26、27位是否一樣地也相加呢??則相加的結果是否會(huì )導致尋址不再指向DBX了??然而別人程序就是這么編的應該是沒(méi)錯的,有點(diǎn)想不通。我是新手,剛接觸S7300,望前輩或是明白人給予指點(diǎn),感激不盡。 |
---|---|
|
deanhao
級別: *
![]() |
這個(gè)編程我覺(jué)得有點(diǎn)不嚴謹,有可能會(huì )有莫名的問(wèn)題。 首先要肯定你的理解是正確的,兩個(gè)雙字相加,是沒(méi)有那個(gè)位被放棄的,正如你說(shuō)的25、26、27位也是相加。而這程序之所以出現正確結果是因為:他使用的是存儲器間接尋址,而該尋址類(lèi)型都是區域內間接尋址,也就說(shuō)1000_0100_0000_0BBB_BBBB_BBBB_BBBB_BXXX,比B高的位都是無(wú)效的,原則上是應該給清零的,以免出現不必要的麻煩。 就本程序而言,只有位號和字節號有效,高位也是相加只是無(wú)效,,因此你所說(shuō)的區域代碼DBX DIX等就是無(wú)用的,所以編程的結果的會(huì )出現對的,但是建議把高位都清零,因此這個(gè)編程是不嚴謹的。 還有就是要會(huì )利用仿真監控,你可以監視累加器,地址寄存器,狀態(tài)字等等,很容易能看出來(lái)到底高位有沒(méi)有變化。 |
---|---|
|
deanhao
級別: *
![]() |
羅嗦一下,你說(shuō)的區域代碼是區域間間接尋址用的,可使用寄存器間接尋址。 |
---|---|
本帖最近評分記錄: |
hhjauto
級別: 探索解密
![]() |
感謝deanhao的指點(diǎn),也就是說(shuō)尋址正確的原因在于A(yíng) DBX[#TEMP4]這樣的指令中已經(jīng)指定了尋址DBX了是嗎?就是說(shuō)區域內尋址一般使用P#byte.bit裝入指針中,而在區域間尋址才使用P#M byte.bit這樣的數據裝入指針中,而后面的指令就可以直接使用A #TEMP4的形式了。PLCSIM電腦上有裝,還不熟悉怎么監視,還需慢慢摸索?傊芨兄x你的回答……一個(gè)人摸索真的是很郁悶的一件事情。此論壇真是個(gè)好地方。 |
---|---|
|
hhjauto
級別: 探索解密
![]() |
“而后面的指令就可以直接使用A #TEMP4的形式了”,似乎不對,這樣的指令似乎是錯的,必須使用A DBX[#TEMP4],百度了一下,總算是明白了,寄存器間接尋址支持X [AR1,P#byte.bit]的形式。區域代碼的作用就在這里是吧?? |
---|---|
|
deanhao
級別: *
![]() |
你的理解是正確的,以為上面已經(jīng)指定區域,即區域內間接尋址,所以剩下的只用指定字節號和位號就可以了。 而寄存器的尋址可以使用你說(shuō)的區域間,這時(shí)候的區域代碼就是很重要了。 但是我不贊成你給的程序的編程方式,因為很不規范回造成一些錯誤。 還有什么問(wèn)題歡迎討論。 |
---|---|
|