CICON 

설치 

 

http://www.cimon.co.kr/

 

㈜싸이몬 | 산업 자동화 스마트팩토리 솔루션

CIMON 싸이몬 ADM – Advanced Design & Manufacturing Expo Toronto 참가 ADM Toronto는 Pack Expo Toronto, Plast-Ex, Design & Manufacturing Canada, ATX Canada, Toronto Power & Bulk Solids라는 5개의 전시회가 합쳐진 전시회로써, 과학, 기술, 자동화, 로봇, 발명, 아이디어 산업, 기계산업에 관한 제품들을 홍보하는 자.. READ

www.cimon.co.kr

 

나는 

 

Kor_XpanelDesigner_Ver2.35_Setup_R150210.zip

 

 

CimonDsSetup_V2.7_R090714_SP4.exe

 

SetupCICON_Ver610_20160229_1935_KOR.zip

 

이렇게 찾아서  다운로드를 햇다 

 

 

 

이렇게 만들었다

 

작동 하는것은 시물레이션으로 실행해야 실행이 되니 잘 보자

 

 

만드는거는 만들고 싶은데로 만들고 

 

 

 

 

 

 

이게 나온다 

 

이거를 이제 노랭이로 바꿔준다

Simulator 

클릭 하고 확인한다

d

조기위에 왼쪽 저거 눌러준다

 

 

그냥 일단 확인

 

다 오케이~!!

 

이제 실행된다 

 

 

단축키에 대한 정보는 여기 있다

 

 

MK명령어집.pdf
2.15MB

 

 

이거부터 배우고 참고하자

 

 

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

핸드폰 어드바이스 gx works2 회로 정보 한번에 쓰기  (0) 2019.12.13
전기 24V 입출력방법  (0) 2019.12.12
Relay  (0) 2019.12.04
plc ddns, vpn ecatcher 공부할것들  (0) 2019.12.03
전기의 종류  (0) 2019.12.03
블로그 이미지

Or71nH

,

이것이 relay

 

 

220v 를 받으며 

24dc 를 보낸다

 

 

 

아날로그 와 디지털 전류의 차이

 

 

아날로그는 무한한 숫자로 하고싶은거 할 수 있다.

디지털은 0과 1밖에 없어서 밝기 조절하기가 어렵다.

 

통신이란 

 

 

 

plc 시물래이션 프로그램 실행 하고 

실행중  곡괭이 모양ㅇ누르면 뭔가 됨

막 그 뭐냐 다실행 안되고 어는지점 멈춤

 

http://cafe.daum.net/CIMONHMI

 

CIMON HMI

HMI(MMI)정보를 공유하기 위한 카페입니다.

cafe.daum.net

 

cimon HMI 정보 공유 카페

블로그 이미지

Or71nH

,

 

 

DDNS 또는 Dynamic DNS(동적 DNS)는 실시간으로 DNS를 갱신하는 방식이다. 주로 도메인의 IP가 유동적인 경우 사용된다. ip가 바뀌어도 ddns로 설정한 도메인값은 변하지 않기 때문에 용이하게 접속가능하다.

DNS란

도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.

인터넷은 2개의 주요 이름공간을 관리하는데, 하나는 도메인 네임 계층[1], 다른 하나는 인터넷 프로토콜(IP) 주소 공간이다.[2] 도메인 네임 시스템은 도메인 네임 계층을 관리하며 해당 네임 계층과 주소 공간 간의 변환 서비스를 제공한다. 인터넷 네임 서버통신 프로토콜은 도메인 네임 시스템을 구현한다.[3] DNS 네임 서버는 도메인을 위한 DNS 레코드를 저장하는 서버이다. DNS 네임 서버는 데이터베이스에 대한 쿼리의 응답 정보와 함께 응답한다.

 

 

 

VPN(Virtual Private Network)은 방화벽, 침입 탐지 시스템과 함께 현재 사용되는 가장 일반적인 보안 솔루션 중 하나이다. VPN을 이해하려면 먼저 인터널 네트워크(Internal Network)를 이해해야 한다. 알고 있겠지만 인터널 네트워크는 기업 내부 간 데이터 통신을 위한 네트워크이다.

기업의 내부 네트워크에서 주고받는 데이터는 회사 내의 업무 정보일 경우가 많고 외부에는 기밀정보이기 때문에 일반적으로 회사 내의 데이터 통신은 인터넷과 구분된 별도의 임대회선(Leased Line)1)을 사용한다.

