用户登陆 用户注册
您的位置:首页> 技术文章>内容正文
FX系列plc与pc机通讯
[正文]:1 前言 plc以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。
实现pc机与plc通信的目的是为了向用户提供诸如工艺流程图显示、动态数据画面显示、报表显示、窗口技术等多种功能,为plc提供良好的人机界面。
本文详细介绍了fx系列plc的通信协议,并在windows环境下,使用vb6.0开发通信程序,实现了pc机与fx系列plc之间的串行通信。
2 pc机与plc实现通信的条件带异步通信适配器的pc机与plc只有满足如下条件,才能互联通信:(1)带有异步通信接口的plc才能与带异步通信适配器的pc机互联。
还要求双方采用的总线标准一致,否则要通过“总线标准变换单元”变换之后才能互联。
(2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。
(3)要对plc的通信协议分析清楚,严格地按照协议的规定及帧格式编写pc机的通信程序。
plc中配有通信机制,一般不需用户编程。
3  pc机及与fx系列plc的串行通讯3.1 硬件连接pc机与fx系列plc不能直接连接,要经过fx-232aw单元进行rs232c/rs-422的变换,下图表示了它们之间的连接关系:3.2 fx系列plc的通信协议在pc机中必须依据互联的plc的通信协议来编写通信程序,因此先介绍fx系列plc的通信协议。
(1)数据格式fx系列plc采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波特率为9600bps,字符为ascii码。
格式如下:(2)通信命令fx系列plc有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如下表所示。
表中x—输入继电器;y—输出继电器;m—辅助继电器;s—状态元件;t—定时器;c—计数器;d—数据寄存器。
(3)通信控制字符fx系列plc采用面向字符的传输规程,用到5个通信控制字符,如下表所示。
*当plc对pc机发来的enq不理解时,用nak回答。
[page_break](4)报文格式pc机向plc发送的报文格式如下:其中stx为开始标志:02h;etx为结束标志:03h;cmd为命令的ascii码;sumh,suml为从cmd到etx按字节求累加和,溢出不计。
由于每字节十六进制数变为两字节ascii代码,故校验和为sumh与suml。
数据段格式与含义如下:*写命令的数据段有数据,读命令的数据段则无数据。
读/写字节数为01h~40h(1~64)个。
plc向pc机发送的应答报文格式如下:*对读命令的应答报文数据段为要读取的数据,一个数据占两个字节,分上位下位:对写命令的应答报文无数据段,而用ack及nak作为应答内容。
(5)传输过程pc机与fx系列plc之间采用应答方式通信,传输出错则组织重发。
其传输过程如下:plc根据pc机的命令,在每个循环扫描结束处的end语句后组织自动应答,无需用户在plc一方编写程序。
4 利用vb6.0编写通信程序下面以一个简单的例子来说明编写通信程序的要点。
假设pc机要求从plc中读入从d123开始的4个字节的数据(d123,d124),其传输应答过程及报文如下(图略可向作者索取):命令报文中10f6h为d123的地址,04h表示要读入4个字节的数据。
校验和sum=30h+31h+30h+46h+36h+30h+34h+03h=174h,溢出部分不计,故sumh为'7',suml为‘4’,相应的ascii码为“37h”,“34h”。
应答报文中4个字节的十六进制数,其相应的ascii码为8个字节,故应答报文长度为12个字节。
根据pc机与fx系列plc的传输应答过程编制出如下所示的通信程序流程图略。
[page_break]利用vb的mscomm控件,按照流程图可以编写如下通信程序实现pc机与fx系列plc之间的串行通信以完成数据的读取。
mscomm控件可以采用轮询或事件驱动的方法从端口获取数据。
在这个例子中使用了轮询方法。
(1)通信口初始化private sub initialize()mscomm1.commport = 1mscomm1.settings = ″9600,e,7,1″mscomm1.inbuffersize = 1024mscomm1.outbuffersize = 1024mscomm1.inputlen = 0mscomm1.inputmode = cominputmodetextmscomm1.handshaking = comnonemscomm1.portopen = trueend sub(2)请求通信与确认private function makehandshaking() as booleandim inpackage as stringmscomm1.outbuffercount = 0mscomm1.inbuffercount = 0mscomm1.output = chr(&h5)dodoeventsloop until mscomm1.inbuffercount = 1inpackage = mscomm1.inputif inpackage = chr(&h6) thenmakehandshaking = trueelsemakehandshaking = falseend ifend function(3)发送命令报文private sub sendframe()dim outstring as stringmscomm1.outbuffercount = 0mscomm1.inbuffercount = 0outstrin = chr(&h2)+″0″+″10f604″+chr(&h3)+″74″mscomm1.output = outstringend sub(4)读取应答报文private sub receiveframe()dim instring as stringdodoeventsloop until mscomm1.inbuffercount = 12instring = mscomm1.inputend sub5 结束语以本文所述机制编写的通信程序已成功用于以fx2n型plc作为主控制器的高层建筑玻璃幕墙清洗机器人系统中,通过该通信程序,实现了pc机对plc的监视和控制。
同时,本程序对pc机与其它型号plc之间的通信也有一定的借鉴意义。
 


网站首页 培训课程 维修指南
技术文章 家电专栏 供应信息
求购信息 培训资讯 展会信息
电脑专栏 教程下载 资料下载
常用软件 PLC教程 PLC资料
变频伺服 低压电器 维修资料
人机界面 自控仪表 工控机类
文章标题: 搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
 京ICP备11002135号
报时(2026-04-02 21:03:15) 流量统计