加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線13185520415

        遼寧省西門子授權供應商---西門子變頻器錦州市總代理

        更新時間
        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