임대회선은 무척 고가이다. 가정에서 ADSL을 사용해 1MB 정도의 속도를 이용하는 데 한 달에 3만원 정도가 든다면 임대회선은 100만원이 훌쩍 넘는 비용이 든다. 만약 회사가 여러 곳에 분산되어 있어 여러 임대회선을 사용한다면 그 비용은 상상 이상으로 커질 것이다. 이러한 임대회선의 비용 부담은 새로운 보안 솔루션 시장을 창출시켰는데, 그것이 바로 VPN이다.

간단히 얘기하면 VPN은 한 달에 3만원이면 이용할 수 있는 인터넷 회선을 임대회선과 비슷하게 사용할 수 있도록 해주는 솔루션이다. 이를 위해서는 VPN이 임대회선과 비슷한 수준의 기밀성을 제공해야 하는데, 여기에 암호화가 필요하다.

8장 암호에 대한 이해와 9장 암호를 이용한 전자상거래에서 암호화에 대해 이미 살펴보았으니 여기서는 VPN이 효과적으로 이용될 수 있는 상황을 몇 가지 쉬운 예를 통해 살펴보자.

[네이버 지식백과] VPN (정보 보안 개론, 2013. 6. 28., 양대일)

 

 

 

ecatcher https://blog.naver.com/eng0880/221156123419

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

핸드폰 어드바이스 gx works2 회로 정보 한번에 쓰기  (0) 2019.12.13
전기 24V 입출력방법  (0) 2019.12.12
CICOM 설치부터 해보자  (0) 2019.12.04
Relay  (0) 2019.12.04
전기의 종류  (0) 2019.12.03
블로그 이미지

Or71nH

,

AC 아날로그  전기

 

파장 형태

 

저기 와따갓다가 220w 는 220 번 왓다갓다하고

 

110w 는 110 번왓다갓다함

 

 

 

 

DC 디지털 전기

 

1과 0으로 되어있음

 

 

 

 

아 공부할거

 

 

cad 뭐 어느정도 할줄아니깐 괜춘

 |

 |

V

 

S/W 

plc, c 

 

|

|

v

H/W 

현장 계장

 

 

 

드디어 찾았다 

 

거버 데이터(Gerber Data) 생성 (CAM 파일 만들기)

https://www.rndtech.co.kr/

 

plc

X는 입력 

Y는 출력

블로그 이미지

Or71nH

,

비콘 위치기반 이미지 데이터 송신 프로그램.docx
1.21MB

프로젝트 결과물

프로젝트.zip
2.44MB

 

 

 

 

이미지는 바이너리(binary) 데이터이다.

MySQL은 바이너리 데이터를 저장할 때, BLOB 타입을 사용한다.

BLOP은 Binary Large Object의 약어이다.

BLOP 타입은 소팅이나 INDEX생성은 할 수 없다.

 

 

1. 테이블 추가

 

MySQL을 실행하고, 아래 명령어를 실행한다.

 

mysql> CREATE TABLE Images(Id INT PRIMARY KEY, Data MEDIUMBLOB);

 

MEDIUMBLOB 타입 데이터를 저장할 수 있는 Images 테이블을 생성한다.

BLOB 타입은 indexing을 할 수 없으므로,

INT형 Id 필드를 만들고 PRIMARY KEY로 선언한다.

MEDIUMBLOB 타입에서 이미지는 16MB까지 저장할 수 있다.

이외에도 TINYBLOB(255 Bytes), BLOB(64 KB), LONGBLOP(4GB) 타입이 있다.

 

 

 

2. 소스코드

 

그림 파일 하나를 Images 테이블에 저장하는 소스코드이다.

 

#include <my_global.h>

#include <mysql.h>

#include <string.h>

 

void finish_with_error(MYSQL *con)

{

fprintf(stderr, "%s \n", mysql_error(con));

mysql_close(con);

exit(1);

}

 

int main(int argc, char** argv)

