WinAVR-20100110-install.exe

이거 깔고

 

AvrStudio419_730Setup.exe.

이거 깔고

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

 

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

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

알아봐야함

 

아는분 팁좀 주세요

블로그 이미지

Or71nH

,

https://deneb21.tistory.com/416

 

MQTT 개념과 Mosquitto 설치 및 사용

이번에는 사물인터넷에서 각광 받고 있는 메시지 전송 프로토콜인 MQTT (Message Queue Telemetry Transport) 에 대해서 알아보겠습니다. MQTT 는 IBM 에 의해서 개발되었고 2014년 국제 민간 표준기구인 오아시스..

deneb21.tistory.com

 

자세한건 이분 블로그

 

 

s

이제 난 X-SCADA 에서 사용법

 

이렇게 접속이 되었으면 -t 안에 써져있는게 태그의 값이 되고 

localhost 는  주소이다 내주소 쓸러고 localhost 를 사용하였다

192.168.0.10 이런거 쓰면 그쪽으로 접속한다

 

 

이렇게 장치는 만들어준다

 

 

 

 

저기 -t 다음 user 만 쓰면 안됨 /user 써야됨

 

그럼 문자를 보내면

잘받아진다

'[White Hack] > CMD(windows)' 카테고리의 다른 글

wifi hack program  (0) 2019.12.27
CMD 명령어 모음  (0) 2019.12.15
블로그 이미지

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

,