最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

電機(jī)PID控制補(bǔ)充篇-野火上位機(jī)串口協(xié)議介紹

2022-06-19 23:17 作者:碼農(nóng)愛學(xué)習(xí)-B站  | 我要投稿

0 引言

之前介紹的電機(jī)PID控制的系列文章,得到不少電子愛好者的關(guān)注,不過也收到一些關(guān)于串口通信的疑問反饋。之前的一系列文章,確實(shí)沒有著重介紹串口軟件的使用細(xì)節(jié)以及通信協(xié)議的具體格式。本篇就來補(bǔ)充一下野火PID調(diào)試助手的串口協(xié)議。

下野火PID調(diào)試助手的使用界面如下,與串口通信協(xié)議相關(guān)的,主要分為三個(gè)部分:

  • 參數(shù)區(qū):包括數(shù)據(jù)通道選擇、PID參數(shù)設(shè)置與展示、目標(biāo)值、周期值的設(shè)置與展示

  • 啟/停區(qū):控制電機(jī)的啟動(dòng)、停止以及程序的復(fù)位

  • 數(shù)據(jù)曲線區(qū):接收板子發(fā)上來的數(shù)據(jù),進(jìn)行速度曲線或位置曲線等的繪制

在介紹串口協(xié)議之前,推薦安裝一個(gè)虛擬串口驅(qū)動(dòng)軟件來在自己的電腦上虛擬出兩個(gè)串口,方便分析串口數(shù)據(jù)。

比如我們在電腦上產(chǎn)生兩個(gè)虛擬串口,這兩個(gè)串口可以看作是通過線連接了起來,比如我們使用野火PID助手和另一個(gè)串口助手軟件分別連接這兩個(gè)虛擬串口,當(dāng)野火PID助手發(fā)送數(shù)據(jù)時(shí)(比如按下啟動(dòng)按鈕),另一端的串口助手軟件就可以收到并顯示野火PID助手發(fā)來的數(shù)據(jù),這樣我們就能分析野火PID助手下發(fā)數(shù)據(jù)的數(shù)據(jù)格式了。

1 PID調(diào)試助手串口協(xié)議介紹

先來看一下野火PID調(diào)試助手的串口協(xié)議數(shù)據(jù)格式。

串口協(xié)議的定義參考野火論壇的介紹:https://www.firebbs.cn/forum.php?mod=viewthread&tid=29923&extra=page%3D1

1.1 指令包格式

串口數(shù)據(jù)是通過一包一包的數(shù)據(jù)發(fā)送的,每一包的數(shù)據(jù)格式如下:

  1. 所有多字節(jié)的低字節(jié)在前(關(guān)于高低字節(jié)或數(shù)據(jù)大小端的介紹,可參考:)

  2. 包頭固定為四字節(jié)的0x59485A53

  3. 通道地址1到5對應(yīng)軟件上的CH1到CH5,CH1為0x01,CH2為0x02

  4. 包長度為從包頭到校驗(yàn)的所有數(shù)據(jù)長度

  5. 指令為相應(yīng)的功能碼

  6. 參數(shù)為指令需要參數(shù)時(shí)加入

  7. 校驗(yàn)為校驗(yàn)和方式——8位

1.2 指令分類

上述數(shù)據(jù)格式中,需要重點(diǎn)關(guān)注的是“指令”這一字段,它表明了這一包數(shù)據(jù)的具體含義。

另外,串口數(shù)據(jù)包括下發(fā)數(shù)據(jù)上傳數(shù)據(jù),下發(fā)數(shù)據(jù)就是野火PID助手按照協(xié)議包格式向板子發(fā)送串口數(shù)據(jù),上傳數(shù)據(jù)就是板子按照協(xié)議包格式向野火PID助手送串口數(shù)據(jù)。

1.2.1 下發(fā)數(shù)據(jù)

野火PID助手下發(fā)設(shè)定的數(shù)據(jù)或指令到板子中

1.2.2?上傳數(shù)據(jù)

板子上傳數(shù)據(jù)或指令到野火PID助手


2 數(shù)據(jù)實(shí)測與分析

2.1 實(shí)測下發(fā)的數(shù)據(jù)

測試數(shù)據(jù)的下發(fā),可以只使用一個(gè)電腦進(jìn)行測試,通過虛擬串口,分別連接野火PID助手和另一個(gè)串口助手軟件,通過野火PID助手向另一個(gè)串口助手發(fā)送數(shù)據(jù),以Hex方式顯示接收的數(shù)據(jù),并觀察數(shù)據(jù)的格式。

