博文

Codesys控制器获取控制器网口MAC地址

笔记

前言

随着项目的迭代,控制器的MAC地址这种具有唯一标识的代码变得越来越重要了。今天就来分享一个代码段用于获取MAC地址。

正文

1.加载库

SysEthernet 3.5.12.0

2.编写程序

2.1 新建程序

GetMacAddress

2.2 局部变量
VAR
    bDone             : BOOL ;
    DiCountNet        : DINT;
    DiAdapter         : DINT;
    StrNameNet        : STRING;
    StrDescritionNet  : STRING ;
    ArrByMacAddress   : ARRAY[1..6] OF BYTE ;
    ArrMacAddress     : ARRAY[0..9] OF ARRAY[1..6] OF BYTE ;  
    StrTempMacAddress : STRING;
    StrMacAddress     : ARRAY[0..9] OF STRING ; 
END_VAR    
2.3 程序代码段
IF NOT bDone THEN
	getNumberofadapters(pdiNumberOfAdapters:= ADR(DiCountNet));
	FOR DiAdapter := 0 TO DiCountNet BY 1 DO
		getadapterinfo(
			iAdapterNum  := DiAdapter, 
			pbName       := ADR(StrNameNet), 
			pbDescrition := ADR(StrDescritionNet), 
			iBuffersize  := SIZEOF(StrNameNet), 
			iMacLength   := 6, 
			sMacAdress   := ADR(ArrByMacAddress));
		ArrMacAddress[DiAdapter] := ArrByMacAddress ;
		StrTempMacAddress        := Byte_To_HexString(B:= ArrByMacAddress[1]);
		StrTempMacAddress        := CONCAT(STR1:= StrTempMacAddress, STR2:= Byte_To_HexString(B:= ArrByMacAddress[2]));
		StrTempMacAddress        := CONCAT(STR1:= StrTempMacAddress, STR2:= Byte_To_HexString(B:= ArrByMacAddress[3]));
		StrTempMacAddress        := CONCAT(STR1:= StrTempMacAddress, STR2:= Byte_To_HexString(B:= ArrByMacAddress[4]));
		StrTempMacAddress        := CONCAT(STR1:= StrTempMacAddress, STR2:= Byte_To_HexString(B:= ArrByMacAddress[5]));	
		StrTempMacAddress        := CONCAT(STR1:= StrTempMacAddress, STR2:= Byte_To_HexString(B:= ArrByMacAddress[6]));
		StrMacAddress[DiAdapter] := StrTempMacAddress;
	END_FOR ;	
    bDone := TRUE ;
END_IF ;

结尾

项目中可以采用MAC作为控制器的管理,也可以作为项目的比对的标识。

← 返回博文列表