首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Codesys访问PLC元数据(ABB AC500 PLC)

从Codesys访问PLC元数据(ABB AC500 PLC)
EN

Stack Overflow用户
提问于 2020-09-14 01:41:47
回答 2查看 235关注 0票数 0

我有一个单一的PLC程序,将在多ABB AC500 PLC上运行。我需要每个PLC有一个非常不同的行为(仅限于为每个PLC选择一个唯一的整数值,以允许每个PLC上的特定事件的时间不同)。

为了允许维护单个相同的程序并将其上传到多个PLC,我考虑的策略是访问一段关于PLC的唯一元数据,以确定特定PLC的正确值。

合理的信息可能包括分配给PLC的IP地址或PLC序列号。

我仔细看过了,但找不到在运行时访问这些信息的方法-我猜模块中有一个简单的函数,它将返回这些信息中的一条或另一条?

或者也许有一种更好的方法来实现这种特定于PLC的行为?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-09-15 18:35:51

看一下自动化构建器的帮助文件( (from here),似乎应该有一个叫做内部系统库 (SysInt_AC500_Vx.lib)的库。

该库包括一个名为SLOT_PROD_ENTRY_READ的函数块,它“从通信模块的闪存中读取一行生产数据”。您可以使用手册中的搜索功能找到它。

可以读取的其中一个值是序列号。可以使用另一种解决方案,例如MAC地址。我没有ABB PLC可以试用,文档中也没有非常清晰的示例。但这应该是可能的。请注意,以下内容未经过测试。​

代码语言:javascript
复制
​VAR
    instance    : CPU_PROD_ENTRY_READ; //Might need a library namespace
    serial      : STRING(80);
END_VAR


instance(
    EN          := TRUE, 
    SLOT        := 0,
    SECTION     := 'Common',
    KEY_SEARCH​  := 'SERIAL_NR',
    INDEX       := 0,
    ACT         := FLASH_DATA_READ
);


IF instance.DONE THEN
    serial := instance.VALUE;
    
    instance(EN := FALSE);
END_IF
票数 0
EN

Stack Overflow用户

发布于 2020-11-11 23:26:02

使用以下代码片段作为mac地址。

变量:

代码语言:javascript
复制
diNumber: DINT;
iAdapter: DINT;
stName: STRING(255);
stDescription: STRING(255);
aby_address:ARRAY[1..6]OF BYTE;

程序:

代码语言:javascript
复制
getnumberofadapters(ADR(diNumber));
FOR iAdapter := 0 TO diNumber DO

    getadapterinfo(
    iAdapterNum := iAdapter,
    pbName := ADR(stName),
    pbDescrition := ADR(stDescription),
    iBuffersize := SIZEOF(stName),
    iMacLength := 6,
    sMacAdress := ADR(aby_address));

END_FOR
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63873759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档