zoukankan      html  css  js  c++  java
  • 基于KEPWare实现PLC与MES的握手通讯以及简单逻辑处理

    一、场景

    在生产现场经常会有这样的场景,下位机PLC需要将一些数据上传给上位机或者MES,通常就是将一些数据存储到数据库。

    面对此场景的业务需求,使用KEPWare的ODBC Clint、Link Tag的功能来实现。

    其常见的信号交互流程如下图所示。

    二、步骤

    步骤一:

              在数据库中建立用来存储PLC相关数据的Table,表如下所示。

         

       说明:1、ID为自增长列。CreateTime默认值为getdate(),即每次新建数据时,CreateTime默认是以当时本地的时间来记录。

                  2、Table的名称为TestTable。

    步骤二:

               创建一个往TestTable中插入一行记录的存储过程。

    USE [TESTDB]
    GO
    /****** Object:  StoredProcedure [dbo].[INSERT_TESTTAB]    Script Date: 2019/6/12 14:54:03 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:        <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:    <Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[INSERT_TESTTAB]
        -- Add the parameters for the stored procedure here
        @p1 int,
        @p2 int,
        @p3 int output  
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;
    
        -- Insert statements for procedure here
        INSERT INTO [TESTDB].[dbo].[TestTable] (VALUE1,VALUE2) VALUES(@p1,@p2) ;
        set @p3=1;
        return 1;
    END

          说明:1、输入参数p1、p2对应着需要插入到TestTable中的Value1、Value2

                     2、输出参数p3用来获取执行结果(为什么不适用返回值来作为执行结果呢?后面会有说明)

    步骤三:

           在KEPWare中创建模拟PLC数据的Tag(如果有实物PLC可以直接配置实物的PLC驱动来进行)

    a、新建Channel的时候Driver选择Simulator的驱动,此驱动可以完成数据的模拟。 

             

    b、新建4个Tag。

           

     步骤四:

              a、在KEPWare中新建ODBC Client,来连接数据库。(具体的操作细节可以百度 KEPWare ODBC)

              b、在Access method selection中选择Stored Procedure

             

             c、在Stored Procedure selection中选择刚刚创建的名称为INSERT_TESTTAB的存储过程。

             

           d、配置完成KEPWare会自动生成Tag。

           

    说明:1、Execute:每次写完成的时候,Execute stored procedure (on write complete).都会执行,而不是从flase变为true执行这点需要特别注意。

               2、input_p1、input_p2对应着存储过程p1、p2的输入参数,input_output_p3为p3的输出参数。

               3、output_RETURN_VALUE对应着存储过程的返回值。注意output_RETURN_VALUE为只读的Tag。

    步骤五:

            在KEPWare中新建Link Tag将ODBC Client的Tag和模拟PLC的Tag关联。

       

     

        

    三、测试

         按上述流程图进行测试。

    将1写入到Value1、1写入到Value2,然后将Request置位,然后执行完存储过程,Response会被置1。结果在数据库中成功插入了一条数据,如下所示。

  • 相关阅读:
    hdu 1017 A Mathematical Curiosity 解题报告
    hdu 2069 Coin Change 解题报告
    hut 1574 组合问题 解题报告
    hdu 2111 Saving HDU 解题报
    hut 1054 Jesse's Code 解题报告
    hdu1131 Count the Trees解题报告
    hdu 2159 FATE 解题报告
    hdu 1879 继续畅通工程 解题报告
    oracle的系统和对象权限
    oracle 自定义函数 返回一个表类型
  • 原文地址:https://www.cnblogs.com/cherish836138981/p/11005134.html
Copyright © 2011-2022 走看看