例程 1 :S7-200 SMART CPU集成的RS485 端口(端口0)實(shí)現與條碼掃描槍通信
例程 2 :2臺S7-200 SMART CPU(端口0)采用自由口通信方式實(shí)現相互通信
例程 3:使用任意字符檢測為接收消息的起始條件時(shí),選擇消息定時(shí)器和其它結束條件組合為接收消息的結束條件
條碼掃描槍通常為 RS232 端口,其與 S7-200 SMART CPU 集成的 RS485 端口連接時(shí)需要使用 RS232/485 轉換設備或 RS-232/PPI 多主站電纜。
條碼掃描槍接收到條碼后會(huì )自動(dòng)通過(guò) RS232 端口發(fā)送報文,S7-200 SMART CPU 需要調用 RCV 指令接收報文,并在接收完成中斷中再次使能 RCV 指令循環(huán)接收報文。
CPU 主程序見(jiàn)圖1.所示:
圖1.CPU 主程序
1.設置 SMB30 = 2#00001001 (自由口通信,波特率 9600,8 位數據位,無(wú)校驗);
2.設置 SMB87 = 2#10010100,使用空閑線(xiàn)檢測為信息接收的起始條件,使用字符間定時(shí)器為信息接收的結束條件 ;
3.設置空閑線(xiàn)定時(shí)器 SMW90 = 5 ms,字符間定時(shí)器 SMW92 = 5 ms,允許最大接收字符個(gè)數 SMB94 = 50;
4.連接中斷子程序 INT_0 到通信端口 0 接收完成事件,并使能中斷;
5. 使用 SM0.1 觸發(fā) RCV 指令地執行。
CPU 中斷程序見(jiàn)圖2.所示:
圖2.CPU 中斷程序
1.判斷信息接收結束是否為字符間超時(shí)結束(SM86.2 = 1),若是,則認為接收成功,接收成功計算器 VB200 自加一;
2.消息接收成功時(shí)接收的信息拷貝到 VB300 為起始地址的存儲區;
3.開(kāi)始下一次 RCV 指令地執行。
以上描述步驟參考下面的通信例程,例程中的 CPU 類(lèi)型可能與用戶(hù)實(shí)際使用的類(lèi)型不同,用戶(hù)可能需要先對例子程序做修改和調整,才能將其用于測試。
注意:此指令庫/程序的作者和擁有者對于該軟件的功能性和兼容性不負任何責任。使用該軟件的風(fēng)險完全由用戶(hù)自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和熱線(xiàn)支持,用戶(hù)不必為此聯(lián)系西門(mén)子技術(shù)支持與服務(wù)部門(mén)。
通信任務(wù):CPU1 每秒觸發(fā)一次 XMT 指令將 CPU 的實(shí)時(shí)時(shí)鐘發(fā)送到 CPU2;CPU2 接收到 CPU1 發(fā)送的信息后立即將 CPU2 的實(shí)時(shí)時(shí)鐘回復到 CPU1。
1、CPU1 編程
1.1、CPU1 主程序編程如圖3. 所示:
圖3. CPU1主程序
1. 設置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位數據位,無(wú)校驗)。
2. 設置 SMB87 = 2#10010100,使用空閑線(xiàn)檢測為信息接收的起始條件,使用字符間定時(shí)器為信息接收的結束條件。
3. 設置空閑線(xiàn)定時(shí)器 SMW90 = 5 ms,字符間定時(shí)器 SMW92 = 5 ms,允許最大接收字符個(gè)數 SMB94 = 10。
4. 連接中斷子程序 INT_0 到通信端口 0 發(fā)送完成事件,并啟用中斷。
5. 每秒鐘讀取一次 CPU 的實(shí)時(shí)時(shí)鐘,并將發(fā)送緩沖區長(cháng)度設置為 8 個(gè)字符。
6. 執行 XMT 指令之前設置 SM87.7 = 0,同時(shí)執行 RCV 指令,終止消息接收。
7. 每秒鐘執行一次 XMT 指令將 CPU 的實(shí)時(shí)時(shí)鐘發(fā)送出去。
1.2、 CPU1 發(fā)送完成中斷子程序 INT_0 編程
中斷子程序INT_0用于恢復 SMB87 的設置(SM87.7 = 1),并執行 RCV 指令開(kāi)始接收 CPU2的應答信息。程序如圖4. 所示:
圖4. CPU1 中斷子程序 INT_0
2、CPU2 編程
2.1、CPU2 主程序編程如圖5. 所示:
圖5. CPU2主程序
1. 設置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位數據位,無(wú)校驗)。
2. 設置 SMB87 = 2#10010100,使用空閑線(xiàn)檢測為信息接收的起始條件,使用字符間定時(shí)器為信息接收的結束條件。
3. 設置空閑線(xiàn)定時(shí)器 SMW90 = 5 ms,字符間定時(shí)器 SMW92 = 5 ms,允許最大接收字符個(gè)數 SMB94 = 10。
4. 連接中斷子程序 INT_0 到通信端口 0 接收完成事件,中斷子程序 INT_1 到通信端口 0 發(fā)送完成事件,并啟用中斷。
5. 使用 SM0.1 調用 RCV 指令地執行。
2.2、 CPU2 接收完成中斷子程序 INT_0 編程
中斷子程序INT_0用于讀取 CPU 實(shí)時(shí)時(shí)鐘,并調用 XMT 指令將實(shí)時(shí)時(shí)鐘信息發(fā)送出去。程序如圖如圖 6.所示。
6. CPU2 接收完成中斷子程序 INT_0
2.3、 CPU2 發(fā)送完成中斷子程序 INT_1 編程
中斷子程序 INT_1 用于執行 RCV 指令,并開(kāi)始新的信息接收任務(wù)。程序如圖 7.所示。
圖7. CPU2 發(fā)送完成中斷子程序 INT_0
以上描述步驟參考下面的通信例程,例程中的 CPU 類(lèi)型可能與用戶(hù)實(shí)際使用的類(lèi)型不同,用戶(hù)可能需要先對例子程序做修改和調整,才能將其用于測試。
注意:此指令庫/程序的作者和擁有者對于該軟件的功能性和兼容性不負任何責任。使用該軟件的風(fēng)險完全由用戶(hù)自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和熱線(xiàn)支持,用戶(hù)不必為此聯(lián)系西門(mén)子技術(shù)支持與服務(wù)部門(mén)。
示例說(shuō)明如下:
步驟一、使用任意字符檢測和消息定時(shí)器處理信息接收超時(shí)主程序編程,程序如圖1. 所示:
圖 1. 使用任意字符檢測和消息定時(shí)器處理信息接收超時(shí)主程序
1. 設置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位數據位,無(wú)校驗)。
2. 設置 SMB87 = 2#10111100,使用任意字符檢測為信息接收的起始條件,使用消息定時(shí)器和結束字符為信息接收的結束條件。
3. 設置結束字符 SMB89 = 16#0A。
4. 設置空閑線(xiàn)定時(shí)器 SMW90 = 0 ms,消息定時(shí)器 SMW92 = 100 ms,允許最大接收字符個(gè)數 SMB94 = 10。
5. 連接中斷子程序 INT_0 到通信端口 0 發(fā)送完成事件9,并啟用中斷。
6. 每秒鐘調用一次 XMT 指令,將字符串"TEST"發(fā)送出去。
步驟二、使用任意字符檢測和消息定時(shí)器處理信息接收中斷子程序編程:
發(fā)送完成中斷子程序用于執行 RCV 指令,并開(kāi)始新的信息接收任務(wù)。中斷子程序如圖 2. 所示。
圖2. 使用任意字符檢測和消息定時(shí)器處理信息接收超時(shí)中斷子程序
以上描述步驟參考下面的通信例程,例程中的 CPU 類(lèi)型可能與用戶(hù)實(shí)際使用的類(lèi)型不同,用戶(hù)可能需要先對例子程序做修改和調整,才能將其用于測試。
注意:此指令庫/程序的作者和擁有者對于該軟件的功能性和兼容性不負任何責任。使用該軟件的風(fēng)險完全由用戶(hù)自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和熱線(xiàn)支持,用戶(hù)不必為此聯(lián)系西門(mén)子技術(shù)支持與服務(wù)部門(mén)。
S7-200 SMART CPU 在發(fā)送完成中斷中執行 RCV 指令并捕捉信息接收開(kāi)始時(shí)間,如果捕捉間隔時(shí)間超出一定時(shí)間依然未接收到信息,則認為信息接收超時(shí),需要人為終止信息的接收。
示例說(shuō)明如下:
步驟一:CPU 主程序編程
CPU 主程序實(shí)現功能如下(程序見(jiàn)如圖3. 所示):
a)設置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位數據位,無(wú)校驗)。
b)設置 SMB87 = 2#10010100,使用空閑線(xiàn)檢測為信息接收的起始條件,使用字符間定時(shí)器為信息接收的結束條件。
c)設置空閑線(xiàn)定時(shí)器 SMW90 = 5 ms,消息定時(shí)器 SMW92 = 5 ms,允許最大接收字符個(gè)數 SMB94 = 10。
d)連接中斷子程序 INT_0 到通信端口 0 發(fā)送完成事件 9,并啟用中斷。
e)使用M0.0 上升沿調用 XMT 指令,并設置通信狀態(tài)字節 VB300 =1。
f)當通信狀態(tài)字節 VB300 = 2 時(shí),信息接收完成或者信息接收的捕捉間隔時(shí)間 VD306 大于 100 ms,則設置通信狀態(tài)字節 VB300 = 3并人為終止 RCV 指令的執行。
g)通信狀態(tài)字節VB300 = 3時(shí),復位RCV指令的執行,并復位VB300。
圖3. 使用捕捉時(shí)間間隔處理信息接收超時(shí)主程序
步驟二:CPU 中斷子程序編程
在發(fā)送完成中斷子程序中設置通信狀態(tài)字節 VB300 = 2,執行 RCV 指令開(kāi)始新的信息接收任務(wù),并捕捉信息接收開(kāi)始時(shí)間 VD302。程序圖如圖4. 所示。
圖4. 使用捕捉時(shí)間間隔處理信息接收超時(shí)中斷子程序
以上描述步驟參考下面的通信例程,例程中的 CPU 類(lèi)型可能與用戶(hù)實(shí)際使用的類(lèi)型不同,用戶(hù)可能需要先對例子程序做修改和調整,才能將其用于測試。
注意:此指令庫/程序的作者和擁有者對于該軟件的功能性和兼容性不負任何責任。使用該軟件的風(fēng)險完全由用戶(hù)自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和熱線(xiàn)支持,用戶(hù)不必為此聯(lián)系西門(mén)子技術(shù)支持與服務(wù)部門(mén)。
電話(huà):13916183699
郵箱:13916183699@139.com
網(wǎng)址:http://szhongqiang.com
地址:中國上海市青浦區北青公路7171號111-112室