🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# EAIDK-610-python-API使用手册 EAIDK-610与IOA虚拟仿真引擎之间的交互有两种形式: - 虚拟视觉相机 - 虚拟控制器 两者均依赖于TCP/IP网络协议,在局域网内可跨设备运行。若要跨网段运行,需要自行配置内网穿透以及端口转发。 -------------- --------------- -------------- **虚拟视觉相机** 1. 虚拟视觉相机的通讯Sever端在IOA虚拟仿真引擎内,Python API 提供的是Client端调用接口。 2. 所以在运行Python程序之前,需要先打开IOA虚拟仿真引擎,同时场景内存在虚拟视觉相机,才能确保Client端能够连接上虚拟相机的Server。 3. **虚拟视觉相机提供的API接口如下**: ##### 使用示例 ``` camera = Camera() while(True):     camera.get\_image()     camera.show() ``` -------- #### Camera(server\_ip = "127.0.0.1", server\_port=8527, head\_ver=0x02, device\_id = 1, camera\_id = 1) * [ ]         - 说明:创建一个新的虚拟视觉相机,**此处server\_ip为IOA虚拟仿真引擎所在IP地址** * [ ]         - 示例: > >             camera = Camera() > >             创建一个新的虚拟视觉相机,并将其命名为 camera > * [ ]       - 参数: > >             server\_ip   IOA虚拟仿真引擎所在的IP地址, > >                         若 python 程序与IOA在同一设备上运行,保持默认值; > >                         若 python 程序与IOA不在同一设备上运行,此处应更改为 IOA 所在 IP 地址 > >             server\_port 虚拟相机的端口号,不可更改 > >             head\_ver    通讯识别码,不可更改 > >             device\_id   设备ID,不可更改 > >             camera\_id   相机ID,不可更改 -------- ####     get\_image() * [ ]         - 说明:获取当前虚拟视觉相机采集到的图像 * [ ]         - 示例: > >             image = camera.get\_image() > >             获取获取当前虚拟视觉相机采集到的图像,并将图像信息存储在 image 变量中 -------- ####     show() * [ ]         - 说明:开启一个窗口,显示当前虚拟相机采集到的图像 * [ ]         - 示例: > >             camera.get\_image() > >             camera.show() > >             获取获取当前虚拟视觉相机采集到的图像,并显示出来 -------- ####     close() * [ ]         - 说明:关闭当前显示图像的窗口 * [ ]         - 示例: > >             camera.close() > >             关闭当前显示图像的窗口 -------------- --------------- -------------- **虚拟控制器** 1. 虚拟控制器的Server端由Python程序创建,IOA虚拟仿真引擎作为Client连接Python程序。 2. 两者连接利用Modbus\_tcp协议,使用的是modbus\_tk库。 3. 虚拟控制器支持**数字量输入输出、模拟量输入输出、伺服电机控制**等功能。 4. **虚拟控制器提供的API接口如下:** ##### 使用示例 ``` controller = Controller() while True:     controller.DigitalWrite(0,1)     print("DI0's value is : " + str(controller.DigitalRead(0)))     controller.Float32Write(0, 2.3)     print("FI0's value is : " + str(controller.Float32Read(0)))     controller.MotorMoveAngle(0,320)     controller.MotorWaitFinish(0)     time.sleep(1)     controller.DigitalWrite(0,0)     print("DI0's value is : " + str(controller.DigitalRead(0)))     controller.Float32Write(0, 0.2)     print("FI0's value is : " + str(controller.Float32Read(0)))     controller.MotorMoveAngle(0,300)     controller.MotorWaitFinish(0)     time.sleep(1) ``` --------------- ####     Controller(id = 1, host="127.0.0.1", port=502, type = "ROBOT\_M8") * [ ]         - 说明:创建新的虚拟控制器,**此处host为本机IP** * [ ]         - 示例: > >             controller = Controller() > >             创建一个新的虚拟控制器,并将其命名为 controller * [ ]         - 参数: > >             id      控制器ID        默认值为1 > >             host    控制器IP地址    默认为本机 127.0.0.1 > >             port    控制器端口号    默认为9999 > >             type    控制器类型      默认为 ROBOT\_M8 , 暂不支持其他类型 > --------------- ####     DigitalWrite(pin, val) * [ ]         - 说明:向虚拟控制器的 DO 管脚设置新的值 * [ ]         - 示例: > >             controller.DigitalWrite(0, 1) > >             设置虚拟控制器的 DO0 管脚值为1 * [ ]         - 参数: > >             pin     DO 管脚号 > >             val     要设置的新值 --------------- ####     Float32Write(pin, val) * [ ]         - 说明:向虚拟控制器的 FO 管脚设置新的值 * [ ]         - 示例: > >             controller.Float32Write(0, 2.3) > >             设置虚拟控制器的 FO0 管脚值为2.3 * [ ]         - 参数: > >             pin     FO 管脚号 > >             val     要设置的新值 --------------- ####     DigitalRead(pin) * [ ]         - 说明:读取虚拟控制器的 DI 管脚当前电平信息 * [ ]         - 示例: > >             value = controller.DigitalRead(0) > >             读取虚拟控制器的 DI0 管脚信息,并将值赋值给 value 变量 * [ ]         - 参数: > >             pin     DI 管脚号 --------------- ####     Float32Read(pin) * [ ]         - 说明:读取虚拟控制器的 FI 管脚当前电平信息 * [ ]         - 示例: > >             value = controller.Float32Read(0) > >             读取虚拟控制器的 FI0 管脚信息,并将值赋值给 value 变量 * [ ]         - 参数: > >             pin     DI 管脚号 > --------------- ####     MotorMoveAngle(motor, pos, speed=5) * [ ]         - 说明:控制虚拟控制器的伺服电机运动到指定位置 * [ ]         - 示例: > >             controller.MotorMoveAngle(0, 90, 20) > >             让虚拟控制器的 M0 电机,移动到 90 位置,运动速度为20 * [ ]         - 参数: > >             motor   伺服电机编号 > >             pos     要移动到的位置 > >             speed   移动速度,默认值为5 --------------- ####     MotorReadAngle(motor) * [ ]         - 读取虚拟控制器的电机当前位置 * [ ]         - 示例: > >             position = controller.MotorReadAngle(0) > >             读取虚拟控制器伺服电机 M0 的当前位置,并将位置信息赋值给 position 变量 * [ ]         - 参数: > >             motor   伺服电机编号 --------------- ####     MotorWaitFinish(motor) * [ ]         - 等待虚拟控制器的某个伺服电机运动完成 * [ ]         - 示例: > >             controller.MotorWaitFinish(0) > >             等待 M0 电机运行结束 * [ ]         - 参数: > >             motor   伺服电机编号 --------------- --------------- ---------------