西門子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:
六、總結:通信協議的解析是通信應用能力的體現。
- 分享三個西門子博途PLC的youxiu程序模板 2024-12-02
- 博途PLC自定義配方的使用方法 2024-12-02
- 西門子博途PLC的間接尋址的兩個核心應用 2024-12-02
- 博途群討論:S7-1200 PLC也可以組態MRP環網 2024-12-02
- 西門子安全PLC設計與編程方法的分享 2024-12-02
- 西門子HMI變量的批量替換方法 2024-12-02
- S88、OMAC和SICAR標準:這些自動化標準是什么關系和如何應用 2024-12-02
- 博途軟件的基本操作與技巧 2024-12-02
- 90%的工程師都不知道PLC循環掃描工作過程 2024-12-02
- 【暢學技術】完全基于 Web 的控制系統 2024-12-02
- SINAMICS G 系列柜機調試你需要知道的幾件事 2024-12-02
- V19里的密碼設置,再不學會你就Out了! 2024-12-02
- S7-200 SMART Modbus RTU主站編程如何實現? 2024-12-02
- 【暢學技術】PCS 7 SFC 使順序控制如魚得水 2024-12-02
- 【暢學技術】工業數字化技術漫談_工程師的 IT 百寶箱 2024-12-02
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684