PLC와의 만남??
카테고리 정리를 한번 해야 하려나....
이번 플젝 하나를 하게 되었다. 지인분 회사에서 LG산전 PLC...를 HMI가 아닌 웹페이지에서 모니터링 하고 싶어하신다.
MES할때 봤던 PLC를... 15년? 16년만에 보는건가?
모드버스TCP로 통신하는 걸로 해서 8일날 PLC를 받고 벌써 일주일이 되었구나...
어쨌든... 오늘 오전 드디어 샘플로 작성되어 있는 PLC 레지스터 정보를 읽어내고 쓰는데 성공했다.
주말2일, 하루는 어머니 병원다녀오고... 딱 3일 걸렸다.
%MW0, %MW100, %MX160, %MX0 주소가 이렇게 되어 있는 걸 값을 읽어야 하는데...
공부를 2일동안했다. PLC 주소체계랑, 모드버스TPC 통신 프로토콜...
초반에 LG산전 PLC통신 치면 XGT서버와 통신하는 것들이 나와서... 헤매고...
기본적으로 메모리 주소체계.
그리고 모드버스TCP통신 프로토콜에 대한 이해.
LG산전 PLC 메모리 주소체계 설명.
https://www.youtube.com/watch?v=BE5WZYjT8ZA
그리고 마지막으로...
https://www.youtube.com/watch?v=O580kTtpfNI
가끔 C#으로 이런저런거 하는 건 봤는데...
엄청나게 도움이 된다. 이걸 보려면... 주소체계나 프로토콜 이해가 필요하니...
순서에 상관없이 꼭 시청하면 될 듯 하다.
30일까지 프로젝트를 마무리 해야 해서... 내일부터는 라이브러리 코드 정리하고...
윈도우서비스로 데이타 수집하는 프로세스 만들고, 웹서비스로 모니터링한 데이타 뿌려주는걸.... 보름안에 해야 한다.
오늘 통신이 되어서 뭔가? 안도감이??? 나머진 쉬운거니까...
잘 구성해서... 1년에 두세개 정도 나온다니.. +_+;;; 밥값은 벌 수 있겠당.
'--- 취미 > 생각하기' 카테고리의 다른 글
MySQL . Windows 10 Pro에 설치??? (0) | 2023.12.12 |
---|---|
경축!! 민주당 대의원제 축소~!! (0) | 2023.12.07 |
가을이 되어 그런가? 머리속이 혼란스럽다... (0) | 2023.10.11 |
민주당 수박들 몰아낼 절호의 기회인데... (0) | 2023.09.25 |
모바일 개발은 더 쉽지 않구나... (0) | 2023.09.24 |
Action<Action<Action<string>>> 활용!!
공통 UI쪽 관련해서 조금 만지는 부분이 있는데...
코드를 아래와 같이 쓸수 있으면 어떨까? 라는 생각을 해봤다.
Call()( msg => msg( "x" ) );
Call() 호출하고 이어서 대리자로 연결된 메서드에 파라미터를 받아서 전달!!
UI를 다루면서 두가지 처리를 연속적으로 하게 되는 거였다.
UseFlowBodyPanel();
foreach( var data in ListDatas ) {
AddFlowBodyItem( data );
}
이런 식으로 처리하는 걸... 줄여서
UseFlowBodyPanel()( AddFlowBodyItem => foreach( var data in ListDatas ) AddFlowBodyItem( data ) );
실제 코드는 여러가지 조건들을 고려해서 조금 바뀌지만...위 처럼 갈 것이다.
다만 Call()은 테스트 코드로 작성했던것이기에... 기록으로 남겨두려 한다.
private Action<Action<Action<string>>> Call()
{
System.Diagnostics.Debug.WriteLine("Call!");
Action<Action<Action<string>>> returnMethodCall
= new Action<Action<Action<string>>>((msg)=> msg( Call_After ));
return returnMethodCall;
}
private void Call_After(string msg)
{
System.Diagnostics.Debug.WriteLine("Call_After!" + msg);
}
Action<string> 은 Call_After( string msg )와 연결되는 게 기본이니까 알겠는데...
연결지으려면 왜 Action<Action<...>> 으로 두개가 필요한건지는 잘 모르겠네...
찾는 방법은 Call() ( <-- 이렇게 코딩해놓고 vs에 표시되는 인자값이 Action<string> 인지 확인하였더니
Action<Action<...>> 이었다.
Action mth = s => console.Write( s ); 이런 형태로 Action이 빠지니까..
Call() 에서 리턴받은 object가 Action< Action < Action<string> > >
인데...
Action이 하나 빠지고
msg => msg( "x" )
msg는 Action<string> 이니까...
Action<Action<string>> 을 정의한거고...
.... 뭐래는겨......... 모르겠다 ㅠㅠ.
머리속에 맞춰지지 않는 퍼즐이 있는 것 같은 느낌... 아.. 싫어..
Action<Action<string>> mth1 = mthCall => mthCall("?");
mth1(Call_After);
---------------------------------------------------------------------------------
Action대신 Method로 바꿔 생각해보면...
Action< Action< Action<string > > >
Mth0( Mth1( Mth( string ) ) )
Mth0( Mth1( MethodName ) )
Call()( MethodName => MethodName( prms ) );
Action<string>
mth( string => string )
Action< Action<string > >
mth1( MethodName => MethodName( str ) )
Action< Action< Action<string > > >
mth0( mm => mm( MethodName ) )
Action<Action<Action<string>>> returnMethodCall
= new Action<Action<Action<string>>>((msg)=> msg( Call_After ));
-----> (msg)=> msg( Call_After )
이거 때문에 잠도 못잤네.
Call() ( 여기에서 왜? mth0이 사라지고 mth1이 대입되는거지??? ) : 두개가 벗겨지네...
Action<Action<Action<string>>> returnMethodCall = Call();
returnMethodCall( msg => msg("???") );
음... 실제 리턴받은걸 실행해보면... 위처럼 되네...?
어라... 뭐지?
Action<Action<Action<string>>> returnMethodCall
= new Action<Action<Action<string>>>((msg)=> msg( Call_After ));
returnMethodCall( 이자리는 Action<Action<string>> 타입이 들어와야 하니.. m => m("?") );
아... 이랬던가?
new로 대상을 지정하는 람다식과 대리자를 호출하는 부분에 차이때문에 내가 헷갈린건가...
아무렇지도 않게 사용하던거에... 정신이 나가버릴것 같네... 이제 이해가 된다...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
JSFW.PrivateKey 프로그램 업데이트. (0) | 2023.08.04 |
---|---|
JSFW.FUNCTIONCONNECTION] 을 한번 더 업그레이드... (0) | 2022.12.29 |
JSFW.FunctionConnection] 업데이트 완료! (0) | 2022.12.24 |
JSFW.FunctionConnection] 업데이트 중... (0) | 2022.12.23 |
JSFW.FunctionConnection] 프로그램 사용 중... (0) | 2022.11.29 |
POE] 게임... 필터..
필터부분 수정 후 테스트..
- 네버싱크
: 정의의화염 초반 셉터, 모든화염젬렙, 모든주문젬렙, 물리주문젬(신성한 화염 토템에 적용)등 가진 셉터가
떨어지면 필터에 걸리도록 수정, 또는 5렙에 사용하는 흑단목 셉터를 필터로 잡는다. (변옵돌리려고...)
: 헬멧에 혹시 정의의 화염 인챈트 된 것! ( 거의 볼일은 없겠지만... )
아이템 필터 랭킹 ( https://poe.game.daum.net/item-filter/ladder/follower ) 에서
네버싱크 클릭하면 아래처럼 나온다 [복사] 클릭하면
필터명을 바꾸고...
# [[0100]] Global overriding rules 부터... 아래 내용으로 채워넣는다.. 그후 아래 [제출하기] 를 클릭한다.
아래처럼 저장이 된다.
게임내 필터로 지정하고 떨궈보면... 아래처럼 보인다.. ( 소리는 쉽게 구분 가능한 소리로... )
초반 액트 1에 물에잠긴길에서 흑단목 셉터가 떨어지면...
이 셉터에 변옵 돌려서 모든 물리, 화염, 주문 젬 레벨 +1 을 띄우면 .. 액트 밀기 좋다.
음.. 모든 셉터를 잡을까? (액트 진행중에 셉터는 계속 진화의 오브를 던져야 하니...:화염젬레벨뽑기)
# [[0100]] Global overriding rules
################################################### js RF START
# 흑단목 셉터 ( 물리, 모든, 화염 젬 레벨 + 1 표시 )
Show # $type->magicid $tier-> RF
Mirrored False
Rarity Normal Magic Rare
Class == "Sceptres"
Identified True
Corrupted False
HasExplicitMod >=1 "달인의" "화염 형성자의" "석마술사의" #모든젬, 화염젬, 물리젬+1
SetFontSize 45
SetTextColor 255 255 255 255
SetBorderColor 255 255 255 255
SetBackgroundColor 0 20 180 255
PlayAlertSound 1 300
PlayEffect Red
MinimapIcon 0 Red Star
Show # $type->magicid $tier-> RF
Mirrored False
Rarity Normal Magic Rare
Class == "Sceptres"
BaseType == "흑단목 셉터"
Corrupted False
SetTextColor 255 255 255 255
SetBorderColor 255 255 255 255
SetBackgroundColor 0 20 180 255
PlayAlertSound 2 300
PlayEffect Blue
MinimapIcon 0 Blue Triangle
Show # $type->magicid $tier-> 방패
Mirrored False
Rarity Normal Magic Rare
Class == "Shields"
Identified True
Corrupted False
HasExplicitMod >=1 "엄벌가의" "달인의" "화염 형성자의" "석마술사의" #소환수젬, 모든젬, 화염젬, 물리젬 +1
SetFontSize 45
SetTextColor 255 255 255 255
SetBorderColor 255 255 255 255
SetBackgroundColor 0 20 180 255
PlayAlertSound 1 300
PlayEffect Red
MinimapIcon 0 Red Star
# 인챈트 정의의 화염
Show # $type->rareid $tier-> 인챈트
Rarity Rare
Class == "Helmets"
AnyEnchantment True #인챈트 된 것
HasEnchantment "Enchantment Righteous Fire Damage 1" "Enchantment Righteous Fire Damage 2" "Enchantment Righteous Fire Area Of Effect 2"
SetFontSize 45
SetTextColor 0 240 190 255
SetBorderColor 0 240 190 255
SetBackgroundColor 47 0 74 255
PlayAlertSound 1 300
PlayEffect Purple
MinimapIcon 1 Purple Diamond
# 사운드 PlayAlertSound {1-6} 300
# 1 - 환영오브 떨어지는 소리..., 행운아(x신성2) 같은 카드 소리
# 2 - 카오스, 연금...
# 3 - 고유
# 4 - 지도 흰맵, 노랑
# 5 - 지도 빨맵
# 6 - 디바인
#디바인 떨어졌을때 ( 흰바탕, 빨간글씨, 빨간 테투리 )
# SetFontSize 45
# SetTextColor 255 0 0 255
# SetBorderColor 255 0 0 255
# SetBackgroundColor 255 255 255 255
# PlayAlertSound 6 300
# PlayEffect Red
# MinimapIcon 0 Red Star
#카드중 '행운아' 떨어졌을때 ( 파란 바탕의 흰글씨, 흰색 테두리 )
SetFontSize 45
SetTextColor 255 255 255 255
SetBorderColor 255 255 255 255
SetBackgroundColor 0 20 180 255
PlayAlertSound 1 300
PlayEffect Red
MinimapIcon 0 Red Triangle
################################################### js RF END
'--- 취미' 카테고리의 다른 글
POE(수확)] 저거넛 (0) | 2020.09.08 |
---|---|
POE(수확)] 엘리 구형번개 (0) | 2020.09.08 |
POE] 초기에 액트 밀때... 이노센스까지 (0) | 2020.05.11 |
POE 3.10] 회오리바람 + 얼음폭발 개인 사냥 영상 ( 대성당 이노센스 ) (0) | 2020.05.07 |
POE 3.10] 어쎄신 회오리바람 + 얼음폭발 (0) | 2020.05.07 |