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

Go on PLCnext 시작하기

이 블로그는 PLCnext에서 Go를 사용하여 애플리케이션을 구축하는 첫 번째 단계를 안내합니다. 바둑에 익숙하지 않은 분들을 위해 참조 웹사이트 www.golang.org

를 인용하고 싶습니다.

Go를 좋아하는 특별한 이유는 웹 응용 프로그램을 만들기 쉽지만 여전히 정적 바이너리로 컴파일되므로 프로그램을 배포하기 위해 PLCnext 컨트롤러에 패키지를 설치할 필요가 없기 때문입니다.


이 블로그는 두 개의 작은 프로그램으로 PLCnext에 대한 컴파일만 처리합니다. 컴파일이 잘 되는지 확인하는 고전적인 HelloWorld 프로그램과 Go의 힘을 보여주는 작은 REST API 호출. 이 블로그를 만들 때 다음을 사용했습니다.

자, HelloWorld 애플리케이션을 시작하겠습니다. HelloWorld.go라는 새 파일을 만들고 파일 안에 HelloWorld 예제의 코드를 붙여넣습니다. 파일을 저장하고 터미널을 열고 올바른 디렉토리에 있는지 확인하십시오.

아래 명령을 사용하여 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")
}
go

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} // Disable TLS check due to bad certificate
MakeRequest()
}

func MakeRequest() {
resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs") // change to your IP adress and variables
if err != nil {
log.Fatalln(err)
}

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

log.Println(string(body))
}


산업기술

  1. 코드 준비 컨테이너:클라우드에서 프로세스 자동화 도구 시작하기
  2. 세라믹 3D 프린팅 시작하기
  3. 기본 염료에 대해 알아보기!
  4. TJBot 시작하기
  5. RAK 831 Lora Gateway 및 RPi3 시작하기
  6. RAK831 LoRa 게이트웨이 및 RPi3 시작하기
  7. AI 보험 시작하기:입문 가이드
  8. Arduino 튜토리얼 01:시작하기
  9. Eagle Group 시작하기:알아야 할 사항
  10. My.Cat.com 시작하기