您当前的位置:五五电子网电子知识plc技术plc应用其它PLC应用编程口实现三菱PLC远距离通讯的方法 正文
编程口实现三菱PLC远距离通讯的方法

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

点击数:7580 次   录入时间:03-04 12:01:37   整理:http://www.55dianzi.com   其它PLC应用
  PLC的通讯是完全被动的半双工通讯,要实现PLC数据的远传,首先要了解三种寄存器读写数据的帧格式,按照这个格式通过上位机对它发读或写命令(在软件中一般用数组来存放该命令报文),PLC根据命令的性质作出响应。归纳起来只有两种:寄存器读和写命令。其帧格式如下:

STX:报文起始标志
  EXT:报文结束标志。

  被读的寄存器的组地址为4位ASCII码,可从PLC手册中查到。一次最多读出64个字节。

  通讯开始时,主机首先向PLC发查询代码ENQ(05H),如果PLC正常接收,则PLC回送确认代码ACK(06H)作为应答,表示通讯建立,可以对PLC进行读、写命令。如果PLC不能识别命令,则返回NAK(15H)。应当注意的是PLC的响应有一定的延时(3秒以内),在收到命令后,PLC要在执行完下一周期END指令后方才响应,因此主机在软件上应考虑延时读数和三次重发。

 校验和是报文内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的通讯,并与监控系统相连,实现了坝区闸门的远方监视和控制,数据通信可靠

上一页  [1] [2] [3] 


本文关键字:三菱PLC  其它PLC应用plc技术 - plc应用 - 其它PLC应用

《编程口实现三菱PLC远距离通讯的方法》相关文章>>>