亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

在 C++ 中使用简单和复杂的数据类型

大家好,

在这篇博文中,我们将探索 C++ 和 PLCnext Engineer 中的简单和复杂数据类型。它将包含两个不同的部分,一个简单的练习和一个复杂的练习。

本教程假设您有一定的 C++ 和 PLCnext Engineer 经验。

开始

首先,您需要合适的工具、C++ 编辑器、PLCnext Engineer 软件和 Phoenix Contact PLC 来运行它。这些是我用过的材料:

我个人选择 Visual Studio 作为我的 C++ 编辑器,但也可以使用 eclipse。教程的链接可以在这里找到:

至于 PLCnext Engineer,可以在我们的网站上找到。

简单的练习

对于第一个示例,我们将创建一个小应用程序来检查是否从 PLC 发送了正确的数字。首先创建一个新的 C++ 项目。然后我们转到头文件,名称应该类似于 [NameOfTheProject].hpp,还有名称为 [nameOfTheProject]component.hpp 的文件,我们不会使用这些文件。一旦你进入头文件,你面前就会出现一堵代码墙,但不要担心它会很简单。首先,我们将定义端口,一个 IN 和一个 OUT。它们可以这样定义,记住这仅适用于简单的数据类型:

//#端口
//#attributes(输入)
//#name(输入测试)
int64 InputTest =0;


//#端口
//#属性(输出)
//#name(输出测试)
int64 输出测试 =0;

然后我们转到下一个文件,我们将在其中进行实际编码。这应该命名为 [NameOfTheProject].cpp 并且不应包含太多内容。我们将很快改变这一点。让我们添加一些代码来使用 If 或 switch case 检查数字,这取决于您。我在这个中使用了 if 结构:

void PLMProjectReadInputProgram::Execute()void PLMProjectReadInputProgram::Execute(){
if (InputTest ==1) {
输出测试 =15;}


if (InputTest ==2) {
输出测试 =150;}


if (InputTest ==3) {
输出测试 =1500;}


if (InputTest ==4) {
输出测试 =15000;}

}

在我们转向 PLCnext 工程师之前,我们需要将这个 C++ 项目制作成一个库,以便 PLC 理解。只需单击屏幕顶部的构建即可完成此操作。这应该会运行一段时间,并会在库完成时告诉您。如果此步骤不清楚,我强烈建议您查看上面列出的教程。

导航到“本地”文件夹中编程下的组件选项卡中的主程序,然后在主屏幕中选择变量以查看 PLC 中的变量。在这里,我们可以选择名称和数据类型以及用法。 PLCnext 工程师中的数据类型需要与 C++ 程序中的相同,可以在此处找到指向不同类型及其等号的链接。用法将定义变量是本地的还是可用于从外部程序或变量发送和接收数据。

完成此操作后,我们将在添加新库后开始连接变量。可以这样做:

您制作的库可以在项目的 bin 文件夹中找到,将其复制到 PLCnext 工程师的库文件夹中。位置如下所示:

C:\Users\Public\Documents\PLCnext Engineer\Libraries

之后,我们返回 PLCnext 工程师将库添加到我们的程序中。我们将导航到组件选项卡,打开库框并右键单击库。然后单击“添加用户库”,这将带您进入我们之前访问的库文件夹。选择您要使用的库并继续。

完成后,我们需要将程序添加到任务中,如下所示。在工厂区域内的屏幕左侧双击 PLCnext。它应该在中间打开。然后转到“任务和事件”选项卡并在 MainInstance 之后添加一个新程序。这可以通过两种方式完成,通过选择程序类型或从“PLCnext Components &Programs”下的组件区域拖动它。

然后变量应显示在“任务和事件”选项卡旁边的“端口列表”选项卡中。打开它,你会看到来自 C++ 和 PLCnext 的所有变量。它应该看起来像这样:

如果你做的一切正确,你应该能够将 PLC 的 OUT 端口连接到 C++ 程序的 IN 端口,反之亦然,应该看起来像这样。如果这不起作用,请尝试检查您的数据类型。

为了向我们的变量添加一个虚拟值,让我们导航到组件选项卡中的主程序,然后在主屏幕中选择代码以查看代码并添加一些我们自己的代码。我们只是将变量设置为一个数值,在本例中为 1。

现在让我们将项目部署到 plc,我们应该得到 15 作为 C++ 代码的响应。您可以在之前的“端口列表”中看到变量。

复杂的运动

对于这个例子,我们将制作一个小型应用程序,它将向 PLC 发送一个结构数组以及从 PLC 发送一个结构数组。首先创建一个新的 C++ 项目。然后我们转到头文件,名称应该类似于 [NameOfTheProject].hpp,还有名称为 [nameOfTheProject]component.hpp 的文件,我们不会使用这些文件。一旦你进入头文件,你面前就会出现一堵代码墙,但不要担心它会很简单。首先,我们需要为这个例子制作一个结构体,我们将为汽车制作一个结构体。这样做如下:

public:// 类型定义
结构 StrCar{
静态字符串<80> sbrand;
int16 iHorsepower;
int16 iYear;
boolean xInsured;
};

!重要的! C++和PLCnext工程师中的名称和类型需要相同!数据类型可以在这里找到。

