松下工控展销网
◎中国工控展销网    ◎站点地图1 2    ◎繁体版
松下工控展销网
首  页 代理简介 产品中心 资料软件 技术交流 新闻资讯 最新消息 面价查询  
   

基于VC5.0的PC与松下PLC的通信及其应用

基于vc5.0的pc与松下plc的通信及其应用.......

商家信息

产品导航
  松下PLC  
松下变频器
松下电器变频器
松下触摸屏
松下伺服电机
松下小型马达
 
 
 您的位置:>>>技术交流 >>>正文

 
基于VC5.0的PC与松下PLC的通信及其应用
   相关品牌: 松下
   相关产品: PLC
   更新时间: 2007/6/4 18:55:46
   点击次数: 639
 
 

1  引言
随着plc应用范围的不断扩大,plc与pc之间通信技术的应用需求越来越广泛。通过plc的编程口进行通讯不仅可以减少系统的成本及复杂性,同时可以减少plc方面软件的复杂程度和编程量。本文根据实际工程中的经验进行总结,介绍了利用vc++中mfc实现pc与松下fp0系列plc编程口进行串行通信的程序设计基本方法

2  pc与fp0 plc之间的通信协议和接口
在一个规模较大的纺织工业控制系统中,常常有几十个、几百个甚至更多的测温和控制对象。即使速度很高的系统,也很难满足要求。为了降低危险,提高可靠性,必须将任务分散,而分散的设备需要通过一定的手段连接起来,其中数据通信和系统互连是该系统的关键技术之一。松下fp0系列plc具有较强的通信功能,可以适合各种工业自动化网络的不同需要, 其中包括以太网协议及通用接口、h型链接通信系统(h-link)、p型链接系统(optical link)、w型链接系统(wire-link)和c-net链接系统,还有远程i/o通信系统(remote i/o),它们通过rs-485、rs-232或专用网络插座在plc-plc、计算机与plc之间进行通信。但是要利用这些系统协议,必须采用专用高级通信单元,这势必增加系统的成本。为了节省开支,纺织工业系统可以直接采用松下电工最基础的专用通信协议-newtocol。
newtocol分为两部分:一是newtocol-com,即关于计算机通信的协议;二是newtocol-data,即关于数据传输协议。
2.1  newtocol-com的帧格式
(1) 命令发送帧


(2) 正确响应帧
img]周奉磊-b2.jpg border=0>
(3) 错误响应帧
img]周奉磊-b3.jpg border=0>
2.2  newtocol-data的帧格式
(1) 命令发送帧
img]周奉磊-b4.jpg border=0>
(2) 正确响应帧
img]周奉磊-b5.jpg border=0>
(3) 错误响应帧
img]周奉磊-b6.jpg border=0>
通过该协议可更加快捷地传送系统所需的数据,设置plc所需的参数。fp0 plc与上位机链接通信协议如图1所示:

图1     fp0 plc 与上位机链接通信协议

