McgsPro 串口数据收发通信驱动

下载

McgsPro_串口数据收发_v6.0.0.7_20201204.rar

1、 设备简介

本驱动构件用于串口相关数据的收发操作。

驱动类型 串口子设备,须挂接在“通用串口父设备”下才能工作
通讯协议
通讯方式 一主一从

2、 硬件连接

MCGS软件与设备通讯之前,必须保证通讯连接正确。

通讯连接方式:标准串口接线

3、 设备通讯参数

“通用串口父设备”通讯参数设置如下:

通用串口父设备

串口端口号:根据设备连接到屏的端口号,具体自己设置

通信波特率:根据设备选择

数据位位数:根据设备选择

停止位位数:根据设备选择.

数据校验方式:根据设备选择

设备构件参数设置

“串口收发数据”子设备参数设置如下:

串口收发数据

内部属性:此设备无内部属性页.

最小采集周期:MCGS对设备进行操作的时间周期,单位为ms,默认为100ms,根据采集数据量的大小,设置值可适当调整。

协议类型:指定收发帧的格式是16进制还是ASCII码形式。

读串口的结束方式:设置读取数据时的结束方式,配合下面4个参数共同使用.详细看一下备注

通讯等待时间:采集是收帧时的等待时间,超过等待时间后就返回。

读串口停止字符: 设置收帧时串口的停止字符,以ASCII编码给出

读串口停止长度:设置收帧时的停止长度,当收到设置的长度时就返回

读串口起始字符:设置串口收帧时的起始字符

备注:0.给定结束字符:在指定的通讯等待时间内收到结束字符则返回结束字符以前(包含结束字符)的字符串,否则全部返回

  1. 给定长度:在指定的通讯等待时间内收到指定的长度后立即返回,否则全部返回(注:如果没发帧,下次采集时会读到当前帧的后半部字符串)
  2. 给定时间:读取在整个通信等待时间内收到的字符串
  3. 给定结束字符或给定长度:综合0,1两个条件,谁先满足就执行谁
  4. 给定起始字符和结束字符:在指定的通讯等待时间内,未收到起始字符则返回全部字符串,收到起始字符未收到结束字符,则返回起始字符以后(包含起始字符)的字符串,如果收到起始字符和结束字符,则返回起始字符和结束字符之间的字符串(包含起始字符和结束字符).

4、 采集通道

  • 通讯状态:
通讯状态值 代表意义
0 表示当前通讯正常
非0 通讯错误

 

5、 固定通道

本驱动采用固定通道形式,如下:

固定通道

通道0为通讯状态标志,通道1位字符串通道,通道2位16进制字符串通道

6、 设备命令

本设备构件提供设备命令,具体格式如下:

设备命令 命令格式 命令举例
读取命令Read Read(返回值) 例1.1: !SetDevice(设备0,6, “Read( strData) “)

读取串口数据以字符串形式存放带strData之中

写操作命令Write Write( 写入值) 例1.3: !SetDevice(设备0,6, “Write(strData) “)

取strData之中的值写入到串口之中

对字符串做校验

CheckCRC

CheckCRC( 校验字符串,校验方式编码,校验结果字符串) 例2.1: !SetDevice(设备0,6, “CheckCRC (strData,nIndex,strCrcResult) “)

strData为需要被校验的字符串,nIndex选择校验方式, strCrcResult是校验的结果,具体请参考本节备注

对字符串做校验

CheckCRC1

CheckCRC1( 校验字符串,字符串解析方式,校验方式编码,校验结果字符串,校验结果) 例2.2: !SetDevice(设备0,6, “CheckCRC1 (strData,Ay,nIndex,strCrcResult,nRet) “)

strData为需要被校验的字符串,Ay为字符串解析方式,0为16进制格式字符串,非0位ASCII码字符串;nIndex选择校验方式; strCrcResult是校验的结果;nRet为返回值;具体请参考本节备注

对字符串做校验

CRC8

CRC8(校验字符串, 多项式, 初始值, 结果异或值, 校验结果) 例2.4: !SetDevice(设备0,6,”CRC8(strTest,poly,init,_xor,testRes)”)

strTest为需要被校验的十六进制字符串, poly为多项式十六进制值 (多项式X7+X6+X5+X2+1,poly =E5), init是校验初始值, _xor为结果异或值, testRes为校验结果输出

对字符串做校验

CRC16

CRC16(校验字符串, 多项式, 初始值, 结果异或值, 校验结果) 例2.5: !SetDevice(设备0,6,”CRC16(strTest,poly,init,_xor,testRes)”)

strTest为需要被校验的十六进制字符串, poly为多项式十六进制值 (多项式X7+X6+X5+X2+1,poly =E5), init是校验初始值, _xor为结果异或值, testRes为校验结果输出

