国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
阿鲁科尔沁旗| 登封市| 乐陵市| 景洪市| 抚远县| 视频| 农安县| 咸阳市| 南澳县| 高青县| 天等县| 余江县| 昌江| 长子县| 纳雍县| 南安市| 伊宁县| 武功县| 乌兰浩特市| 兴安县| 收藏| 平陆县| 仙桃市| 北京市| 伊通| 铁岭市| 济阳县| 阿坝县| 义马市| 玉田县| 叶城县| 浠水县| 静宁县| 亚东县| 库尔勒市| 长泰县| 二连浩特市| 尖扎县| 思茅市| 大荔县| 雷波县|