当前位置: 首页 > wzjs >正文

免费做网站哪个好济源新站seo关键词排名推广

免费做网站哪个好,济源新站seo关键词排名推广,网站怎么做数据库,北京住房及城乡建设部网站C#上位机使用Modbus RTU协议控制变频器 一、RTU报文格式示例 通信命令码: 03H:读从机参数 06H:写从机参数 10H:写多个参数上位机写单个寄存器:【从机地址】1字节【命令码】1字节【寄存器地址高-低】2字节【数据值高-低】2字节【CRC校验值低-高】…

C#上位机使用Modbus RTU协议控制变频器

在这里插入图片描述

一、RTU报文格式示例

在这里插入图片描述
在这里插入图片描述
通信命令码:

03H:读从机参数    
06H:写从机参数   
10H:写多个参数

上位机写单个寄存器:【从机地址】1字节+【命令码】1字节+【寄存器地址高-低】2字节+【数据值高-低】2字节+【CRC校验值低-高】2字节,总共8字节。
上位机读寄存器:【从机地址】1字节+【命令码】1字节+【寄存器地址高-低】2字节+【读取寄存器数量高-低】2字节+【CRC校验值低-高】2字节,总共8字节。

二、生成CRC校验值的方法

        private byte[] CalculateCrc(byte[] data){ushort crc = 0xFFFF;for (int i = 0; i < data.Length; i++){crc ^= (ushort)data[i];for (int j = 0; j < 8; j++){if ((crc & 0x0001) != 0){crc >>= 1;crc ^= 0xA001;}else{crc >>= 1;}}}byte[] crcBytes = new byte[2];//CRC低位crcBytes[0] = (byte)(crc & 0xFF);//CRC高位crcBytes[1] = (byte)(crc >> 8);return crcBytes;}

三、对变频器进行读写

这个方法是将传入的不带CRC校验的字节数组计算CRC校验值之后组成完整的报文并下发。

 public void WriteMessage(byte[] data){try{//计算CRC校验值byte[] crc = this.CalculateCrc(data);//把CRC校验值组合进去,组成完整的报文byte[] sendDataCRC = data.Concat(crc).ToArray();//将加了CRC校验值的报文转换成16进制的字符串string str = this.serialPortHelper.AlgorithmHelperObject.BytesTo16(sendDataCRC, Enum16Hex.Blank);this.SendData(str);}catch (Exception ex){MessageBox.Show("主站设备下发报文错误:" + ex.Message);}}

当通道有数据传回时,通过串口的DataReceived事件直接触发接收数据方法,并将报文显示到界面上。

this.serialPortHelper.SerialPortObject.DataReceived += new SerialDataReceivedEventHandler(this.SerialPort_DataReceived);private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{try{string data = string.Empty;byte[] temp = this.serialPortHelper.ReceiveData();if (temp.Length != 0){foreach (var item in temp){data += item.ToString("X2") + " ";}}this.txtReceiveData.Invoke(new Action<string>(s =>{ this.txtReceiveData.Text += "【" + DateTime.Now.ToLongTimeString() + "】" + s + "\r\n"; }), data);}catch (Exception ex){MessageBox.Show("接收数据出现错误:" + ex.Message);}
}public byte[] ReceiveData()
{//定义一个接收数组,获取结束缓冲区数据的字节数byte[] byteData = new byte[this.serialPort.BytesToRead];//读取数据this.serialPort.Read(byteData, 0, serialPort.BytesToRead);return byteData;
}

1、设定变频器运行频率

变频器频率设置地址为1E01H。

 private void btnSetHz_Click(object sender, EventArgs e){//从机地址【0X01】//命令码【0X03】,读从机参数//起始地址【0X0000】,对应PLC的40001//寄存器数量【0X0001】//byte[] sendData = new byte[6] {0X01, 0X03, 0X00, 0X00, 0X00, 0X01};//将写入的数据转换为字节数组,最大频率设置为5000,即50.00Hzbyte[] value = new byte[2];if (Convert.ToInt32(this.txtSetHz.Text.Trim()) > 5000){value = BitConverter.GetBytes(5000);}else{value = BitConverter.GetBytes(Convert.ToInt16(this.txtSetHz.Text.Trim()));}//报文格式:从机地址【1字节】——通信命令码【1字节】——参数地址【2字节,高-低位】——参数值【2字节,高-低位】——CRC【2字节,低-高位】//除了CRC之后的报文,从机地址:0X01,命令码:0X06(写入单个寄存器),寄存器地址:0X1E01,写入的数据:writeData[]。byte[] sendData = new byte[6] { 0X01, 0X06, 0X1E, 0X01, value[1], value[0] };WriteMessage(sendData);}

2、启动/停止变频器运行

变频器操作命令字地址为1E00H。

private void btnOperateCode_Click(object sender, EventArgs e)
{byte[] value = new byte[2];value = BitConverter.GetBytes(Convert.ToInt16(this.cboxOperateCode.Text));byte[] sendData = new byte[6] { 0X01, 0X06, 0X1E, 0X00, value[1], value[0] };WriteMessage(sendData);
}

3、监控变频器状态

变频器状态地址为1E02H。

 private void btnMonitorUuivertorState_Click(object sender, EventArgs e){isMonitor = true;if (thread == null){thread = new Thread(ReadUuivertorState);thread.IsBackground = true;thread.Start();}}private void ReadUuivertorState(){while (isMonitor){//byte[] value = new byte[2];//value = BitConverter.GetBytes(Convert.ToInt16(this.cboxOperateCode.Text));//报文格式:从机地址【1字节】——通信命令码【1字节】——参数地址【2字节,高-低位】——参数个数【2字节,高-低位】——CRC【2字节,低-高位】//除了CRC之后的报文,从机地址:0X01,命令码:0X03(读单个或多个寄存器),寄存器地址:0X1E02,参数个数:0X0001。byte[] sendData = new byte[6] { 0X01, 0X03, 0X1E, 0X02, 0X00, 0X01 };WriteMessage(sendData);Thread.Sleep(1000);}}

四、仿真测试

1、设置运行频率

在这里插入图片描述

2、启动变频器运行

在这里插入图片描述

3、读取变频器状态

在这里插入图片描述


文章转载自:

http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://00000000.pLydc.cn
http://www.dtcms.com/wzjs/601401.html

相关文章:

  • 网站前台设计及开发是做什么的工作手机
  • 门户网站系统程序重庆建设网站多久时间
  • 建设企业网站公司价格外贸稳中提质韧性强
  • 企业网站源码推荐网店都有哪些平台
  • 做网站.net和php哪个简单河源网站seo
  • 济南优化网站关键词商品网站模板
  • 网站建设哪个平台好上海工商公示网查询官网
  • 擦边球做网站挣钱汽车专业科技网站建设
  • php空间放多个网站开发商排名
  • 网站主页没有关键词南通住房和城乡建设局网站
  • 网站建站平台广告四川做网站优化价格
  • 中山网站建设熊掌号移动网站有哪些
  • 模拟ip访问网站iis7 伪静态 wordpress
  • wordpress建网站主页南通外贸建站
  • 图片类网站开发需求semifinal
  • 网站建设服务器维护内容2021国内军事新闻大事件
  • vue做电商网站宁波营销团队外包
  • 网站建设平ppt建设银行征信中心个人信用查询官方网站
  • 仙桃做企业网站的零基础建设网站教程
  • 义乌做网站公司哪家好网站中文名要注册的吗
  • 为农村建设网站报告三门峡企业网站建设公司
  • 网站 项目方案湘潭市高新建设局网站
  • 美团外卖网站开发成都网站建设scyiyou
  • 企业网站建设费用详情wordpress账户被禁用
  • 白云网站 建设seo信科景德镇网站网站建设
  • 北京到秦皇岛手机网站如何优化
  • 淘宝的电子商务网站的建设效果好的网站建设公
  • 福州网站排名推广如何更换网站空间
  • 荆州网站建设推荐wordpress去掉导航栏
  • 网站开发优势if设计奖官网