C#으로 PLCnext 콘솔 애플리케이션 개발하기: 초보자 가이드
이 튜토리얼은 PLCnext Control 장치용 간단한 'Hello World' 콘솔 애플리케이션을 만드는 방법을 보여줍니다. 애플리케이션은 C#으로 작성되며 .NET Core를 타겟으로 합니다.
이 튜토리얼은 PLCnext 런타임 완전히 외부에서 실행되는 C# 애플리케이션을 위한 것입니다. eCLR을 타겟으로 하는 C# 애플리케이션은 PLCnext Info Center의 eCLR 섹션을 참조하세요.
설치 튜토리얼에서는 PLC에 .NET Core를 설치하는 방법을 보여주었습니다. 그 경우 공통 .NET dll의 최소 중복으로 PLC에서 .NET Core를 타겟으로 하는 여러 애플리케이션을 실행할 수 있습니다.
대안으로, .NET Core 프레임워크가 설치되지 않은 PLC에서 .NET Core 애플리케이션을 실행할 수 있습니다. 이 경우 애플리케이션에 필요한 모든 .NET 종속성이 애플리케이션과 함께 배포됩니다. PLC에서 단 하나의 .NET Core 애플리케이션만 필요한 프로젝트에 적합할 수 있습니다.
이 튜토리얼은 두 번째 유형의 애플리케이션을 다룹니다.
이 튜토리얼에서는 다음을 사용합니다:
- 펌웨어 2021.0.3이 설치된 AXC F 2152. .NET Core 설치 불필요.
- Visual Studio 2019. 이 경우 PLCnext 전용 애드인이나 SDK 불필요.
절차
-
Visual Studio에서 'C# 콘솔 앱 (.NET Core)' 템플릿을 사용하여 새 프로젝트를 생성합니다.
-
프로젝트 루트 디렉토리에 runtimeconfig.template.json 파일을 추가하고 다음 내용을 포함시킵니다:
{
"configProperties": {
"System.Globalization.Invariant": true
}
}
이 속성 설정의 이유는 설치 튜토리얼의 '배경 정보' 섹션에 설명되어 있습니다.
-
프로젝트 파일(.csproj)의 PropertyGroup 섹션에 다음 줄을 추가합니다:
<RuntimeIdentifiers>linux-arm</RuntimeIdentifiers>
이것은 컴파일러에게 Linux 32비트 플랫폼을 타겟으로 하라고 지시합니다. .csproj 파일은 다음과 비슷해야 합니다:
<Project sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RuntimeIdentifiers>linux-arm</RuntimeIdentifiers>
</PropertyGroup>
</Project>
-
솔루션 탐색기에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 터미널을 엽니다.
-
터미널에서 다음 명령어를 실행합니다:
dotnet build ConsoleApp1.csproj
dotnet publish -c RELEASE -r linux-arm ConsoleApp1.csproj -o MyApp
ConsoleApp1은 솔루션 이름이고, MyApp은 애플리케이션이 게시될 출력 디렉토리 이름입니다. 필요시 DEBUG 모드로도 게시할 수 있습니다.
-
출력 디렉토리와 그 내용을 (예: WinSCP를 사용하여) PLC로 복사합니다.
-
(예: PuTTY 또는 ssh를 사용하여) PLC에서 셸 세션을 엽니다.
-
실행 파일 형식 확인:
file /opt/plcnext/MyApp/ConsoleApp1
ConsoleApp1: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=887a06cd9735de5da4b686517f69d68779571cec, stripped
애플리케이션이 올바른 플랫폼용으로 빌드되었음을 확인합니다.
-
실행 파일에 실행 권한이 있는지 확인합니다:
chmod a+x /opt/plcnext/MyApp/ConsoleApp1
-
애플리케이션 실행:
/opt/plcnext/MyApp/ConsoleApp1
Hello World!
질문/의견?
질문이나 의견이 있으시면 PLCnext 커뮤니티 포럼에서 문의하세요.