组态王通用单片机协议(ASCII)说明
- 格式:doc
- 大小:30.00 KB
- 文档页数:2
MODBUS ASCII读写通信帧实例(组态王测试)======================= 实数(float) ====================1、读实数左边为通信传输帧,右边为ASCII码地址最大为FFFF解释3A开头0D 0A结尾表示ascii的回车换行30 31 表示读保持寄存器中间4bit为起始地址30 30 30 30,从0开始对应plc就是40001,由于浮点数占用2个寄存器,所以第二个实数对应plc地址就为40003,否则就会出现数据重叠紧接着的4bit为读取寄存器数量30 30 30 32 ,表示读取两个寄存器的值(对应浮点数)一次最多能够读取125个,对应30 30 37 44即0 0 7 D46 41 表示LRC校验位2、读取实数的反馈下图红色为读取实数的反馈值,在读取功能码(30 33)后面加了一个额外的操作码(30 34),表示读取成功,后面均为数据,紧接着就是校验位,结束位上位机实数值读取数据含义同读取帧,前为写入起始地址,后为写入数量表示写入操作码写入数据表示写入功能码3、写实数上图蓝色为写入实数数据帧,以872.09为例。
Acsii “:”、“01”、“10”分别为帧头、从站地址和写多个保持寄存器的功能码(因为写实数一次要写入2个寄存器)。
紧接着是 写入的起始地址和写入数据的数量(均为2的倍数) 写入数量后加一个操作码 30 34(“04”) 然后才是写入数据,校验位和结束帧。
4、写实数反馈写入成功以后会马上反馈一个成功标志,如下所示。
即将不带数据的写入帧按原样返回,注意04操作码不需要,校验位需要改变。
==========================整数(short )========================= 5、写入单个整数值为1234对应4D2;写入单个整数只有起始地址00006、写单个整数反馈(原样返回)值为123的反馈帧,007B;写负数-239,实际传输数据块为FF11,反馈一样7、读单个整数8、读单个整数的反馈帧反馈值为123, 7B反馈值为-239,FF11。
单片机与组态王的通信实例随着工业自动化的发展,越来越多的设备开始采用单片机进行控制。
而组态王作为一种通用的组态软件,可以方便地对单片机的控制过程进行监控和操作。
本文将介绍一个单片机与组态王通信的实例,以帮助读者了解二者的基本通信原理和实现方法。
一、单片机与组态王的通信方式单片机与组态王之间的通信一般采用串口通信方式。
串口通信是一种常见的通信方式,它通过串口数据线将单片机与计算机连接起来,实现数据传输。
在组态王中,可以通过设置串口参数来与单片机进行通信。
二、单片机通信协议在单片机与组态王通信的过程中,需要约定一些通信协议来实现数据的传输和控制。
通信协议一般包括数据格式、波特率、校验方式等。
根据不同的单片机和组态王版本,通信协议可能会有所不同,需要根据实际情况进行调整。
三、组态王通信控件的使用在组态王中,可以使用串口通信控件来实现单片机与组态王之间的通信。
控件提供了许多函数和属性,可以方便地进行串口通信。
例如,可以使用控件的Open函数打开串口,使用Read函数和Write函数进行数据的读取和写入。
四、实例:单片机控制LED灯亮灭下面是一个简单的单片机与组态王通信实例:通过单片机控制LED灯的亮灭。
该实例中使用的单片机型号为AT89C51,组态王版本为6.53。
1、硬件连接将AT89C51单片机的P1.0引脚连接到LED灯上,并将单片机的RXD 和TXD引脚分别连接到计算机的串口上。
2、编写程序在AT89C51单片机上编写程序,用于控制LED灯的亮灭。
程序如下:MOV P1.0, #1 //将P1.0引脚电平设为高电平,LED灯亮SJMP $ //无限循环,保持电平不变3、组态王组态设计在组态王中创建一个新项目,并添加一个设备,选择与AT89C51单片机进行通信的串口设备。
然后创建一个画面,添加一个按钮和指示灯,用于控制LED灯的亮灭。
4、编写组态王脚本程序在组态王中编写脚本来实现与单片机的通信。
脚本如下:Dim ledState As Integer //定义LED状态变量,初始值为0 Function OnClick() As Integer //按钮单击事件处理函数If ledState = 0 Then //如果LED状态为灭,则发送高电平信号,使LED亮起CommandManager.WriteTag("TagName", "1") //写入高电平信号ledState = 1 //修改LED状态为亮Else //如果LED状态为亮,则发送低电平信号,使LED熄灭CommandManager.WriteTag("TagName", "0") //写入低电平信号ledState = 0 //修改LED状态为灭End IfEnd Function5、调试与运行将程序编译并下载到AT89C51单片机中,然后运行组态王程序。
组态王与ARM开发板串口通信实现组态王与ARM开发板串口通信实现摘要本文阐述了一种基于亚控公司的组态王中的单片机通讯协议(ASCII)实现组态王与ARM9开发板串口通信的程序设计方法,本方法已在TQ2440开发板上编程设计实现,并成功与组态王正确通信。
关键词组态王;ARM9;通讯协议;串口通信0 引言随着工业自动化要求提高,组态软件设计的监控系统逐步普及,开发的控制设备与监控设备之间需要通讯。
组态王KingView软件基于Microsoft Windows XP,NT/2000操作系统,具有友好的人机操作界面,可与各种PLC、智能仪表等实时通讯,但无法与自己开发的控制设备通信,ARM9作为高性能处理器经常用来开发工控设备,所以实现组态王与ARM9开发板的串口通信对工控设备开发十分必要。
1 组态王与ARM9开发板的串口通信方法1.1 组态王支持的单片机通讯协议(ASCII)本设计采用亚控公司的组态王中的单片机通讯协议(ASCII)实现组态王与ARM9开发板串口通信。
亚控公司的组态王中的单片机通讯协议(ASCII)简介如下:上位机发送读命令:字头-设备地址-标志-数据地址-数据字节数-异或-CR若正常下位机应答:字头-设备地址-数据字节数-数据-异或- CR 若不正常下位机应答:字头-设备地址-**-异或- CR上位机发送写命令:字头-设备地址-标志-数据地址-数据字节数-数据-异或- CR若正常下位机应答:字头-设备地址-##-异或- CR若不正常下位机应答:字头-设备地址-**-异或- CR1.2 组态王与ARM9开发板串口通信方法组态王与ARM9开发板串口通信采用亚控公司的组态王中的单片机通讯协议(ASCII)。
组态王安装在上位PC机上,组态王本身支持单片机通讯协议(ASCII),要实现组态王与ARM9开发板串口通信,其实任务就是在下位机。
组态王通用单片机协议(ASCII)概述通用单片机ASCII协议支持单片机与组态王通讯,用户只要按照我们的协议编写单片机通讯程序就可实现与组态王的通讯.组态王设置1、定义组态王设备定义组态王定义设备时请选择:智能模块\单片机\通用单片机ASCII\串口组态王的设备地址定义格式:##.#前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定;后面的一个字符是用户设定是否打包,"0"为不打包、"1"为打包,用户一旦在定义设备时确定了打包,组态王将处理读下位机变量时数据打包的工作,与单片机的程序无关.2、组态王通讯通讯方式:RS-232,RS-485,RS-422均可。
波特率:由单片机决定(2400,4800,9600and19200bps)。
注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致组态王数据词典--变量定义在组态王中定义的寄存器数据格式(类型):由单片机决定。
斜体字dd代表数据地址,此地址与单片机的数据地址相对应.注意:在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,USHORT,FLOAT)的不同,分别占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内不可交叉定义不同数据类型的变量。
为提高通讯速度建议用户使用连续的数据区。
例如,1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量的寄存器为X0、X1、X2、X3、X4。
,数据类型为BYTE,每个变量占一个字节2、在单片机中定义从地址100开始的数据类型为USHORT型的变量: 则在组态王中定义相应的变量的寄存器为X100、X102、X104、X106、X108。
数据类型USHORT,每个变量占两个字节3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量: 则在组态王中定义相应的变量的寄存器为X200、X204、X208、X212。
基于组态王的modbusascii通信测试.docMODBUS ASCII读写通信帧实例(组态王测试)=======================实数(float) ====================1、读实勤左边为通信传输帧,右边为ASCII码地址最⼤为FFFF解释3A开头OD 0A结尾表⽰ascii的回车换⾏30 31表⽰读保持寄存器中间4bit为起始地址30 30 30 30,从。
开始对应pic就是40001 ,由于浮点数占⽤2个寄存器所以第⼆个实数对应pic地址就为40003,否则就会出现数据重叠紧接着的4bit为读取寄存器数量30 30 30 32 ,表⽰读取两个寄存器的值(对应浮点数)⼀次最多能够读取125个,对应30 30 37 44即0 0 7 D 46 41表⽰LRC校验位2、读取实数的反愦读取数据3A 30 31 30 33 30 34 30 3S 43 :OlO3oJ44sJo5C4?下位机寄存器内的值:01100000000204445A05C482..下图红⾊为读取实数的反馈值,在读取功能码(30 33 )后⾯加了⼀个额外的操作码(30 34),表⽰读取成功,后⾯均为数据,紧接着就是校验位,结束位上位机实数值31 0D 0A反馈读取操作码含义同读取帧,前为写⼊表⽰写⼊功能码起始地址,后为写⼊数量3A 30 31 丸 30 30 30 30 30 30 30 3。
3: 30 34 3434 35 41 30 35 43 34 38 32 0D 0A ⼠⼀、⽫⼟=写⼊数据3、写实数上图蓝⾊为写⼊实数数据帧,以872.09为例。
Acsii “:':“01':“10”分别为帧头、从站地址和写多个保持寄存器的功能码(因为写实数⼀次要写⼊2个寄存器*紧接着是写⼊的起始地址和写⼊数据的数量(均为2的倍数)写⼊数量后加⼀个操作码30 34 (“04”)然后才是写⼊数据,校验位和结束帧。
组态王KINGVIEW 6X其他驱动-常见问题解答北京亚控科技发展有限公司2011年01月目录1. 计算机中同一个串口是否可以连接多个设备? (1)2. 应如何处理组态王与设备通讯时断时续的问题? (1)3. 组态王与单片机如何进行通讯? (1)4. 目前组态王支持哪些厂家条形码扫描器? (1)5. 目前组态王支持哪些厂家的读卡器? (2)6. 市场上标准串口转以太网模块,亚控是否支持? (2)7. 设备通讯失败时,组态王的尝试机制是什么? (2)8. 组态王的常规驱动的打包规则? (3)9. 运行系统基准频率的含义是什么?与变量采集频率的关系? (3)10. 组态王工程运行时系统提示:创建协议组件失败,为什么? (3)11. 使用多台设备与组态王进行通讯,如果关掉其中的几台设备的话,通讯速度就变慢了,为何?该如何解决? (3)12. 组态王提供的通用单片机通讯协议(ASCII),异或校验是怎么计算出来的? (4)1. 计算机中同一个串口是否可以连接多个设备?同一个串口只能连接协议相同的多个设备,协议不同的设备不能连接在一个串口上。
2. 应如何处理组态王与设备通讯时断时续的问题?1)现场干扰产生:了解通讯现场情况,比如通讯距离,硬件连接方式以及是否有大的如变频器、继电器等干扰源。
如果判断因为干扰引起,建议用户进行抗干扰处理;2)设备本身不是很稳定:可以考虑降低设备的通讯波特率,或者使用有源转换模块,或者降低变量的采集频率;3)特殊的硬件链路:如无线数传透明电台,GPRS链路,这种情况下可能会经常出现时断时续,这样可以询问用户电台的相关设置等,并需要通过低通讯波特率,低采样频率来实现数据传输的可靠性;4)如果排除上述3个原因,请致电亚控公司。
3. 组态王与单片机如何进行通讯?针对单片机亚控公司提供了通用单片机ASCII通讯协议,此文档可以到组态王安装盘value pack目录中找到,用户只要按照我们的协议组态王针对使用单片机单独开发设备的用户,提供了一个单片机接口通信协议,此协议用户可以在组态王的安装路径下找到,用户只要根据此协议编写单片机通讯程序,就可以实现与组态王的通讯,组态王设备向导中选择:智能模块\单片机\通用单片机ASCII\串口即可。
目前在工业控制现场的仪表较多,传统的数显仪表不能满足实际的需要,需要添加相应的A /D 或D /A 模块转换数据,上位机需要通过配套的下位机数据采集模块获取现场仪表数据,如PLC ,再通过相应通信协议来与下位机通讯进行数据交换,此法成本较高。
本文论述了通过单片机采集现场仪表数据,通过与组态软件提供的通用ASCII 型协议通讯。
实践表明:采用该方式通讯可靠、设计简单、代码可移植性高,实用性较强。
1组态王与单片机通讯协议概述单片机多用来采集现场的信息,如何实现单片机与组态软件进行数据交换?早期主要有DDE 方式、板卡方式等,最新版本组态王提供的单片机通用通讯协议支持HEX 型和ASCII 型,可通过串口直接与单片机通讯。
通讯方式为RS232、RS422、RS485,通讯波特率可达19200bps 。
蔚俊兰、赵学军等人介绍了采用HEX 型通讯协议来实现单片机与组态王通讯。
本文主要详细介绍ASCII 型通用通讯协议实现组态王与单片机通讯,该型具有设计简单,通俗易懂特点,具体参数可以查阅相关技术文档。
2组态王设备配置在实际开发过程中,组态王对ASCII 型通讯协议完全是封装好的。
在程序设计过程中可以采用相应串口监视软件来分析组态王向单片机发送的数据,便于程序设计。
为了实现单片机与组态王的通讯,在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致。
本文中采用通讯波特率9600bps ,8位数据位,1位停止位,无奇偶验证。
组态王中设置设备地址格式为:##.#。
前面两个字符是设备地址(0~255),此地址为单片机的地址;后面的一个字符是用户设定是否打包,“0”为不打包、“1”为打包。
体参数设定方法可以查阅相关技术文档。
3单片机通讯源程序设计本文的通讯程序采用C 语言设计,通过Keil 开发软件设计了单片机与组态王基于ASCII 码通用通讯程序。
3.1数据定义数据定义主要用于对单片机相关参数进行相应设定,如单片机地址,单片机与组态王通讯命令格式的字头、字尾。
组态王通用单片机协议(ASCII)说明
概述
通用单片机ASCII协议支持单片机与组态王通讯,用户只要按照我们的协议编写单片机通讯程
序就可实现与组态王的通讯.
组态王设置
1、定义组态王设备
定义组态王定义设备时请选择:智能模块\单片机\通用单片机ASCII\串口
组态王的设备地址定义格式:##.#
前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定;后面的一个字符是用户设定是否打包,"0"为不打包、"1"为打包,用户一旦在定义设备时确定了打包,组态王将处理读下位机变量时数据打包的工作,与单片机的程序无关.
2、组态王通讯
通讯方式:RS-232,RS-485,RS-422均可。
波特率:由单片机决定(2400,4800,9600and19200bps)。
注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致
3.组态王数据词典--变量定义
在组态王中定义的寄存器数据格式(类型):由单片机决定。
斜体字dd代表数据地址,此地址与单片机的数据地址相对应.
注意:
在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,USHORT,FLOAT)的不同,分别占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内不可交叉定义不同数据类型的变量。
为提高通讯速度建议用户使用连续的数据区。
例如,
1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量
的寄存器为X0、X1、X2、X3、X4。
,数据类型为BYTE,每个变量占一个字节
2、在单片机中定义从地址100开始的数据类型为USHORT型的变量: 则在组态王中定义相应的变
量的寄存器为X100、X102、X104、X106、X108。
数据类型USHORT,每个变量占两个字节
3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量: 则在组态王中定义相应的变
量的寄存器为X200、X204、X208、X212。
数据类型FLOAT,每个变量占四个字节。