自定义通信编程案例解析201203_第1页
自定义通信编程案例解析201203_第2页
自定义通信编程案例解析201203_第3页
自定义通信编程案例解析201203_第4页
自定义通信编程案例解析201203_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自定义通信编程案例解析

工程技术部目录自定义通信实现总体介绍248通信卡自定义通信实例一248通信卡自定义通信实例二OS-MLNK12通信卡自定义通信实例三自定义通信实现总体介绍自定义通信实现的条件:和其它异构通信一样应满足通过232/485方式接入;和其它异构通信一样对方应明确基本的通信参数,通常是数据位、停止位、校验、速率;绝大部分的自定义通信是我方发一帧特定的数据命令(主),对方接收到我方的命令后相应的返回一帧数据(从),也有些设备要求我方只发送或者只接收,这种情况很少见;对方应提供明确的发送数据帧格式和接收数据帧格式,并应直接写明具体的十六进制数据,以及相应的含义;自定义通信实现总体介绍248通信卡自定义通信编程中使用的基本模块或函数:GW_SETCOM(模块,用于设定基本的串口通信参数);GW_SNDRCV(模块,用于处理发送和接收);GW_DEFSNDBUF(函数,用于定义发送缓冲区字节量,大于等于实际要发送的字节量,通常我们可以定义为128);GW_WRITEBUF(函数,用于把一个字节写入发送缓冲区内);GW_DEFRCVBUF(函数,用于定义接收缓冲区字节量,大于等于实际要接收的字节量,通常我们可以定义为128);GW_GETRCVLEN(函数,用于得到接收数据的字节数量);GW_GETRCVMSG(函数,用于将接收的数据放入接收缓冲区内);GW_READBUF(函数,用于读出接收缓冲区内的某个字节);自定义通信实现总体介绍OS-MLNK12通信卡自定义通信编程中使用的基本模块或函数:CDMW(模块,用于发送通信命令);CDMR(模块,用于接收通信数据);OS-MLNK12通信卡自定义通信编程中使用的系统变量:CdmWrData0[X]表示第一条发送命令的通信字节数组(用于总体参数设置),CdmWrData0[0]表示这个数组的第一个字节以案例中的两条数据发送和接收通信命令来说,就使用到下面的系统变量:CdmWrData1[X]表示第二条通信命令发送的字节数组,CdmWrData1[0]表示第二条通信命令发送的第一个字节,CdmRdData1[X]表示第二条通信命令接收的字节数组,CdmRdData1[0]表示第二条通信命令接收的第一个字节;CdmWrData2[X]表示第三条通信命令发送的字节数组,CdmWrData2[0]表示第三条通信命令发送的第一个字节,CdmRdData2[X]表示第三条通信命令接收的字节数组,CdmRdData2[0]表示第三条通信命令接收的第一个字节;248通信卡自定义通信实例一对方提供的信息:1、速率9600bps数据位8位停止位1位校验位偶检验2、发送帧和接收帧的举例:发送的十六进制数据帧为:03030012000265EC地址功能码数据起始地址数据个数校验值接收的十六进制数据帧格式为:03030449AB48F0880B地址功能码返回数据字节个数数据1数据2校验值248通信卡自定义通信实例一在GW_SETCOM模块上设定:速率9600bps数据位8位停止位1位校验位偶检验发送的十六进制数据帧为(共8个字节):03030012000265EC地址功能码数据起始地址数据个数校验值在自定义发送功能块ST_SET中将此数据帧转化为十进制数值按照顺序逐一写入发送缓冲区,对应十进制为:3301802101236,例如第一个字节写入为GW_WRITEBUF(SNDBUF,0,3);,具体祥见组态接收的十六进制数据帧格式为(共9个字节):03030449AB48F0880B地址功能码返回数据字节个数数据1数据2校验值在自定会议接收功能块ST_GET中定义9个接收字节,逐一将字节按照顺序从接收缓冲区中取出,例如取第一个字节B1=GW_READBUF(RCVBUF,0);,具体祥见组态

