工控網首頁
>

應用設計

>

如何通過組態王實現對stm32的控制及查詢接收數據?

如何通過組態王實現對stm32的控制及查詢接收數據?

2018/5/8 11:36:23

一、上位機組態王

1、建立I/O變量。

首先說一下I/O變量和內存變量的區別及用法:I/O變量是指組態王可以與外部數據交換的變量,能和下位機進行數據交換。這個數據是雙向的,動態的。內存變量是指不需要和外部應用程序進行數據交換,只在組態王內部進行數據交換。

建立I/O變量。

下面分析一下這個變量對應發送給stm32的報文格式,寄存器選擇4****,讀寫屬性為只讀,功能碼為03(讀取保持寄存器)****為查詢命令的起始地址,數據類型是查詢命令請求的數據的數量,這里用的USHORT 這是請求1個數據(16位整數)。這樣組態王下發給的報文為 01 03 00 00 00 01 84 0A;  01:設備地址 ;03 :功能碼; 00 00:寄存器地址; 00 01(驅動的變量的寄存器通道號(寄存器范圍),是按照以1為起始地址的。對于以0為起始地址的設備,定義變量應該加1。例如,如果某設備的一個變量在數據4區,為40100,如果地址是從1開始,對應變量定義為40100;如果地址是從0開始,定義為40101。):請求數據數; 84 0A:crc校驗碼;這是組態王燒的標準modbus-rtu驅動。所以這樣發。(自己通過虛擬串口和串口助手接收的數據分析,以上全為自己總結發現不具有標準性,如有不如請指出)下面貼上modbus標準協議報文格式:

組態王下發查詢命令,單片機應答,這樣就可以實現單片機向組態王顯示數據。至于stm32怎么應答數據及程序,接下來有時間更新。

建立畫面及數據顯示文本

選擇模擬值輸出:

這樣stm32寫完了modbus驅動程序就可以與組態王實現通訊。(注意波特率);

組態王下發控制stm32

這里我們使用05功能碼,使用0寄存器。

建立I/O變量:

貼上05功能碼的modbus-rtu協議報文

在stm32寫好05功能碼的代碼,變可以實現將設定值傳到下位機實現對燈、步進電機等用電器控制。

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

新大陸自動識別精彩亮相2024華南國際工業博覽會

派拓網絡被Forrester評為XDR領域領導者

智能工控,存儲強基 | 海康威視帶來精彩主題演講

展會|Lubeworks路博流體供料系統精彩亮相AMTS展會

中國聯通首個量子通信產品“量子密信”亮相!