如何进行正运动技术运动控制器与触摸屏通讯

2025-04-05 13:42:42

今天我们来学傍闭渌幔习一下运动控制器与触摸屏通讯。

一、控制器与触摸屏的通讯简介

1.控制器支持的触摸屏

只要支持MODBUS通讯协议的触摸屏都可以与正运动控制器连接使用。控制器使用MODBUS协议与触摸屏通讯时,此时需要将数据放在MODBUS寄存器内进行传递。

2.控制器与触摸屏modbus寄存器地址关系

控制器的MODBUS地址与其他厂家的触摸屏地址映射关系有所不同。

⊙控制器的MODBUS地址从0开始,在与威纶触摸屏通讯时,地址都是从0开始,所以是一一对应。

控制器MODBUS_BIT(0)对应威纶触摸屏 MODBUS_0X_0,布尔型。

控制器MODBUS_REG(0)对应威纶触摸屏 MODBUS_4X_0,字寄存器。

⊙在与昆仑通态触摸屏通讯时,昆仑通态地址从1开始,控制器地址从0开始,所以触摸屏地址加1。

  控制器MODBUS_BIT(0) 对应昆仑通态触摸屏 MODBUS_0x_1,布尔型。

  控制器MODBUS_REG(0) 对应昆仑通态触摸屏 MODBUS_4x_1,字寄存器 。

⊙控制器端程序可使用ZDevelop软件支持的Basic语言或PLC梯形图编程。

  Basic语言中MODBUS_BIT(0)~ 对应PLC梯形图的M0~。

  Basic语言中MODBUS_REG(0)~ 对应PLC梯形图的D0~。

3.控制器MODBUS寄存器

MODBUS通讯的数据使用MODBUS寄存器存储,控制器的MODBUS寄存器符合MODBUS标准通讯协议,分为位寄存器和字寄存器两类。

位寄存器:MODBUS_BIT,触摸屏一般称为MODBUS_0X,布尔型。

字寄存器:包含MODBUS_REG(16位整形)、MODBUS_LONG(32位整形)、MODBUS_IEEE(32位浮点形)、MODBUS_STRING(8位字节型),触摸屏一般叫MODBUS_4X。

如何进行正运动技术运动控制器与触摸屏通讯

控制器中MODBUS字寄存器都占用同一片系统变量空间,其中一个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地址在用户应用程序中不能重叠。

控制器的MODBUS存储空间安排如下:

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

二、触摸屏与控制器的连接方式

可选串口连接或网口连接。

1.网口连接

控制器出厂默认IP地址为192.168.0.11,IP地址可在软件“控制器状态”窗口查看。使用IP_ADDRESS指令修改IP地址或在修改IP地址窗口修改,修改一次永久生效。控制器至少包含2个网口通道,网口的端口号为502,支持触摸屏的MODBUS-TCP协议连接。

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

网口通道数查看:不同型号控制器支持的串口通道数和网口通道数不同。使用在线命令栏发送“?*port”查看通道数,通道数确定了控制器能同时连接的设备个数。

如何进行正运动技术运动控制器与触摸屏通讯

在线命令栏发送“?*port_status”查看通讯端口是否已被使用。

如何进行正运动技术运动控制器与触摸屏通讯

当前网口通道协议查看:使用PROTOCOL 指令返回当前通道的通讯协议,根据返回值判断。

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

2.串口连接

串口通常可选RS232串口或RS485串口,串口默认参数为:波特率38400,数据位8,停止位1,校验位无,采用SETCOM指令配置串口参数。控制器重新上电后,SETCOM参数会还原成默认值,所以请在程序开头写SETCOM设置。控制器的所有串口的MODBUS协议站号ADDRESS为 1- 127,缺省=1。

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

串口MODBUS主从端选择:SETCOM指令除了可以配置串口的通讯基本参数外,还可以选择配置通讯协议,设置控制器为主端设备还是从端设备,还可以开启自定义通讯模式(即mode=0无协议模式)。语法:SETCOM (baudrate,databits,stopbits,parity,port[,mode] [,variable] [,timeout])      

如何进行正运动技术运动控制器与触摸屏通讯

mode参数选择协议:与触摸屏通讯时,mode参数选择协议:4

Port0:setcom(9600,8,1,0,0,4,2,1000)

Port1:setcom(9600,8,1,0,1,4,2,1000)

串口掉电保持配置:SETCOM指令可选择寄存器,默认为MODBUS寄存器,可配置是否使用掉电保持寄存器存储数据。

 variable参数选择寄存器:控制器出厂默认选择2,此时系统MODBUS寄存器与VR为两片独立区间。

如何进行正运动技术运动控制器与触摸屏通讯

variable参数选择示例:

Port0:setcom(9600,8,1,0,0,4,2,1000)

三、控制器连接触摸屏使用

使用的一般流程:

(1)控制器端的程序使用ZDevelop软件编写完成下载到控制器内。

