MAC Modbus 教學

 

Modbus為RS232一種通訊格式,在工作上因為有用MAC OSX 控制機台PLC動作的需求,因此這邊搭配LibModBus來控制PLC的動作,LibModBus支援系統有Linux, Mac OS X, FreeBSD, QNX and Win32。

LibModBus連結 :

Libmodbus請點擊

 

1.首先需找到 Mac serial port 的名稱,開啟Mac的Terminal分別下以下指令cd /dev , ls 來找到 Mac serial port 的名稱。
MAC Modbus 教學

 

我這邊的電腦的serial port名稱是 tty.usbserial-FTKVM5XY
備註:是 tty.usbserial 不是 cu.usbserial

MAC Modbus 教學

 

2.安裝libmodbus套件,首先去libmodbus 官網下載檔案,版本有兩個 則一即可。

MAC Modbus 教學

 

將下載的檔案解壓縮,然後到解壓縮玩的目錄下,進入root 模式 sudo su

MAC Modbus 教學

 

執行./configure

MAC Modbus 教學

 

執行make all  ,如果當前有安裝須先清除,make clean all

MAC Modbus 教學

 

執行 make install 即可產出 lib file

MAC Modbus 教學

 

所產出的兩個 lib file

MAC Modbus 教學

 

3.程式碼控制(以下提供簡易程式範例供參考)

#include "modbus.h"
//需 include modbus.h 檔
ctx = modbus_new_rtu("/dev/cu.usbserial-FTKVM5XY",19200,'E',8,1);
/* 首先連接USB使用modbus_new_rtu("usb port位置",E,鮑率,8bit,1停止位元) */
modbus_set_debug(ctx, 1);
/* 設定debug偵測錯誤 */
modbus_connect(ctx);
/* 連接modbus */
modbus_set_slave(ctx,2);
/* 輸入設備ID = 2 (每種設備的ID皆不同) */
//判斷是否有正常連線
if (modbus_connect(ctx) == -1)
{
    printf("modbus link error");
    modbus_free(ctx);
    /* 釋放 */
}
[NSThreadsleepForTimeInterval:0.1];
/* 設定延時0.1sec ps這邊使用的是objective c 的寫法 ; c 使用delay time */
/* 未設定延時會有timeout產生 */
modbus_write_register(ctx,0x0259,0x0003);
/* 寫入資料PLC的位置 modbus_write_register(usb port,PLC位置,數值) */
/* 結束流程 */
modbus_close(ctx);
modbus_free(ctx);

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *