在WINCC中使用WinSock控件与倍加福RFID进行TCP_IP通讯

本文介绍了如何在WinCC中通过WinSock控件实现与倍加福RFID IC-KP-B17-AIDA1系统的TCP/IP通讯。由于WinCC自身不包含WinSock控件,作者详细讲述了控件的注册和添加过程,以及在过程中遇到的"未找到许可证信息(winsock)"问题的解决方法。此外,还提及了因数据转换需求导入ads.dll的步骤。
摘要由CSDN通过智能技术生成
在柔性制造FMS系统中,本次项目以西门子PLC300,PLC200和倍加福RFID构建自动化输送和立体仓库物流方案。

硬件:

1、一个西门子PLC300为主站,四个PLC200为从站

2、倍加福RFID IC-KP-B17-AIDA1 IDENTControl interface with Ethernet interface的识别系统

系统:

因为西门子PLC,选用WinCC做组态画面,VBS实现MES/WMS的功能。

 

课题:

因为首次选用带TCP/IP的倍加福RFID,需要解决其与WinCC的通讯问题。

 

倍加福RFID有两种方式可以进行通讯,一、DLL,通过加载和调用所提供的DLL进行通讯;二、TCP的Socket进行通讯。

首先尝试了DLL,在WinCC中是可以调用DLL的,尝试了一个简单的DLL进行测试。

在WinCC图形编辑器中添加一个按钮,2个输入输出框。在按钮点击事件中创建以下代码:

#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{

#pragma code ("c:/DLL/T1_C.dll")  //指定绝对路径,网上有说放在WinCC/bin目录的,好像不靠谱还是这样好。
int aufruf1(int a);  //声明函数
#pragma code ()

int value;
value = GetTagDouble("var1"); //Return-Type: double
SetTagDouble("result",aufruf1(value)); //Return-Type: BOOL

}

 

其中T1_C.dll里有一个返回参数+100的aufruf1函数。详见 http://www.cnblogs.com/ohiolee/articles/3498381.html

但是倍加福提供的RFID_TCP_DLL及示例代码是C++的,没怎么弄明白要怎么声明里面的函数,还有类的问题。代码如下:

/* in your c++ header file */

#include "RFIDTCP.h"
#pragma comment(lib, "..\\impDLL\\PF_RFID_LIB.lib")

/* in your c++ CPP file */

void RFID_test()
{
    int ret;
    RFIDTCP *pRFIDTCP;
    pRFIDTCP=new RFIDTCP;
    rfidMSG *pRfidMSG;
    pRfidMSG= new rfidMSG;
    pRFIDTCP->setupDevice("192.168.40.119",2);
    
    int startAddr=0;
    int wordNum=0;
    int channel;
    int ms_BlocTimeout=1000;
    int retStatus;

    channel=1;

    pRFIDTCP->connectDevice(ms_BlocTimeout);

    /* CT Test */
    pRfidMSG->reset();
    ret=pRFIDTCP->rfidCT(channel,pRfidMSG->pMsgBuff,"21",&retStatus);
    TRACE("CT [ret=%d][%s][status=%d]\n",ret,pRfidMSG->pString,retStatus);

    
    startAddr=0;
    wordNum=26/4+1;

    Sleep(500);
    /* SW Test */
    pRfidMSG->reset();
    ret=pRFIDTCP->rfidSW(channel,startAddr,wordNum,pRfidMSG->pMsgBuff,"zyxvwutsrqponmlkjihgfedcba",&retStatus);
    TRACE("SW [ret=%d][%s][status=%d]\n",ret,pRfidMSG->pString,retStatus);

    /* SR Test */
    
    pRfidMSG->reset();
    ret=pRFIDTCP->rfidSR(channel,startAddr,wordNum,pRfidMSG->pMsgBuff,&retStatus);
    TRACE("SR [ret=%d][%s][status=%d]\n",ret,pRfidMSG->pString,retSta
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值