2017-12-26 65 views
0

Siemens S7-1200 PLC를 사용하는 Python 용 snap7 클라이언트 스크립트를 실행하면 다음과 같은 일반적인 CLI 거절 오류가 발생합니다. 여기에 공통적 인 문제는 무엇이며이를 해결하는 방법은 무엇입니까?S7-1200, Snap7 : 예외 : CLI : CPU가 기능을 거부했습니다. (알 수없는 오류)

스크립트 :

import snap7 
from snap7.util import * 
import struct 
import snap7.client 
from snap7.snap7types import S7AreaDB 

plc=snap7.client.Client() 

plc.connect('192.168.0.69',0,1) 

area = 0x84 
start = 0 
length = 1 
bit = 0 

byte= plc.read_area(area,0,start,length) 

역 추적 오류 : 타입/PLC의 모델은 당신이 가지고 당신이 (첫 번째 버전 이상을 선택하는 펌웨어 버전을 확인 한 모든 검사의

No handlers could be found for logger "snap7.common" Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/dist-packages/snap7/client.py", line 242, in read_area check_error(result, context="client") File "/usr/local/lib/python2.7/dist-packages/snap7/common.py", line 69, in check_error raise Snap7Exception(error) snap7.snap7exceptions.Snap7Exception: CLI : function refused by CPU (Unknown error)

답변

0

먼저?). 사용 가능한 이전 펌웨어 버전이있는 경우 Siemens 또는 TIA 포털 소프트웨어로 웹 사이트를 확인하십시오.

plc를 이전 펌웨어 버전으로 재설정하고 스크립트를 다시 실행하여 오류 메시지가 사라 졌는지 확인하십시오!

S7-1212C 예 : 펌웨어 버전 4.1은 위에서 설명한 오류를 제공합니다. 펌웨어 버전 4.0이로드되면 오류가 사라지고 PCL에 액세스 할 수 있습니다.

크리스마스를 두 번째 즐기십시오!

0

TIA 포털에서 데이터를 읽으려는 데이터 블록에 대해 "최적화 된 블록 액세스"속성이 해제되어 있는지 확인하십시오. 게다가, CPU 접근 보호하에; 액세스 수준은 "full"이어야하며 "연결 메커니즘"은 GET/PUT을 허용해야합니다. 자세한 내용은 다음 링크를 참조하십시오 :

http://snap7.sourceforge.net/snap7_client.html#1200_1500

둘째, 어떤 데이터 블록 액세스하려는인가? plc.read_area() 메서드 호출에서이를 지정해야합니다. "0x84"데이터 블록 영역 코드를 사용하기 때문에 "데이터 블록"번호를 지정하는 메서드 인수가 있어야합니다.

+0

따라서 내 대답에 게시 한 것보다 훨씬 많은 일이 있었지만 며칠 후 그 사실을 알았습니다. 나는 위키 튜토리얼에 대한 나의 대답을 업데이트해야한다. 그러나 상용 기한은 지금 그렇게 할 수 없다 :-(하지만 네, 데이터베이스 액세스 읽기/쓰기에 대한 올바른 방향을 지적합니다. 심지어 변수의 정보 레이블을 수정할 수있었습니다. 더 긴 변수의 길이에 맞게 데이터베이스 내부에서, 미리 설정된 표시 길이로 잘라내어진 레이블은 – ZF007

+0

내 대답을 편집했습니다. 액세스 권한도 확인하고 싶을 수 있습니다. – Freeman