(2)触摸屏端的程序使用对应的编程软件编写完成后下载到触摸屏保存。

(3)程序下载完成之后,选择串口或网口连接触摸屏与控制器脱机运行。

四、控制器和威纶屏通讯实例

以控制器和威纶屏通讯为例展开触摸屏的使用说明。

第一步:控制器端的程序使用ZDevelop软件编写完成下载到控制器内。

第二步:下载触摸屏程序。威纶触摸屏端的程序使用EasyBuilder编程软件编写,程序编程完成后,打开“系统参数设置”窗口,如下图。

如何进行正运动技术运动控制器与触摸屏通讯

1)添加要与触摸屏连接的设备

设备列表里会显示本机触摸屏和本机设备,若有本机设备双击该行,若没有本机设备,点击“新建设备/服务器...”,弹出设备属性窗口。

2)设置设备属性

选择设备类型,先选MODBUS IDA通讯协议,再根据触摸屏与控制器的实际连接方式选择。

串口通讯和网口通讯所选的设备类型不同,详见后续说明。

如何进行正运动技术运动控制器与触摸屏通讯

若采用串口连接:

⊙设备类型:选择模式MODBUS RTU(Zero-based Addressing)

⊙接口类型:选择串口类型(RS485或RS232)

⊙COM:通讯端口设置匹配的波特率等参数

此时参数必须与连接到控制器的端口参数一致,设置完成确认关闭系统参数设置窗口。

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

若采用网口连接:

⊙设备类型:选择模式MODBUS TCP/IP(Zero-based Addressing)。

⊙接口类型自动改为以太网

⊙IP:填入当前要连接的控制器的IP地址

设置完成确认关闭系统参数设置窗口。

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

3)系统参数设置完成后,编译写好的组态程序,将触摸屏连接到PC,待程序下载到触摸屏后断开连接。

第三步:连接触摸屏与控制器,此时触摸屏与控制器就可以相互通信了。

若没有控制器或触摸屏,可采用仿真器仿真,ZDevelop程序下载到仿真器内,EasyBuilder软件的系统参数设置时选择设备类型为MODBUS IDA—MODBUS TCP/IP(Zero-based Addressing),IP地址填入仿真器IP:127.0.0.1,选择“在线模拟”即可连接控制器程序与组态程序进行仿真。

五、通讯例程

1.触摸屏端示例程序

威纶组态程序如下:

如何进行正运动技术运动控制器与触摸屏通讯

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

控制器程序分为五个模块:

1)初始化模块:轴参数设置,变量定义,按键复位。


'**********初始化模块*********

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 '运行状态

run_state = 0 '0 停止,1 运行,2 回零

MODBUS_REG(0) = run_state '显示运行状态

DIM radius,length '半径,长度

radius = 100 '缺省半径大小

length = 300 '缺省长度

FLASH_READ 0,radius,length

MODBUS_IEEE(2) = radius '显示半径大小

MODBUS_IEEE(4) = length '显示长度

DIM home_done '回零完成的标志位 0 未回零,1 已回零

home_done = 0 '上电进入未回零状态

MODBUS_BIT(0) = 0 '启动 按钮复归

MODBUS_BIT(1) = 0 '停止 按钮复归

MODBUS_BIT(4) = 0 '回零 按钮复归

MODBUS_BIT(5) = 0 '保存数据 按钮复归

MODBUS_BIT(1000)=0 'X轴 回零标志为0

MODBUS_BIT(1001)=0 'Y轴 回零标志为0

STOPTASK 2

RUNTASK 2, guidetask '启动手动运行任务


2)按键扫描模块:按下启动,停止,回零,保存数据触发执行相应程序。


'**********按键扫描模块*********

WHILE 1 '扫描触摸屏端按钮输入

IF MODBUS_BIT(0)= 1 THEN '启动按钮按下

MODBUS_BIT(0) = 0 '按钮复归

IF run_state = 0 THEN '待机停止状态

IF home_done = 0 THEN '未回零时不启动运动

TRACE "before move need home"

ELSEIF home_done = 1 THEN '已回零启动任务运行

TRACE "move start"

STOPTASK 1 '软件安全,停止任务0

RUNTASK 1, movetask '启动运行加工任务1

ENDIF

ENDIF

ELSEIF MODBUS_BIT(1) = 1 THEN '停止按钮按下

TRACE "move stop"

MODBUS_BIT(1) = 0 '按钮复归

RAPIDSTOP(2)

STOPTASK 1

RAPIDSTOP(2)

run_state = 0 '停止标志

MODBUS_REG(0) = run_state '显示状态

ENDIF

IF MODBUS_BIT(4) = 1 THEN '回零按钮按下

MODBUS_BIT(4) = 0 '回零复归

IF run_state= 0 THEN

stoptask 1

runtask 1, home_task '启动回零任务

ENDIF

ENDIF