248通信卡自定义通信实例一通信调试中通常会采用串口精灵软件对通信线路上的数据帧进行监控,SVN技术资料常用工具软件中有ComX1013113软件,上例中发送接收数据帧监控截图如下:截图中发送数据帧和接收数据帧之间的AA为串口精灵软件自动加入的一个字节,用于标识,无需考虑248通信卡自定义通信实例二对方提供的信息:1、速率1200bps数据位7位停止位2位校验位奇检验2、举例:(采集液位LT_011)显示:+013.2683mINN发送和返还为十六进制代码翻译为对应的ASCII码十六进制和ASCII码对应关系见截图《部分常用十六进制和ASCII码对应关系表》发送:02303131425A3031032A翻译:STX011BZ01说明:开始地址罐位号11功能码BZ读取液位代码ETX效验共10个字节的一帧发送命令,在自定义功能块ReadMsg11L中定义,转化为十进制数值逐一写入发送缓冲区,具体详见组态248通信卡自定义通信实例二对方返还:02303131425A30312B3031332E3236翻译:STX011BZ01+013.26含义:开始/地址/罐号11/功能码BZ/读液位/液位数值对方返还(续接):383330306D20494E4E0314翻译:8300mSPINNETX/效验含义:液位数值/单位/空格/状态位/ETX/效验一帧接收的数据,在ReceiveMsg11L中定义接收字节由于接收到的为ASCII码,定义JIEXILL自定义模块进行对接收的字节组合处理具体详见组态OS-MLNK12通信卡自定义通信实例三对方提供的信息:1、速率9600bps数据位8位停止位1位校验位偶检验2、两条发送和接收帧:发送的十六进制数据帧为:010300020002地址功能码数据起始地址数据个数接收的十六进制数据帧格式为:0103040000

00

00

地址功能码返回数据字节个数数据1数据2第二条就地址修改为2,也同样是读取0002地址开始的2个整数OS-MLNK12通信卡自定义通信实例三程序里对总体参数数据的设定如下(在TEXTCODE中实现),自定通过第一条CDMW模块发送:CdmWrData0[0]=3;(*第一条通信命令的写入第一个字节,3表示波特率9600*)CdmWrData0[1]=0;(*第一条通信命令的写入第二个字节,0表示8位数据位*)CdmWrData0[2]=2;(*第一条通信命令的写入第三个字节,2表示偶校验*)CdmWrData0[3]=0;(*第一条通信命令的写入第四个字节,0表示1位停止位*)CdmWrData0[4]=2;(*第一条通信命令的写入第五个字节,2表示后面总共用了2条通信命令发送接收数据*)OS-MLNK12通信卡自定义通信实例三发送的十六进制数据帧为:010300020002地址功能码数据起始地址数据个数在程序TEXTCODE中设定如下:CdmWrData1[0]=1;(*第二条通信命令的写入第一个字节*)CdmWrData1[1]=3;(*第二条通信命令的写入第二个字节*)CdmWrData1[2]=0;(*第二条通信命令的写入第三个字节*)CdmWrData1[3]=2;(*第二条通信命令的写入第四个字节*)CdmWrData1[4]=0;(*第二条通信命令的写入第五个字节*)CdmWrData1[5]=2;(*第二条通信命令的写入第六个字节*)OS-MLNK12通信卡自定义通信实例三接收的十六进制数据帧格式为:0103040000

00

00

地址功能码返回数据字节个数数据1数据2在程序TEXTCODE中设定如下,同时把字节转化为UINT类型:BYTE_TO_UINT(CdmRdData1[0],b1);(*第二条通信命令的读取第一个字节*)BYTE_TO_UINT(CdmRdData1[1],b2);(*第二条通信命令的读取第二个字节*)BYTE_TO_UINT(CdmRdData1[2],b3);(*第二条通信命令的读取第三

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论