기술료의 종류와 기술료 산정 방법

이미지
개요 혼자 뛰어난 프로그램을 만드는 시대는 지났다. 이미 많은 발전된 라이브러리와 알고리즘, 여러 기법들이 존재하고 이러한 기술들을 적절히 조합하는것 역시 기술이다. 여러 고급 기술들을 응용하고 적절히 조합하기 위해서는 일정의 기술료를 지불해야하는 상황이 오는데 기술료의 종류가 굉장히 많다. 본 글에서는 기술료의 종류와 분류에대해 적어보려 한다. Contents <기분이 좋아지는 마법의 사진> 여러가지 기술료의 종류 정액기술료, 경상기술료, 고정기술료, 선급기술료, 최대기술료, 최저기술료, 일괄기술료, 완불기술료, 대물기술료 등 많은 용어가 사용되고 있음  기술료 지불방식에 따른 분류 정액기술료(고정기술료-Fixed Payment)  - 제품의 판매액과 무관하게 기술의 댓가를 고정으로 지급 경상기술료(Running Royalty)  - 기술을 이용하여 개발된 제품의 판매량에 따라 기술료 지급  - 산정기준을 정하여 판매순익의 일정률을 곱하여 산출된 금액을 정기적으로 지불 선급기술료(Inital Payment)  - 계약 기간중 발생되는 기술료를 계약발효와 동시에, 혹은 초기에 지불 최소기술료(Minmum Payment)  - 계약기간에 대해 지불되어야 할 기술료의 최저금액을 지불 최대기술료(Maximum Payment)  - 기술료의 최고 상한액을 설정하여 개발된 제품의 판매량과 상관없이 한도금 내에서 지불  지불방식에 대해 알아보았으니 통상 적용되는 기술료 산정방법에 대해 알아본다.  기술료 산정 방식의 종류 기술가치평가 방법  - 수익접근법, 시장접근법, 비용접근법 등의 방법이 있으며 이러한 방법론들을 적용...

Auto reservation program using from wget and bat

이미지
개요 본 내용은 특정 홈페이지의 자동예약을 위해 사용했던 방법이다. 해당 사이트의 보안이나 법적인 문제가 될 수 있으므로 간접적으로 설명해보려한다. 많은 웹 사이트들은 웹 페이지를 통하여 예매나 예약등을 선착순으로 진행하곤 한다. 그런만큼 많은 매크로프로그램들이 돌아다니는것도 사실이다. 1차원적으로 자동으로 마우스로 클릭->새로고침->클릭->새로고침...->반복의 방법을 사용하였으나 지금시대에 그런 방법은 경쟁력이 떨어진다. 2000년경에는 마우스 자동클릭만으로 여러 예약을 손쉽게 했던 경험이 있다. 하지만 2020년이 코앞인 지금은 사정이 많이 다르다. 예매가 매크로전쟁으로 번진만큼 프로그램의 퍼포먼스에따라 예매가 되고 안되고가 확연히 갈린다. Contents <매크로 전쟁> 본인은 심플하게 wget과 bat파일을 이용하여 로그인 및 예약을 진행하는 매크로를 작성하였고 타겟 사이트에서 잘 동작하는것을 확인하였다. How to active their website 가장 중요한것은 먼저 타겟이 되는 웹 사이트가 어떤식으로 동작하는지 파학하는것이다. 어떤 페이지의 흐름을 타고 인증을 하는지. 어떤 변수들이 사용되었는지. 서버 시간은 어떠한지 등등.. 서버에대한 정보를 얻어야한다. 이러한 정보를 얻는 방법들은 너무나 방대하고 언어를 알고있어야한다... 설명하기가 난해하니 추후 다시 정리할것이다. How to log in and reservation a website using wget 먼저 wget이 대체 뭐하는 프로그램인지 알아야한다. wget프로그램은 GNU프로젝트의 일부로 HTTP, HTTPS, FTP 프로토콜로 통신할 수 있는 프로그램이다. 로그인과 예약의 ...

How to use WMI with Excel VBA

이미지
개요 엑셀의 VBA로 프로그램을 작성할때 WMI를 이용하여 원하는 기능을 도출할 수 있다. 인터프리터 언어의 한계상.. 완벽한 보안은 될 수 없지만 본 내용을 응용하여 심플한 License 코드를 작성할 수 있다. Contents <VBA : Visual Basic for Applications> Get Serial Number of Mainboard 메인보드의 시리얼 번호를 추출하는 소스코드. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Private Function SystemSerialNumber () As String Dim mother_boards As Variant Dim board As Variant Dim wmi As Variant Dim serial_numbers As String ' Get the Windows Management Instrumentation object. Set wmi = GetObject( "WinMgmts:" ) ' Get the "base boards" (mother boards). Set mother_boards = wmi.InstancesOf( "Win32_BaseBoard" ) For Each board In mother_boards seria...

How to Group control in NiagaraFramework

이미지
개요 나이아가라에서 그룹제어를 효과적으로 하는 방법에 대해 알아보자 Contents 효과적인 그룹제어하기  간단한 그룹제어  본문에서는 그룹제어를 위한 프로그램 방법을 알아본다. 물론 여러가지 방법이 있겠지만 1차원적인 방법으로 아래와같은 방법이 있다. <1차원적인 그룹 컨트롤> 얼핏 보기에는 심플하고 좋은 방법 같지만 실제로 적용해보면 문제점들이 발생한다. (특히 많은 포인트를 제어해야할때는 99%이상 문제가 발생한다) 1차원적인 방법의 문제점 NiagaraSupervisor는 PC레벨에서 동작한다. 즉, 스펙도 좋고 퍼포먼스도 좋다. 조명제어를 예를 들어보겠다. (조명을 예로 드는 이유는 한 기기가 담당하는 Points수가 많기떄문) 조명컨트롤러는 보통 약 256개의 회로를 관리한다. 회로에 대한 정보를 메인 컨트롤러가 갖고 있으며 내부에 ModbusSlave 서버를 두어 상부의 HMI나 기타 컨트롤러와 통신하게 된다. 상부에서 위와같은 방식으로 그룹제어를 하게되면 통상 비슷한 시간대에 모든 포인트에 명령을 내보내게 된다. (점심시간, 퇴근시간, 출근시간 등...) 중요한것은 위와같이 여러 포인트를 동시간대에, 한번에 명령을 내릴경우 컨트롤러가 이를 소화하기 어렵다는 점이다. 이는 출력을 내보내는 시스템에서도, 입력을 받아들이는 시스템에서도 부담스러울것이다. 심지어 임베디드 컨트롤러에 이런식으로 명령을 주고받는다면 운영자에게도, 컨트롤러에도 신뢰에 금이가는 모습을 몸소 느끼게 될것이다. 한번에 다량의 명령을 내보내는것은 웹 서버를 다운시키기위한 DDOS공격과 다를게 없다. 효과적인 그룹제어를 위한 방법 내 스스로 나의 컨트롤러를 공격하는 행위를 하면서까지 운영자들에게 그룹제어의 기능을 제공하고싶지 않다. 이런식으로 기능을 제공해봤자 제살파먹기다. 이 문제를 해결하기위해 필요한 기술은 쓰레드이다. 엔지니어들이 쓰레드를 완전히 이해하고 사용하기엔 무리가 있다. 하지만 "무엇이다" 정도의 개념을 알게된다면 어떻게 해야하는지도 궁굼해질...

Niagara Program Service 를 이용한 Batch Editor for History

이미지
개요 나이아가라 서비스를 이용해서 batch 에디터 히스토리를 알아보자 Contents History about BatchEditor in NiagaraFramework 빌딩 자동제어 프로그램. HMI 를 만들기 위해서는 반드시 해야하는 일들이 있다. 1. 사용하는 포인트를 등록하고 2. 하부장비와 통신을 위한 튜닝을하며, 3. 로직을 구성하고, 4. 히스토리를 설정하고, 5. 알람을 설정한다. 6. 최종적으로 화면에 이러한 내용을 디스플레이할 수 있도록 맵핑한다. 이러한 과정을 거침으로서 운영자들은 좀더 생산적으로 건물을 관리/운영 할 수 있다. 그렇다면. 우린 운영자들의 생산성만 존중해주어야하는가..? 물론 그렇지않다. 나이아가라 프레임워크에는 엔지니어들의 반복작업을 줄여줄 수 있는 많은 기능들이 내장되어있으며, 없더라도 프로그래밍하여 효과적인 엔지니어링을 할 수 있도록 해준다. 이 글에서는 Services -> Program Service를 이용하여 BooleanPoints와 NumericPoints에 히스토리를 한번에 등록하는법을 설명한다. Services의 ProgramService 기능 간단히 말해 Niagara System내의 오브젝트들의 배치작업을 담당하고있다. 배치작업은 반복적인 일괄 작업을 뜻하며 이로서 많은 노동력을 절감할 수 있다. 쉽게는 Batch Editor를 통해 컨트롤 할 수 있고, 본인이 NiagaraFramework에 대한 이해와 JAVA 프로그래밍 능력이 있다면 Robot Editor를 이용하여 직접 프로그래밍 하여도 된다. <Services - ProgramService> ProgramService 의 Batch Editor사용방법 이를 잘 사용하기위해서는 기본적인 자료형에대한 이해와 라이브러리의 부모자식노드에 대한 이해가 필요하다. 거창하게 설명하면 어려우니 쉽게 쉽게 풀어 보겠다. Niagara초심자의경우 기본적으로 History의 사용법에 대한 이해가 필요하니 다음의 글을 참조하라. 본 글은 기본적인것을...

RS485통신과 데이지체인(DaisyChain) 결선방식

이미지
개요 우리는 산업용 프로토콜로 Modbus를 많이 사용하고있다. Modbus에는 ModbusTCP도 있지만 ModbusRTU(rs485)도 많이 이용한다. 최근 대부분의 ModbusRTU 장비는 RS485통신을 선호하며 결선은 DaisyChain으로 하고 마지막에 종단저항을 설치하기를 권고한다. 왜일까. 왜 데이지 체인을 해야하는지 궁굼하다. 그래서 Why 에 중점을두고 왜 RS485를 사용해야하는지, 왜 RS485에서 DaisyChain을 이용해야하는지를 적어볼까 한다. (사실 저는 컴퓨터공학 전공으로 전기나 전자에 약합니다....) Contents 시리얼 통신 방식의 종류와 특징 학생때는 참 딱딱한 내용이었는데 지금은 너무나 와닿는 내용이다. 복잡하게 설명해봐야 직접 느껴보기전엔 나와같지않을까.. 하는 생각으로 간단한 표 하나 투척한다. 위의 표로 알 수 있듯이 RS485는 시리얼통신중에서 경제적 유리한 위치에 있다. 실제 산업현장이나 빌딩자동제어에서는 RS485통신이 주를 이룬다. 물론 LAN통신이나 Wireless들도 있지만 가격적으로나 엔지니어 인프라에 부담되는것이 현실이다. RS485 권장 케이블 노이즈를 줄이기위해 꼬임선을 사용하며 특성 임피던스가 120옴인 케이블 사용을 권장. CAT5 , CAT6도 RS485연결에 사용가능. 120옴의 특성 임피던스를 갖는 차폐꼬임케이블을 사용하는것이 가장 통신 품질이 좋다. <차폐 꼬임 케이블 예> 데이지체인(Daisy Chain) 의 결선방법과 이유 한마디로 정의하면 "반드시 순서대로 장비를 거쳐서 연결하라" 이다. 아래의 그림을 참고하자. 쉽게말해.. 중간에 뭐 거...

NiagaraWorkbench의 Modbus Polling Config 옵션을 이용하여 트래픽 줄이기

이미지
개요 How to communicate faster use the Modbus protocol 산업용 프로토콜인 모드버스를 이용하여 데이터를 얻거나 제어한다. 본 내용에서는 모드버스 프로토콜을 이용하여 통신 트래픽을 줄이기 위한 방법으로 데이터를 읽거나 쓰기위한 범위를 지정하는 방법에 대해 알아본다. 아.. 물론 Niagara Workbench 에서 말이다~ Contents Understanding Modbus Protocol Modbus Protocol 은 아래와같이 구성된다. UnitID | FunctionCode | StartAddress | Length | ByteCount)  예를들어 01 03 00 00 00 01 신호를 보낸다는것은 01    : 01번 장비에 03    : 03번 펑션코드(Read Multiple Registers)로 0000 : 0번 주소부터 0001 : 1개의 워드를 읽어오라는 뜻 입니다. 여기서 보아야할것은 마지막의 ByteCount입니다. 이 갯수를 200개로 한다면 한 명령으로 200개의 데이터를 모두 요청할 수 있는것입니다. Understanding how to engineering 보통 통신수량이 많은 조명컨트롤을 예로 들어보겠습니다. 조명은 통상 약 256~ 512개의 포인트를 통신하게 되어있습니다. 또한 이 포인트들은 연속적인 주소체계를 갖습니다. ---------------------- 예문1 ------------------------------------ 01 01 00 00 00 01 01 01 00 01 00 01 01 01 00 02 00 01       패킷 256개를 장치에 매번 전송          ... 01 01 00 ff 00 01 ---------------------- 예문2 ------------------------------------ 01 01 00 00...