如何通過(guò)組態(tài)王實(shí)現(xiàn)對(duì)stm32的控制及查詢接收數(shù)據(jù)?
一、上位機(jī)組態(tài)王
1、建立I/O變量。
首先說(shuō)一下I/O變量和內(nèi)存變量的區(qū)別及用法:I/O變量是指組態(tài)王可以與外部數(shù)據(jù)交換的變量,能和下位機(jī)進(jìn)行數(shù)據(jù)交換。這個(gè)數(shù)據(jù)是雙向的,動(dòng)態(tài)的。內(nèi)存變量是指不需要和外部應(yīng)用程序進(jìn)行數(shù)據(jù)交換,只在組態(tài)王內(nèi)部進(jìn)行數(shù)據(jù)交換。
建立I/O變量。
下面分析一下這個(gè)變量對(duì)應(yīng)發(fā)送給stm32的報(bào)文格式,寄存器選擇4****,讀寫屬性為只讀,功能碼為03(讀取保持寄存器)****為查詢命令的起始地址,數(shù)據(jù)類型是查詢命令請(qǐng)求的數(shù)據(jù)的數(shù)量,這里用的USHORT 這是請(qǐng)求1個(gè)數(shù)據(jù)(16位整數(shù))。這樣組態(tài)王下發(fā)給的報(bào)文為 01 03 00 00 00 01 84 0A; 01:設(shè)備地址 ;03 :功能碼; 00 00:寄存器地址; 00 01(驅(qū)動(dòng)的變量的寄存器通道號(hào)(寄存器范圍),是按照以1為起始地址的。對(duì)于以0為起始地址的設(shè)備,定義變量應(yīng)該加1。例如,如果某設(shè)備的一個(gè)變量在數(shù)據(jù)4區(qū),為40100,如果地址是從1開(kāi)始,對(duì)應(yīng)變量定義為40100;如果地址是從0開(kāi)始,定義為40101。):請(qǐng)求數(shù)據(jù)數(shù); 84 0A:crc校驗(yàn)碼;這是組態(tài)王燒的標(biāo)準(zhǔn)modbus-rtu驅(qū)動(dòng)。所以這樣發(fā)。(自己通過(guò)虛擬串口和串口助手接收的數(shù)據(jù)分析,以上全為自己總結(jié)發(fā)現(xiàn)不具有標(biāo)準(zhǔn)性,如有不如請(qǐng)指出)下面貼上modbus標(biāo)準(zhǔn)協(xié)議報(bào)文格式:
組態(tài)王下發(fā)查詢命令,單片機(jī)應(yīng)答,這樣就可以實(shí)現(xiàn)單片機(jī)向組態(tài)王顯示數(shù)據(jù)。至于stm32怎么應(yīng)答數(shù)據(jù)及程序,接下來(lái)有時(shí)間更新。
建立畫(huà)面及數(shù)據(jù)顯示文本
選擇模擬值輸出:
這樣stm32寫完了modbus驅(qū)動(dòng)程序就可以與組態(tài)王實(shí)現(xiàn)通訊。(注意波特率);
組態(tài)王下發(fā)控制stm32
這里我們使用05功能碼,使用0寄存器。
建立I/O變量:
貼上05功能碼的modbus-rtu協(xié)議報(bào)文
在stm32寫好05功能碼的代碼,變可以實(shí)現(xiàn)將設(shè)定值傳到下位機(jī)實(shí)現(xiàn)對(duì)燈、步進(jìn)電機(jī)等用電器控制。
提交
新大陸自動(dòng)識(shí)別精彩亮相2024華南國(guó)際工業(yè)博覽會(huì)
派拓網(wǎng)絡(luò)被Forrester評(píng)為XDR領(lǐng)域領(lǐng)導(dǎo)者
智能工控,存儲(chǔ)強(qiáng)基 | ??低晭?lái)精彩主題演講
展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)
中國(guó)聯(lián)通首個(gè)量子通信產(chǎn)品“量子密信”亮相!