# 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 伺服电机编号
---------------
---------------
---------------
- 欢迎使用IOA数字孪生
- IOA-更新与安装
- 软件注册与安装
- 软件使用协议
- 注册与使用
- (一)、认识IOA基础界面功能
- UI界面与设置
- 软件环境设置
- 三维导航操作
- 3D导航球使用
- 快捷键与仿真
- (二)、三维场景搭建
- 3D设计视频教程
- 坐标及旋转
- 模型参数设置
- 模型树与拼接
- 从SolidWorks到IOA放置的模型自制
- IOA辅助工具
- (三)、虚拟电气与调试
- 虚拟电气信号归类
- 虚拟接线与导出
- (三)、虚实控制与编程
- 西门子PLC的仿真与控制
- 西门子实体PLCS7-1214控制器的添加与控制
- 西门子虚拟PLCS7-1214控制器的添加
- 西门子PLCS7-1512控制器的添加
- 三菱PLC的仿真与控制
- 三菱PLC仿真器的使用说明
- 三菱PLC的添加与说明
- 工业机器人(纳博特)仿真
- 工业机器人(KEBA)仿真
- 工业机器人(埃夫特)仿真
- 协作机器人(遨博)仿真
- 运动控制(ZMC308)正运动仿真
- 机器视觉(VPLC516)正运动仿真
- 微型机器人(开塔)仿真
- Py-teach快速编程仿真
- 人工智能视觉仿真
- 单片机接入与仿真控制
- Mixly-UNO_S虚拟工厂SDK
- Mixly-MEGA_S虚拟工厂SDK
- Mixly-ESP32虚拟工厂SDK
- 树莓派与Python仿真
- (四)、自定义控制器添加
- modbus-tcp自定义控制器
- (五)、Py-teach模块化编程示教
- Py-teach软件使用
- 语法与编程
- py-teach快速编程在线教程
- (六)、SDK与二次开发
- modbus-tcp自定义控制器SDK
- 机器视觉开发SDK
- EAIDK-610固件烧录手册
- EAIDK-610快速上手手册
- EAIDK-610案例使用手册
- (七)、快速上手案例教程
- 西门子PLC虚实仿真公开课
- 纳博特工业机器人虚实仿真
- 三菱PLC虚实仿真
- (八)、XR多人互动
- (九)、问题归总
- (十)、IOA硬件虚实仿真导航
- IOA虚实控制器及案例下载
- 虚实控制器资源包
- 机器视觉与人工智能