2.1.1 下發(fā)啟動(dòng)(0x12) 停止(0x13) 復(fù)位(0x14)

這3個(gè)是指令,沒有數(shù)據(jù)參數(shù),數(shù)據(jù)長度為0x0B,也就是11個(gè)byte

2.1.2 下發(fā)目標(biāo)值(0x11) 周期(0x15)

這2個(gè)指令,帶有1byte數(shù)據(jù),數(shù)據(jù)長度為0x0F,也就是15個(gè)byte

2.1.3 下發(fā)送PID(0x10)

這個(gè)指令,帶有12byte數(shù)據(jù)(3個(gè)float),數(shù)據(jù)長度為0x17,也就是23個(gè)byte

注意:這里PID的數(shù)據(jù)是float型的,在發(fā)送時(shí)是需要拆分成4個(gè)字節(jié)的Hex格式發(fā)送的,關(guān)于float類型數(shù)據(jù)轉(zhuǎn)為Hex格式的介紹,可參考:

2.2 實(shí)測上傳數(shù)據(jù)

測試數(shù)據(jù)的上傳,需要將程序下載到板子中,板子通過軟件連接電腦上的任意串口調(diào)試軟件,以Hex方式顯示接收的數(shù)據(jù),分析數(shù)據(jù)的格式。

2.2.1 上傳啟動(dòng)(0x04)/停止(0x05)狀態(tài)


2.2.2 上傳目標(biāo)值(0x01)/周期值(0x06)


2.2.3 上傳PID參數(shù)(0x03)

2.2.4 上傳實(shí)際值(0x02)

這里就是將電機(jī)的轉(zhuǎn)速和位置值上傳到野火PID助手中,用于顯示位置曲線或速度曲線。

3 串口收發(fā)程序

再來看一下與串口數(shù)據(jù)發(fā)送與接收相關(guān)的主要代碼:

3.1 發(fā)送

按格式組包數(shù)據(jù):

將一包數(shù)據(jù)一個(gè)個(gè)發(fā)送給上位機(jī):



3.2 接收

使用中斷的方式進(jìn)行串口數(shù)據(jù)的接收:


接收之后的數(shù)據(jù)保存在串口接收緩存ReCV1數(shù)組中,然后再根據(jù)協(xié)議格式解析數(shù)據(jù)即可。

4 總結(jié)

本篇介紹的野火PID助手的串口協(xié)議格式,包括下發(fā)的數(shù)據(jù)格式和上傳的數(shù)據(jù)格式,并通過實(shí)際獲取串口數(shù)據(jù)的Hex格式數(shù)據(jù),與協(xié)議的定義進(jìn)行對比分析,使得能夠更加的理解串口數(shù)據(jù)的格式。

如果遇到野火PID助手下發(fā)指令板子沒反應(yīng),或板子上傳數(shù)據(jù)PID數(shù)據(jù)無法顯示曲線,這時(shí)就要先排查一下串口數(shù)據(jù)的格式是否正確,若不正確,就要看下自己程序中的串口收發(fā)函數(shù)編寫的是否正確,只有串口數(shù)據(jù)符合了規(guī)定的協(xié)議格式,才能正確的進(jìn)行數(shù)據(jù)通信。

如果串口數(shù)據(jù)格式正常,電機(jī)還不轉(zhuǎn),就要排查硬件接線是否正常以及是否要根據(jù)自己的電機(jī)編碼器參數(shù)來修改程序中的參數(shù)。

電機(jī)PID控制補(bǔ)充篇-野火上位機(jī)串口協(xié)議介紹的評論 (共 條)

分享到微博請遵守國家法律
琼结县| 沿河| 海南省| 新蔡县| 怀安县| 镇安县| 屏南县| 榆树市| 枣阳市| 正安县| 南陵县| 孝义市| 罗平县| 万全县| 鄂州市| 县级市| 长兴县| 梨树县| 丰镇市| 静宁县| 富平县| 通州市| 浦县| 高尔夫| 正宁县| 合水县| 江永县| 弋阳县| 米易县| 沾化县| 贞丰县| 西畴县| 普洱| 景东| 敦化市| 玉溪市| 贵溪市| 德化县| 德清县| 梅州市| 新乡县|