47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from pymelsec import Type3E
|
|
|
|
|
|
class PLCClient:
|
|
def __init__(self):
|
|
self.plc = None
|
|
self._ip = ""
|
|
self._port = 5010
|
|
self._connected = False
|
|
|
|
def connect(self, ip: str, port: int = 5010) -> bool:
|
|
try:
|
|
self._ip = ip
|
|
self._port = port
|
|
self.plc = Type3E(host=ip, port=port, plc_type="Q")
|
|
self.plc.connect(ip, port)
|
|
self._connected = True
|
|
print(f"[PLC] 연결 성공: {ip}:{port}")
|
|
return True
|
|
except Exception as e:
|
|
print(f"[PLC] 연결 실패: {e}")
|
|
self._connected = False
|
|
self.plc = None
|
|
return False
|
|
|
|
def disconnect(self):
|
|
try:
|
|
if self.plc:
|
|
self.plc.close()
|
|
print("[PLC] 연결 해제")
|
|
except Exception as e:
|
|
print(f"[PLC] 연결 해제 오류: {e}")
|
|
finally:
|
|
self.plc = None
|
|
self._connected = False
|
|
|
|
def is_connected(self) -> bool:
|
|
return self._connected
|
|
|
|
def send_signal(self, signal: str, value=None):
|
|
"""신호 전송 — 미구현"""
|
|
pass
|
|
|
|
def read_signal(self, address: str):
|
|
"""신호 읽기 — 미구현"""
|
|
pass
|