正運(yùn)動技術(shù)運(yùn)動控制器與觸摸屏通訊講義 1.控制器支持的觸摸屏 只要支持MODBUS通訊協(xié)議的觸摸屏都可以與正運(yùn)動控制器連接使用。控制器使用MODBUS協(xié)議與觸摸屏通訊時,此時需要將數(shù)據(jù)放在MODBUS寄存器內(nèi)進(jìn)行傳遞。 2.控制器與觸摸屏modbus寄存器地址關(guān)系 控制器的MODBUS地址與其他廠家的觸摸屏地址映射關(guān)系有所不同。 ⊙控制器的MODBUS地址從0開始,在與威綸觸摸屏通訊時,地址都是從0開始,所以是一一對應(yīng)。 控制器MODBUS_BIT(0)對應(yīng)威綸觸摸屏 MODBUS_0X_0,布爾型。 控制器MODBUS_REG(0)對應(yīng)威綸觸摸屏 MODBUS_4X_0,字寄存器。 ⊙在與昆侖通態(tài)觸摸屏通訊時,昆侖通態(tài)地址從1開始,控制器地址從0開始,所以觸摸屏地址加1。 控制器MODBUS_BIT(0) 對應(yīng)昆侖通態(tài)觸摸屏 MODBUS_0x_1,布爾型。 控制器MODBUS_REG(0) 對應(yīng)昆侖通態(tài)觸摸屏 MODBUS_4x_1,字寄存器 。 ⊙控制器端程序可使用ZDevelop軟件支持的Basic語言或PLC梯形圖編程。 Basic語言中MODBUS_BIT(0)~ 對應(yīng)PLC梯形圖的M0~。 Basic語言中MODBUS_REG(0)~ 對應(yīng)PLC梯形圖的D0~。 3.控制器MODBUS寄存器 MODBUS通訊的數(shù)據(jù)使用MODBUS寄存器存儲,控制器的MODBUS寄存器符合MODBUS標(biāo)準(zhǔn)通訊協(xié)議,分為位寄存器和字寄存器兩類。 位寄存器:MODBUS_BIT,觸摸屏一般稱為MODBUS_0X,布爾型。 字寄存器:包含MODBUS_REG(16位整形)、MODBUS_LONG(32位整形)、MODBUS_IEEE(32位浮點(diǎn)形)、MODBUS_STRING(8位字節(jié)型),觸摸屏一般叫MODBUS_4X。 控制器中MODBUS字寄存器都占用同一片系統(tǒng)變量空間,其中一個LONG占用兩個REG地址,一個IEEE也占用兩個REG地址,使用時要注意錯開字寄存器編號地址。 ⊙MODBUS_LONG(0)占用MODBUS_REG(0)與MODBUS_REG(1)兩個REG地址。 ⊙MODBUS_LONG(1)占用MODBUS_REG(1)與MODBUS_REG(2)兩個REG地址。 ⊙MODBUS_IEEE(0)占用MODBUS_REG(0)與MODBUS_REG(1)兩個REG地址。 ⊙MODBUS_IEEE(1)占用MODBUS_REG(1)與MODBUS_REG(2)兩個REG地址。 所以要注意MODBUS_REG、MODBUS_LONG、MODBUS_IEEE地址在用戶應(yīng)用程序中不能重疊。 控制器的MODBUS存儲空間安排如下: 可選串口連接或網(wǎng)口連接。 1.網(wǎng)口連接 控制器出廠默認(rèn)IP地址為192.168.0.11,IP地址可在軟件“控制器狀態(tài)”窗口查看。使用IP_ADDRESS指令修改IP地址或在修改IP地址窗口修改,修改一次永久生效??刂破髦辽侔?個網(wǎng)口通道,網(wǎng)口的端口號為502,支持觸摸屏的MODBUS-TCP協(xié)議連接。 網(wǎng)口通道數(shù)查看 不同型號控制器支持的串口通道數(shù)和網(wǎng)口通道數(shù)不同。使用在線命令欄發(fā)送“?*port”查看通道數(shù),通道數(shù)確定了控制器能同時連接的設(shè)備個數(shù)。 在線命令欄發(fā)送“?*port_status”查看通訊端口是否已被使用。 2.串口連接 variable參數(shù)選擇寄存器:控制器出廠默認(rèn)選擇2,此時系統(tǒng)MODBUS寄存器與VR為兩片獨(dú)立區(qū)間。 variable參數(shù)選擇示例: Port0:setcom(9600,8,1,0,0,4,2,1000) 三、控制器連接觸摸屏使用 使用的一般流程: 控制器端的程序使用ZDevelop軟件編寫完成下載到控制器內(nèi)。 觸摸屏端的程序使用對應(yīng)的編程軟件編寫完成后下載到觸摸屏保存。 程序下載完成之后,選擇串口或網(wǎng)口連接觸摸屏與控制器脫機(jī)運(yùn)行。 四、控制器和威綸屏通訊實例 以控制器和威綸屏通訊為例展開觸摸屏的使用說明。 第一步:控制器端的程序使用ZDevelop軟件編寫完成下載到控制器內(nèi)。 第二步:下載觸摸屏程序。威綸觸摸屏端的程序使用EasyBuilder編程軟件編寫,程序編程完成后,打開“系統(tǒng)參數(shù)設(shè)置”窗口,如下圖。 1)添加要與觸摸屏連接的設(shè)備 設(shè)備列表里會顯示本機(jī)觸摸屏和本機(jī)設(shè)備,若有本機(jī)設(shè)備雙擊該行,若沒有本機(jī)設(shè)備,點(diǎn)擊“新建設(shè)備/服務(wù)器...”,彈出設(shè)備屬性窗口。 2)設(shè)置設(shè)備屬性 選擇設(shè)備類型,先選MODBUS IDA通訊協(xié)議,再根據(jù)觸摸屏與控制器的實際連接方式選擇。 串口通訊和網(wǎng)口通訊所選的設(shè)備類型不同,詳見后續(xù)說明。 若采用串口連接: ⊙設(shè)備類型:選擇模式MODBUS RTU(Zero-based Addressing) ⊙接口類型:選擇串口類型(RS485或RS232) ⊙COM:通訊端口設(shè)置匹配的波特率等參數(shù) 此時參數(shù)必須與連接到控制器的端口參數(shù)一致,設(shè)置完成確認(rèn)關(guān)閉系統(tǒng)參數(shù)設(shè)置窗口。 若采用網(wǎng)口連接: ⊙設(shè)備類型:選擇模式MODBUS TCP/IP(Zero-based Addressing)。 ⊙接口類型自動改為以太網(wǎng) ⊙IP:填入當(dāng)前要連接的控制器的IP地址 設(shè)置完成確認(rèn)關(guān)閉系統(tǒng)參數(shù)設(shè)置窗口。 3)系統(tǒng)參數(shù)設(shè)置完成后,編譯寫好的組態(tài)程序,將觸摸屏連接到PC,待程序下載到觸摸屏后斷開連接。 第三步:連接觸摸屏與控制器,此時觸摸屏與控制器就可以相互通信了。 若沒有控制器或觸摸屏,可采用仿真器仿真,ZDevelop程序下載到仿真器內(nèi),EasyBuilder軟件的系統(tǒng)參數(shù)設(shè)置時選擇設(shè)備類型為MODBUS IDA—MODBUS TCP/IP(Zero-based Addressing),IP地址填入仿真器IP:127.0.0.1,選擇“在線模擬”即可連接控制器程序與組態(tài)程序進(jìn)行仿真。 1.觸摸屏端示例程序 威綸組態(tài)程序如下: 控制器程序分為五個模塊: 1)初始化模塊:軸參數(shù)設(shè)置,變量定義,按鍵復(fù)位。 '**********初始化模塊********* ERRSWITCH = 3 '全部信息輸出 RAPIDSTOP(2) WAIT IDLE
BASE(0,1) '選定 X Y軸 DPOS=0,0 ATYPE=1,1 UNITS = 100,100 SPEED = 100,100 ACCEL = 1000,1000 DECEL = 1000,1000 SRAMP = 100,100
DIM run_state '運(yùn)行狀態(tài) run_state = 0 '0 停止,1 運(yùn)行,2 回零 MODBUS_REG(0) = run_state '顯示運(yùn)行狀態(tài)
DIM radius,length '半徑,長度 radius = 100 '缺省半徑大小 length = 300 '缺省長度 FLASH_READ 0,radius,length MODBUS_IEEE(2) = radius '顯示半徑大小 MODBUS_IEEE(4) = length '顯示長度
DIM home_done '回零完成的標(biāo)志位 0 未回零,1 已回零 home_done = 0 '上電進(jìn)入未回零狀態(tài)
MODBUS_BIT(0) = 0 '啟動 按鈕復(fù)歸 MODBUS_BIT(1) = 0 '停止 按鈕復(fù)歸 MODBUS_BIT(4) = 0 '回零 按鈕復(fù)歸 MODBUS_BIT(5) = 0 '保存數(shù)據(jù) 按鈕復(fù)歸
MODBUS_BIT(1000)=0 'X軸 回零標(biāo)志為0 MODBUS_BIT(1001)=0 'Y軸 回零標(biāo)志為0
STOPTASK 2 RUNTASK 2, guidetask '啟動手動運(yùn)行任務(wù) 2)按鍵掃描模塊:按下啟動,停止,回零,保存數(shù)據(jù)觸發(fā)執(zhí)行相應(yīng)程序。
3)加工運(yùn)動模塊:啟動按鍵按下調(diào)用執(zhí)行運(yùn)動指令。 '**********加工運(yùn)動模塊********* movetask: '運(yùn)行畫圓弧+跑道的任務(wù) run_state =1 '進(jìn)入運(yùn)行狀態(tài) MODBUS_REG(0) = run_state
radius = MODBUS_IEEE(2) '讀取半徑 length = MODBUS_IEEE(4) '讀取長度 TRIGGER BASE(0,1) '選定 X Y軸 moveabs(0,0) move(length,0) '從原點(diǎn)開始走跑道軌跡 movecirc(0,radius*2,0,radius,0) move(-length,0) movecirc(0,-radius*2,0,-radius,0) wait idle(0) run_state = 0 '進(jìn)入待機(jī)狀態(tài) MODBUS_REG(0) = run_state END 4)回零模塊:回零按鍵按下調(diào)用執(zhí)行軸回零。
5)手動運(yùn)動模塊:手動觸發(fā)軸正向或負(fù)向點(diǎn)動。 '**********手動運(yùn)動********* guidetask: WHILE 1 IF run_state = 0 THEN '判斷是否處于停止?fàn)顟B(tài) BASE(0) IF MODBUS_BIT(10) = 1 THEN '左 MODBUS_BIT(10) = 0 VMOVE(-1) ELSEIF MODBUS_BIT(11) = 1 THEN '右 MODBUS_BIT(11) = 0 VMOVE(1) ELSEIF MTYPE = 10 OR MTYPE = 11 THEN '非VMOVE運(yùn)動 CANCEL(2) ENDIF BASE(1) IF MODBUS_BIT(20) = 1 THEN '左 MODBUS_BIT(20) = 0 VMOVE(-1) ELSEIF MODBUS_BIT(21) = 1 THEN '右 MODBUS_BIT(21) = 0 VMOVE(1) ELSEIF MTYPE = 10 OR MTYPE = 11 THEN '非VMOVE運(yùn)動 CANCEL(2) ENDIF ENDIF delay(100) WEND END A、程序任務(wù)分配情況 自動運(yùn)行任務(wù)0: 若為串口連接設(shè)置SETCOM參數(shù)中的mode與variable 清空運(yùn)動緩沖,各軸的初始化 自定義變量的初始化與FLASH讀取初始化變量 MODBUS_BIT/REG/IEEE相關(guān)變量的初始化 啟動任務(wù)2作為手動任務(wù)運(yùn)行 循環(huán)掃描程序: MODBUS_BIT(0)判斷啟動 如果已回零,啟動任務(wù)1自動程序 如果未回零,提示系統(tǒng)要回零先 MODBUS_BIT(1)判斷停止 運(yùn)動急停,停止任務(wù)1 MODBUS_BIT(4)判斷回零 如果未回零,啟動任務(wù)1回零程序 MODBUS_BIT(5)判斷參數(shù)寫入 任務(wù)1: 自動程序 選定軸0,軸1 加工運(yùn)行 等待運(yùn)動空閑 結(jié)束本任務(wù) 任務(wù)1:回零程序 選定軸0,軸1 開始回零 等待運(yùn)動空閑 結(jié)束本任務(wù) 任務(wù)2: 手動程序 不斷掃描程序: 如果待機(jī)狀態(tài)下 指定軸0或軸1的手動運(yùn)動,可選方向 等待運(yùn)動空閑 B、程序資源分配 自定義的MODBUS_BIT資源: MODBUS_BIT(0) 啟動 按鈕 MODBUS_BIT(1) 停止 按鈕 MODBUS_BIT(4) 回零 按鈕 MODBUS_BIT(5) 保存數(shù)據(jù) 按鈕 MODBUS_BIT(10) X軸負(fù)向運(yùn)動 MODBUS_BIT(11) X軸正向運(yùn)動 MODBUS_BIT(20) Y軸負(fù)向運(yùn)動 MODBUS_BIT(21) Y軸正向運(yùn)動 MODBUS_BIT(1000) X軸 回零標(biāo)志 MODBUS_BIT(1001) Y軸 回零標(biāo)志 自定義的MODBUS_REG/LONG/IEEE資源: MODBUS_REG(0) run_state 顯示運(yùn)行狀態(tài) MODBUS_IEEE(2) radius 顯示并設(shè)置加工半徑 MODBUS_IEEE(4) length 顯示并設(shè)置加工長度 任務(wù)資源: 任務(wù)0:初始化變量與任務(wù)2,主循環(huán) 不斷掃描外部變量來運(yùn)行 任務(wù)1:由任務(wù)0啟動,自動程序用于加工 由任務(wù)0啟動,回零程序用于歸零 任務(wù)2 :由任務(wù)0啟動,用于手動掃描 用到的全局變量資源: run_state 運(yùn)行狀態(tài) 0停止,1運(yùn)行,2回零 MODBUS_REG(0) 顯示 home_done 回零完成的標(biāo)志位 0 未回零,1 已回零 radius MODBUS_IEEE(2) 加工的半徑 length MODBUS_IEEE(4) 加工的長度 FLASH資源: 扇區(qū)0 radius,length 讀寫數(shù)據(jù) 用到的軸資源: 軸0:X軸 軸1:Y軸 VR資源: 無 中斷資源: 無 任務(wù)1啟動,運(yùn)行自動加工模塊,示波器采集的波形如下圖: 曲線0(紅色):軸0的目標(biāo)位置DPOS(0) 曲線1(紫色):軸1的目標(biāo)位置DPOS(1) |
|