산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

PLCnext에서 Go 애플리케이션 빌드하기: 초보자 가이드

이 블로그는 PLCnext에서 Go로 애플리케이션을 빌드하는 첫 단계를 안내합니다. Go에 익숙하지 않은 분들을 위해 참조 웹사이트(www.golang.org)를 인용합니다.

Go를 좋아하는 특별한 이유는 웹 애플리케이션 생성이 쉽지만 정적 바이너리로 컴파일되기 때문에 PLCnext 컨트롤러에 프로그램을 배포하기 위해 패키지를 설치할 필요가 없다는 점입니다.

이 블로그에서는 PLCnext용 컴파일만 다루며 두 개의 작은 프로그램을 예로 듭니다. 컴파일이 잘 되는지 확인하기 위한 고전적인 Hello World 프로그램과 Go의 강력함을 보여주기 위한 작은 REST API 호출. 이 블로그 작성 시 사용한 환경:

자, Hello World 애플리케이션으로 시작해 봅시다. HelloWorld.go라는 새 파일을 만들고 Hello World 예제 코드를 붙여넣습니다. 파일을 저장하고 터미널을 열어 올바른 디렉토리에 있는지 확인하세요.

아래 명령으로 Go 코드를 빌드하고 실행합니다. 모든 것이 올바르게 설치됐다면 터미널에 Hello World가 표시됩니다. 애플리케이션을 아직 빌드 중일 때 이 명령을 사용할 수 있습니다.

go run HelloWorld.go

앞서 말했듯 정적 바이너리로 빌드하는 것도 가능합니다. 첫 번째 명령으로 빌드, 다음 명령으로 새로 생성된 바이너리 실행. 모든 게 잘 되면 터미널에 다시 Hello World가 표시됩니다.

go build HelloWorld.go
./HelloWorld

이 바이너리를 PLCnext 컨트롤러에서 실행하려 하면:

./HelloWorld: cannot execute binary file: Exec format error

Ubuntu 머신과 PLCnext의 아키텍처가 일치하지 않기 때문입니다. 다행히 PLCnext용으로 작동하는 바이너리를 만드는 건 꽤 쉽습니다(단, 이 새 바이너리는 Ubuntu 머신에서 실행되지 않습니다). 아래와 같이 빌드 환경을 설정하면 Go가 PLCnext용 바이너리를 생성합니다.

env GOOS=linux GOARCH=arm GOARM=7 go build

우리 예제에서는:

env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go

이 파일을 컨트롤러로 전송하고 실행하면 다시 Hello World가 뜨는 것을 볼 수 있습니다. 만약 그렇다면 축하합니다. PLCnext 컨트롤러용 첫 Go 프로그램을 작성했습니다! REST API 호출 예제를 보고 필요에 맞게 수정해 보세요!

이전 단계에 문제가 있나요?
chmod +x HelloWorld로 파일을 실행 가능하게 만들었나요?

Hello World 예제

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}

REST API 호출 (HTTP GET)

package main

import (
    "crypto/tls"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} // 잘못된 인증서로 인한 TLS 체크 비활성화
    MakeRequest()
}

func MakeRequest() {
    resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs") // 본인의 IP 주소와 변수로 변경
    if err != nil {
        log.Fatalln(err)
    }

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }

    log.Println(string(body))
}

산업기술

  1. Code-Ready Containers: Red Hat OpenShift로 클라우드 네이티브 프로세스 자동화 실전 가이드
  2. 세라믹 3D 프린팅 실용 가이드: 기술, 소재, 설계 팁
  3. 염기성 염료의 이해: 용도, 안전성 및 산업 응용
  4. TJBot 시작하기: 나만의 AI 로봇 제작, 설정, 음성 제어
  5. 라즈베리 파이 3에 RAK 831 LoRa 게이트웨이 배포 단계별 가이드
  6. 라즈베리 파이 3에 RAK831 모듈로 LoRa 게이트웨이 구축하기 - 단계별 가이드
  7. 보험업계 AI: 실전 구현을 위한 실용적 스타터 가이드
  8. 아두이노 입문 튜토리얼 01: 첫 프로젝트 시작하기
  9. 이글 그룹 소개: 고품질 금속 가공의 파트너
  10. Cat® 기계 최적화: My.Cat.com 완벽 활용 가이드