你现在位置:首页>技术论文>数据通讯>正文
在C++Builder环境下实现PLC与计算机的串口通讯
日期:2006-4-30 10:18:27 来源:本文摘自《PLC&FA》  
点击: 作者:未知
点击【】放大字体.

1  引言

plcjs.技.术_网

     可编程序逻辑控制器(PLC)是一台工业控制用微型计算机系统,用以代替传统的继电器控制系统,可靠性高,通用性强,大大减少故障的发生。80年代以来,PLC已经成为电控技术发展趋势,广泛应用于电子、机械、轻工、发电冶金、矿山、石油等工业。在实际工作中,我们要常常解决的问题便是如何实现PLC与个人微机之间的通讯,从而方便有效的通过RLL(PLC梯形图)编程,实现PID控制,BCD输出,或者PWM输出,进行闭环反馈控制。
P.L.C.技.术.网——可编程控制器技术门户

2   PLC通讯原理

WWW_P※LCJS_CO※M-PLC-技-.术_网

     笔者采用美国IPM公司的IP1612-220PLC,有28个点:16个输入点,和12个输出点,负载能力高达8A,有32个定时器和32个计数器,256个内部继电器和56个数据寄存器,采用VLSI超大规模集成电路最新技术和EEPROM存储器,随机提供IP-EPS软件包。它允许通过外接RS232串行接口对定时器,计数器和内部继电器进行实时读和写访问,除了个人计算机和用来把RLL控制程序输入PLC外,不再需要任何设备。为从PLC中读出一字节数据,只要给它发送变量的代码(地址),PLC就读出该变量的值作为响应,为读出一个双字节数值,使用增加的特殊代码0XE6读两次,其原理分别如图1所示。
WWW.PLCJS.COM——可编程控制器技术门户

P.L.C.技.术.网——可编程控制器技术门户

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

图1      PLC和计算机的通讯原理示意图
plcjs.技.术_网

WW.W_PLC※JS_C,OM-PL,C-技.术_网

     如果为写入一个字节到IP1612-220,首先要读出它,然后发送给PLC特殊代码0XFF,跟着送你想写给该变量的新数值,如果为写入双字节数值,需要写2次,其原理分别如图2所示。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

图2      双字节数值的通讯原理示意图
WWcW_PLCJS_COM-PLC-技.术_网

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

3  PLC与计算机的硬件连接
WWW_PL※CJS_COM-PLC-技.术_网

     现在RS232接口的使用已愈来愈广泛,它不仅用于计算机之间的通讯,而且还用于计算机和各种外围设备之间的通讯。因此它是微型机应用系统的一种重要接口。IP1612-220就采用RS232接口,它与计算机之间的接口连线如图3所示。
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WWW_PLCJS@_COM%-PLC-技.术_网

图3      PLC与计算机之间的接口连线图
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

4  PLC与计算机在C++Builder环境下的软件实现
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

     如何用C++Builder来实现PLC与上位机之间的通讯问题?C++Builder是一个基于真正C++语言的RAD开发工具,它将当今最为强劲高效的C++语言和随心所欲的可视化开发完美结合。在C++Builder中,不能够使用Turbo C中的outputb和inputb端口读写函数。但可以有另外一种办法实现这个功能,即通过内嵌汇编语言实现端口的读写。即在C++Builder的单元头文件(*.h)中加入如下代码:
WWW.PLCJS.COM——可编程控制器技术门户

void _fastcall TForm1::OutPort(unsigned short port,unsigned char value)
P.L.C.技.术.网——可编程控制器技术门户

//port参数为输出端口地址,value参数为输出值
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

{ asm{
WWW_P※LCJS_CO※M-PLC-技-.术_网

mov dx , port //把端口地址送到处理器DX寄存器中
——可——编——程——控-制-器-技——术——门——户

mov al , value //把value 送到处理器AL寄存器中
plcjs.技.术_网

out  dx , al  //把AL寄存器中的值送到端口}
WWW_PLCJS@_COM%-PLC-技.术_网

}
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

unsigned char _fastcall TForm1::InPort(unsigned short port)
WWcW_PLCJS_COM-PLC-技.术_网

//port参数为输入端口地址,返回为输入值
WWW_PLCJS@_COM%-PLC-技.术_网

{ unsigned char value ;
WWcW_PLCJS_COM-PLC-技.术_网

asm{
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

mov dx, port //把端口地址送到处理器DX寄存器中
WWW_PLCJS_COM-PLC-技.术_网

in al, dx 从DX指定端口中将一数据送到AL寄存器中
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

mov value,al //把AL寄存器中的值赋给value}
WWcW_PLCJS_COM-PLC-技.术_网

return value; //返回端口数据
W1WW_P4LCJS_COM-PLC-技.术_网

}
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

编写好端口读写函数以后,我们必须把PLC与上位机的通讯模式设置成一致。EPS支持串行接口“Com1”到“Com9”。
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

如果想用通道1,可以用下列命令:
WWW_PLCJS_COM-PLC-技.术_网

  mode  com1: 1200,n,8,1
WW.W_PLC※JS_C,OM-PL,C-技.术_网

然后在C++Builder的单元头文件(*.cpp)中加入如下代码:
WWW_P※LCJS_COM-PLC-)技.术_网

void _fastcall TForm1::FormCreate(TObject *Sender)
P.L.C.技.术.网——可编程控制器技术门户

{outport(0x3f8+3,0x80);//以下是对com1口初始化,
WWW_PLC※JS_COM-PmLC-技.术_网

outport(0x3f8+0,0x60);//波特率1200

本新闻共2页,当前在第11 2  
WWW_PLCJS_COM-PLC-技.术_网

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行