'[ 충남인력개발원 ] (2019)/┗SCADA'에 해당되는 글 32건

윈도우 7 은 무선 인터넷 부터 확인해야한다

이 익숙한ㅇ 꽃개 모양 애 열어주고 없으면 설치할것 

저기에 액세스 들어간다

그리고

아두이노 SSID 를 적어서 주소를 맞쳐주고 네트워크는 WPA2=PSK로 하자 왠지 모름

 

비밀번호 처서 연결해준다

그럼 본인의 피씨가 핫스팟이 되어 외부 네트워크랑 공유가 가능하게 만들어준다

이런 코드표가 있다 

참고를 하여 주소의 값을 가져와야 하는데 

저기 트릭이라고 저거 불러오면 된다 

핀번호는 아두이노 할때 설정값인 걸로 알고 있다

 

 

설정값은 이렇게 장치 추가 해주고

이런식으로 추가를 해준다 

그러면 불러오기가 가능해진다

통신을 만들어줄 서버와 확인할거 CMD 틀어주고

써버임 위에거

 

이건 확인차 열어놓은거

 

 

이거할려면 mosquitto 따운 해야함 

.

https://story-of-flower.tistory.com/233

 

모스키토 통신 사용하기 windows X-SCADA

https://deneb21.tistory.com/416 MQTT 개념과 Mosquitto 설치 및 사용 이번에는 사물인터넷에서 각광 받고 있는 메시지 전송 프로토콜인 MQTT (Message Queue Telemetry Transport) 에 대해서 알아보겠습니다. M..

story-of-flower.tistory.com

 

여기에서 확인하여 다운하면됨

 

실행하면 끝

블로그 이미지

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

,