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, "kind": 2,
"importPath": "client", "importPath": "client",
"description": "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", "detail": "client",
"documentation": {} "documentation": {}
}, },
@ -202,7 +202,7 @@
"kind": 5, "kind": 5,
"importPath": "client", "importPath": "client",
"description": "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", "detail": "client",
"documentation": {} "documentation": {}
}, },

View File

@ -95,48 +95,77 @@ client = ModbusTcpClient(
client.connect() client.connect()
# максимальное количество coils = 286 # максимальное количество coils = 286
# bulb(2) # bulb(0)
# get_coordinates() # get_coordinates()
# get_or_set_speed(10) # get_or_set_speed(10)
try: 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 # старт в авторежиме single loop
client.write_register(20002, 1, MODBUS_SLAVE_ID) client.write_register(20002, 1, MODBUS_SLAVE_ID)
total = 0 total = 0
state = None state = None
step = 0
counter = 0 counter = 0
while True: while True:
time.sleep(1) time.sleep(1)
total += 1 total += 1
green_light = client.read_coils(0, 1, MODBUS_SLAVE_ID).bits[0] 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: if state == green_light:
continue continue
if green_light == False: state = green_light
if state == True:
continue continue
state = green_light step += 1
counter += 1
# собираем предварительные данные # собираем предварительные данные
x = two_byte_convert(client.read_holding_registers(2332, 2, MODBUS_SLAVE_ID)) # 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)) # 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)) # 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)) # 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)) # 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)) # w = two_byte_convert(client.read_holding_registers(2342, 2, MODBUS_SLAVE_ID))
print( # 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}" # 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 # работаем с REL относительными координатами
elif counter == 2: x = 0
y -= 100 * 1000 y = 0
elif counter == 3: z = 0
x += 100 * 1000
elif counter == 4: w = 100
y += 100 * 1000 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: else:
counter = 0 counter += 1
step = 0
state = None
data = [ data = [
(0, to_double(x)), (0, to_double(x)),
@ -149,10 +178,12 @@ try:
for item in data: for item in data:
d, values = item d, values = item
set_user_register(d, values) 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) print(s + d, "===", two_byte_convert(result) * 0.001)
client.write_coil(0, !green_light, MODBUS_SLAVE_ID) bulb(0)
except Exception as e: except Exception as e: