Skip to content

如何增加輸入輸出訊號? 使用Modbus TCP/IP裝置為範例 [IO裝置]

以下範例使用:

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 代表 手臂端地址的 

IO模組上地址 40002 代表 手臂端地址的 

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來做轉換,步驟如下:

  1. 創造TMflow專案、並指定值(如100A) 到一個 float variable var_Current_Command
  2. Expression Editor中使用以下的方程式:

(var_Current_Command-LowerLimit_Welder) / (HigherLimit_WelderLowerLimit_Welder) * (HigherLimit_TMflow_BeforeLowerLimit_TMflow_Before+1)

= (var_Current_Command-22) / (35022) * (655350+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數值

  • 執行專案,可即時更新IO模組上的狀態

Powered by BetterDocs