3  通信程序设计
在pc机和松下fp0系列plc进行串行通信时,由于pc与plc之间的信息传送是通过plc编程口实现的,采用的是fp0 plc专用协议通信指令。因此,在pc编程方面需要严格的遵循plc编程口通讯协议。具体实现介绍如下:
3.1  串口设备的打开
在visual c++中,利用mfc cfile类来实现串行通讯。这种通信方式与访问磁盘普通文件没有太大不同。打开串口设备需作以下操作:
cfile file;
cfileexception e
file.open(
portname,      // example "com1",com2"
cfile::modereadwrite,
&e);
3.2  串口设备的初始化
串行端口创建时,必须对其进行设置以匹配与其对话的设备。fp0系列plc的波特率为固定的9600bps,奇偶校验采用奇校验,1位停止位,8位数据位。一般地,可用如下程序设置它们:
dcb dcb;
::getcommstate((hANDle)file.m_hfile,&dcb);
dcb.baudrate=9600;
dcb.stopbits=1;
dcb.bytesize=8;
dcb.parity=1;
::setcommstate((hANDle)file.m_hfile,&dcb);
为了更好的控制端口可以利用setcommtimeouts()函数打开或关闭串口超时功能,具体程序如下:
commtimeouts cto;
::getcommtimeouts((hANDle)file.m_hfile,&ct0);
cto.readintervaltimeout=0;
cto.readtotaltimeoutmultiplier=0;
cto.readtotaltimeoutconstant=0;
cto.writetotaltimeoutmultiplier=0;
cto.writetotaltimeoutconstant=0;
::setcommtimeouts((hANDle)file.m_hfile,&cto);
3.3  pc与fp0 plc之间的通信实现
在fx2系列plc与pc机的通信中,数据是以帧为单位发送和接收的。其中字符enq(0x05)、ack(0x06)、
和nak(0x15)作为单个字符,可以构成单字符帧。若通讯正常,则应答字符$;若通信有错,则应答字符!。其余的字符在发送和接收时必须用字符%和cr分别表示该字符帧的起始标志和结束标志,否则将构成帧错。一个多字符帧由%、地址码、站号、数据、和校验以及cr五部分组成,其中和校验值是其初值为0,然后从起始符开始与该帧报文中每一字节按位进行异或运算得到。
(1) 应用mfc cfile类实现对串口设备的读、写操作的代码
//读串口
CHAR m_readbuff[uint n];
uint nbyte=file.read(
&m_readbuff,      //缓存储冲
uint nCOUNT //所读字节数
//写串口
CHAR m_writebuff[uint n];
file.write(
&m_writebuff,     //存储缓冲
uint nCOUNT      //缩写字节数
);
(2) pc机实现与plc通信的程序代码
CHAR m_writebuff[10];
CHAR m_readbuff[10];
     uint nbyte=0;
  m_writebuff[0]=0x05    //enq
//写串口
file.write(
m_writebuff,     //存储缓冲
    //所读字节数
);
//读串口
nbyte=file.read(
m_readbuff,     //存储缓冲
    //所写字节数
);
switch (m_readbuff[0])
  {
case : 0x24    //应答$,通信正常
  //添加相关处理代码
break;
case : 0x21 
  //应答!,通讯故障
  //添加相关处理代码
 break;
  }
3.4  pc对plc内各软设备进行读、写操作
fp0系列plc的所有开关量输入、输出以及各软设备对pc机都是透明的,只有当plc的计时器和计数器的设定值采用常数时,以及文件寄存器内的数据,pc机不能对其进行读写。不论plc处在“stop”状态还是“run”状态,pc机都可以按1.1所列的命令对plc进行读、写操作。这里仅给出pc机与plc通信所用多字符帧的格式及简单示例,实际应用时只需将多字符帧中的字符ascii码(十六进制)按顺序赋予相应的字符数组
m_writebuff,m_readbuff,即可实现对plc的操作。
(1) 读操作 

img]周奉磊-b7.jpg border=0>


(2) 写操作
微机对plc软设备进行写操作的多字符帧的编制格式如下表所示: 

img]周奉磊-b8.jpg border=0>


plc接收到写操作多字符帧格式后,若接收到数据有效,则应答$(0x24),该字符帧如下表所示: 

img]周奉磊-b9.jpg border=0>


若接收数据无效或和校验出错,则应答字符!(0x21),该字符帧如下表所示: 

img]周奉磊-b10.jpg border=0>


3.5  关闭串口设备
pc机与plc通信完毕后,pc机关闭一个已打开的串口设备只需如下一条语句即可完成。
file.close();

4  应用实例
以上介绍了利用mfc实现pc与fx2系列plc串行通讯的基本方法及其关键部分程序代码。上面的程序代码为基础,不仅可以编制用于以plc为现场主控机的监控系统软件,而且可编制出微机与其他具有串行通信能力设备的串行通信程序。本人已成功使用vc5.0实现plc与上位机之间的通信,并应用于青岛大学纺织服装学院开发的掉毛量测试仪。该测试仪控制系统采用plc 控制步进电机方案,有效地提高了工作效率,使操作人员通过pc的显示可以监测并控制仪器的工作。兔毛织物掉毛量测试仪已可靠运行一年,实践证明它具有控制灵活、使用简单、功能扩充方便、抗干扰性能强的特点。没有出现任何通讯连接的问题。


中国工控展销网  E-mail:kefu@gkooo.com