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