From 2641ec5c520102894a85c56237c567ab6e157387 Mon Sep 17 00:00:00 2001
From: Martin Teichmann <martin.teichmann@xfel.eu>
Date: Thu, 25 Feb 2021 13:35:38 +0000
Subject: [PATCH] add the configuration of the chem

---
 ebpfcat/chem.py | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 ebpfcat/chem.py

diff --git a/ebpfcat/chem.py b/ebpfcat/chem.py
new file mode 100644
index 0000000..da9d7a5
--- /dev/null
+++ b/ebpfcat/chem.py
@@ -0,0 +1,84 @@
+from asyncio import gather, sleep, ensure_future
+from struct import unpack, pack
+from .terminals import EL7041, EL5042, Skip
+from .devices import Motor, Counter, AnalogInput
+from .ebpfcat import FastEtherCat, FastSyncGroup, SyncGroup
+
+con = Skip()
+tm1 = EL7041()
+te12 = EL5042()
+tm2 = EL7041()
+
+ec = FastEtherCat("enp0s31f6", [con, tm1, te12, tm2])
+
+
+async def monitor(ec):
+    while True:
+        print("M", ec.ebpf.count, ec.ebpf.allcount, await tin.get_state())
+        await sleep(0.1)
+
+
+async def main():
+    await ec.connect()
+    await ec.scan_bus()
+    #ensure_future(monitor(ec))
+
+    print("S", await te12.set_state(2))
+    for i in [1, 2, 3] + list(range(0x11, 0x19)):
+        print(f"P{i:x}", await te12.sdo_read(0x8018, i))
+    await te12.sdo_write(b"\0", 0x8018, 0x2)  # statusbits
+    await te12.sdo_write(b"\0", 0x8018, 0x15)  # multi
+    #await te12.sdo_write(b"\x1a", 0x8018, 0x16)  # singleturn
+    await te12.sdo_write(b" ", 0x8018, 0x16)  # singleturn
+
+    await tm2.set_state(2)
+    await tm2.sdo_write(pack("<H", 2500), 0x8010, 0x1)  # current
+    await tm2.sdo_write(pack("<H", 24000), 0x8010, 0x3)  # voltage
+
+    for i in [1, 2, 3]:
+        print(f"S{i:x}", await te12.sdo_read(0xB018, i))
+    print(f"Pos", await te12.sdo_read(0x6010, 0x11))
+    print(f"V", await te12.sdo_read(0xA018, 0x5))
+    print(f"M", await te12.sdo_read(0x10F3, 0x6))
+    print("State", await te12.get_state())
+
+    print("S", await tm2.set_state(2))
+    for i in [1,2,3,4,5,6,7,9,0x10,0x11]:
+        print(f"M{i:x}", unpack("H", await tm2.sdo_read(0x8010, i))[0])
+
+
+    m1 = Motor()
+    m1.velocity = tm2.velocity
+    m1.encoder = te12.channel2.position
+    m1.enable = tm2.enable
+
+    aie = AnalogInput(te12.channel2.status)
+    aim = AnalogInput(tm2.status)
+
+    fsg = SyncGroup(ec, [m1, aie, aim])
+
+    m1.max_velocity = 10000
+    m1.proportional = 23
+    m1.target = 185525000
+
+    print("do start")
+    fsg.start()
+    print("did start")
+
+    print(f"P0", unpack("I", await tm2.sdo_read(0x6010, 0x14))[0])
+    await sleep(0.1)
+    m1.set_enable = True
+    for i in range(20):
+        print(f"M {m1.current_position:12} {m1.velocity:5} {aie.value:4x} {aim.value:4x}")
+        await sleep(0.2)
+    m1.set_enable = False
+    m1.max_velocity = 0
+    for i in range(20):
+        print(f"S {m1.current_position:12} {aie.value:4x} {aim.value:4x}")
+        await sleep(0.02)
+    print(f"P1", unpack("I", await tm2.sdo_read(0x6010, 0x14))[0])
+
+if __name__ == "__main__":
+    from asyncio import get_event_loop
+    loop = get_event_loop()
+    loop.run_until_complete(main())
-- 
GitLab