產(chǎn)品詳情
S7-1200 西門(mén)子 6ES7223-3AD30-0XB0 數(shù)字量輸入/輸出模塊
S7-1200 CPU 通過(guò) ETHERNET 與 S7-300 PN 口之間 TCP 通信的方式
S7-1200 與 S7-300 PN 口之間的以太網(wǎng)通信可以通過(guò) TCP 協(xié)議來(lái)實(shí)現(xiàn),使用的通信指令是在雙方 CPU 調(diào)用 T-block (TSEND_C,TRCV_C, TCON, TDISCON, TSEND, TRCV) 指令來(lái)實(shí)現(xiàn)。通信方式為雙邊通信,因此 TSEND 和 TRCV 必須成對(duì)出現(xiàn)。
硬件和軟件需求及所完成的通信任務(wù)
所需條件:
① S7-1200/S7-300(集成PN口)
② STEP7 V11
所完成的通信任務(wù):
① S7-1200 CPU將通訊數(shù)據(jù)區(qū) DB4 塊中的 10 個(gè)字節(jié)的數(shù)據(jù)發(fā)送到 S7-300 CPU的接收數(shù)據(jù)區(qū) DB2 塊中。
② S7-300 CPU將通訊數(shù)據(jù)區(qū) DB1 塊中的 10 個(gè)字節(jié)的數(shù)據(jù)發(fā)送到 S7-1200 CPU的接收數(shù)據(jù)區(qū) DB5 塊中。
S7-1200 側(cè)通信的編程,連接參數(shù)及通信參數(shù)的配置
1. 使用 STEP7 V11 軟件新建一個(gè)項(xiàng)目并完成硬件配置
在 STEP7 v11的 “Portal 視圖” 中選擇 “創(chuàng)建新項(xiàng)目” 創(chuàng)建一個(gè)新項(xiàng)目。
2.添加硬件并命名PLC
然后進(jìn)入 “項(xiàng)目視圖”,在“項(xiàng)目樹(shù)” 下雙擊 “添加新設(shè)備”,在對(duì)話框中選擇所使用的 S7-1200 CPU 添加到機(jī)架上,命名為 S7-1200,如圖1.所示。
圖1. 添加新設(shè)備
為了編程方便,使用 CPU 屬性中定義的時(shí)鐘位,定義方法如下:
在 “項(xiàng)目樹(shù)” > “S7-1200” > “設(shè)備組態(tài)” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “系統(tǒng)和時(shí)鐘存儲(chǔ)器” 下,將系統(tǒng)位定義在 MB1,時(shí)鐘位定義在 MB0,如圖2.所示。
時(shí)鐘位我們主要使用 M0.3,它是以 2Hz 的速率在 0 和 1 之間切換的一個(gè)位,可以使用它去自動(dòng)激活發(fā)送任務(wù)。
圖2. 系統(tǒng)位與時(shí)鐘位
3. 為 PROFINET 通信口分配以太網(wǎng)地址
在 “設(shè)備視圖”中點(diǎn)擊 CPU 上代表 PROFINET 通信口的綠色小方塊,在下方會(huì)出現(xiàn) PROFINET 接口的屬性,在 “以太網(wǎng)地址” 下分配 IP 地址為 192.168.0.123 ,子網(wǎng)掩碼為255.255.255.0,如圖3. 所示。
圖3. 分配IP 地址
4. 創(chuàng)建 CPU的邏輯網(wǎng)絡(luò)連接
在項(xiàng)目樹(shù) “項(xiàng)目樹(shù)”>“設(shè)備和網(wǎng)絡(luò)” >“網(wǎng)絡(luò)視圖” 視圖下,創(chuàng)建兩個(gè)設(shè)備的連接。用鼠標(biāo)點(diǎn)中 S7-1200 上的PROFINET通信口的綠色小方框,然后拖拽出一條線,到另外一個(gè) 317-2pn 上的PROFINET通信口上,松開(kāi)鼠標(biāo),連接就建立起來(lái)了,如圖4.所示。
圖4. 建立兩個(gè) CPU的邏輯連接
5.在 S7-1200 中調(diào)用并配置“TCON”、“TSEND”、“TRCV” 通信指令
① 在 S7-1200 CPU 中調(diào)用發(fā)送通信指令,進(jìn)入 “項(xiàng)目樹(shù)” > “ S7-1200” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令” > “通訊” > “開(kāi)放式用戶通信”下調(diào)用 “TCON” 指令,創(chuàng)建連接,如圖5.所示。
圖5. 調(diào)用 TCON 通信指令
② 定義 S7-1200 的 “TCON”連接參數(shù)
S7-1200 的 “TCON”指令的連接參數(shù)需要在指令下方的屬性窗口“屬性”> “組態(tài)”>“連接參數(shù)中”中設(shè)置,如圖6.所示。
圖6. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
端點(diǎn) | :可以通過(guò)點(diǎn)擊選擇按鈕選擇“未指定” ; |
連接類型 | :選擇通信協(xié)議為 TCP; |
連接 ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到; |
連接數(shù)據(jù) |
:點(diǎn)擊新建自動(dòng)生成該數(shù)據(jù)塊,如S7-1200_Connection_DB; |
主動(dòng)建立連接 | :選擇本地 S7-1200 作為主動(dòng)連接; |
地址詳細(xì)信息 | :定義通信伙伴方的端口號(hào)為:2000?! ? |
③創(chuàng)建并定義 S7-1200 的發(fā)送數(shù)據(jù)區(qū) DB4 塊
通過(guò)“項(xiàng)目樹(shù)”>“S7-1200”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB4 塊,選擇“標(biāo)準(zhǔn)-與S7-300/400 兼容”,點(diǎn)擊“確定”鍵,定義發(fā)送數(shù)據(jù)區(qū)為 101 個(gè)字節(jié)的數(shù)組,如圖7.所示,結(jié)果如圖8.所示。
圖7. 創(chuàng)建發(fā)送數(shù)據(jù)區(qū) DB 塊
圖8. 定義發(fā)送數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組 101 字節(jié)
④將 “TSEND” 在 OB1 內(nèi)調(diào)用 發(fā)送 10 個(gè)字節(jié)數(shù)據(jù)到 317-2pn 中
進(jìn)入 “項(xiàng)目樹(shù)” > “S7-1200” > “程序塊” > “OB1 ” 主程序中,從右側(cè)窗口 “指令” > “通訊” > “開(kāi)放式用戶通信”下調(diào)用 “TSEND” 指令,配置接口參數(shù),如圖9.所示。
圖9. 調(diào)用 TSEND 指令并配置接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
REQ
|
:= M0.3
|
// 使用 2Hz 的時(shí)鐘脈沖,上升沿激活發(fā)送任務(wù);
|
ID | : = 1 | //創(chuàng)建連接ID; |
LEN
|
:= 10
|
//發(fā)送數(shù)據(jù)長(zhǎng)度;
|
DATA
|
:= P#DB4.DBX0.0 BYTE 10
|
// 發(fā)送數(shù)據(jù)區(qū)的數(shù)據(jù),使用指針尋址時(shí),DB塊要選用絕對(duì)尋址;
|
輸出接口參數(shù):
DONE
|
:= M11.0
|
//任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1;
|
BUSY
|
:= M11.2
|
// 該位為 1,代表任務(wù)未完成,不能激活新任務(wù);
|
ERROR
|
:= M11.3
|
//通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1;
|
STATUS
|
:= MW22
|
//有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)位信息號(hào)。
|
⑤創(chuàng)建并定義 S7-1200 的接收數(shù)據(jù)區(qū) DB5 塊。
通過(guò)“項(xiàng)目樹(shù)”>“S7-1200”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB5 塊,選擇“標(biāo)準(zhǔn)-與S7-300/400 兼容”,點(diǎn)擊“確定”鍵,定義接收數(shù)據(jù)區(qū)為 101 個(gè)字節(jié)的數(shù)組,如圖10.所示,結(jié)果如圖11.所示。
圖10. 創(chuàng)建接收數(shù)據(jù)區(qū) DB5 塊
圖11. 定義接收數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組
⑥ 將 “TRCV” 在 OB1 內(nèi)調(diào)用
進(jìn)入 “項(xiàng)目樹(shù)” > “S7-1200” > “程序塊” > “OB1 ” 主程序中,從右側(cè)窗口 “指令” > “通訊” > “開(kāi)放式用戶通信”下調(diào)用 “TRCV” 指令,配置接口參數(shù),如圖12.所示。
圖12. 調(diào)用 TRCV 指令并配置接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
EN_R
|
:= TRUE
|
// 準(zhǔn)備好接收數(shù)據(jù);
|
ID
|
:= 1
|
// 連接號(hào),使用的是 TCON 的連接參數(shù)中 ID號(hào);
|
LEN
|
:= 10
|
// 接收數(shù)據(jù)長(zhǎng)度為 10 個(gè)字節(jié);
|
DATA
|
:= P#DB5.DBX0.0 BYTE 10
|
// 接收數(shù)據(jù)區(qū)的地址;
|
輸出接口參數(shù):
NDR
|
:= M12.0
|
// 該位為 1,接收任務(wù)成功完成;
|
BUSY
|
:= M12.1
|
// 該位為 1,代表任務(wù)未完成,不能激活新任務(wù);
|
ERROR
|
:= M12.3
|
// 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1;
|
STATUS
|
:= MW24
|
// 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào);
|
RCVD_LEN
|
:= MW26
|
// 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù)。
|
配置完連接并編譯存盤(pán)。
S7-300PN 側(cè)通信的編程,連接參數(shù)及通信參數(shù)的配置,測(cè)試結(jié)果
1. 使用 STEP7 V11 軟件添加新設(shè)備并命名 317-2pn
然后進(jìn)入 “項(xiàng)目視圖”,在“項(xiàng)目樹(shù)” 下雙擊 “添加新設(shè)備”,在對(duì)話框中選擇所使用的 S7-300 CPU 添加到機(jī)架上,命名為 317-2pn,如圖1.所示。
圖1. 添加新設(shè)備
為了編程方便,使用 CPU 屬性中定義的時(shí)鐘位,定義方法如下:
在 “項(xiàng)目樹(shù)” > “317-2pn” > “設(shè)備組態(tài)” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “時(shí)鐘存儲(chǔ)器” 下時(shí)鐘位定義在 MB0,如圖2.所示。
時(shí)鐘位我們主要使用 M0.3,它是以 2Hz 的速率在 0 和 1 之間切換的一個(gè)位,可以使用它去自動(dòng)激活發(fā)送任務(wù)。
圖2. 時(shí)鐘存儲(chǔ)位
3. 為 PROFINET 通信口分配以太網(wǎng)地址
在 “設(shè)備視圖”中點(diǎn)擊 CPU 上代表 PROFINET 通信口的綠色小方塊,在下方會(huì)出現(xiàn) PROFINET 接口的屬性,在 “以太網(wǎng)地址” 下分配 IP 地址為 192.168.0.45,子網(wǎng)掩碼為255.255.255.0,如圖3. 所示。
圖3. 分配IP 地址
4.在 S7-300 中調(diào)用并配置“TCON”、“TSEND”、“T_RCV” 通信指令
① 在 S7-300 CPU 中調(diào)用發(fā)送通信指令,進(jìn)入 “項(xiàng)目樹(shù)” > “ 317-2pn” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令” > “通訊” > “開(kāi)放式用戶通信”下調(diào)用 “TCON” 指令,創(chuàng)建連接,如圖4.所示。
圖4. 調(diào)用 TCON 通信指令
② 定義 S7-300 的 “TCON”連接參數(shù)
S7-300 的 “TCON”指令的連接參數(shù)需要在指令下方的屬性窗口“屬性”> “組態(tài)”>“連接參數(shù)中”中設(shè)置,如圖5.所示。
圖5. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
端點(diǎn) | :可以通過(guò)點(diǎn)擊選擇按鈕選擇“未指定”; |
連接類型 | :選擇通信協(xié)議為 TCP; |
連接 ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到; |
連接數(shù)據(jù) |
:點(diǎn)擊新建自動(dòng)生成該數(shù)據(jù)塊; |
主動(dòng)建立連接 | :選擇對(duì)方 S7-1200 作為主動(dòng)連接; |
地址詳細(xì)信息 | :定義本方的端口號(hào)為:2000?! ? |
③創(chuàng)建并定義 S7-300 的發(fā)送數(shù)據(jù)區(qū) DB1 塊
通過(guò)“項(xiàng)目樹(shù)”>“317-2pn”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB1 塊,點(diǎn)擊“確定”鍵,定義發(fā)送數(shù)據(jù)區(qū)為 101個(gè)字節(jié)的數(shù)組,如圖6.所示,結(jié)果如圖7.所示。
圖6. 創(chuàng)建發(fā)送數(shù)據(jù)區(qū) DB 塊
圖7. 定義發(fā)送數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組 101 字節(jié)
④調(diào)用 “TSEND” 在OB1內(nèi)調(diào)用 發(fā)送 10 個(gè)字節(jié)數(shù)據(jù)到 S7-1200 中
進(jìn)入 “項(xiàng)目樹(shù)” > “317-2pn” > “程序塊” > “OB1 ” 主程序中,從右側(cè)窗口 “指令” > “通訊” > “開(kāi)放式用戶通信”下調(diào)用 “TSEND” 指令,配置接口參數(shù),如圖8.所示。
圖8. 調(diào)用 TSEND 指令并配置接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
REQ
|
:= M0.3
|
// 使用 2Hz 的時(shí)鐘脈沖,上升沿激活發(fā)送任務(wù);
|
ID | : = w#16#1 | //創(chuàng)建連接ID; |
LEN
|
:= 10
|
//發(fā)送數(shù)據(jù)長(zhǎng)度;
|
DATA
|
:= P#DB1.DBX0.0 BYTE 10
|
// 發(fā)送數(shù)據(jù)區(qū)的數(shù)據(jù);
|
輸出接口參數(shù):
DONE
|
:= M11.0
|
//任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1;
|
BUSY
|
:= M11.1
|
// 該位為 1,代表任務(wù)未完成,不能激活新任務(wù);
|
ERROR
|
:= M11.2
|
//通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1;
|
STATUS
|
:= MW22
|
//有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)位信息號(hào)。
|
⑤創(chuàng)建并定義 S7-300 的接收數(shù)據(jù)區(qū) DB2 塊。
通過(guò)“項(xiàng)目樹(shù)”>“317-2pn”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB2 塊,點(diǎn)擊“確定”鍵,定義接收數(shù)據(jù)區(qū)為 101 個(gè)字節(jié)的數(shù)組,如圖9.所示,結(jié)果如圖10.所示。
圖9. 創(chuàng)建接收數(shù)據(jù)區(qū) DB2 塊
圖10. 定義接收數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組
⑥ 將 “TRCV” 在OB1內(nèi)調(diào)用
進(jìn)入 “項(xiàng)目樹(shù)” > “317-2pn” > “程序塊” > “OB1 ” 主程序中,從右側(cè)窗口 “指令” > “通訊” > “開(kāi)放式用戶通信”下調(diào)用 “TRCV” 指令,配置接口參數(shù),如圖11.所示。
圖11. 調(diào)用 TRCV 指令并配置接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
EN_R
|
:= M14.0
|
// 準(zhǔn)備好接收數(shù)據(jù) M14.0=TRUE ;
|
ID
|
:= 1
|
// 連接號(hào),使用的是 TCON 的連接參數(shù)中 ID號(hào);
|
LEN
|
:= 10
|
// 接收數(shù)據(jù)長(zhǎng)度為 10 個(gè)字節(jié);
|
DATA
|
:= P#DB2.DBX0.0 BYTE 10
|
// 接收數(shù)據(jù)區(qū)的地址;
|
輸出接口參數(shù):
NDR
|
:= M12.0
|
// 該位為 1,接收任務(wù)成功完成;
|
BUSY
|
:= M12.1
|
// 該位為 1,代表任務(wù)未完成,不能激活新任務(wù);
|
ERROR
|
:= M12.3
|
// 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1;
|
STATUS
|
:= MW24
|
// 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào);
|
RCVD_LEN
|
:= MW26
|
// 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù)。
|
配置完連接并編譯存盤(pán)。
下載硬件組態(tài)及程序并監(jiān)控通信結(jié)果
下載兩個(gè) CPU 中的所有硬件組態(tài)及程序,實(shí)現(xiàn)兩個(gè) CPU 之間數(shù)據(jù)交換,監(jiān)控結(jié)果如圖12.所示。
圖12. 監(jiān)控結(jié)果
S7-1200 串行通信
S7-1200支持的串行通訊方式
- 點(diǎn)對(duì)點(diǎn)(PtP)通信
- Modbus 主從通信
-
USS 通信
名稱 | CM 1241 RS232 | CM 1241 RS485 |
---|---|---|
訂貨號(hào) | 6ES7 241-1AH30-0XB0 | 6ES7 241-1CH30-0XB0 |
通訊口類型 | RS232 | RS485 |
波特率(bps) | 300; 600;1.2 kb; 2.4 kb; 4.8 kb; 9.6 kb;19.2 kb; 28.4 kb; 57.6 kb; 76.8 kb; 115.2 kb; | |
校驗(yàn)方式 |
|
|
流控 | 硬件流控;軟件流控 | 不支持 |
接收緩沖區(qū) | 1KB | |
通訊距離(屏蔽電纜) | 10m | 1000m |
電源規(guī)范(5V DC) | 220mA |
S7-1200 RS232 和 RS485 通信模塊的特征
圖1. 串口通信模塊
-
由 CPU 供電,不必連接外部電源
-
端口經(jīng)過(guò)隔離,最長(zhǎng)距離1000 米
-
有診斷 LED 及顯示傳送和接收活動(dòng) LED
-
支持點(diǎn)對(duì)點(diǎn)協(xié)議
- 通過(guò)擴(kuò)展指令和庫(kù)功能進(jìn)行組態(tài)和編程
RS485 與 RS232 通信模塊的LED
診斷 LED 燈
- 紅閃:如果 CPU 未正確識(shí)別到通信模塊,診斷 LED 會(huì)一直紅色閃爍
- 綠閃:CPU 上電后已經(jīng)識(shí)別到通信模塊,但是通信模塊還沒(méi)有配置
- 綠燈:CPU 已經(jīng)識(shí)別到通信模塊,且配置也已經(jīng)下載到了CPU
發(fā)送 LED 燈
- 代表數(shù)據(jù)正在通過(guò)通信口傳送出去
接收 LED 燈
- 代表數(shù)據(jù)正在通過(guò)通信口接收進(jìn)來(lái)
注意:安裝于CPU本體上的通信板只有發(fā)送和接收 LED 燈,而沒(méi)有診斷 LED 燈
RS485及RS232兩種模板支持的協(xié)議
- ASCII
- USS
- Modbus RTU Master protocol
-
Modbus RTU Slave protocol
ASCII 協(xié)議的特點(diǎn)
- 報(bào)文可以由用戶自己定義,便于用戶以 ASCII 協(xié)議為基礎(chǔ)開(kāi)發(fā)
- 使用簡(jiǎn)單,可以很好地實(shí)現(xiàn)與第三方系統(tǒng)的通訊
- 可以進(jìn)行識(shí)別報(bào)文結(jié)束設(shè)置
- 可以進(jìn)行數(shù)據(jù)流量控制
- 缺點(diǎn):具有簡(jiǎn)單的校驗(yàn)功能(奇偶校驗(yàn)),低數(shù)據(jù)安全性;數(shù)據(jù)傳輸無(wú)確認(rèn)信息; 通訊需要雙方協(xié)調(diào)
S7-1200 的 PTP 校驗(yàn)
串口的校驗(yàn): 奇偶校驗(yàn):用于檢驗(yàn)數(shù)據(jù)傳遞的正確性,是最簡(jiǎn)單的檢錯(cuò)方法。
圖2. 校驗(yàn)設(shè)置
- 偶校驗(yàn):如果每字節(jié)的數(shù)據(jù)位中“1”的個(gè)數(shù)為奇數(shù),則校驗(yàn)位為1,如果個(gè)數(shù)為偶數(shù),則校驗(yàn)位為“0”, 保證數(shù)據(jù)位和校驗(yàn)位中“1”的個(gè)數(shù)是偶數(shù)
- 奇校驗(yàn):如果每字節(jié)的數(shù)據(jù)位中“1”的個(gè)數(shù)為奇數(shù),則校驗(yàn)位為0,如果個(gè)數(shù)為偶數(shù),則校驗(yàn)位為“1”, 保證數(shù)據(jù)位和校驗(yàn)位中“1”的個(gè)數(shù)是奇數(shù)
- 傳號(hào)校驗(yàn):奇偶校驗(yàn)位始終設(shè)置為 1
- 空號(hào)校驗(yàn):奇偶校驗(yàn)位始終設(shè)置為 0
注意:奇偶校驗(yàn)可以簡(jiǎn)單的判斷數(shù)據(jù)的正確性,從原理上可看出當(dāng)一位出錯(cuò),可以準(zhǔn)確判斷,當(dāng)兩位或更多位誤碼就校驗(yàn)不出,但由于其實(shí)現(xiàn)簡(jiǎn)單,仍得到了廣泛使用。
PTP 通信的發(fā)送信息配置
定義在信息起始發(fā)送斷點(diǎn)及空閑線
字符中斷:當(dāng)接收到的數(shù)據(jù)保持為零值的時(shí)間大于完整的字符傳輸時(shí)間時(shí),代表字符中斷。一個(gè)完整字符傳輸時(shí)間定義為傳輸起始位、數(shù)據(jù)位、校驗(yàn)位和停止位的時(shí)間總和。
圖3. 定義在信息起始發(fā)送斷點(diǎn)及空閑線
常問(wèn)問(wèn)題:為什么發(fā)送配置中只配了2位字符中斷,而通信伙伴卻可以正常接收數(shù)據(jù)?
答:發(fā)送配置中設(shè)置的字符中斷小于等于16位時(shí),系統(tǒng)自動(dòng)發(fā)出16位的字符中斷位;設(shè)置大于16位時(shí),則發(fā)出的中斷位與實(shí)際設(shè)置相符。下圖是設(shè)置的發(fā)送斷點(diǎn)及空閑線位及其實(shí)際發(fā)出的波形圖。
波形圖
|
斷點(diǎn)及空閑線設(shè)置
|
圖4. 斷點(diǎn)及空閑線波形圖
PTP 通信接收起始條件
以任意字符開(kāi)始
以特殊條件開(kāi)始:
- 通過(guò)斷點(diǎn)識(shí)別消息開(kāi)始
- 通過(guò)空閑線識(shí)別消息開(kāi)始
- 通過(guò)單個(gè)字符識(shí)別消息開(kāi)始
- 通過(guò)字符序列識(shí)別消息開(kāi)始
圖5. 通信接收起始條件
通過(guò)字符序列識(shí)別消息開(kāi)始
對(duì)于多個(gè)起始序列的組態(tài),只要出現(xiàn)其中一個(gè)序列,即會(huì)滿足開(kāi)始條件。下圖右側(cè)即為滿足起始條件的字符串。
圖6. 通過(guò)字符序列識(shí)別消息開(kāi)始
如果選擇了多個(gè)起始條件,則檢查開(kāi)始條件的順序如下:
注意:檢查多個(gè)開(kāi)始條件時(shí),如果有一個(gè)條件沒(méi)有滿足,則 CM 將從第一個(gè)所需的條件開(kāi)始重新啟動(dòng)檢查。
PTP 通信接收結(jié)束條件
圖7.結(jié)束條件設(shè)置
注意:與多個(gè)起始條件的判斷不同,檢查多個(gè)結(jié)束條件時(shí),任何一個(gè)條件滿足,信息接收結(jié)束。
消息超時(shí)結(jié)束條件
消息超時(shí)時(shí)間從接到符合消息開(kāi)始條件的第一個(gè)字符時(shí)開(kāi)始計(jì)算,如下圖。
圖8.消息超時(shí)
響應(yīng)超時(shí)結(jié)束條件
響應(yīng)超時(shí)時(shí)間從傳送結(jié)束時(shí)開(kāi)始計(jì)算,只要傳送成功完成且模塊開(kāi)始接收操作,定時(shí)器就會(huì)啟動(dòng)。
圖9.響應(yīng)超時(shí)
注意:響應(yīng)超時(shí)結(jié)束條件不能作為單獨(dú)的結(jié)束條件的設(shè)置,否則會(huì)在編譯時(shí)報(bào)如下錯(cuò)誤:
圖10.響應(yīng)超時(shí)作為單獨(dú)的結(jié)束條件報(bào)錯(cuò)
從消息中讀取信息長(zhǎng)度
圖11.從消息中讀取信息長(zhǎng)度的設(shè)置
實(shí)際收到的數(shù)據(jù)長(zhǎng)度= 長(zhǎng)度偏移前的字節(jié)數(shù)+長(zhǎng)度字節(jié)大小+讀取的實(shí)際數(shù)據(jù)長(zhǎng)度+不計(jì)入字節(jié)長(zhǎng)度的字節(jié)數(shù)
圖12.程序中讀到的實(shí)際數(shù)據(jù)長(zhǎng)度
PTP 通信接收緩存區(qū)
緩存區(qū)的數(shù)據(jù)保持
斷電后緩存區(qū)中的數(shù)據(jù)全部丟失,不能保持。
通信模板緩存區(qū)超出20條信息
如果緩存區(qū)中的信息超過(guò)20條,后面的信息被 自動(dòng)丟棄,且不報(bào)錯(cuò)。
通信模板緩存區(qū)多包數(shù)據(jù)超出1024字節(jié)
發(fā)送多個(gè)每包50個(gè)字節(jié)數(shù)據(jù),當(dāng)數(shù)據(jù)超過(guò)1024字節(jié)那包就被丟棄了,前面的可以正常接收,且沒(méi)有任何報(bào)錯(cuò).在前面數(shù)據(jù)被成功接收以后,只要緩存區(qū)有空間,后面的數(shù)據(jù)還可以正常收到。
通信模板緩存區(qū)一包數(shù)據(jù)超出1024字節(jié)
如果發(fā)送數(shù)據(jù)一包就大于1024字節(jié)時(shí),緩沖區(qū)接收到數(shù)據(jù)到1024字節(jié)時(shí),雖然沒(méi)有收到結(jié)束字符,數(shù)據(jù)由緩存區(qū)送給CPU,但會(huì)報(bào)錯(cuò)16#80E0,如下圖。
圖13. 發(fā)送數(shù)據(jù)一包大于1024字節(jié)時(shí),緩存區(qū)報(bào)錯(cuò)
、
圖14. 使用RST指令復(fù)位緩存區(qū)錯(cuò)誤,恢復(fù)數(shù)據(jù)接收
注意:緩存區(qū)可以存儲(chǔ)多條信息,限制是20條信息或最多1024字節(jié)。
為什么不能使用 PC/PPI 電纜與S7-1200 RS485 模塊進(jìn)行串口調(diào)試?
答:因?yàn)?S7-1200 RS485 模塊接口不提供24V電源,不能給 PC/PPI 電纜供電,所以電纜無(wú)法工作。
解決辦法:可以將 S7-1200 RS485 與 S7-200 通信口網(wǎng)絡(luò)連接,將 PC/PPI 電纜插在 S7-200 通信口上總線連接器的編程口上,對(duì)S7-1200 RS485進(jìn)行串口調(diào)試。此時(shí)S7-200必須上電并打到停止?fàn)顟B(tài)。
連接 5 GND 邏輯地或通信地 金屬殼 - 外殼接地
S7-1200 西門(mén)子 6ES7223-3AD30-0XB0