从 MT2-AM8 模拟量模块迁移到 Easy521 PLC(Modbus TCP)
- 读取 D700(阀后流量)、D710(阀后压力)、D720(阀前压力), 读用功能码 03,0~32000 线性映射到各自量程(300 SLM / 400 kPa / 300 kPa) - 输出 D730(电机位置,0~10V),写用功能码 06,行程仍为 0~1000、死区 800 - 复用 MT2 骨架,保留 get_flow/get_pressure/set_motor_position 接口, channel 参数改为直接 Modbus 地址 - config.py 新增 PLC 设置,保留 MT2AM8 设置为死代码(MT2AM8Client 类保留) - 同步更新 README.md 中的硬件接线、配置默认值与模块职责描述
This commit is contained in:
+17
-12
@@ -173,7 +173,7 @@ def set_opening(hardware, opening_pct):
|
||||
position = motor_position_for(opening)
|
||||
if not hardware.set_motor_position(
|
||||
position,
|
||||
channel=config.MOTOR_OUTPUT_CHANNEL,
|
||||
channel=config.MOTOR_OUTPUT_ADDR,
|
||||
):
|
||||
raise RuntimeError("电机位置写入失败")
|
||||
return opening, position
|
||||
@@ -184,11 +184,11 @@ def read_sensors(hardware, quiet=False):
|
||||
output = io.StringIO()
|
||||
stream = output if quiet else sys.stdout
|
||||
with contextlib.redirect_stdout(stream):
|
||||
flow = hardware.get_flow(config.FLOW_INPUT_CHANNEL)
|
||||
flow = hardware.get_flow(config.FLOW_AFTER_ADDR)
|
||||
pressure = (
|
||||
None
|
||||
if config.PRESSURE_INPUT_CHANNEL is None
|
||||
else hardware.get_pressure(config.PRESSURE_INPUT_CHANNEL)
|
||||
if config.PRESSURE_AFTER_ADDR is None
|
||||
else hardware.get_pressure(config.PRESSURE_AFTER_ADDR)
|
||||
)
|
||||
return flow, pressure
|
||||
|
||||
@@ -199,17 +199,22 @@ def main():
|
||||
return 1
|
||||
|
||||
try:
|
||||
from PcControl import MT2AM8Client
|
||||
from PcControl import Easy521ModbusClient
|
||||
except ModuleNotFoundError as exc:
|
||||
print(f"无法导入硬件客户端: {exc}")
|
||||
return 2
|
||||
|
||||
hardware = MT2AM8Client(
|
||||
host=config.MT2AM8_HOST,
|
||||
port=config.MT2AM8_PORT,
|
||||
slave_id=config.MT2AM8_SLAVE_ID,
|
||||
pressure_range=config.PRESSURE_RANGE_KPA,
|
||||
flow_range=config.FLOW_METER_RANGE_SLM,
|
||||
hardware = Easy521ModbusClient(
|
||||
host=config.PLC_HOST,
|
||||
port=config.PLC_PORT,
|
||||
slave_id=config.PLC_SLAVE_ID,
|
||||
flow_addr=config.FLOW_AFTER_ADDR,
|
||||
flow_range=config.FLOW_AFTER_RANGE_SLM,
|
||||
pressure_before_addr=config.PRESSURE_BEFORE_ADDR,
|
||||
pressure_before_range=config.PRESSURE_BEFORE_RANGE_KPA,
|
||||
pressure_after_addr=config.PRESSURE_AFTER_ADDR,
|
||||
pressure_after_range=config.PRESSURE_AFTER_RANGE_KPA,
|
||||
motor_output_addr=config.MOTOR_OUTPUT_ADDR,
|
||||
)
|
||||
|
||||
connected = False
|
||||
@@ -222,7 +227,7 @@ def main():
|
||||
|
||||
try:
|
||||
print(
|
||||
f"正在连接 MT2-AM8 {config.MT2AM8_HOST}:{config.MT2AM8_PORT} ..."
|
||||
f"正在连接 PLC {config.PLC_HOST}:{config.PLC_PORT} ..."
|
||||
)
|
||||
connected = bool(hardware.connect())
|
||||
if not connected:
|
||||
|
||||
Reference in New Issue
Block a user