小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

快速入門丨篇四:如何進(jìn)行運(yùn)動控制器與觸摸屏通訊?

 阿明哥哥資料區(qū) 2020-08-25
此前,正運(yùn)動技術(shù)給大家講了,運(yùn)動控制器的“固件升級”、“ZBasic程序開發(fā)”以及“ZPLC程序開發(fā)”,今天我們來學(xué)習(xí)一下運(yùn)動控制器與觸摸屏通訊。
話不多說,直接上視頻干貨:

正運(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”查看通訊端口是否已被使用。

當(dāng)前網(wǎng)口通道協(xié)議查看
使用PROTOCOL 指令返回當(dāng)前通道的通訊協(xié)議,根據(jù)返回值判斷。

2.串口連接

串口通常可選RS232串口或RS485串口,串口默認(rèn)參數(shù)為:波特率38400,數(shù)據(jù)位8,停止位1,校驗位無,采用SETCOM指令配置串口參數(shù)??刂破髦匦律想姾?,SETCOM參數(shù)會還原成默認(rèn)值,所以請在程序開頭寫SETCOM設(shè)置??刂破鞯乃写诘腗ODBUS協(xié)議站號ADDRESS為 1- 127,缺省=1。

串口MODBUS主從端選擇
SETCOM指令除了可以配置串口的通訊基本參數(shù)外,還可以選擇配置通訊協(xié)議,設(shè)置控制器為主端設(shè)備還是從端設(shè)備,還可以開啟自定義通訊模式(即mode=0無協(xié)議模式)。
語法:SETCOM (baudrate,databits,stopbits,parity,port[,mode] [,variable] [,timeout])      

mode參數(shù)選擇協(xié)議:與觸摸屏通訊時,mode參數(shù)選擇協(xié)議:4
Port0:setcom(9600,8,1,0,0,4,2,1000)
Port1:setcom(9600,8,1,0,1,4,2,1000)
串口掉電保持配置
SETCOM指令可選擇寄存器,默認(rèn)為MODBUS寄存器,可配置是否使用掉電保持寄存器存儲數(shù)據(jù)。

 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)程序如下:

2.控制器端示例程序(basic示例程序)

控制器程序分為五個模塊:

1)初始化模塊:軸參數(shù)設(shè)置,變量定義,按鍵復(fù)位。

'**********初始化模塊*********ERRSWITCH = 3 '全部信息輸出RAPIDSTOP(2)WAIT IDLE
BASE(0,1) '選定 X Y軸DPOS=0,0ATYPE=1,1UNITS = 100,100SPEED = 100,100ACCEL = 1000,1000DECEL = 1000,1000SRAMP = 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,lengthMODBUS_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)志為0MODBUS_BIT(1001)=0        'Y軸 回零標(biāo)志為0
STOPTASK 2RUNTASK 2, guidetask      '啟動手動運(yùn)行任務(wù)

2)按鍵掃描模塊:按下啟動,停止,回零,保存數(shù)據(jù)觸發(fā)執(zhí)行相應(yīng)程序。

'**********按鍵掃描模塊*********WHILE 1                     '掃描觸摸屏端按鈕輸入    IF MODBUS_BIT(0)= 1 THEN       '啟動按鈕按下        MODBUS_BIT(0) = 0          '按鈕復(fù)歸                          IF run_state = 0 THEN        '待機(jī)停止?fàn)顟B(tài)                            IF home_done = 0 THEN    '未回零時不啟動運(yùn)動                TRACE 'before move need home'                                            ELSEIF home_done = 1 THEN  '已回零啟動任務(wù)運(yùn)行                TRACE 'move start'                STOPTASK 1          '軟件安全,停止任務(wù)0                RUNTASK 1, movetask   '啟動運(yùn)行加工任務(wù)1                                    ENDIF        ENDIF                            ELSEIF MODBUS_BIT(1) = 1 THEN    '停止按鈕按下        TRACE 'move stop'        MODBUS_BIT(1) = 0             '按鈕復(fù)歸
RAPIDSTOP(2) STOPTASK 1 RAPIDSTOP(2) run_state = 0 '停止標(biāo)志        MODBUS_REG(0) = run_state    '顯示狀態(tài)                 ENDIF IF MODBUS_BIT(4) = 1 THEN '回零按鈕按下        MODBUS_BIT(4) = 0                  '回零復(fù)歸                   IF run_state= 0  THEN                  stoptask 1           runtask 1,     home_task    '啟動回零任務(wù) ENDIF ENDIF '''保存數(shù)據(jù)處理    IF MODBUS_BIT(5) = 1 THEN      '保存數(shù)據(jù) 按鈕按下          MODBUS_BIT(5) = 0        '保存數(shù)據(jù) 按鈕復(fù)歸           print '寫入數(shù)據(jù)到FLASH'                          radius = MODBUS_IEEE(2)            length = MODBUS_IEEE(4)           FLASH_WRITE 0,radius,length   '往扇區(qū)0寫入數(shù)據(jù)            ENDIF                                      WENDEND

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_stateEND 

4)回零模塊:回零按鍵按下調(diào)用執(zhí)行軸回零。

'**********回零任務(wù)*********home_task:             trace 'enter home task'
run_state = 2 '回零標(biāo)志 MODBUS_REG(0) = run_state '顯示狀態(tài) trigger base(0,1) cancel(2) axis(0) '先軸0,軸1停止 cancel(2) axis(1) wait idle(0)      wait idle(1)                                              'datum(3) axis(0)             '實際設(shè)備軸0的歸零             'datum(3) axis(1)             '實際設(shè)備軸1的歸零     moveabs(0) axis(0)            '虛擬設(shè)備軸0的歸零     moveabs(0) axis(1)            '虛擬設(shè)備軸1的歸零      wait idle(0)             MODBUS_BIT(1000)=1           '設(shè)置軸0已歸零的標(biāo)志      wait idle(1)                             MODBUS_BIT(1001)=1           '設(shè)置軸1已歸零的標(biāo)志      home_done = 1             trace 'home task done'              run_state = 0                   '回到待機(jī)狀態(tài)     MODBUS_REG(0) = run_state        end

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)WENDEND

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資源:

中斷資源:

C、示波器采樣波形

任務(wù)1啟動,運(yùn)行自動加工模塊,示波器采集的波形如下圖:

曲線0(紅色):軸0的目標(biāo)位置DPOS(0)

曲線1(紫色):軸1的目標(biāo)位置DPOS(1)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多