2014-01-23 1 views
1

저는 멀티 스레딩을 사용하기 위해 21 개의 고정 마운트 바코드 스캐너를 병렬로 (즉, 모든 스캐너가 항상 실행될 것입니다) 처리해야하는 자동화 프로젝트를 진행하고 있습니다. 여기서 각 스레드는 하나의 바코드 스캐너를 처리합니다.같은 응용 프로그램에서 여러 스레드의 OPC 서버와 통신 할 수 있습니까?

이제 O.P.C.를 사용하여 P.L.C (DB/메모리 블록/태그)에서 스캔 한 데이터를 업데이트하려고합니다. 따라서 다중 스레드 응용 프로그램에서 O.P.C 클라이언트를 사용하여 P.L.C 값을 업데이트 할 수 있는지 알고 싶습니다.
Siemens P.L.C (모델 : CPU 315-2 PN/DP, 7 단계, 300 시리즈)를 사용하고 있습니다.

O.P.C 서버 또는 LibNoDave와 함께해야하는지 알고 싶습니다. 데이터 변경 이벤트를 읽고 확인해야하는 약 300 개의 태그 (P.L.C의 데이터 블록)가있을 것입니다.

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

이 스레드가 유용 할거라 생각합니다 : http://stackoverflow.com/questions/18040338/delphi-omnithreadlibrary-opc-client –

+0

OPC DA는 관찰 한 바를 토대로 하나의 "데이터 변경 이벤트"스레드를 제공합니다 OPC 클라이언트가 할당되었지만 스펙으로 보장되는지는 알 수 없습니다. – jrh

답변

0

짧은 대답은 네입니다. 그러나 더 많은 것이 있습니다. 머레이가 제공 한 링크는 잘 읽었습니다. 멀티 스레드 화가 진정 속도를 높일 수 있는지 고려해야합니다. OPC-DA 및 단일 스레드로 초당 수천 건의 데이터 변경을 쉽게 처리 할 수 ​​있습니다. 실제로 더 많은 스레드가 필요합니까?

+0

친애하는 친구, 답장을 보내 주셔서 감사합니다. 데이터 변경 이벤트를 얻으려면 멀티 스레딩을 사용하지 않습니다. 이것은 스캐너의 소켓을 열고 스캐너를 동시에 트리거하는 것과 같은 데이터 변경 이벤트가 발생하면 병렬 작업을 수행하는 것입니다. –

+0

병렬 작업이 OPC와 관련된 작업을 수행하지 않는다면 아무 문제없이 사용할 수 있습니다. 사실, OPC 콜백 핸들러를 작성할 때 종종 멀티 스레드 접근법을 사용해야합니다. 오랜 시간 동안 콜백을 차단하지 않아야하기 때문입니다. 따라서 콜백 처리기에서는 데이터를 어딘가에 저장하고 별도의 스레드에서 데이터를 검색합니다. – ZbynekZ

0

아키텍처를 가능한 한 단순하게 유지하고 스레드가 많이 발생하지 않도록하는 것이 멀티 스레딩을 불필요하게 복잡하게 만들 수 있으며 스레드가 동기화해야 할 경우 비용을 지불해야 할 수도 있습니다. 하나의 OPC 서버와 여러 개의 스레드가 연결되어 있기 때문에 스레드가 서로 간섭하지 않도록주의해야합니다. 내가 너라면 모든 바코드 스캐너가있는 OPC 서버에 대한 가입을 설정하는 스레드가 하나 있습니다. 그런 스레드를 모니터하여 다른 스레드가 여전히 작동하는지 확인하십시오.

관련 문제