OPC DA 자동화 래퍼를 사용하여 AllenBradley PLC에 연결하고 있습니다.OPC DA 워드에 비트 쓰기
이제 단어 내에 다른 비트와 독립적으로 비트를 설정해야한다는 요구 사항이 있습니다.
이 기능을 엄격하게 달성 할 수있는 방법이 있습니까?
내가 시도 두 가지 옵션은 다음과 같습니다 OPC 서버 (인 Kepware) 별도의 비트로
설정 단어.
[FULLTAGNAME].0
[FULLTAGNAME].1
[FULLTAGNAME].2
그러나이 나는 많은 별도의 OPCItem이
다른 개체를 유지할 필요가 의미 : 그래서 다른 말로 나는 각각의 단어의 비트 16 개 태그를 가지고, 태그 이름은 다음과 같이 방법은 전체 단어를 읽고 BitConverter
을 사용하여 비트로 변환하고 변경해야하는 비트를 변경 한 다음 보류 단어를 다시 PLC에 씁니다.
그러나 테스트 중에 스레드 1이 해당 단어를 읽을 수 있음을 알았습니다. 쓰레드 2는 워드에 쓰면서 비트 2를 변경합니다. 쓰레드 1은 비트 4를 변경하고 전체 워드를 다시 쓰고 비트 2의 변경 사항을 덮어 씁니다.
누군가가 하나의 OPCItem을 가지고 특정 비트에 쓸 수있는 방법을 알고 있습니까 ?? 아니면 특정 비트와 관련된 많은 OPCItem을 가지고 붙어 있습니까?
감사
본질적으로 옵션을 배치했다고 생각합니다. 개인적으로, 비트를 단어로 묶는 것은 나쁜 습관이라고 생각합니다. 별도로 보관하십시오. 읽기 쉽고 작업하기 쉽고 디버깅하기가 쉽고 편리합니다. 그렇습니다. 더 많은 태그가 필요합니다. 처음부터 현명하게 디자인하면 프로그래밍 방식으로 태그 파일을 생성 할 수 있으므로 추가 작업이 필요 없습니다. 참조 : http://stackoverflow.com/a/1168196/327083 –
충분히 좋습니다. 나는 단어들로 비트를 만드는 것이 조금 더 심한 것에 당신에게 동의한다. 나는 내가 모르는 뭔가가 있기를 바랄 뿐이었다. 이전에 별도의 비트를 사용했지만 OPCItem [] Word1Bits = GenerateOpcItemes(); 등의 모양이 마음에 들지 않습니다. 당신의 도움을 주셔서 감사합니다. –
이것은 OPC 질문 일뿐만 아니라 기본 PLC 프로토콜 질문이기도합니다. 이 PLC의 프로토콜에 대한 "OPC 드라이버"는 읽기 - 수정 - 쓰기 작업으로 WORD의 단일 비트를 수정하는 것을 구현할 수 있습니다 (즉, 전체 단어를 읽고, 쓰여지는 비트를 미세 조정 한 다음 전체 단어를 다시 씁니다) , 그래서 당신의 멀티 스레드 우려가 여전히 존재). 당신은 단지 비트 쓰기를 수행하고 있다고 생각하지만 비트 쓰기를 에뮬레이트하고 있습니다. 실제 프로토콜과 해당 프로토콜의 OPC 드라이버에 대한 세부 사항을 알지 못하면 테스트 해 볼 것입니다. – franji1