您现在的位置是:首页 > PLC技术 > PLC技术

用Visual C++实现CPM2系列PLC与计算机的串行通信

来源:艾特贸易2017-06-05

简介本文艾特贸易网利用可视化语言 Visual C++ 和 MScomm 控件,实现上位机 PC 与下位机 CPM2 系列 PLC 之间的通信。 Visual C++ 在图形处理和底层通信等方面具有较强的功能,用它来实现底层的通

    本文艾特贸易网利用可视化语言Visual C++MScomm控件,实现上位机PC与下位机CPM2系列PLC之间的通信。Visual C++在图形处理和底层通信等方面具有较强的功能,用它来实现底层的通信控制有着更快捷的速度,而且编程也方便。

    VC++编写API函数通信程序有4个要点,即串口建立及打开、发送数据、接收数据及关闭串口。下面简要介绍上位机的程序设计。

    1.功能要求

   CPM2系列PLC与计算机的串行通信要求:每隔500msPLCDM 1000开始读取4个状态字的内容,送到上位机的数据存储区StatusDats[ 80]。每隔500ms读取一次,可以设置一个时间间隔为500ms的定时器来实现。

    2.设计步骤

    假设PLC的节点号为00,则上位机读取数据的命令格式为:

    下位机接收到该命令后,将做出相应的响应,响应帧的格式为:

    其中:

    ·V2V1-上位机的校验码。

    ·Vr2Vr1-下位机的校验码,要编写一个帧数据校验码函数。

    ·D7~D0-上位机要读取的4个字。

    Visual C++6.0中建立一个工程,加入串口通信控件,进行编程。步骤如下:

   [1]建立工程。启动VC++6.0,建立一个基于Dialog的应用程序框架,工程名为PL-

    CComm,并支持ActiveX控件功能。

   [2]加入串口通信控件。选择“Project”菜单选项,单击“Components and Controls”命令,在

    Registered ActiveX Controls“中选取“Microsoft Communication Controlversion5.0”控件,

    插入工程,生成CMSComm类。在对话框中插入该控件,并同时插入按钮CommBT

   [3]CPLCCommDLG类中加入公共成员变量和公共成员函数说明。

   [4]onInitDialog()函数中加入串口初始化代码。

   [5]给通信按钮IDC-COMMBT添加BNCLICKED消息处理函数onCommbt()

   [6]编写帧数据校验码函数。

   [7]给通信控件IDC-MSCOMM添加OnComm消息处理函数onComm()

   [8]添加WM-TIMER消息的处理函数onTimer( UINT nIDEvent)

   VC通信程序可处理成多线程的,即在前台处理其他工作的同时,另建立一个线程,在后台处理通信,这既提高了工作速度,又可做到程序的其他任务处理与通信两不误。