WinAVR-20100110-install.exe

이거 깔고

 

AvrStudio419_730Setup.exe.

이거 깔고

https://fishpoint.tistory.com/460?category=491785

 

WinAVR을 쉽게 사용할 수 있게 만들어준것이다

사용법 아직모름 아두이노에서 데이터 추출 가능하게 하는건 맞는데 

알아봐야함

 

아는분 팁좀 주세요

블로그 이미지

Or71nH

,

http://www.mqtt-dashboard.com/index.html

 

MQTT Dashboard

MQTT connection settings Host: broker.hivemq.com TCP Port: 1883 Websocket Port: 8000

www.mqtt-dashboard.com

 

여기서 서버를 접속하여 통신한다

상단 위에 MQTT web clent 를 접속하고

 

통신방법은

위에 오른쪽 TCP PORT 를 포트로 하는 broker.hivemq.com 주소를 써주면 된다 

 

저기 뜨는 아이디가 태그의 값 주소이고

이렇게 해주면 된다

 

블로그 이미지

Or71nH

,

모두버스 통신은 이런식으로 보내진다.

/***********************************************************
 * global variables
 *  - CAUTION : do not declare 'host' as global variable name. already declared.
 ***********************************************************/

/***********************************************************
 * Parse Address(주소 해석)
 *  - Optional
 ***********************************************************/
function parseAddress(addr)
{
	if(addr.length < 1) return null;
	if(addr == "0001"){
		var id = 0x01;
	}else if (addr == "0301" ){
		var id = 0x12D;
	}else if(addr == "0302"){
		var id = 0x12E;
	}else {
		return null;
	}
	return host.createDeviceAddress(addr, addr, id, 0);
}

/***********************************************************
 * Build a packet for 'Read Request'(읽기 요청 패킷 생성)
 *  - Mandatory
 ***********************************************************/
function buildReadRequest(value, output, session)
{	
	var id = value.address.position;
	output.bigEndian=false;
	output.putInt8(0x01);
	output.putInt8(0x03);
	if (id == "0301"){
	output.putInt8(0x01);
	output.putInt8(0x2D);
	}else if( id == "0302"){
	output.putInt8(0x00);
	output.putInt8(0x2E);
	}else if(id == "0001"){
	output.putInt8(0x00);
	output.putInt8(0x01);
	}
	output.putInt8(0x00);
	output.putInt8(0x01);
	

	var crc = output.getCRC16(0,6);
	host.log("crc : "+crc);
	output.putInt16(crc);
	//output.save("c:/mod_output.dat");
	output.commit();
}

/***********************************************************
 * Parse a packet of 'Read Repsonse'(읽기 응답 패킷 해석)
 *  - Mandatory
 ***********************************************************/
function parseReadResponse(input, value, session)
{
	if(input.length <7){
	//아직 데이터를 덜 받았기 때문에 계속 대기해야 하므로 false리턴
	return false;
	}
	input.bigEndian=true;
	//input.save("c:/mod_input.dat");
	input.skip(3);
	data = input.getInt16();
	value.intValue=data;
	input.skip(2);
	input.commit();
	//데이터를 모두 받고 처리가 끝났기 때문에 true 리턴
	return true;
}

/***********************************************************
 * Build a packet for 'Write Request'(쓰기 요청 패킷 생성)
 *  - Optional
 ***********************************************************/
function buildWriteRequest(value, output, session)
{
	var data = value.intValue;
	output.bigEndian = true;
	output.putInt8(0x01);
	output.putInt8(0x06);
	output.putInt8(0x01);
	output.putInt8(0x2D);
	output.putInt16(data);
	output.bigEndian = false;
	var w_crc = output.getCRC16(0,6);
	host.log("crc : "+w_crc);
	output.commit();
	
}

/***********************************************************
 * Parse a packet of 'Read Repsonse'(쓰기 응답 패킷 해석)
 *  - Optional
 ***********************************************************/
function parseWriteResponse(input, value, session)
{
	if(input.length <7){
	return false;
	}
	
	input.bigEndian = true;
	
	input.skip(8);
	input.commit();
	
	return true;
}

 


var h = '0 3'; 
    for (var i = 0; i <h.length; i++)
    {
        var message = "0x" + pad(h[i].charCodeAt(0).toString(16),2);
        console.log(message)
    }

    for (var i = 0; i <h.length; i++)
    {
        var message = h[i].charCodeAt(0);
        console.log(typeof(message))
    }


function pad(n, width) {
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}
//문자 유니코드 16진수로 변환

블로그 이미지

Or71nH

,

이런 값들을 받앗다

이거로 주소 값 좀 보면서 해야한다

 

밑에 바이너리는 확인 하는 값을 해주는 거니 마즈막에 넣어주어야 한다 

 

한개씩 읽기는 이렇게 생겼음

01 03 0001 0001 D5CA

1byte 1byte 2byte 2byte 2byte  
01 03 0001 0001 D5CA  
국번 작업코드 읽기 주소 갯수 확인하는값  

 

 

 

한개 씩 쓰기는 이렇게 생겻음

01 06 012D 00FA 987C

1byte 1byte 2byte 2byte 2byte  
01 06 012D 00FA 987C  
국번 작업코드 주소 값설정 확인값  

 

여러개 쓰기는 이렇게 생겼음

01 10 012D 0001 02 00FA

1byte 1byte 2byte 2byte 1byte 2byte 2byte
01 10 012D 0001 02 00FA 30ae
국번 이거 16임 여러개쓰기 주소 한개 읽기 값 이걸로 확인하는값

나중에 X-SCADA 에서 상세히 설명 하겠다

'[ 충남인력개발원 ] (2019) > ┗SCADA' 카테고리의 다른 글

X-SCADA MQTT 통신  (0) 2020.02.06
유저사용 시리얼 통신 만들기 X-SCADA  (0) 2020.02.05
SCADA-X 모두버스 통신  (0) 2020.02.04
X-SCADA 문자 나누기  (0) 2020.01.31
페이지 스크립트 로그인  (0) 2020.01.30
블로그 이미지

Or71nH

,

 

 

띠우기만 하면 실행됨

블로그 이미지

Or71nH

,