遼寧省西門子授權供應商---西門子變頻器錦州市總代理
| 更新時間 2024-11-25 08:00:00 價格 請來電詢價 西門子PLC 西門子伺服電機 西門子觸摸屏 西門子電纜 西門子變頻器 西門子模塊 聯系電話 13510737515 聯系手機 13185520415 聯系人 董海波 立即詢價 |
R SM87.7, 1
SM87.7置0,禁止在端口0接收信息
RCV VB100, 0
執行RCV指令,停止端口0的接收。
XMT VB0, 0
發送AT指令到TC35
這里需要特別注意的是,在初始化程序中,端口0已被置為接收狀態,此時如果直接發送AT指令,將會導致端口0發生通訊沖突,而導致其不能正常工作。因此,我們在發送指令前必須先禁止接收(將SM87.7復0)然后執行RCV指令,RCV指令執行時將會檢測SM87.7的狀態,當發現SM87.7=0時,即停止端口0的接收。這里我們建議,在使用XMT指令前,首先執行R SM87.7, 1、RCV VB100, 0兩條指令(VB100可以換成其他地址)。
XMT指令指向VB0,我們將AT指令寫在VB0開始的數據塊中
4. 發送PDU數據包
當AT指令發送完成時,PLC會產生一個中斷,在初始化程序中,我們已經將這個中斷連接到INT_1(ATCH INT_1, 9),在這個中斷中,我們重新把端口0置于接收狀態,用來接收TC35返回的“>“,同時我們將M0.0復位以便檢測下一次發送請求并清空RCV指令的接收緩沖區。將下面指令添加到INT_1中:
Network 1
LD M0.0
S SM87.7, 1
RCV VB100, 0
R M0.0, 1
Network 2
LD SM0.0
FILL +0, VW100, 10
TC35接收到AT+CMGS=18后,返回”>”,PLC接收到”>”后開始將接收到的字符保存到VB101開始的存儲區,并且每接收一個字符即啟動定時器,超過5 ms仍接收不到下一個字符時,就認為本次接收已經完成,產生接收完成中斷。在初始化程序中我們已經將該中斷連接到INT_0(ATCH INT_0, 23)。將下面指令添加到INT_0中:
Network 1
LDB= VB101, '>'
S M0.1, 1
在中斷程序中不易執行過多程序,因此我們在這里判斷VB101是否為”>”,如果是則表示TC35等待接收PDU數據,我們通過M0.1在主程序中觸發發送PDU數據。將下面這段程序添加到主程序中:
Network 4
LD M0.1
EU
R SM87.7, 1
RCV VB100, 0
XMT VB20, 0
與發送AT指令一樣,我們首先要停止端口0的接收,然后發送PDU數據包,PDU數據包保存在VB21開始的數據塊中,VB20中保存XMT指令要發送的字節數目。
5. 判斷發送狀態
在發送完成中斷中,我們要重新置端口0為接收狀態,同時復位M0.1,并將RCV指令判斷的起始字符由原來的”>”改為”+”,因為TC35接收到PDU數舉包后會返回”+CMGS: x”表示發送成功,或者” +CMS ERROR: 500”表示發送失敗,將下面的指令添加到INT_1中
Network 3
LD M0.1
S SM87.7, 1
MOVB '+', SMB88
RCV VB100, 0
R M0.1, 1
在接收完成中斷中(INT_0)我們可以通過判斷VB104的狀態來判斷發送是否成功,如果發送成功,VB104=”G”,如果不成功VB104=”S”。將下面的指令添加到INT_0中
Network 2
LDB= VB104, 'G'
MOVB '>', SMB88Network 3
LDB= VB104, 'S'
MOVB '>', SMB88
S M0.0, 1
如果成功則將RCV指令的起始字符恢復為”>”,如果不成功則將RCV指令的起始字符恢復為”>”同時置位M0.0重新發送短消息。
將整個程序下載到PLC中,每次置位M0.0即可以向發送一條短消息,短消息內容為“天氣”。只要更改數據塊中的內容,即可向不同的手機號碼發送不同內容的短消息。整個程序如下:
MAINNetwork 1
LD SM0.1
MOVB 9, SMB30
MOVB 2#11000100, SMB87
MOVB '>', SMB88
MOVW +5, SMW92
MOVB 255, SMB94
ATCH INT_0, 23
ATCH INT_1, 9
ENI
聯系方式
- 電 話:13510737515
- 聯系人:董海波
- 手 機:13185520415
- 微 信:13185520415