以下範例使用:
TMflow 軟體版本: 1.76 或更新.
其餘要求: 參考下方準備章節
不同版本的手臂系統可能不同
目標 #
我們可以透過第三方IO裝置來擴充手臂的IO數量。
例如,您可以透過類比輸出訊號(analog output)來控制焊接機、0~10V 等於0~100%的輸出功率。
以下文章示範如何在TMflow中連接 Modbus TCP/IP的外部裝置。
準備 #
- 手臂系統 HW3.2, SW1.86
- 第三方IO模組 – O DEAR DSNDA4Y8L-MW (4 analog output,4類比輸出)
- 網路線
- IO 線材
- 電壓表
配線 #
這裡有配線圖供您參考。若想知道該IO模組的細部設定,請至對方網站查詢。
IO模組上的設定 #
- IP地址 – 預設值為 192.168.1.100. 若要更改IP,請參考它的手冊
- 設定成0-10V模式 (紅色旋鈕轉到 #6, 接著黃色旋鈕轉到 #2)
- 重啟IO模組
- 設定Modbus模式 (紅色旋鈕轉到 #4)
- 重啟IO模組
TMflow上的設定 #
- IP位置 – System(系統) > Network(網路) > IP, IP 設成 192.168.1.10, Mask 255, 255, 255, 0
- 新增TMflow專案,在右方新增一個Modbus Device
- 在該Device上創造變數preset_RegisterOutput
- 因為IO模組的儲存單位為16bit,因此設定成Signal Type : Register Output 及 int16
-
為什麼地址從0開始 ?
根據該產品手冊,地址40001 代表Register Output (未來會使用Modbus FC06來寫入Register Output )
例如,IO模組上地址 40001 代表 手臂端地址的 0
IO模組上地址 40002 代表 手臂端地址的 1
IO模組上的Modbus位置 |
TMflow上的IO裝置位置 | 實際上的類比輸出 |
40001 |
0 |
類比輸出1 |
40002 |
1 |
類比輸出2 |
40003 |
2 |
類比輸出3 |
40004 | 3 |
類比輸出4 |
- 創造變數 : int var_RO_Result
- 創造SET node並寫入Modbus位置preset_RegisterOutput
- 如果想把最後的實際輸出設定成9V,則preset_RegisterOutput 應該設定為 9V/10V*65536 = 58982
- 如果想把最後的實際輸出設定成5V,則preset_RegisterOutput 應該設定為 5V/10V*65536 = 32768
位置內的數值 | 實際輸出 |
0~65535 (16bits) | 0~10V |
類比模組的輸出結果 #
- 執行TMflow專案,最後的類比輸出為9V
如何做輸入與輸出間的線性轉換? #
從上面的案例,我們已經可以指派[0~65535] 並輸出 [0~10V].
Value on Address | Physical Value |
0~65535 (16bits) | 0~10V |
但在真實的焊接機上,輸入Value on Address與輸出Physical Value之間會有個線性轉換關係
為了使用上的方便,我們希望輸入與輸出是1:1的,這樣操作上更直覺
例如下圖中,輸入[22~350] 1:1對應輸出 [22~350],那要怎麼做呢?
可以使用TMflow : Expression Editor來做轉換,步驟如下:
- 創造TMflow專案、並指定值(如100A) 到一個 float variable var_Current_Command
- 在Expression Editor中使用以下的方程式:
(var_Current_Command-LowerLimit_Welder) / (HigherLimit_Welder–LowerLimit_Welder) * (HigherLimit_TMflow_Before–LowerLimit_TMflow_Before+1)
= (var_Current_Command-22) / (350–22) * (65535–0+1)
3. 將結果顯示出來
經過以上的轉換之後,如果命令是100A,則送到Modbus位置上的值會是15584,焊接機的輸出會是:
15584/65536*(350-22)+22 = 100(A),與命令1:1相等
這樣我們就完成1:1的轉換了
TMflow Command(A) | Physical Output of Welder(A) |
22 | 22 |
100 | 100 |
350 | 350 |
數位模組的輸出結果 #
- 除了上面提到的類比模組,也可使用第三方的數位模組 DSNX16Y16L-MW,手臂系統也可進行控制
- 在TMflow專案內創造一些變數
- 將DO1~DO16的各位元狀態寫進preset_RegisterOutput 變數中
preset_RegisterOutput = DO1*(2^0) + DO2*(2^1) + DO3*(2^2) + … + DO15*(2^16)
例如,如果想設定DO1 = 1(on), DO2 = 0(off), DO3 = 1(on), 則 preset_RegisterOutput = DO1*(2^0)+DO2*(2^1)+DO3*(2^2) = 1*1+0*2+1*4 = 6
- 增加Display node來顯示DI數值