-Begin-
前言
最近有運(yùn)動(dòng)控制的學(xué)員問到這樣的問題,能不能通過Modbus協(xié)議,實(shí)現(xiàn)運(yùn)動(dòng)控制卡的數(shù)據(jù)讀取。
經(jīng)過測(cè)試,切實(shí)可行。這里采用的是正運(yùn)動(dòng)的ECI1408板卡,其他品牌板卡可能不支持,具體咨詢供應(yīng)商。
MOdbus協(xié)議
正運(yùn)動(dòng)控制器支持兩個(gè)存儲(chǔ)區(qū),分別是0區(qū)和4區(qū)。
- 0區(qū)從地址10000開始與輸入 IN 口對(duì)應(yīng)。
- 0區(qū)從地址20000開始與輸出 OUT 口對(duì)應(yīng)。
- 4區(qū)從地址10000開始對(duì)應(yīng)軸 DPOS 區(qū)間。
- 4區(qū)從地址11000開始對(duì)應(yīng)軸 MPOS 區(qū)間。
- 4區(qū)從地址12000開始對(duì)應(yīng)軸 VP_SPEED 區(qū)間。
- 4區(qū)從地址13000開始對(duì)應(yīng)模擬量DA輸出區(qū)間。
- 4區(qū)從地址14000開始對(duì)應(yīng)模擬量AD輸入?yún)^(qū)間。
- 對(duì)于其他參數(shù),可以采用自定義存儲(chǔ)區(qū)0-7999來使用。
代碼測(cè)試
這里以讀取XYZ三軸的位置來進(jìn)行測(cè)試。
- 建立連接
//Modbus通信對(duì)象
private ModbusTcp modbusTcp = new ModbusTcp();
//取消線程源
private CancellationTokenSource cts;
private void btn_Connect_Click(object sender, EventArgs e)
{
if (modbusTcp.Connect(this.txt_IPAddress.Text, Convert.ToInt32(this.txt_Port.Text)))
{
//如果連接成功,開線程讀取
cts = new CancellationTokenSource();
Task.Run(() =>
{
GetMotionData();
}, cts.Token);
}
else
{
MessageBox.Show("運(yùn)動(dòng)控制卡連接失敗", "建立連接");
}
}
- 斷開連接
private void btn_DisConn_Click(object sender, EventArgs e)
{
cts?.Cancel();
modbusTcp.DisConnect();
}
- 多線程讀取解析
private void GetMotionData()
{
while (!cts.IsCancellationRequested)
{
byte[] res = modbusTcp.ReadKeepReg(1, 10000, 6);
this.Invoke(new Action(() =>
{
if (res != null && res.Length == 12)
{
float[] values = FloatLib.GetFloatArrayFromByteArray(res, DataFormat.CDAB);
this.lbl_XAxis.Text = values[0].ToString();
this.lbl_YAxis.Text = values[1].ToString();
this.lbl_ZAxis.Text = values[2].ToString();
}
}));
}
}
- 測(cè)試結(jié)果如下:
上位機(jī)軟件實(shí)時(shí)數(shù)據(jù)顯示:
測(cè)試軟件結(jié)果顯示:
整體總結(jié)
本案例主要是測(cè)試了基于Modbus協(xié)議來讀取運(yùn)動(dòng)控制卡的相關(guān)參數(shù),這種情況主要用于第三方軟件需要運(yùn)動(dòng)控制系統(tǒng)的相關(guān)數(shù)據(jù)。同時(shí),如果后續(xù)的運(yùn)動(dòng)控制項(xiàng)目,需要提供數(shù)據(jù)給其他軟件,可以將運(yùn)動(dòng)控制卡作為一個(gè)現(xiàn)成免費(fèi)的ModbusTCP服務(wù)器,不僅可以傳遞運(yùn)動(dòng)控制參數(shù),其他參數(shù)都可以實(shí)現(xiàn)傳遞。
-END-
-
控制卡
+關(guān)注
關(guān)注
2文章
60瀏覽量
13050 -
ModBus協(xié)議
+關(guān)注
關(guān)注
3文章
177瀏覽量
33529 -
數(shù)據(jù)讀取
+關(guān)注
關(guān)注
0文章
9瀏覽量
6556
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【正運(yùn)動(dòng)】高速高精,超高實(shí)時(shí)性的PCIe EtherCAT實(shí)時(shí)運(yùn)動(dòng)控制卡 | PCIE464
運(yùn)動(dòng)控制卡
LabVIEW與運(yùn)動(dòng)控制卡相結(jié)合控制使用,求各路大神幫助!!!
ACS運(yùn)動(dòng)控制卡 精選資料分享
EtherCAT運(yùn)動(dòng)控制卡之ECI2820如何使用
PLC控制好還是運(yùn)動(dòng)控制卡控制好
正運(yùn)動(dòng)ECI系列運(yùn)動(dòng)控制卡產(chǎn)品優(yōu)勢(shì)
研控運(yùn)動(dòng)控制卡的編程小技巧
運(yùn)動(dòng)控制卡能仿真嗎?
![<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制卡</b>能仿真嗎?](https://file.elecfans.com/web2/M00/93/A4/pYYBAGP1ygSAeu4QAAGhq9crF0c826.jpg)
利用運(yùn)動(dòng)控制卡搭建運(yùn)動(dòng)控制平臺(tái)
![利用<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制卡</b>搭建<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制</b>平臺(tái)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
阿爾泰科技 運(yùn)動(dòng)控制卡的簡(jiǎn)要介紹
不止10倍提速!PCIe EtherCAT實(shí)時(shí)運(yùn)動(dòng)控制卡XPCIE1032H 等您評(píng)測(cè)!
![不止10倍提速!PCIe EtherCAT<b class='flag-5'>實(shí)時(shí)運(yùn)動(dòng)</b><b class='flag-5'>控制卡</b>XPCIE1032H 等您評(píng)測(cè)!](https://file.elecfans.com/web2/M00/AD/B9/poYBAGSY86KAVptgAAXjBDFM6ag582.png)
運(yùn)動(dòng)控制卡伺服電機(jī)如何控制
PCIe實(shí)時(shí)運(yùn)動(dòng)控制卡的雙盤視覺篩選機(jī)上位機(jī)開發(fā)應(yīng)用
![PCIe<b class='flag-5'>實(shí)時(shí)運(yùn)動(dòng)</b><b class='flag-5'>控制卡</b>的雙盤視覺篩選機(jī)上位機(jī)開發(fā)應(yīng)用](https://file1.elecfans.com//web1/M00/F2/9F/wKgZoWcHOLGAN4mrAADH83J-LAE386.png)
評(píng)論