<object id="ayu7o"></object>

      <object id="ayu7o"></object>

    1. <menuitem id="ayu7o"></menuitem>
      <object id="ayu7o"></object>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      協議解析是關鍵:S7-1200通過串口自由口協議與電力儀表專有協議的通信方法
      發布時間: 2024-08-08 17:45 更新時間: 2024-12-02 08:00
      觀看協議解析是關鍵:S7-1200通過串口自由口協議與電力儀表專有協議的通信方法視頻

       西門子S7-1200、1500系列PLC的串口通訊,支持標準ModbusRTU協議,若遇到非ModbusRTU的其他協議,可通過自由口的方式來通訊。以下例程為S7-1200的RS485通訊模塊,用自由口方式與電表通過DLT645-1997協議進行通訊,讀取電表內“運行功率”及“累計電量”兩個參數。

      一、儀表的通信協議解析

      1、從DLT645協議(文章后面有說明)進行協議解析,PLC需發送至電表的幀結構如下:

      圖片


      PLC正常接收電表返回的幀結構如下:

      圖片


      2、DLT645協議的具體協議內容

      圖片圖片圖片圖片圖片圖片

      二、組態PLC串口模塊

            模塊設置為2線制485,波特率1.2kbps(與電表設置一致),偶校驗(固定設置),數據位8位(固定設置),停止位1位(固定設置),與電表及協議設置一致:

      圖片


      消息開始固定為16#68

      圖片


      消息結束固定為16#16;同時超過400ms未收到消息,也認為結束:

      圖片


      三、制作FB功能塊DLTM,按照DLT645協議格式發送、接收數據

      1、編組發送幀

            按照DLT645的格式,將需發送到電表的14個byte數據放入數組SEND_PTP_SFB[1..14]中,并使用SEND_PTP功能塊發送這14個byte。

      圖片圖片


          使用SEND_PTP指令,發送以上編組好的SEND_PTP_SFB[1..14]共14個字節到串口

      圖片


      2、從串口接收數據,并處理接收幀:

            從串口接收到的數據幀放入RCV_PTP_SFB數組中,若RCV_PTP_SFB[1..12]都與協議格式相同,且接收數據長度大于0,認為接收數據成功,將RCV_PTP_SFB[11]開始的2個數據放入READ_DATA數組中。

      圖片


      接收成功后,使用RCV_RST復位,并將接收數組RCV_PTP_SFB清零:

      圖片


      四、制作FB功能塊DLT645,定義串口參數,定義功能碼,并調用DLTM功能塊

            讀取不同參數時使用不同的控制碼:讀取功率時用16#9010控制碼,長度為2;讀取電量時用16#B61F控制碼,長度為2:

      使用PORT_CFG指令初始化串口:

      PORT為串口模塊硬件地址;

      PROTOCOL=1代表點對點通信協議(固定設置);

      BAUD為波特率,通訊鏈路上所有電表都需設置一致;

      PARITY=2代表偶校驗(固定設置);

      DATABITS=1代表字節數據位8(固定設置);

      STOPBITS=1代表字節停止位0(固定設置);

      FLOWCTRL=1代表無數據流控制(固定設置);

      圖片


      通過不同串口、讀取不同電表、讀取不同數據時,將不同的電表地址、數據標識通過塊接口傳入之前做好DLTM功能塊:

      圖片


      五、在主程序中調用DLT645功能塊,輸入端口、波特率、電表地址等參數,與多臺電表通訊時,需要輪詢

      例如:第1臺電表的DLT645地址設置為010101010101:

      圖片


      圖片


      六、總結:通信協議的解析是通信應用能力的體現。


      聯系方式

      • 電  話:13922889745
      • 經理:向小姐
      • 手  機:18475208684
      • 微  信:18475208684