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

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

Modbus聯(lián)合運(yùn)動(dòng)控制卡實(shí)時(shí)通信

2022-09-22 17:24 作者:新閣教育  | 我要投稿

前言

最近有運(yùn)動(dòng)控制的學(xué)員問(wèn)到這樣的問(wèn)題,能不能通過(guò)Modbus協(xié)議,實(shí)現(xiàn)運(yùn)動(dòng)控制卡的數(shù)據(jù)讀取。

經(jīng)過(guò)測(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來(lái)使用。

圖片
圖片

代碼測(cè)試

圖片

這里以讀取XYZ三軸的位置來(lái)進(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é)議來(lái)讀取運(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)傳遞。


Modbus聯(lián)合運(yùn)動(dòng)控制卡實(shí)時(shí)通信的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
双流县| 怀集县| 清水河县| 临湘市| 祁门县| 古蔺县| 龙陵县| 尼木县| 高陵县| 伽师县| 焉耆| 黑水县| 若羌县| 石狮市| 瑞金市| 探索| 玛沁县| 广饶县| 永德县| 栖霞市| 剑河县| 突泉县| 金塔县| 金乡县| 稷山县| 潜江市| 牙克石市| 高碑店市| 梁河县| 洛南县| 永安市| 鸡西市| 临湘市| 邵武市| 吴忠市| 巴林右旗| 莫力| 上饶县| 工布江达县| 隆尧县| 芦溪县|