# 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虛實控制器及案例下載
- 虛實控制器資源包
- 機器視覺與人工智能