工业控制领域中 PLC作为一种高效、灵活、可靠的控制器,有着广泛的应用。以PLC 控制器为核心,上位PC机为实时监控体的控制系统已成为工业自动化 PLC 控制系统的一个发展方向。实现PLC与PC的通信可以实现向上级提供诸如工艺流程图、动态数据画面、报表显示等多种窗口技术,使 PLC控制系统具有良好的人机界面,通过上位机对PLC 数据的读写监控实现现场数据的采集、传送以及生产过程调度的自动化和信息化,其应用前景十分广阔。常用的各种 PLC 网络有差异,但表现在 PLC 通信程序、系统联结和系统配置等方面,通信机理有统一性。目前市场上通信组态系统结构复杂,价格昂贵,应用繁琐,不适应用户使用。针对上述问题笔者以西门子公司的S7-200系列的PLC为研究对象,提出了一种用VC实现上位机与PLC的高速可靠的通信方法。1、S7-200系列 PLC通信方式西门子S7-200 系列性能优良,性价比较高,适用范围很广,因此本文主要讨论西门子7-200 系列与计算机之间的通信。S7-200 系列通信方式有三种: (1)点对点PPI方式与上位机通信:用于与西门子公司的 PLC编程器或其他该公司人机接口产品的通信。该种通信方式采用的是MSComm ActivcX控件。PPI是主/从协议,网络上的S7-200均为从站,其他CPU、SIMATIC编程器或TD200为主站。如果在用户程序中允许PPI主站模式,一些S7-200CPU在RUN模式下可以作主站,它们可以用网络读和网络写指令读写其他CPU中的数据。PPI没有限制可以有多少个主站与一个从站通信,但是在网络中最多只能有32个从站。PPI通信协议是不公开的;(2) Freeport 方式与上位机通信:Freeport方式具有与外围设备通信方便、自由,易于微机开发等特点,因此使用自由口方式实现与上位机通信的控制方案较多。但在该通信方式下,上位机与 PLC的最大通信能力为128bit/s,这无法满足高速通信的需要;(3) Profibus-DP 方式与上位机通信:Profibus 协议用于几分布式I/0 设备的高速通信。S7-200CPU 需通过EM277。Profibus-DP模块接入 Profibus 网络,网络通常有一个主站和几个I/0从站这种方式使得PLC可以通过 Profibus的DP 通信接口接入 Profibus 现场总线网络,从而扩大 PLC的使用范围。PPI协议和 Profibus 协议的结构模型都是基于开放系统互连参考模型的7层通信结构。2、PLC网络通信标准简介(1) RS-232C标准通信的连接接口与连接电缆的相互兼容是通信得以保证的前提。它的实现方法发展迅速,型式较多。其中 RS-232C就是实际应用较多的标准之一,它是计算机或终端与调制解调器之间的标准接口。RS-232C功能规范定义了电路之间的连接,以及它的含义。RS-232C的规程规范定义的是协议,即事件出现的正确顺序。RS-232C的缺点是数据传输率低传输距离短。(2) RS-485在许多工业环境中,要求用最少的信号连线来完成通信任务。日前广泛应用的是标准RS-485串行接口总线,RS-485支持半双工通信,分时使用一对双绞信号线进行发送或接收。RS-485 用于多站互联时实现简单,节省材料,可以满足高速远距离传送,构成分布式网络控制系统十分方便。3、通信网络接口的设计在本工程中,我们采用的 PLC为CPU224型该可编程控制器的通信端口为RS-485接口,由于PC机的串行端口为 RS-232接口,且远离控制现场(PLC位置),因此 PC机的 RS-232 接口必须通过 RS-232/RS-485转换器转换后才能与 PLC通信端口连接,这种通信方式可以实现最远 1.2Krn 的远程通信PC机的标准串口为 RS232。S7-200 系列CPU226提供2个串口,其中一个端口 Portl作为 DP口,另一个端口 Port0 为自由口,自由口为标准 RS485 串口。西门子公司提供的PC/PPI电缆带有RS232/RS485电平转换器,因此在不增加任何硬件的情况下,可以很方
便地将 PLC和PC机互联。4、通信程序设计(1)上位机部分程序单命令把MSComm 控件加入到工程中。MSComm 控件通信功能的实现实际上是调用了 API函数而API函数是由Comm.drv解释并传递给设备驱动程序进行的。即MSComm 控件的属性提供了通信接口的参数设置,能实现串行通信。MSComm 控件有关属性如下CommPort:设置并返回通信端口号。Window 系统将会利用该端口与外界通信:Setings:设置并返回初始化参数。其组成格式为“BBBB。P。D。S”。BBBB为数据速率。P为奇偶校验。D为数据比特。S 为停止位; PortOpen: 设置并返回通信端口的状态。也可以打开和关闭端口;Ouptut:向传输缓冲区写 1B 的数据;Input:将传送到输入缓冲区的字符读到程序里RThreshold: 设置在产生OnComm 之前要接受的字符数InputLen:设置并返回Input 属性从接收缓冲区读取的字符数;InBbuffersize: 设置或返回输入缓冲区的大小 InBufferCount: 返回输入缓冲区内等待读区的字节个数。可通过设置该属性值为0来清除接收缓冲区;InputMode: 设置或返回传输数据的类型;CommEvent: 传回 OnComm 事件发生时的数值码;