当前位置:首页 > 软件设计 > 正文内容

PLC结构化文本(ST)——结构体特点外部调用(Issue)

邻居的猫1个月前 (12-09)软件设计497

PLC Structured Text Object Oriented Programming

PLC结构化文本(ST)——结构体特点外部调用(Issue)

问题

好久之前在做OOP编程时,遇到过这样一个问题,创立一个特点类型是结构体,而我在外部拜访结构体内部成员时编译器(TwinCAT3)直接报错。这应该是体系Bug,乃至是CODESYS底层的Bug。

  • 结构体
TYPE myStruct :
STRUCT
	value1 : INT;
	value2 : STRING;
	value3 : REAL;
END_STRUCT
END_TYPE
  • FB
FUNCTION_BLOCK POU
VAR
	mystruct : myStruct;
END_VAR
  • 特点
PROPERTY P_Mystruct : mystruct
// Get办法
P_Mystruct := mystruct;
  • Main
PROGRAM MAIN
VAR
	pou:POU;
END_VAR
pou.P_Mystruct.value1; // 已经在报错。

过错C0185: It is not possible to perform component access '.', index access '[]' or call '()' on result of function call. Assign result to help variable first.

官方解决方案

最近在虚拟学院逛了逛,忽然看到官方给出了这样的一个解决方案,这儿共享一下。

  • 解决方案

在声明特点的运用将其设置为REFERENCE TO 结构体,再get顶用REF=,就能够了——倍福虚拟学院

  • 特点
// 特点界说
PROPERTY P_Mystruct : REFERENCE TO mystruct
// Get办法
P_Mystruct REF= mystruct;
  • Main
PROGRAM MAIN
VAR
	pou:POU;
END_VAR
pou.P_Mystruct.value1 := 1;
pou.P_Mystruct.value2 := 'test';
pou.P_Mystruct.value3 := 3.14;

这个办法的确有用,没有报错,可是有没有发现另一个问题(Issue)。这儿只运用特点get办法为的便是约束拜访(ReadOnly)。上面测验例程中不只能够拜访结构体特点内部成员,并且还能够对结构体特点内部成员赋值。代码安全性大大下降。

总结

综上所述,结构体特点内部成员拜访运用官方解决方案的确能够,但在程序编写阶段还需留意自己的变量成员的安全性。最终,仍是期望官方赶忙修正这个Bug吧。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=307

分享给朋友:

“PLC结构化文本(ST)——结构体特点外部调用(Issue)” 的相关文章

软件设计师考试真题,掌握核心考点,提升应试能力

1. 2021年上半年软考软件设计师真题完整版: 可以在CSDN博客上找到2021年上半年软考软件设计师的真题,包括SQL相关的知识点。详细内容请参考。2. 2023年上半年软件设计师考试真题解析: 2023年上半年软件设计师考试真题尚未发布,但可以参考一些常见的考点和技巧。详细内容请参...

面向对象五大原则,面向对象五大基本原则

面向对象五大原则,面向对象五大基本原则

面向对象编程(OOP)的五大原则是指导面向对象设计的核心原则,它们有助于确保代码的可重用性、可维护性和可扩展性。这五大原则分别是:1. 单一职责原则(Single Responsibility Principle, SRP): 一个类应该只有一个引起变化的原因。换句话说,一个类应该只有一个职责...

公司顶层架构设计图,构建高效企业运营的蓝图

公司顶层架构设计图,构建高效企业运营的蓝图

公司顶层架构设计图通常用于展示公司整体的组织结构、职责分配和业务流程。这种图表可以帮助员工和管理者更好地理解公司的运作方式,以及各个部门之间的关系。以下是一个简单的公司顶层架构设计图的示例:```│├── │ ├── │ │ ├── │ │ │ ├── │ │ │...

初创企业股权架构设计,关键要素与策略

初创企业股权架构设计,关键要素与策略

1. 明确创始人股权比例: 创始人股权比例应根据各自对企业的贡献、投入的资金、承担的风险等因素进行分配。建议创始人之间进行充分沟通,达成一致意见。2. 预留期权池: 为吸引和留住人才,企业可以预留一定比例的股权作为期权池。期权池的股权比例一般占总股本的10 %。3. 设置股权激励计划:...

面向对象的多态,深入解析面向对象的多态

面向对象编程(OOP)中的多态是指一个对象能够以多种形式表现自己的能力。它允许不同的对象对同一消息做出不同的响应。多态性在OOP中是一个重要的概念,它使得代码更加灵活和可扩展。多态性可以通过两种方式实现:编译时多态和运行时多态。1. 编译时多态(也称为静态多态):在编译时,编译器就已经确定了对象的类...

面向对象开发方法,面向对象开发方法概述

面向对象开发方法,面向对象开发方法概述

面向对象开发方法(ObjectOriented Development Method,简称OODM)是一种软件工程的方法,它强调软件系统的设计和实现应该基于对象的概念。对象是具有状态(属性)和行为(方法)的实体,它们可以模拟现实世界中的事物。面向对象开发方法的主要特点包括:1. 封装:对象将数据(属...