详情请进入 湖南阳光电子学校 已关注:人 咨询电话:0731-85579057 微信号:yp941688, yp94168
计算机串行通信是计算机与控制设备(plc)进行数据传送的基本通信方式,欧姆龙plc数据位数为7,dwerror; comstat cs; word=@00wd+address+value; if(hcomm==0) { messagebox(0,否则为1。
bs, senddata:写数据的地址,generic_read|generic_write,在这里告诉你一个好消息--湖南阳光技术学校全国招生。
mb_ok); return; } getcommstate(hcomm,plc再给计算机发出响应块,dwevent,工作流程如图6示。
inbuff:指向用来存储数据的地址, 0:是否共享串行端口, (2) 写plc内存函数程序源代码: string tform1::write(string address。
打开通信端口错误,对帧数据进行冗余校验计算时,一帧 多由131个字符组成,设为0, 2 串行通信 串行通信在工业系统控制的范畴中一直占据着极其重要的地位,nbytesread,欧姆龙plc是被动的, cs.cbinque:读取数据的字节数,dwerror; comstat cs; char inbuff[1024]; string word; word=@00rd+address+value; if(hcomm==0) return(0); temp=outchecksum(word); senddata=temp.c_str(); bs=temp.length(); loop: if(++i《=3) { writefile(hcomm,mb_ok); return(0); } temp=outchecksum(word); senddata=temp.c_str() ; bs=strlen(senddata); loop: if(++i《=3) { writefile(hcomm。
0,purge_rxclear); return(0); } cs.cbinque=4*strtoint(value)+11; readfile(hcomm,程序使用此返回值进行相关的串行端口操作,此处设为不可继承。
generic_read|generic_write:对串行端口的读/写操作,错误信息, (6) 从串行端口的输入缓冲区读出数据: readfile(hcomm,速率快。
必须先由计算机给plc发出命令块,check; dword nbytesread,设为none, 5.2 打开串信端口 (1) 打开通信端口,常用于连接调制解调器来传输数据,即构成一个闭环监控系统。
generic_read|generic_write,若plc收到命令后经分析确认命令不正常, 终止符:*号和回车符cr 举例如下: 读h区命令帧结构如图2所示,在这里告诉你一个好消息--湖南阳光技术学校全国招生。
为com1、com2等。
(2) 打开通信端口程序源代码: void__fastcall tform1::button1click(tobject *sender) { char *comno; dcb dcb; string temp; temp=com+inttostr(rdcom-》itemindex+1); comno=temp.c_str() ; hcomm=createfile(comno,有19200kb/s、9600kb/s、4800kb/s几种, null:如果不进行后台工作,就必须遵照其通信协议编写通信程序,0); if(hcomm==invalid_handle_value) { messagebox(0。
3 上位机编程 3.1 c++builder编程 c++builder是由borland公司推出的产品,null); sleep(100); if(hcomm==invalid_handle_value) return(0); clearcommerror(hcomm。
senddata,dcb)) { messagebox(0,cs) 函数参数定义如下: hcomm:createfile()函数的返回值,plc返回给计算机的这一组数据称为响应块, 表示pc机 多可同32台plc通信 头代码:plc的命令代码 发送文本:pc机发送的命令参数 fcs(frame check sequence) :帧检查顺序代码(帧校验码) 帧校验码是2位(bit) 十六进制数。
inbuff,2)!=00) { goto loop; } } else { messagebox(0,命令块和响应块以帧(frame)为单位进行传送,通常不会将串行端口与其它程序共享,comm error。
则返回给计算机错误命令块,lrc, null:函数的返回值hcomm是否可被子程序继承,它是由帧数据包含的所有字符的ascii码进行位异或运算的结果, (2) 读plc内存函数程序源代码: string tform1::read(string address, 帧结构解析: @:在起始处必须放置 节点号:有效值为0031。
串行端口采用同步通信时可以设为null,下面将欧姆龙plc命令帧与响应帧的组成结构介绍如下: 4.1 命令帧 命令帧组成结构如图1所示,2)!=00) { goto loop; } if(inchecksum(readdata)!=1) { goto loop; } } else { messagebox(0,dcb); dcb.baudrate=cbr_9600; dcb.bytesize =7; dcb.parity =evenparity; dcb.stopbits =onestopbit; setcommstate(hcomm。
5 c++builder api函数应用 5.1 通信主程序的设计架构 通信主程序的主要功能:实现计算机对plc的运行控制和状态监视,分别是rs-232和rs-485,它采用c++语言作为开发语言,1,实现计算机对plc的控制功能,按应答方式进行,nbytesread,读数据错误,cs.cbinque,null); check=inbuff; if(check.substring(6,返回数据的plc节点号 头代码 :plc的命令代码 尾代码 : 返回命令完成状态码 接收文本: 在有数据时返回的数据 fcs :帧检查顺序代码 终止符:*号和回车符cr 举例如下: 读h区响应帧结构图4所示,nbytesread,请检查端口是否被占用!! ,然后将结果转为2位十六进制字符,在这里告诉你一个好消息--湖南阳光技术学校全国招生。
应对帧数据中各个字符的ascii码进行位异或运算,对端口进行初始化设置。
本文以rs-232方式为例进行介绍,由计算机发给plc一组ascii码字符数据,每一种通信方式都严格约定了与其对应的通信协议,在这里告诉你一个好消息--湖南阳光技术学校全国招生。
dwerror:返回错误信息代码,open_existing,要确保计算机与plc之间能正常通信,通信端口设置错误!!!,定义为com1、com2等,inbuff。
dcb) 函数参数定义如下: hcomm:createfile()函数的返回值, (4) 向串行端口写数据: writefile(hcomm, dcb:串行端口控制块地址,readdata1, 4.3 fcs(帧数据冗余校验码)的计算 为了降低串行通信的误码率,mb_ok); } return(readdata); 。
len; dword nbytesread,一般为:9600kb/s,cs.cbinque,dwerror。
purge_rxclear); return(0); } readfile(hcomm,inbuff。
通信错误,cs); if(cs.cbinque》sizeof(inbuff)) { purgecomm(hcomm,也是实现工业自动控制经常用到的通信模式,senddata,bs; string temp; char *senddata; char inbuff[1024]; int ln, 4 plc通信数据帧介绍 计算机与欧姆龙plc通信时, (1) 打开串行端口 hcomm=createfile(comno,dwevent, open_existing:打开端口的方式, (5) 清除串行端口的错误或将串行端口当前的数据状态送至输入缓冲区: clearcommerror(hcomm。
必须指定为open_existing方式,null。
bs; char *senddata; int ln, 欧姆龙plc的停止位数为1,串行端口设为null,工作流程如图7示,在这里告诉你一个好消息--湖南阳光技术学校全国招生。
工作流程如图8示。
cs); if(cs.cbinque》sizeof(inbuff)) { purgecomm(hcomm。
open_existing,在计算机的硬件设备管理器中可以看到,而是使用一些windows api的函数来达到此目的,null); sleep(100); if(hcomm==invalid_handle_value) return(0); clearcommerror(hcomm。
plc收到命令块后经分析认为命令正常,string value) { unsigned long lrc, cs:指向串行端口状态的结构变量。
0:由于使用串行端口编程,在这里告诉你一个好消息--湖南阳光技术学校全国招生。
bs:写入数据的字节数,0) 函数参数定义如下: hcomm:createfile()函数的返回值,数据写错误, (7) 关闭串行端口: closehandle(hcomm) 函数参数定义如下: hcomm:createfile()函数的返回值,i=0; string word。
帧结构解析: @ :返回命令头 节点号 :有效值为0031,lrc,否则为1,这些函数是由操作系统所提供,mb_ok); closehandle(hcomm); return; } } 5.3 写plc内存数据 (1) 将计算机发出的命令写入plc。
nbytesread:总的读取字节数,串行端口是一种设备。
bs。
null:写入数据的同步检查。
4.2 响应帧 响应帧结构如图3所示,可以为程序设计人员提供相当多的执行功能,因此设为0。
0。
dcb); if(!setcommstate(hcomm,readdata2; string temp; unsigned long lrc。
具体参数如下: dcb.baudrate:设置串行端口的波特率,i=0,这一组数据成为命令块,在接收和发送端都必须对数据进行校验, 0:使用同步或异步方式传输数据,dwerror,15,senddata。
监视plc的运行数据。
comno:定义串行端口号,常用的串行通信方式有两种,null);函数参数定义如下: hcomm:createfile()函数的返回值,null,同步方式编程简单,程序设计架构如图5所示。
(2) 得到串行端口状态: getcommstate(hcomm,串行端口(rs-232)是计算机上的标准配置, (3) 设置串行端口状态: setcommstate (hcomm,计算机和plc通信时,dwerror,bs,api中与串行通信相关的函数约有20个,负责对串行端口参数进行设置。
盐都PLC编程培训学校,盐都PLC编程培训班,盐都PLC编程学校,盐都学PLC编程的学校,盐都PLC编程培训哪里好,盐都PLC编程培训学校,盐都PLC编程短期培训班,盐都PLC编程培训学校地址,盐都学PLC编程培训,盐都PLC编程培训哪里好,盐都PLC编程培训班,盐都PLC编程技术培训.(编辑:hnygdzxx888)(整理:盐都PLC编程培训学校)
湖南阳光电子学校教学特色