{

// picture.jpg read binary(rb)모드로 파일을 연다.

// 실행파일과 같은 경로에 사진이 있어야 한다.

FILE *fp = fopen("picture.jpg", "rb");

if (fp == NULL) {

fprintf(stderr, "cannot open image file \n");

exit(1);

}

 

// 파일 포인터를 파일의 끝으로 옮긴다.

fseek(fp, 0, SEEK_END);

 

if (ferror(fp)) {

fprintf(stderr, "fseek() failed \n");

int r = fclose(fp);

 

if (r == EOF) {

fprintf(stderr, "cannot close file handler \n");

}

exit(1);

}

 

// 파일의 처음부터 파일 포인터가 가리키는 곳까지의 크기를 flen에 저장

int flen = ftell(fp);

if (flen == -1) {

perror("error occurred");

int r = fclose(fp);

if (r == EOF) {

fprintf(stderr, "cannot close file handler \n");

}

exit(1);

}

 

// 파일 포인터를 파일의 시작으로 옮김

fseek(fp, 0, SEEK_SET);

if (ferror(fp)) {

fprintf(stderr, "fseek() failed \n");

int r = fclose(fp);

 

if (r == EOF) {

fprintf(stderr, "cannot close file handler \n");

}

exit(1);

}

 

// 이미지 데이터를 저장할 배열 동적할당

char* data = (char *) malloc(sizeof(char) * (flen+1));

 

// 이미지 저장 함, 저장된 바이트 수가 size에 반환 됨

int size = fread(data, 1, flen, fp);

if (ferror(fp)) {

fprintf(stderr, "fread() failed \n");

int r = fclose(fp);

if (r == EOF) {

fprintf(stderr, "cannot close file handler \n");

}

exit(1);

}

 

// 파일 닫기

int r = fclose(fp);

if (r == EOF) {

fprintf(stderr, "cannot close file handler \n");

}

 

// MYSQL 구조체 초기화

MYSQL *con = mysql_init(NULL);

if (con == NULL) {

fprintf(stderr, "mysql_init() failed \n");

exit(1);

}

 

// 서버 연결

if (mysql_real_connect(con, "localhost", "user01", "1q2w3e!", "testdb",

0, NULL, 0) == NULL)

{

finish_with_error(con);

}

 

char* chunk = (char *)malloc(sizeof(char) * (2*size + 1));

mysql_real_escape_string(con, chunk, data, size);

 

char *st = "INSERT INTO Images(Id, Data) VALUES(1, '%s')";

size_t st_len = strlen(st);

 

char *query = (char *)malloc(sizeof(char) * (st_len + 2*size + 1));

int len = snprintf(query, st_len + 2*size + 1, st, chunk);

 

if (mysql_real_query(con, query, len)) {

finish_with_error(con);

}

 

mysql_close(con);

exit(0);

}

 

 

char* chunk = (char *)malloc(sizeof(char) * (2*size + 1));

mysql_real_escape_string(con, chunk, data, size);

 

binary data에서 중간에 삽입된 종결문자를 없애는 과정이다.

종결문자에 \, ', ", Ctrl+z 등이 있지만 아래에서는 \만으로 설명한다.

mysql_real_escape_string()함수는 문자열의 종료를 의미하는 '\0' 앞에

\를 붙여 '\\0'으로 만든다.

 

또한 이 함수를 사용함으로써 SQL injection attack도 예방할 수 있다.

(SQL injection attack 참고 : https://opentutorials.org/module/411/3962)

 

\를 붙이는 작업 때문에 최악의 경우 원래의 데이터의 2배짜리 버퍼가 필요하다

따라서 data버퍼 size의 2배 +1 만큼의 길이를 chunk에 할당한다.

 

 

char *st = "INSERT INTO Images(Id, Data) VALUES(1, '%s')";

size_t st_len = strlen(st);

 

쿼리문을 구성하고, strlen 함수를 통해 이 쿼리문의 길이를 구해 st_len에 저장.

 

 

char *query = (char *)malloc(sizeof(char) * (st_len + 2*size + 1));

int len = snprintf(query, st_len + 2*size + 1, st, chunk);

 

최종적으로 MySQL 서버에 보낼 쿼리문을 구성하는 과정이다.

앞서 구했던 '쿼리문의 길이'와 'chunk의 길이'를 합한

'st_len + 2*size + 1'만큼을 동적할당 한다.

그리고 snprintf를 통해서 query버퍼에 st와 chunk를 가지고

이미지 저장을 요청하는 쿼리문을 완성한다.

 

if (mysql_real_query(con, query, len)) {

finish_with_error(con);

}

 

이전까지는 mysql_query() 함수를 통해 데이터를 넣었었다.

mysql_query() 함수는 binary 데이터가 포함된 쿼리를 처리하지 못한다.

여기서는 binary 데이터를 취급하기 때문에 mysql_real_query() 함수를 사용한다.

 

 

 

 

아래 링크를 참고하여 번역 및 수정함 

http://zetcode.com/db/mysqlc/

 

 

다른 참조

http://jidolstar.tistory.com/681

 

http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21872&cat1=22&cat2=596&cat3=606&lang=k



출처: https://www.molllab.com/15 [mollLab]

출처: https://www.molllab.com/15 [mollLab]

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

Uduntu window 통신  (0) 2020.01.13
MYSQL의 모든것  (0) 2020.01.08
프로젝트 분석  (0) 2019.11.29
mysql 더 설치하기 ㅎㅎ...  (0) 2019.11.28
Mysql 리눅스 연동하기  (0) 2019.11.28
블로그 이미지

Or71nH

,