对字符串做校验

CRC32

CRC32(校验字符串, 多项式, 初始值, 结果异或值, 校验结果) 例2.6: !SetDevice(设备0,6,”CRC32(strTest,poly,init,_xor,testRes)”)

strTest为需要被校验的十六进制字符串, poly为多项式十六进制值 (多项式X7+X6+X5+X2+1,poly =E5), init是校验初始值, _xor为结果异或值, testRes为校验结果输出

标准CRC校验 参数模型(校验字符, 校验结果) 例2.7: !SetDevice(设备0,6,”CRC-16/XMODEM(strTest,testRes)”)

CRC-16/XMODEM为参数模型, strTest为需要被校验的十六进制字符串, testRes为校验结果输出. 参数模型参见附录

字符串转浮点数

HStr2Float

HStr2Float(输入字符串,输出浮点数) 例2.8: !SetDevice(设备0,6, “HStr2Float(strFloat, dbFloat)”)

strFloat为浮点数字符串,dbFlaot为数值型变量,用于存放转换结果

修改设备属性

SetParam

SetParam(属性下标=属性值) 例3.1: !SetDevice(设备0,6,”SetParam (0=1)”)

设置协议类型为16进制协议,属性下标和子设备参数一致,0为协议类型,1为读取串口结束方式,2是通讯等待时间,依次排列.属性值为你需要设置的值

UTF-8编码转ASCII编码

UTF8TOASCII

UTF8TOASCII(utf8字符串,ASCII编码,字符串解码顺序) 例4.1:!SetDevice(设备0,6,”utf8toascii(strData1,strData2,intcode)”)

将UTF-8编码的strData1转为ASCII编码,并写入到字符串变量strData2中。Intcode为0表示字符串解码顺序为12,为1表示解码顺序为21。

UTF-8编码转UNICOED编码

UTF8TOUNICODE

UTF8TOUNICODE(utf8字符串,Unicode编码,字符串解码顺序) 例4.2:!SetDevice(设备0,6,”utf8tounicode(strData1,strData2,intcode)”)

将UTF-8编码的strData1转为unicode编码,并写入到字符串变量strData2中。Intcode为0表示字符串解码顺序为12,为1表示解码顺序为21。

ASCII编码转UTF-8编码

ASCIITOUTF8

ASCIITOUTF8(ASCII编码,utf8字符串,解码顺序) 例4.3:!SetDevice(设备0,6,”asciitoutf8(strData1,strData2,intcode)”)

将ASCII编码的strData1转为utf8编码,并写入到字符串变量strData2中。Intcode为0表示字符串解码顺序为12,为1表示解码顺序为21。

UNICODE编码转UTF-8编码

UNICODETOUTF8

UNICODETOUTF8(Unicode编码,utf8字符串,解码顺序) 例4.4:!SetDevice(设备0,6,”unicodetoutf8(strData1,strData2,intcode)”)

将unicode编码的strData1转为utf8编码,并写入到字符串变量strData2中。Intcode为0表示字符串解码顺序为12,为1表示解码顺序为21。

获取UTF-8的十六进制编码

FORMATUTF8

FORMATUTF8(utf8字符串,utf8十六进制编码) 例4.5:!SetDevice(设备0,6,”formatutf8(strData1,strData2)”)

将UTF-8编码的字符串strData1转为十六进制编码,并写入到字符串strData2中。

注:

CheckCRC的校验方式有异或和校验和CRC16校验,其中异或和校验的nIndex为0,CRC16校验分以下常见的几种

CCITT,CCITT_FALSE,XMODEM,X25,MODBUS,IBM,MAXIM,USB等常见的CRC16校验方式nIndex小标为1到8,其中最为常见的是MODBUS的CRC校验,nIndex为5.

CheckCRC1的校验方式有异或和校验和CRC16校验,其中异或和校验的nIndex为0,CRC16校验分以下常见的几种

CCITT,CCITT_FALSE,XMODEM,X25,MODBUS,IBM,MAXIM,USB等常见的CRC16校验方式nIndex小标为1到8,其中最为常见的是MODBUS的CRC校验,nIndex为5.

其中字符串解析方式 为 0时将将校验字符串解析为16进制字符串数据,非0时解析为ASCII码字符串.nRet为1表示校验正确,nRet为3表示解析为16进制字符串时字符串

含有非0-F的其他字符(支持小写的a-f).nRet为4表示设备命令执行失败,请检查参数正确性,nRet为5表示设备命令格式错误,请检查设备命令格式

 

 

常见故障分析

