This commit is contained in:
aarizona 2024-08-10 20:32:20 +03:00
parent 71e87c7034
commit 48b237ccb4
2 changed files with 63 additions and 32 deletions

View File

@ -139,7 +139,7 @@
"kind": 2,
"importPath": "client",
"description": "client",
"peekOfCode": "def to_double(integr):\n return [(integr >> 16) & 0xFFFF, integr & 0xFFFF]\nclient = ModbusTcpClient(\n host=MODBUS_SERVER_HOST,\n port=MODBUS_SERVER_PORT,\n)\nclient.connect()\n# максимальное количество coils = 286\n# bulb(2)\n# get_coordinates()",
"peekOfCode": "def to_double(integr):\n return [(integr >> 16) & 0xFFFF, integr & 0xFFFF]\nclient = ModbusTcpClient(\n host=MODBUS_SERVER_HOST,\n port=MODBUS_SERVER_PORT,\n)\nclient.connect()\n# максимальное количество coils = 286\n# bulb(0)\n# get_coordinates()",
"detail": "client",
"documentation": {}
},
@ -202,7 +202,7 @@
"kind": 5,
"importPath": "client",
"description": "client",
"peekOfCode": "client = ModbusTcpClient(\n host=MODBUS_SERVER_HOST,\n port=MODBUS_SERVER_PORT,\n)\nclient.connect()\n# максимальное количество coils = 286\n# bulb(2)\n# get_coordinates()\n# get_or_set_speed(10)\ntry:",
"peekOfCode": "client = ModbusTcpClient(\n host=MODBUS_SERVER_HOST,\n port=MODBUS_SERVER_PORT,\n)\nclient.connect()\n# максимальное количество coils = 286\n# bulb(0)\n# get_coordinates()\n# get_or_set_speed(10)\ntry:",
"detail": "client",
"documentation": {}
},

View File

@ -95,49 +95,78 @@ client = ModbusTcpClient(
client.connect()
# максимальное количество coils = 286
# bulb(2)
# bulb(0)
# get_coordinates()
# get_or_set_speed(10)
try:
data = [
(0, to_double(0)),
(1, to_double(0)),
(2, to_double(0)),
(3, [0, 0]),
(4, [0, 0]),
(5, [0, 0]),
]
for item in data:
d, values = item
set_user_register(d, values)
# старт в авторежиме single loop
client.write_register(20002, 1, MODBUS_SLAVE_ID)
total = 0
state = None
step = 0
counter = 0
while True:
time.sleep(1)
total += 1
green_light = client.read_coils(0, 1, MODBUS_SLAVE_ID).bits[0]
print(f"total {total}, state {state}, green light {green_light}")
if state == green_light:
continue
if green_light == False:
continue
state = green_light
counter += 1
if state == True:
continue
step += 1
# собираем предварительные данные
x = two_byte_convert(client.read_holding_registers(2332, 2, MODBUS_SLAVE_ID))
y = two_byte_convert(client.read_holding_registers(2334, 2, MODBUS_SLAVE_ID))
z = two_byte_convert(client.read_holding_registers(2336, 2, MODBUS_SLAVE_ID))
u = two_byte_convert(client.read_holding_registers(2338, 2, MODBUS_SLAVE_ID))
v = two_byte_convert(client.read_holding_registers(2340, 2, MODBUS_SLAVE_ID))
w = two_byte_convert(client.read_holding_registers(2342, 2, MODBUS_SLAVE_ID))
print(
f"Предварительные данные X {x * 0.001}, Y {y * 0.001}, Z {z*0.001}, U {u*0.001}, V {v*0.001}, W {w*0.001}"
)
if counter == 1:
x -= 100 * 1000
elif counter == 2:
y -= 100 * 1000
elif counter == 3:
x += 100 * 1000
elif counter == 4:
y += 100 * 1000
# x = two_byte_convert(client.read_holding_registers(2332, 2, MODBUS_SLAVE_ID))
# y = two_byte_convert(client.read_holding_registers(2334, 2, MODBUS_SLAVE_ID))
# z = two_byte_convert(client.read_holding_registers(2336, 2, MODBUS_SLAVE_ID))
# u = two_byte_convert(client.read_holding_registers(2338, 2, MODBUS_SLAVE_ID))
# v = two_byte_convert(client.read_holding_registers(2340, 2, MODBUS_SLAVE_ID))
# w = two_byte_convert(client.read_holding_registers(2342, 2, MODBUS_SLAVE_ID))
# print(
# f"Предварительные данные X {x * 0.001}, Y {y * 0.001}, Z {z*0.001}, U {u*0.001}, V {v*0.001}, W {w*0.001}"
# )
# работаем с REL относительными координатами
x = 0
y = 0
z = 0
w = 100
h = 100
if step == 1:
x -= w * 1000
elif step == 2:
y -= h * 1000
elif step == 3:
x += w * 1000
elif step == 4:
y += h * 1000
elif step == 5:
z += h * 1000
elif step == 6:
z -= h * 1000
else:
counter = 0
counter += 1
step = 0
state = None
data = [
(0, to_double(x)),
(1, to_double(y)),
@ -149,12 +178,14 @@ try:
for item in data:
d, values = item
set_user_register(d, values)
result = client.read_holding_registers(indent + s + k * d, k, MODBUS_SLAVE_ID)
result = client.read_holding_registers(
indent + s + k * d, k, MODBUS_SLAVE_ID
)
print(s + d, "===", two_byte_convert(result) * 0.001)
client.write_coil(0, !green_light, MODBUS_SLAVE_ID)
bulb(0)
except Exception as e:
print("error", e)