'''保存数据处理

IF MODBUS_BIT(5) = 1 THEN '保存数据 按钮按下

MODBUS_BIT(5) = 0 '保存数据 按钮复归

print "写入数据到FLASH"

radius = MODBUS_IEEE(2)

length = MODBUS_IEEE(4)

FLASH_WRITE 0,radius,length '往扇区0写入数据

ENDIF

WEND

END


3)加工运动模块:启动按键按下调用执行运动指令。


'**********加工运动模块*********

movetask: '运行画圆弧+跑道的任务

run_state =1 '进入运行状态

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) '从原点开始走跑道轨迹

movecirc(0,radius*2,0,radius,0)

move(-length,0)

movecirc(0,-radius*2,0,-radius,0)

wait idle(0)

run_state = 0 '进入待机状态

MODBUS_REG(0) = run_state

END


4)回零模块:回零按键按下调用执行轴回零。


'**********回零任务*********

home_task:

trace "enter home task"

run_state = 2 '回零标志

MODBUS_REG(0) = run_state '显示状态

trigger

base(0,1)

cancel(2) axis(0) '先轴0,轴1停止

cancel(2) axis(1)

wait idle(0)

wait idle(1)

'datum(3) axis(0) '实际设备轴0的归零

'datum(3) axis(1) '实际设备轴1的归零

moveabs(0) axis(0) '虚拟设备轴0的归零

moveabs(0) axis(1) '虚拟设备轴1的归零

wait idle(0)

MODBUS_BIT(1000)=1 '设置轴0已归零的标志

wait idle(1)

MODBUS_BIT(1001)=1 '设置轴1已归零的标志

home_done = 1

trace "home task done"

run_state = 0 '回到待机状态

MODBUS_REG(0) = run_state

end


5)手动运动模块:手动触发轴正向或负向点动。


'**********手动运动*********

guidetask:

WHILE 1

IF run_state = 0 THEN '判断是否处于停止状态

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运动

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运动

CANCEL(2)

ENDIF

ENDIF

delay(100)

WEND

END


A、程序任务分配情况

自动运行任务0:

若为串口连接设置SETCOM参数中的mode与variable

清空运动缓冲,各轴的初始化

自定义变量的初始化与FLASH读取初始化变量

MODBUS_BIT/REG/IEEE相关变量的初始化

启动任务2作为手动任务运行   

循环扫描程序:

     MODBUS_BIT(0)判断启动

           如果已回零,启动任务1自动程序

           如果未回零,提示系统要回零先

     MODBUS_BIT(1)判断停止

           运动急停,停止任务1

     MODBUS_BIT(4)判断回零

           如果未回零,启动任务1回零程序

     MODBUS_BIT(5)判断参数写入

任务1:自动程序

    选定轴0,轴1

    加工运行

    等待运动空闲

    结束本任务

任务1:回零程序

    选定轴0,轴1

    开始回零

    等待运动空闲

    结束本任务

任务2:手动程序

     不断扫描程序:    

     如果待机状态下

     指定轴0或轴1的手动运动,可选方向         

     等待运动空闲

B、程序资源分配

自定义的MODBUS_BIT资源:

MODBUS_BIT(0)    启动 按钮

MODBUS_BIT(1)    停止 按钮

MODBUS_BIT(4)    回零 按钮

MODBUS_BIT(5)    保存数据 按钮

MODBUS_BIT(10)    X轴负向运动

MODBUS_BIT(11)    X轴正向运动

MODBUS_BIT(20)    Y轴负向运动

MODBUS_BIT(21)    Y轴正向运动

MODBUS_BIT(1000)   X轴 回零标志

MODBUS_BIT(1001)   Y轴 回零标志

自定义的MODBUS_REG/LONG/IEEE资源:

MODBUS_REG(0)    run_state 显示运行状态

MODBUS_IEEE(2)    radius 显示并设置加工半径 

MODBUS_IEEE(4)    length 显示并设置加工长度 

任务资源:

任务0:初始化变量与任务2,主循环

             不断扫描外部变量来运行

任务1:由任务0启动,自动程序用于加工

            由任务0启动,回零程序用于归零

任务2 :由任务0启动,用于手动扫描

用到的全局变量资源:

run_state   运行状态

            0停止,1运行,2回零

            MODBUS_REG(0) 显示

home_done   回零完成的标志位

            0 未回零,1 已回零 

radius    MODBUS_IEEE(2) 加工的半径

length    MODBUS_IEEE(4) 加工的长度

FLASH资源:

扇区0   radius,length

        读写数据

用到的轴资源:

轴0:X轴

轴1:Y轴

VR资源:

中断资源:

C、示波器采样波形

任务1启动,运行自动加工模块,示波器采集的波形如下图:

曲线0(红色):轴0的目标位置DPOS(0)

曲线1(紫色):轴1的目标位置DPOS(1)

如何进行正运动技术运动控制器与触摸屏通讯
如何进行正运动技术运动控制器与触摸屏通讯

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