技术中心
 
 

利用编程口实现三菱PLC远距离通讯的方法

   日期:2011-06-17     来源:互联网    
核心提示: MITSUBISHI PLC是三菱公司生产的可编程序控制器,由于该产品体积小,结构紧凑,性能可靠,易编程,系列全(根据被控对象的复杂程度,选用相应
 MITSUBISHI PLC是三菱公司生产的可编程序控制器,由于该产品体积小,结构紧凑,性能可靠,易编程,系列全(根据被控对象的复杂程度,选用相应容量的PLC)等优点,而被广泛应用于各种场合和生产过程的现地控制中,可实现开关量采集、输出,模拟量采集和输出等功能。在实际应用中,有时往往需要实现远方控制和监视,因此PLC的长距离通讯问题具有实用性。这里介绍两种PLC远距离通讯方法。  我们先来分析一下PLC的特性。 一、FX2系列PLC通讯接口的物理特性   PLC装置上带有一个25针RS-422编程口,该口主要用于对PLC进行编程和调试。接口如示: 图1   端口信号定义如下:
  RXD:接收数据(Received Data)
  TXD: 发送数据 Transmitted Data)
  DTR: 数据终端准备就绪(Data Terminal Ready)
  DSR:数据装置就绪(Data Set Ready)
  PWE: PLC数据接收允许  在用PC机或便携机对PLC进行编程和调试时,必须用一根专用通信电缆与之通信,当编程调试结束后,该口即处于闲置状态。要想实现PLC长距离数据通讯,一种方法是采用PLC通讯扩展模件,这要增加额外的开销,另一种方法就是利用其自身的编程口,也能达到同样的效果,同时可节省开销。出于保密等某种因素,PLC编程电缆的接口电路部分用强力胶密封,用户无法查看。通过对其接口的分析和试验,找到了用四线制方式实现PLC通讯的连接方法,即用PLC的4个引脚RXD(R+、R-)、TXD(T+、T-)经长线与PC侧的长线收发器相连接,通过长线收发器把信号转换为RS-232后与PC的串口相连。其接口如图2如示。   应当指出的是为了使PLC始终处于“数据装置就绪”状态,我们人为将4脚和7脚短接,同样为了使PLC能接受主机的命令,也将21脚和20脚短接。  在实际应用中,PC机通常要与若干个PLC通讯,单个串口是实现不了的,此时需扩展端口来实现。选用MOXA Intellio C218 Turbo 系列串口卡带Opt8F连接盒可实现与8个PLC相连。  Opt8F 是一个8串口RS-422、DB25孔式连接盒,带光电隔离 。信号定义: TxD+(3)/-(16), RxD+(2)/-(14), GND(7) ,具备LED可监看每个串口的TxD, RxD ;含1.5m DB62转DB62接头的电缆线,光电隔离最大可达500V ,数据传输速率: 50 bps ~ 115.2 Kbps。
硬件连接如图所示:   如果PLC超过8个,可再扩展一块C218卡。  这里,也可以选用MOXA系列C168卡,不过它的8串口是RS-232口,需外加长线收发器将 RS-422转为RS-232后才能连到8串口上,连接方式同图-2。  MITSUBISHI PLC是三菱公司生产的可编程序控制器,由于该产品体积小,结构紧凑,性能可靠,易编程,系列全(根据被控对象的复杂程度,选用相应容量的PLC)等优点,而被广泛应用于各种场合和生产过程的现地控制中,可实现开关量采集、输出,模拟量采集和输出等功能。在实际应用中,有时往往需要实现远方控制和监视,因此PLC的长距离通讯问题具有实用性。这里介绍两种PLC远距离通讯方法。  我们先来分析一下PLC的特性。 一、FX2系列PLC通讯接口的物理特性   PLC装置上带有一个25针RS-422编程口,该口主要用于对PLC进行编程和调试。接口如示: 图1   端口信号定义如下:
  RXD:接收数据(Received Data)
  TXD: 发送数据 Transmitted Data)
  DTR: 数据终端准备就绪(Data Terminal Ready)
  DSR:数据装置就绪(Data Set Ready)
  PWE: PLC数据接收允许  在用PC机或便携机对PLC进行编程和调试时,必须用一根专用通信电缆与之通信,当编程调试结束后,该口即处于闲置状态。要想实现PLC长距离数据通讯,一种方法是采用PLC通讯扩展模件,这要增加额外的开销,另一种方法就是利用其自身的编程口,也能达到同样的效果,同时可节省开销。出于保密等某种因素,PLC编程电缆的接口电路部分用强力胶密封,用户无法查看。通过对其接口的分析和试验,找到了用四线制方式实现PLC通讯的连接方法,即用PLC的4个引脚RXD(R+、R-)、TXD(T+、T-)经长线与PC侧的长线收发器相连接,通过长线收发器把信号转换为RS-232后与PC的串口相连。其接口如图2如示。   应当指出的是为了使PLC始终处于“数据装置就绪”状态,我们人为将4脚和7脚短接,同样为了使PLC能接受主机的命令,也将21脚和20脚短接。  在实际应用中,PC机通常要与若干个PLC通讯,单个串口是实现不了的,此时需扩展端口来实现。选用MOXA Intellio C218 Turbo 系列串口卡带Opt8F连接盒可实现与8个PLC相连。  Opt8F 是一个8串口RS-422、DB25孔式连接盒,带光电隔离 。信号定义: TxD+(3)/-(16), RxD+(2)/-(14), GND(7) ,具备LED可监看每个串口的TxD, RxD ;含1.5m DB62转DB62接头的电缆线,光电隔离最大可达500V ,数据传输速率: 50 bps ~ 115.2 Kbps。
