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