然后我们将定义端口,一个 IN 和一个 OUT,因为它们将是数据列表,使它们成为这样。同样重要的是使其成为“汽车”列表。这样做是这样的:

//#端口
//#attributes(输入)
//#name(CarIn)
StrCar CarToC[2];

//#端口
//#attributes(输出)
//#name(CarOut)
StrCar CarFromC[2];

然后我们转到下一个文件,我们将在其中进行实际编码。这应该命名为 [NameOfTheProject].cpp 并且不应包含太多内容。我们将很快改变这一点。在这里,我们将更改一号车和二号车的值。

//设置汽车列表的第一个成员等于来自PLC的汽车
CarFromC[0].sbrand =CarToC[1].sbrand;
CarFromC[0].iHorsepower =CarToC[1].iHorsepower;
CarFromC[0].iYear =CarToC[1].iYear;
CarFromC[0].xInsured =CarToC[1].xInsured;

//给第二个成员添加虚拟值
CarFromC[1].sbrand =CarToC[0].sbrand;
CarFromC[1].iHorsepower =CarToC[0].iHorsepower;
CarFromC[1].iYear =CarToC[0].iYear;
CarFromC[1].xInsured =CarToC[0].xInsured;

在我们转向 PLCnext 工程师之前,我们需要将这个 C++ 项目制作成一个库,以便 PLC 理解。只需单击屏幕顶部的构建即可完成此操作。这应该会运行一段时间,并会在库完成时告诉您。如果此步骤不清楚,我强烈建议您查看上面列出的教程。

现在,在我们开始在 PLCnext 工程师中创建变量之前,我们需要创建自己的数据类型,在本例中是一个结构汽车和一个汽车列表。为此,我们需要一个数据类型文件,可以在这里找到并创建:

如果还没有打开这个文件,那么我们可以开始制作我们自己的结构体,如下所示:

类型

StrCar:

结构

s品牌:字符串;
iHorsepower:INT;
iYear:int;
xInsured:BOOL;

END_STRUCT

END_TYPE

!重要的! C++和PLCnext工程师中的名称和类型需要相同!数据类型可以在这里找到。

制作完结构体后,我们需要制作一个这种类型的数组,并像这样在我们当前所在的文件中完成:

类型

carList:ARRAY[0..1] OF StrCar;

END_TYPE

要创建具有“carList”类型的变量,请导航到“programming”下组件选项卡中的主程序,然后在“Programs”文件夹中,然后在主屏幕中选择变量以查看 PLC 中的变量。在这里,我们可以选择名称和数据类型以及用法。作为数据类型选择我们定制的:

完成此操作后,我们将在添加新库后开始连接变量。可以这样做:

您制作的库可以在项目的 bin 文件夹中找到,将其复制到 PLCnext 工程师的库文件夹中。位置如下所示:

C:\Users\Public\Documents\PLCnext Engineer\Libraries

之后,我们返回 PLCnext 工程师将库添加到我们的程序中。我们将导航到组件选项卡,打开库框并右键单击库。然后单击“添加用户库”,这将带您进入我们之前访问的库文件夹。选择您要使用的库并继续。

完成后,我们需要将程序添加到任务中,如下所示。在工厂区域内的屏幕左侧双击 PLCnext。它应该在中间打开。然后转到“任务和事件”选项卡并在 MainInstance 之后添加一个新程序。这可以通过两种方式完成,通过选择程序类型或从“PLCnext Components &Programs”下的组件区域拖动它。

然后变量应显示在“任务和事件”选项卡旁边的“端口列表”选项卡中。打开它,你会看到来自 C++ 和 PLCnext 的所有变量。它应该看起来像这样。

如果你做的一切正确,你应该能够将 PLC 的 OUT 端口连接到 C++ 程序的 IN 端口,反之亦然,应该看起来像这样。如果这不起作用,请检查变量的数据类型和名称。

为了向我们的变量添加一个虚拟值,让我们导航到组件选项卡中的主程序,然后在主屏幕中选择代码以查看代码并添加一些我们自己的代码。我们只是将变量设置为一些汽车细节。这些可以随机选择,但需要匹配数据类型。 (取决于您选择的内容,在您使用字符串的地方使用字符串等)

CarToC[0].sBrand :=‘Audi’;
CarToC[0].iHorsepower :=200;
CarToC[0].iYear :=2020;
CarToC[0].xInsured :=TRUE;

CarToC[1].sBrand :=‘马自达’;
CarToC[1].iHorsepower :=120;
CarToC[1].iYear :=2001;
CarToC[1].xInsured :=FALSE;

一旦我们部署了这个例子,输出列表应该在输入列表中交换。您可以在之前的“端口列表”中看到变量。


工业技术

  1. 云无限,以及超越
  2. 复杂的电压和电流计算
  3. C# 基本输入和输出
  4. C++ 类和对象
  5. C++ 指针和数组
  6. C++ 中的结构和类
  7. C和C++之间的区别
  8. C++ 日期和时间
  9. 编写程序:数字化简单高效
  10. 使用 grpcurl 的远程 gRPC
  11. 如何在 C# 中创建一个简单的 PLCnext 控制台应用程序
  12. 在 PLCnext 上安装 apt(-get) 包管理器