硬件连接如图所示:   如果PLC超过8个,可再扩展一块C218卡。  这里,也可以选用MOXA系列C168卡,不过它的8串口是RS-232口,需外加长线收发器将 RS-422转为RS-232后才能连到8串口上,连接方式同图-2。 二、 PLC 通讯机制   1.PLC通讯口参数  波特率:9600比特/秒
  校验方式:偶校验
  停止位:1位
  校验位:1位
  传输方式:异步7位字符方式   2.PLC数据帧格式  PLC有三种通用寄存器:D寄存器、X寄存器、Y寄存器。D寄存器为数据寄存器,可存放双字节整数,X寄存器为输入位寄存器,字长8位,每一位对应一个开关量输入点;Y寄存器为8位输出寄存器,字长8位,每一位对应一个开关量输出点;通过这三种寄存器,即可进行模拟量、开关量的采集,以及开出控制。  PLC的通讯是完全被动的半双工通讯,要实现PLC数据的远传,首先要了解三种寄存器读写数据的帧格式,按照这个格式通过上位机对它发读或写命令(在软件中一般用数组来存放该命令报文),PLC根据命令的性质作出响应。归纳起来只有两种:寄存器读和写命令。其帧格式如下:  读命令帧格式:   写命令帧格式:   (注:这里的高位指一个字节的高半字节,即高四位;低位指低半字节,以下同)  STX:报文起始标志
  EXT:报文结束标志。  被读的寄存器的组地址为4位ASCII码,可从PLC手册中查到。一次最多读出64个字节。  通讯开始时,主机首先向PLC发查询代码ENQ(05H),如果PLC正常接收,则PLC回送确认代码ACK(06H)作为应答,表示通讯建立,可以对PLC进行读、写命令。如果PLC不能识别命令,则返回NAK(15H)。应当注意的是PLC的响应有一定的延时(3秒以内),在收到命令后,PLC要在执行完下一周期END指令后方才响应,因此主机在软件上应考虑延时读数和三次重发。  PLC响应后的数据格式:   校验和的计算,以D寄存器的读报文为例  读D123寄存器,地址为10F6H,读4个字节:   校验和是报文内CMD和ETX中间(包括CMD和ETX)各字节之和,上面报文校验和=30H+31H+30H+46H+36H+30H+34H+03H= 174H,取后两位74H,即为校验和,用ASCII码表示就是:37H和34H。  例如D寄存器中的数据为D123:1234H , D124:ABCDH,则PLC响应后,向PC发送数据报文为: 3、软件  PC机COM1端口初始化程序(与PLC端口参数一致)
  ........
  outputb(0x3fb,0x80); /*通讯线控制寄存器控制字,访问波特率除数锁存器*/
  outpoutb(0x3f8,0x0c); /*除数锁存器控制字低位,定波特率*/
  outportb(0x3f9,0x00); /*除数锁存器控制字高位,定波特率*/
  outportb(0x3fb,0x1a); /*通讯线控制寄存器控制字,定数据格式*/
  outportb(0x3fc,0x03); /*MODEM控制寄存器控制字*/
  ......
  port_test:
  outportb(0x3f8,ENQ);
  do {
  in=inportb(0x3fd);
  }while(!in&0x01);
  in=inportb(0x3f8);   if(in==NAK)
  {
  printf("Error NAK!rn");
  goto port_test
  }
  if(in!=ACK)
  {printf("NOT RECEIVED ACK!rn");
  goto port_test;
  }
  .......   8串口方式的端口初始化程序:
  .........
  stat=sio_reset();
  stat=sio_open(port);
  stat=sio_ioctl(port,B9600,P_EVEN|BIT-7|STOP_1);
  port_test:
  stat=sio_putch(port,0x05);
  in=sio_getch(port);
  if(in!=0x06) goto port_tes
  .......... 三、结束语   以上的软硬件方案已在漫湾电厂坝区闸门的数据采集和控制中得到应用,实现了单台工控机与10余台PLC的通讯,并与监控系统相连,实现了坝区闸门的远方监视和控制,数据通信可靠
 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