COMMI 串口调试软件读取数据
- 格式:docx
- 大小:10.51 KB
- 文档页数:5
通信采用MODBUS RTU协议,一帧数据格式为:1位起始位+ 8位数据+ 1位停止位
通信采用Modbus通信协议功能代码:
03H——读单个或连续多个寄存器
06H——写单个寄存器
10H——写连续多个寄存器
RTU命令格式及示例
03H——读单个或连续多个寄存器
下传命令:
;
反馈:
; 06H——写单个寄存器
下传命令:
数据阴影部分; 反馈:
10H——写连续多个寄存器下传命令:
2 WORD数据内容阴影部分;
反馈:
用COMMIX串口调试软件读取数据:
在使用前,需先将效验方式选择为“CRC16ModbusRTU”,如图1所示;其余设置参见图2;
图1
读取电机实时状态,比如读取全部96台电机的状态,则可发送命令“01 03 20 00 00 0c”
01:设备地址再起动控制柜地址
03:功能号读单个或连续多个寄存器
2000:实时电机状态1~8号电机寄存器地址
000c:从起始地址为2000H的寄存器读取连续12 WORD的内容;
如图2所示:
图2
发送之后,反馈如图3:运行的电机为9~16号电机,其余电机没有运行
图3。
单片机多功能调试助手简介1简介图1单片机多功能调试助手单片机多功能调试助手一款集串口/USB/网络调试、进制转换、字模与数码管字型码制作、常用校验值计算、UNICODE码转换、位图输出C文件等众多功能于一身的综合型调试软件,最值得庆幸的是该软件会一直保持更新,并支持在线升级功能,这样大家手头上的单片机多功能调试助手总是最新的!单片机多功能调试助手与其他调试软件有什么优势:1)一直保持为单文件状态,不会因为需要保存配置信息而创建其他其他文件,所以该软件非常容易携带。
2)一直体贴着开发者,所有重要的配置在关闭该软件时将会得到保存,重启软件后会重新导入以前的配置信息,免去重复选择或填入数据的操作。
3)集成了串口/USB/网络调试功能,并在串口/USB/网络调试的过程中,该软件提供了监视和多项发送功能。
通过使用监视端口的功能就可以清晰地分辨出发送与接收的数据的顺序;通过使用多项发送功能就可以省去重复删除或填写待发送数据的步骤。
4)在线升级功能是该软件的最得意之处,理所当然地也是开发者最倍受关注的功能。
索取方式:发邮件到wenziqi@或wenziqi@。
2软件预览2.1串口调试图2-1-1串口调试主界面2.1.1串口监视图2-1-2串口监视器点击串口监视器界面的保存记录将会在“单片机多功能调试助手”的根目录生成“串口监视器.txt文件”,如图2-1-3。
图2-1-3串口监视器记录2.1.2多项发送图2-1-4串口多项发送界面2.2USB调试2-2-1USB调试界面2-2-2USB监视器2-2-3USB监视记录2.3网络调试图2-3-1网络调试界面2.3.1TCP监视图2-3-2TCP监视器界面图2-3-3TCP监视记录2.3.2UDP监视图2-3-5UDP监视器图2-3-6UDP监视记录2.4服务器调试图2-4-1服务器界面2.5小工具2-5-18051单片机波特率计算界面2.68051单片机波特率计算2-6-18051单片机波特率计算界面2.7ATMEGA16单片机波特率计算2-7-1ATMEGA16单片机波特率计算界面2.7校验值计算2-7-1校验值计算界面2.8UNICODE2-8-1UNICODE转换界面2.9BMP转C文件图2-9-1BMP2Hex界面图2-9-2BMP转C文件。
读取串口数据方法一:使用VC++提供的串行通信控件MSComm 首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project --> Add to Project --> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。
此时,你只需要关心控件提供的对Windows 通讯驱动程序的 API 函数的接口。
换句话说,只需要设置和监视MSComm控件的属性和事件。
在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm 控件共有27个属性,这里只介绍其中几个常用属性: CommPort 设置并返回通讯端口号,缺省为COM1。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态,也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Output 向发送缓冲区写一个字符串。
InputLen 设置每次Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。
InBufferCount 返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。
InputMode 定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。
RThreshold 和 SThreshold 属性,表示在 OnComm 事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。
以下是通过设置控件属性对串口进行初始化的实例:BOOL CSampleDlg:: PortOpen(){BOOL m_Opened;......m_Serial.SetCommPort(2); // 指定串口号m_Serial.SetSettings("4800,N,8,1"); // 通信参数设置m_Serial.SetInBufferSize(1024); // 指定接收缓冲区大小m_Serial.SetInBufferCount(0); // 清空接收缓冲区m_Serial.InputMode(1); // 设置数据获取方式m_Serial.SetInputLen(0); // 设置读取方式m_Opened=m_Serail.SetPortOpen(1); // 打开指定的串口return m_Opened;}打开所需串口后,需要考虑串口通信的时机。
串口调试软件使用说明首先,运行该软件显示的是一个对话窗。
在该界面的左上角有五个小的下拉窗口,分别为串口,波特率,校验位,数据位,停止位。
串口窗口应为仪表与计算机相连时所使用的串口。
波特率窗口选择仪表设置的波特率。
校验位选择无。
数据位选择8位停止位选择2位在停止位的下面是显示区的选项,选择十六进制显示。
在整个界面的下方是发送区,主要选择十六进制发送,发送方式可选手动发送或自动发送。
其中自动发送可设置发送周期(以毫秒为单位)。
除直接发送代码外本软件也可直接发送文件。
仪表通讯协议如下:通讯格式为8位数据,2个停止位,无校验位。
仪表读写方式如下:读指令:Addr+80H Addr+80H 52H 要读参数的代号写指令:Addr+80H Addr+80H 43H 要写参数的代号写入数低字节写入数高字节读指令的CRC校验码为:52H+Addr 要读参数的代号,Addr为仪表地址参数值范围是0-100。
写指令的CRC校验码为:43H+要写的参数值+Addr 要写的参数代号。
无论是读还是写,仪表都返回以下数据:测量值PV+给定值SV +输出值MV及报警状态+所读/写参数值其中PV、SV及所读参数值均为整数格式,各占2个字节,MV占1个字节,报警状态占1个字节,共8个字节。
每2个8位数据代表一个16位整形数,低位字节在前,高位字节在后,各温度值采用补码表示,热电偶或热电阻输入时其单位都是0.1℃,1V或0V等线性输入时,单位都是线性最小单位。
因为传递的是16位二进制数,所以无法表示小数点,要求用户在上位机处理。
上位机每向仪表发一个指令,仪表在0-0.2秒内作出应答,并返回一个数据,上位机也必须等仪表返回数据后,才能发新的指令,否则将引起错误。
如果仪表超过最大响应时间仍没有应答,则原因可能无效指令、通讯线路故障,仪表没有开机,通讯地址不合等,此时上位机应重发指令。
现以XL4表为例说明首先,将表与计算机的串口一连接。
串口调试助手使用说明为简单明了,有些不言自明的功能不作介绍。
1 串口调试助手1.1 设置串口参数:串口号:1-16波特率:600-256000,>115200 时需要硬件支持。
2 接收区/键盘发送区2.1 接收数据a) 设置串口参数b) 如果要按十六进制形式显示接收数据,将十六进制显示选项选中。
c) 点击打开/关闭串口区中的打开串口按钮。
2.2 显示接收数据的长度因某些限制,显示接收数据的文本不能太长,所以当显示文本长度快达到62K 时会自动将显示文本删减到32K,此时文本可保留32K 的字符或约10K 的十六进制数据显示。
2.3 在键盘上发送英文字符a)在接收区/键盘发送区的输入框中用鼠标点一下。
b)在键盘按下按键立刻发送。
在这里不能发送回车换行,也不能发送汉字,若要发送请在单字符串发送区发送。
3 发送数据可以发送单字符串,多字符串(字符串序列)或直接在键盘上发送英文字符。
有两种发送数据格式,一种是普通的字符串,另外一种是十六进制数据即HEX 格式数据。
发送HEX 格式数据时要在字符串输入区中输入HEX 格式字符串,并且要将相应区内的十六进制发送选项选中。
例:HEX 格式数据字符串12 34 AB CD FF3.1 单字符串发送区3.1.1自动发送,自动发送周期:此项功能可以每隔一段时间反复地自动发送输入框中的数据,点击自动发送按钮后即启动自动发送功能。
自动发送周期最大为65535mS。
3.2 多字符串发送区在多字符串发送区可以发送一个字符串,或者自动地、依次发送所有的字符串。
请把鼠标移到“接收区/键盘发送区”和“多字符串发送区”之间,当鼠标形状发生变化时按下鼠标器的左键不松开,然后移动鼠标,将“多字符串发送区”的宽度调宽一些,让“间隔时间”显露出来。
3.2.1发送一个字符串a) 输入字符串。
b) 如果要发送16 进制数据, 要先在字符串后的HEX 选项框中打上对勾。
c) 点击发送按钮。
Commix工业控制串口调试工具V1.4功能介绍Commix 工业控制串口调试工具 V1.4
为工业控制设计的串口设备调试工具,已被许多同行使用,主要特点:
1、能根据设备的通讯协议,方便地生成多种冗余校验如Modbus,并加上结束符,适用于大多数串口通讯的工业设备;
2、能够混合输入16进制数、10进制数、ASCII字符,这种功能通过转义符“\\\\”实现;
3、支持串口1~255,支持各种虚拟串口,可以自定义任意通讯参数组合,随时改变参数而不用关闭串口,支持不常用的波特率等;
4、可以测出设备的响应间隔;
5、通讯数据可保存到RTF文件,参数设置可保存到注册表reg文件。
6、可切换中文/英文显示。
ComMonitor捷通串口调试软件使用说明书(6)捷通模拟通讯实验室Email:***************捷通模拟通讯实验室二零零九年十一月目录一、介绍 (2)二、软件界面 (2)2.1 软件主界面 (2)2.2 最大化界面 (3)2.3窗口置顶 (4)三、显示区控制 (6)3.1显示发送 (6)3.2帧换行 (6)3.3显示保存发送和接收时间 (7)3.4关键字过滤 (8)3.5 保存显示区内容 (8)四、发送区数据发送控制 (10)4.1 发送区数据格式说明 (10)4.2手动控制 (10)4.3自动发送 (11)4.4 校验码计算 (11)五、轮发功能 (13)5.1 发送区轮发 (13)5.2文件轮发 (13)5.3定时轮发 (15)5.4 帧回应轮发 (15)六、常见问题索引 (18)6.1 串口不能打开 (18)6.2 接收到的数据不对 (18)6.3 接收区没有显示 (18)6.4 自动发送为什么没有发送数据 (18)6.5 如何获得最新的ComMonitor软件 (18)6.6 关于ComMonitor软件源代码 (18)一、介绍ComMonitor捷通串口调试软件追求的是方便易用,能调试大多数的串口通讯应用。
本软件参考了串口调试助手,但又根据自己多年的工作经验,添加了更多的实用功能。
具体来讲,它除了具备一般的串口调试工具的功能以外,还具有以下特别之处:1、支持多达20个串口,对于使用多串口卡或虚拟串口的用户是很必要的;2、加入了接收显示与保存的关键字过滤功能;3、具备接收显示与保存时帧换行功能,40ms未受到数据,认为一帧结束;4、具有记录发送和接收时间的功能;5、支持3个独立的发送区;6、3个发送区可以以定时或响应等两种方式进行轮发;7、具有计算CRC16、CRC8等校验码的功能;8、自动保存上一次使用的端口配置;9、自动保存上一次发送区的数据;10、具有文件按行发送轮发功能,发送方式也可以采用定时和响应两种方式;11、轮发响应方式中,加入了超时判断,和自定义多次重发功能;12、所有参数和数据支持运行时改变,不需要重新启动;13、轮发时可以选择只轮发一遍,还是不断轮发;14、收发报文用不同的颜色显示,红的为接收,篮的为发送;ComMonitor捷通串口调试软件设计开始就是针对调试串口设备通讯的。
(串⼝通信编程)开源串⼝调试助⼿Common(ComMonitor) 最新的⽂档见这⾥: 我写的串⼝调试助⼿程序以及源代码. 警告:请勿将本软件源代码⽤于任何商业⽤途。
其实吧, 我写的这个串⼝软件绝对⽐⽹上流传的⼀些串⼝调试软件好⽤很多, 对于软件,我本⾝并没有作 太多推⼴, ⼀些功能我由于懒也没有⽂档化; 如果您正在使⽤, 也觉得我说得没错, 还望您帮忙推⼴⼀下. 感激!本程序最近正在使⽤C++完全重构, github上⾯的源代码⽆法通过编译~~ 敬请期待最新版本!微云你就⼀坑货, 说了的链接永久有效呢?源代码: 声明:本软件为开源软件,绝对不包含任何对系统不利的代码,对于360的那种⾏为,我不想说什么. 软件界⾯:-------------------------------------------------------------------------------------------------------------------------说明: 更新信息可能不会再更新到这⾥, 请到上⾯查看. 更新:2014-07-07:①优化:接收数据时,如果最后⼀个字符是'\r'或'\n',则会在⼀定时间内等待接收所有'\r','\n'字符,避免导致读取'\r\n'可能造成的两次换⾏②更改:除已经提到的那三种情况, 还有使⽤'\r\n\r'三个字符作为换⾏符使⽤的, 已增加⽀持2014-07-07:①修复:回车换⾏字符'\r','\n','\r\n'均能达到换⾏效果②修复:⼀开始"忽略回车"等⽆法点击问题③优化:简化对数据中包含'\0'的数据的处理④增加:简洁界⾯模式时把⼯具栏放到左边⑤更改:只显⽰接收区按下的"回车"字符为"<Enter>",其它不显⽰⑥增加:接收区增加⼀个"清空数据"菜单2014-07-06 1.17:①增加:允许从接收区输⼊字符并发送(更友好的类交互模式) 会显⽰的字符包括: ' ' <Space> '\b' <Backspace> '\t' <Tab> '\r' <Enter> 感觉输⼊效果还不错:②更改:更改了字符接收区/发送区的字体为Consolas等宽字体,不再使⽤原来的Courier字体③增加:简洁模式 - 此模式下⼤部分界⾯元素会被隐藏, 有时候这样更舒服 见上图所⽰, 左下⾓为"简洁模式"开关, 开启简洁模式后就像上图, 是不是很简洁?④增加:主窗⼝的⾃动界⾯布局(允许拖动改变窗⼝⼤⼩,控件坐标⾃动调整)⑤更改:默认使⽤的模式改为:字符接收+字符发送2014-07-05 1.16 (未对外发布):①字符接收数据时,增加对控制字符Backspace的⽀持(即'\b'),效果就是向前删除⼀个字符②修复⼀处中⽂检测错误(原来是对的, 不知道什么时候改错了③删除了窗体⼤⼩调整(下个版本即将使⽤⾃动布局)2014-03-03 1.15: 更新:⽀持⼿动输⼊⾮标准波特率 改进:增加了⼏个功能快捷键,⽐如Alt+S为发送,.... 优化:修正:如果接收缓冲区有未显⽰的数据,则会在按下继续显⽰时进⾏提⽰,⽽不是原来的在接收到下⼀次的数据时进⾏提⽰; 2013-11-02 1.14: 更新:修改了原来的命令发送模式的界⾯,现在变得更加友好了 如下图, 先选择要发送的命令列表⽂件: 点击打开, 将会打开如下界⾯: 1.上⾯的代码是我测试蓝⽛芯⽚⽤到的命令列表⽂件, 点击"发送命令"就会发送对应的⼀条命令 2.16进制还是原来的要求, 2个⼀组即可; 对于字符数据:默认开启转义字符功能, ⽐如 '\n' 就代表换⾏, ⽀持字符型转义字符有6个, \n,\r,\\,\t,\a,\v,\b, 那些可见的字符不需要转义, ⽐如引号,问号... ⽀持的16进制转义字符格式:\x?? - 其中, ⼀个?代表⼀个16进制字符, 以上4个字符组成⼀个16进制值,缺⼀不可 3.⽂本框中的数据可以在发送时随时修改,回车键可看到效果, (但修改的内容⽬前不能更新到原来的本地⽂件上) 4.注意到数据类型后⾯的"双击改变"⼏个字样, 也就是说通过双击, 可以改变那条命令的解析格式 5.数据⼤⼩是指最终要被发送的数据的⼤⼩, ⽽不是转义前的⼤⼩ 命令⽂件的格式举例: C:初始化SPP库:at+init\r\n C:查询任意访问码的蓝⽛设备:at+iac=9e8b33\r\n C:查询设备类为0x1f1f的蓝⽛设备:at+class=1f1f\r\n C:设置查询模式:at+inqm=1,9,48\r\n C:过滤,查询周边蓝⽛设备:at+inq\r\n H:16进制测试:12 45 67 4f 分为3部分组成, 两者之间⽤冒号隔开: 第1部分:C或者H(⼤写), 代表数据是16进制还是字符数据 第2部分:命令的名字 第3部分:数据对应的数据 BUG修复: 上⼀个版本在发送数据前忘记检查串⼝是否已经打开了, 已修复~----------------------------------------------------------------------------------------------------------2012-12-24 1.0.0.0:发布第1个版本2012-12-26:⾃动识别当前存在,插⼊,移除的串⼝号2013-01-11 1.0.0.1:增加保存接收区数据到⽂件(16进制/⽂本形式)增加从⽂件读数据到发送区(16进制/⽂本形式)增加暂停显⽰功能增加复制发送/接收区数据到剪贴板2013-01-18 1.0.0.2:修复:⽂本⽂件,16⼆进制⽂件读取错误修复:程序内部缓冲区满后使程序进⼊死循环修复:⽂本字符⽅式显⽰接收的数据时产⽣不正确的换⾏符的错误,若要产⽣换⾏符, 请使⽤"\n"2013-02-08 1.0.0.3:内部程序作了许多的优化⼯作,包含数据的发送⽅式等修复接收数据时⿏标在接收区的⽂本选择造成的⼲扰2013-02-14 1.0.0.4:增加显⽰出0~127号ASCII对应8,10,16进制功能2013-02-24 1.0.0.5,今天元宵节:更改原来的1~64串⼝列表到⾃动检测计算机上的可⽤串⼝2013-02-27 1.0.0.6:若发送⽂本,则⾃动发送被⾃动取消(若⾃动发送选项已打开)在显⽰模式下不允许对接收区数据进⾏选择操作提供硬件⽀持的串⼝设备设置为⽤户提供串⼝超时设置提供⼿动设置DTR/RTS引脚电平2013-03-01 1.0.0.7:修改原计算器(系统)为表达式求值计算器(简单版本)2013-03-03:添加:<其它>菜单添加<设备管理器>修改:在关闭串⼝后⾃动发送前⾯的钩不再⾃动取消(如果已经选中)修改:串⼝被关闭/移除后串⼝列表回到第⼀个串⼝设备的BUG2013-03-04:修改:现在在串⼝列表中可以显⽰串⼝在设备管理器中的名字了修正:⽆法显⽰ MSP430-FETUIF Debugger 的串⼝号(现在调⽤SetupApi更新列表)2013-03-05:为了⽅便数据的统计与显⽰,16进制内容与字符内容被显⽰到不同的编辑框中2013-03-09 1.0.0.8:修正在使⽤SetupApi枚举串⼝设备时未检测并⼝设备⽽造成的内存异常访问错误减少在某些波特率(如:19200bps)下丢包严重的情况(如:MSP430串⼝),有时候还是会发⽣,等待修复.某些软件(如:SComAssistant采⽤每次只读⼀个字节的办法效果还⾏, 就是速度有点慢. 我改成了WaitCommEvent函数调⽤了(原来是Pending ReadFile),减少了CPU占⽤(有些串⼝驱动并不总是⽀持同步操作.以前只管ReadFile+输出nRead字节,这⾥错误,ReadFile并不保证读取到要求的数据量后才返回,这⾥会导致严重丢包,WriteFile亦然.速度减慢,但数据更完整2013-03-10 1.0.0.9:修正:因为在格式化字符串的最后少写了⼀句 *pb = '\0',导致接收区数据显⽰错误! 修复:对utils.hex2chs和add_text作了⼤量修改,⼤⼤减少数据丢包,貌似没有丢包?,细节处理参见源程序 1.0.0.8版本因为内部原因速度严重减慢, 1.0.0.9回到原来的快速!2013-03-18:更正:若为字符显⽰⽅式,16进制⽅式保存不被允许,因为格式基本上不满⾜!2013-03-23 1.10:添加:⼯作模式中,右键点击接收区字符⽂本框可以使能中⽂显⽰模式(不推荐),由于中⽂字符由两个字节构成,所以:⼀旦在某⼀次接收过程中只接收到了中⽂字符的⼀个字节,那么数据就会显⽰出错, 这个⽆法避免, 所以建议尽量不使能中⽂显⽰模式.修正:⽤C语⾔的⼈们都习惯使⽤'\n'作为换⾏符,我也这样使⽤,但偏偏Windows的编辑框以'\r\n'作为换⾏符,没有办法,我不得不把所有的'\n'换成'\r\n',效率必然会下降,⽽且我不得不计算出\n的个数先 --> 为了计算所需缓冲区的⼤⼩.添加:现在可以显⽰出还未被发送出去的数据计数.添加:新增计时器,打开串⼝后开始计时,关闭后停⽌计时.2013-03-25:修正:⼤⼤减少中⽂乱码的问题.细节处理见代码.增加:字符串转16进制数组功能,⼯具菜单⾥⾯.2013-04-04:修正:⽆法复制接收区字符⽂本的BUG.⼩提⽰:在选择串⼝时,如果没有任何可⽤的串⼝,则进⾏提⽰更新.2013-04-07:修改:完全修改了utils.str2hex的实现,⼤⼤增加了16进制输⼊的灵活性.现在的要求:每个16进制值由两个相邻字符组成,⽆其它限制.(以前是2个相邻字符+⼀个空格)2013-04-11:发送字符数据时,对于换⾏,只发送'\n',不再发送'\r\n',注意:结尾的'\0\'不被发送!2013-04-13:修正:更改发送与接收⽅式为异步⽅式.添加:简单波形显⽰.2013-04-23:修正:发送与接收⽅式改回同步⽅式!坑~修正:当发送操作达到100次时⽆法继续发送的BUG!修改:优化内部线程同步机制,避免程序停⽌⼯作(失去响应)!优化:优化⾃动发送数据的⽅式,提⾼精度,减⼩内存/CPU占⽤!⼩提⽰:在加载/保存⽂件时,若不清楚打开/保存⽅式,可以查看简单的帮助信息!2013-05-11:明天母亲节修正:终于找到⼀个⽐较好的办法来处理⾃动发送⽤到的重复数据了,呵呵,时间下限减少到10ms2013-07-05:临时修正:选择从⽂件加载并取消后, 串⼝号选择的ComboBox会消失不见,不知道原因,临时已解决2013-07-14:改进:程序内部改进内存分配算法,避免因程序错误造成内存泄漏2013-07-20 1.12:2013-09-10 1.13 今天教师节:增加:现在可以⼿动编写待发送的命令⽂件,并发送命令了 - 在发送⽂件时选择命令⽂件, 格式见博客后⾯的介绍增加:字符发送模式下,可以选择取消回车换⾏符的发送,可以选择插⼊转义字符 1.⽀持的字符型转义字符:\r,\n,\t,\v,\a,\b,\\2.⽀持的16进制转义字符格式:\x?? - 其中⼀个问号代表⼀个16进制字符, 不可省略其⼀,必需保证4个字符的格式3.'?',''','"', 等print-able字符不需要转义 ⼥孩不哭 @ 2012-12-27 14:47:59 @。
MSCOMM串口控件数据接收方式MSCOMM串口控件数据接收方式1、在OnComm 事件中接收数据:这种方式能充分MSCOMM控件的特性。
OnComm 事件还可以检查和处理通讯错误;可以通过检查 CommEvent 属性的值来查询事件和错误;对于不定长数据以及对数据进行处理比较复杂的情况,此法不是很方便。
Private Sub MSComm_OnComm ()Select Case mEvent' 错误Case comEventBreak ' 收到 Break。
Case comEventCDTO ' CD (RLSD) 超时。
Case comEventCTSTO ' CTS Timeout。
Case comEventDSRTO ' DSR Timeout。
Case comEventFrame ' Framing ErrorCase comEventOverrun '数据丢失。
Case comEventRxOver'接收缓冲区溢出。
Case comEventRxParity' Parity 错误。
Case comEventTxFull '传输缓冲区已满。
Case comEventDCB '获取 DCB] 时意外错误' 事件Case comEvCD ' CD 线状态变化。
Case comEvCTS ' CTS 线状态变化。
Case comEvDSR ' DSR 线状态变化。
Case comEvRing ' Ring Indicator 变化。
Case comEvReceive ' 收到 RThreshold # of chars.Case comEvSend ' 传输缓冲区有 Sthreshold 个字符 'Case comEvEof ' 输入数据流中发现 EOF 字符End SelectEnd Sub2.轮循法采集数据:A、定时器轮循法对于数据包方式收发数据以及不需即时响应情况,用轮循法更好些。
通信采用MODBUS RTU协议,一帧数据格式为:1位起始位+ 8位数据+ 1位停止位
通信采用Modbus通信协议功能代码:
03H——读单个或连续多个寄存器
06H——写单个寄存器
10H——写连续多个寄存器
RTU命令格式及示例
03H——读单个或连续多个寄存器
下传命令:
反馈:。
06H——写单个寄存器
下传命令:
数据(阴影部分)。
反馈:
10H——写连续多个寄存器下传命令:
2 WORD数据内容(阴影部分)。
反馈:
用COMMIX串口调试软件读取数据:
在使用前,需先将效验方式选择为“CRC16(ModbusRTU)”,如图(1)所示。
其余设置参见图(2)。
图(1)
读取电机实时状态,比如读取全部96台电机的状态,则可发送命令“01 03 20 00 00 0c”
01:设备地址(再起动控制柜地址)
03:功能号(读单个或连续多个寄存器)
2000:实时电机状态(1~8号电机)寄存器地址
000c:从起始地址为2000H的寄存器读取连续12 WORD的内容。
如图(2)所示:
图(2)
发送之后,反馈如图(3):(运行的电机为9~16号电机,其余电机没有运行)
图(3)。