故障现象 分析 处理建议
通讯状态非0 查看设备命令格式是否正确 1、检查父设备串口校验位设置是否正确
2、适当延长“通讯等待时间”
3、设备断电,重新上电,使初始化设备
4、通讯电缆太长,做短距离测试
5、现场干扰太大,避免周围环境干扰
6、通讯信号变弱,使用有源RS232/485模块
通讯速度太慢 通讯数据量过大或采集周期设置过长 1、将“采集优化”属性设置为“1-优化”
2、减小父设备及子设备的最小采集周期

(最小可设置为20ms)

3、使用设备命令,减少实时采集的数据
4、通过设备命令获取PLC延时,判断是否因PLC响应时间过长而影响采集速度。
通讯次数过多 5、将数据放到连续的地址块中,提高块读效率
6、将不同寄存器的数据放到同一寄存器连续的地址块中,减少采集块数,提高采集效率

7、 特殊应用的开发

本设备构件目前只实现部分通讯功能,如需要用作其它用途或本构件不能满足要求时,可自行进行开发,《MCGS用户指南》中有关于开发设备构件的详细说明,也可以提出具体的技术要求,由我们亲自为您定制。

附录

参数模型 宽度 多项式POLYHex 初始值INITHex 输入数据反转 输出数据反转 结果异或值XOROUTHex
CRC-8 8 0x7 0x0 false false 0x0
CRC-8/CDMA2000 8 0x9B 0xFF false false 0x0
CRC-8/DARC 8 0x39 0x0 true true 0x0
CRC-8/DVB-S2 8 0xD5 0x0 false false 0x0
CRC-8/EBU 8 0x1D 0xFF true true 0x0
CRC-8/I-CODE 8 0x1D 0xFD false false 0x0
CRC-8/ITU 8 0x7 0x0 false false 0x55
CRC-8/MAXIM 8 0x31 0x0 true true 0x0
CRC-8/ROHC 8 0x7 0xFF true true 0x0
CRC-8/WCDMA 8 0x9B 0x0 true true 0x0
CRC-16/CCITT-FALSE 16 0x1021 0xFFFF false false 0x0
CRC-16/ARC 16 0x8005 0x0 true true 0x0
CRC-16/AUG-CCITT 16 0x1021 0x1D0F false false 0x0
CRC-16/BUYPASS 16 0x8005 0x0 false false 0x0
CRC-16/CDMA2000 16 0xC867 0xFFFF false false 0x0
CRC-16/DDS-110 16 0x8005 0x800D false false 0x0
CRC-16/DECT-R 16 0x589 0x0 false false 0x1
CRC-16/DECT-X 16 0x589 0x0 false false 0x0
CRC-16/DNP 16 0x3D65 0x0 true true 0xFFFF
CRC-16/EN-13757 16 0x3D65 0x0 false false 0xFFFF
CRC-16/GENIBUS 16 0x1021 0xFFFF false false 0xFFFF
CRC-16/MAXIM 16 0x8005 0x0 true true 0xFFFF
CRC-16/MCRF4XX 16 0x1021 0xFFFF true true 0x0
CRC-16/RIELLO 16 0x1021 0xB2AA true true 0x0
CRC-16/T10-DIF 16 0x8BB7 0x0 false false 0x0
CRC-16/TELEDISK 16 0xA097 0x0 false false 0x0
CRC-16/TMS37157 16 0x1021 0x89EC true true 0x0
CRC-16/USB 16 0x8005 0xFFFF true true 0xFFFF
CRC-A 16 0x1021 0xc6c6 true true 0x0
CRC-16/KERMIT 16 0x1021 0x0 true true 0x0
CRC-16/MODBUS 16 0x8005 0xFFFF true true 0x0
CRC-16/X-25 16 0x1021 0xFFFF true true 0xFFFF
CRC-16/XMODEM 16 0x1021 0x0 false false 0x0
CRC-32 32 0x04C11DB7L 0xFFFFFFFFL true true 0xFFFFFFFFL
CRC-32/BZIP2 32 0x04C11DB7L 0xFFFFFFFFL false false 0xFFFFFFFFL
CRC-32C 32 0x1EDC6F41L 0xFFFFFFFFL true true 0xFFFFFFFFL
CRC-32D 32 0xA833982BL 0xFFFFFFFFL true true 0xFFFFFFFFL
CRC-32/JAMCRC 32 0x04C11DB7L 0xFFFFFFFFL true true 0x00000000L
CRC-32/MPEG-2 32 0x04C11DB7L 0xFFFFFFFFL false false 0x00000000L
CRC-32/POSIX 32 0x04C11DB7L 0x00000000L false false 0xFFFFFFFFL
CRC-32Q 32 0x814141ABL 0x00000000L false false 0x00000000L
CRC-32/XFER 32 0x000000AFL 0x00000000L false false 0x00000000L

版权声明:本文内容来源于网络搜集无法获知原创作者,仅供个人学习用途,若侵犯到您的权益请联系我们及时删除。邮箱:1370723259@qq.com

发表评论