西門子6ES7211-0BA23-0XB0安裝調(diào)試
西門子6ES7211-0BA23-0XB0安裝調(diào)試
當(dāng)在程序中使用 "I..." 或 "Q..." 對(duì)輸入、輸出進(jìn)行訪問(wèn)時(shí),實(shí)際上并未直接訪問(wèn)輸入、輸出模板,而是訪問(wèn) CPU 的系統(tǒng)存儲(chǔ)區(qū)。此 "I"/ "Q" 區(qū)分別被稱作輸入過(guò)程映像區(qū) (PII) 和輸出過(guò)程映像區(qū) (PIQ)。只有在過(guò)程映像區(qū)刷新時(shí)刻,I 區(qū)和 Q 區(qū)的內(nèi)容才與輸入/輸出的實(shí)際值相同,所以它們并不能直接反映輸入/輸出的實(shí)際狀態(tài)。因此,在某些需要對(duì)輸入/輸出進(jìn)行較為實(shí)時(shí)處理的場(chǎng)合,需要選擇使用直接外設(shè)尋址。
若將 I/O 輸入輸出模塊 I/O 地址分配在過(guò)程映像區(qū)以外,必須通過(guò)外設(shè)尋址方式訪問(wèn)這些 I/O。
外設(shè)尋址
過(guò)程映像區(qū)不能涵蓋整個(gè) CPU 的輸入/輸出地址區(qū)域。如,CPU 315-2DP (6ES7315-2EG10-0AB0) 的 I/O 地址總量最大為 2048 字節(jié),但其過(guò)程映像區(qū)的大小為 128 字節(jié)。
一旦所要使用的模板 I/O 地址超出了過(guò)程映像區(qū)范圍,就必須使用外設(shè)尋址。外設(shè)地址使用戶程序與外設(shè)地址進(jìn)行快速數(shù)據(jù)交互。這一點(diǎn)對(duì)模擬量和過(guò)程報(bào)警尤為重要。
通過(guò)外設(shè)尋址同樣可以訪問(wèn)已被分配過(guò)程映像的 I/O 地址區(qū)域。
外設(shè)尋址意指直接訪問(wèn)外設(shè)模板,在地址前加上字母 ''P'' 來(lái)表示:
PIB --> Peripheral bbbbb Byte 外設(shè)輸入字節(jié)
PQB --> Peripheral output Byte 外設(shè)輸出字節(jié)
PIW --> Peripheral bbbbb Word 外設(shè)輸入字
PQW --> Peripheral output Word 外設(shè)輸出字
PID --> Peripheral bbbbb Double-word 外設(shè)輸入雙字
PQD --> Peripheral Output Double-word 外設(shè)輸出雙字
下列情況需要使用外設(shè)尋址:
模板地址未分配至過(guò)程映像區(qū)
用戶程序需要比過(guò)程映像更為實(shí)時(shí)的輸入值
輸出值需要即刻輸出至模板 (至少一個(gè)字節(jié))
共享符號(hào)和局部符號(hào)
符號(hào)使得可以采用具有某種意義的符號(hào)名來(lái)代替絕對(duì)地址進(jìn)行工作。使用簡(jiǎn)短的符號(hào)和詳細(xì)的注釋能滿足有效程序創(chuàng)建和良好程序文檔的要求。
本地符號(hào)和局部符號(hào)的區(qū)別如下:
共享符號(hào) | 局部符號(hào) | |
有效性 |
|
|
允許的字符 |
|
|
用法 | 可定義共享符號(hào)用于:
| 可定義局部符號(hào)用于:
|
定義點(diǎn) | 符號(hào)表 | 塊的變量聲明表 |
注意事項(xiàng):
在代碼中,共享符號(hào)通過(guò)引號(hào)("...") 被識(shí)別,而本地符號(hào)通過(guò)前面標(biāo)識(shí)符(#)識(shí)別。識(shí)別由STEP 7自動(dòng)實(shí)現(xiàn)。但是,如果一個(gè)符號(hào)既作為共享符號(hào),又作為局部符號(hào)存在,那么必須明確指明它的標(biāo)識(shí)以避免混淆。此外,使用包含空格的共享符號(hào)時(shí)也需要該標(biāo)識(shí)
在一個(gè)S7項(xiàng)目下創(chuàng)建2個(gè)CPU,而一個(gè)CPU需要利用另一個(gè)CPU的點(diǎn)
比如2#CPU想利用1#CPU的 I13.0這個(gè)DI點(diǎn),怎樣編程才能使2#CPU看到1#CPU的相應(yīng)點(diǎn)?
答:不知道你用多少個(gè)信號(hào)需要傳輸,如果多的話就用通訊方式。
你的cpu通過(guò)什么方式和上位機(jī)連接的?
我給你一個(gè)方法:通過(guò)tcp/ip方式傳輸數(shù)據(jù)。我是用315-2dp+cp343-1lean來(lái)實(shí)現(xiàn)的。首先在硬件組態(tài)的網(wǎng)絡(luò)組態(tài)中點(diǎn)擊一個(gè)cpu,然后在下面的窗口中雙擊local id插入一個(gè)iso-on-tcp connection,注意這個(gè)連接的block bbbbbeter參數(shù)中的id和laddr。在通訊編程中要用到的。然后編譯保存網(wǎng)絡(luò)。并分別下載到兩個(gè)cpu中。
然后cpu1用西門子做的fc5(ag_send)發(fā)送數(shù)據(jù),cpu2用fc6(ag_recv)接受數(shù)據(jù),發(fā)送接受的規(guī)則是慢發(fā)快收防止丟包,比如你在200ms中發(fā)送,100ms中接受因?yàn)槭嵌〞r(shí)中斷中發(fā)送接受的,所以發(fā)送功能和接受功能的act參數(shù)就都是1,就行了。id和laddr參數(shù)就是上面說(shuō)的id和laddr參數(shù)。send引腳是你要發(fā)送的數(shù)據(jù)的起始地址和數(shù)據(jù)長(zhǎng)度,len是是發(fā)送的數(shù)據(jù)長(zhǎng)度和send引腳包含的那個(gè)數(shù)據(jù)長(zhǎng)度一致就行了。剩余三個(gè)參數(shù)就不用我說(shuō)了。
ag_recv的ndr就是接收數(shù)據(jù)保存的起始地址和數(shù)據(jù)長(zhǎng)度,這個(gè)長(zhǎng)度要和發(fā)送的長(zhǎng)度一致。其他就不用說(shuō)了,你如果你不明白再看看這兩個(gè)函數(shù)的說(shuō)明就清楚了。在一個(gè)S7項(xiàng)目下創(chuàng)建2個(gè)CPU,而一個(gè)CPU需要利用另一個(gè)CPU的點(diǎn)
比如2#CPU想利用1#CPU的 I13.0這個(gè)DI點(diǎn),怎樣編程才能使2#CPU看到1#CPU的相應(yīng)點(diǎn)?
答:不知道你用多少個(gè)信號(hào)需要傳輸,如果多的話就用通訊方式。
你的cpu通過(guò)什么方式和上位機(jī)連接的?
我給你一個(gè)方法:通過(guò)tcp/ip方式傳輸數(shù)據(jù)。我是用315-2dp+cp343-1lean來(lái)實(shí)現(xiàn)的。首先在硬件組態(tài)的網(wǎng)絡(luò)組態(tài)中點(diǎn)擊一個(gè)cpu,然后在下面的窗口中雙擊local id插入一個(gè)iso-on-tcp connection,注意這個(gè)連接的block bbbbbeter參數(shù)中的id和laddr。在通訊編程中要用到的。然后編譯保存網(wǎng)絡(luò)。并分別下載到兩個(gè)cpu中。
然后cpu1用西門子做的fc5(ag_send)發(fā)送數(shù)據(jù),cpu2用fc6(ag_recv)接受數(shù)據(jù),發(fā)送接受的規(guī)則是慢發(fā)快收防止丟包,比如你在200ms中發(fā)送,100ms中接受因?yàn)槭嵌〞r(shí)中斷中發(fā)送接受的,所以發(fā)送功能和接受功能的act參數(shù)就都是1,就行了。id和laddr參數(shù)就是上面說(shuō)的id和laddr參數(shù)。send引腳是你要發(fā)送的數(shù)據(jù)的起始地址和數(shù)據(jù)長(zhǎng)度,len是是發(fā)送的數(shù)據(jù)長(zhǎng)度和send引腳包含的那個(gè)數(shù)據(jù)長(zhǎng)度一致就行了。剩余三個(gè)參數(shù)就不用我說(shuō)了。
ag_recv的ndr就是接收數(shù)據(jù)保存的起始地址和數(shù)據(jù)長(zhǎng)度,這個(gè)長(zhǎng)度要和發(fā)送的長(zhǎng)度一致。其他就不用說(shuō)了,你如果你不明白再看看這兩個(gè)函數(shù)的說(shuō)明就清楚了。