用示波器看透PLC中ModBus通讯的UART物理传输表达方式
ModBus通信协议
一种串行应用层软件通信协议 ,由Modicon公司(如今的施耐德电气)在1979年为PLC通信而制定。现已成为工业通讯业界标准,并且也设备间常用的通信协议。
UART / 串口
通用异步收发传输器
U niversal
A synchronous
R eceiver/T ransmitter
早于ModBus的硬件通讯器 ,用于并行数据转为串行进行传输,实现增距减线的目的。
同步收发,有时钟线,就像节拍器,打一拍,收发一个数位(0或1),短距离传输还好,长距离传输时钟线就会惹麻烦,这就有了异步收发。
异步收发,没有时钟线,那就得有约定,这个约定就是"UART硬件通讯协议",本文的主角 。
只有看透了UART物理表达,PLC中ModBus通讯才不会"缺一门"。
下面我将通过示波器,让您看透"UART硬件通讯协议"——物理传输表达方式 。
ModBus通讯在串行链路上的约定
ModBus协议是一个层级很少的的协议,从应用层直接跨接到数据链路层。
UART是在最底层(第1层)负责用逻辑电平,来把信号,从一端传递到另外一端,并能正确接收。
一个ModBus数据帧是这样约定的,如下图:
UART负责传输的是添加了地址和CRC校验域的串行链路PDU。
每个串行链路PDU,都是由多个字节(8数位组成的最小记录单位)组成,用UART硬件协议格式实施物理传输,如下图:
由于TTL、RS422、RS485、RS232都能表达物理传输的逻辑,为了便于我们识别,我们使用基带信号TTL电平的表达方式来实验。
搭建测试电路 和 程序
1个usb转422通讯接口
1个422转TTL双向接口
1个stc单片机,并编一个echo程序,让收到的信息原样发送出来,同时生成一个波特率脉冲与数据对齐。
RS422实际上是双工的RS485,使用这种接口来下载程序和测试串口,可以使用机载电源,也就是不让usb给系统供电,这是产品化过程中的优化考虑。
下面我们把422通讯线连接起来
接入usb准备下载程序和串口调试
用充电宝,独立给系统供电,与usb供电无关。
接入示波器,通道1观察TXD发送端的TTL波形,通道2,观察程序产生的波特率脉冲,这样有助于我们理解每一个数位是在什么时刻传输的。
示波器解读UART的每一个数位的传送
1、空闲状态
2、发送55H
3、发送56H
4、发送57H
5、发送58H
6、用起始位解读数据位接收的采样过程
所有的UART硬件传输协议,都在上面这些图片里。
8位数据打包成带有校验功能的11位帧进行发送和接收。
ModBus协议规定:
波特率19200bps
偶校验
1位起始位、8位数据位
1位校验位、1位停止位
这样的11位传输格式是必须的,也可以有其他波特率和无校验位(校验位由1填充)的格式也是兼容的。
经济型EtherCAT运动控制器(九):示波器使用
XPLC006E功能简介
XPLC006E是正运动运动控制器推出的一款多轴经济型EtherCAT总线运动控制器,XPLC系列运动控制器可应用于各种需要脱机或联机运行的场合。
XPLC006E自带6个电机轴,最多12轴运动控制(含虚拟轴数),支持12轴直线插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等功能。
XPLC006E支持多任务同时运行,同时可以在PC上直接仿真运行,编程方式多种可选,支持ZDevelop软件的Basic/PLC梯形图/HMI组态和常用上位机软件编程。
XPLC006E只支持EtherCAT总线轴,不支持脉冲轴和编码器轴。采用EtherCAT总线与驱动器通讯,1ms的刷新周期。
XPLC006E支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
→此款产品有XPLC004E、XPLC006E、XPLC008E三个不同轴数的型号可选。
XPLC864E功能简介
XPLC864E在XPLC006E的功能基础上做了升级(即上节介绍的XPLC006E的功能都支持),部分资源空间优于XPLC006E,使用方法基本一致,不同之处在于XPLC864E,硬件支持32点输入、32点输出、2个ADC、2个DAC,支持脉冲轴和总线轴混合使用,总实轴轴数为8,除了带EtherCAT接口之外,输出口硬件上可配置为8个轴的脉冲方向信号输出,另带两路编码器输入,可由输入口配置
XPLC864E支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
XPLC系列经济型EtherCAT总线运动控制器支持多种编程方式,支持使用正运动技术自主研发的ZDevelop开发环境的Basic语言和PLC梯形图,上一节讲解了控制器的轴参数与运动指令说明,本节内容主要讲解控制器的示波器使用。
一、示波器的作用
示波器属于程序调试与运行中极其重要的一个部分,用于把肉眼看不到的信号转换成图形,便于研究各种信号变化过程,例如当前轴的速度和位置变化情况。
示波器利用控制器内部处理的数据,每隔一定的时间获取数据的当前值,然后把获取到的该数据的所有值显示成随时间变化的图形,利用示波器可以显示各种不同的信号,如轴参数、轴状态等。
在“视图”→“示波器”中,打开示波器窗口,示波器窗口如下图。
⊙示波器必须先启动后触发才能成功采样。打开示波器,设置好相关参数之后点击“启动”,可点击“手动触发”采样,也可在程序里加入“TRIGGER”指令自动触发示波器采样。
二、示波器面板介绍
1.主界面
示波器主界面的按钮功能阐述。
(1)基础设置
设置: 打开示波器设置窗口,设置示波器相关参数。
启动: 启动示波器(表示示波器准备好,等待触发采样)。
停止: 停止示波器采样。
水平刻度: YT模式下横轴(时间)一格的刻度,其他模式下此参数无效。
<<: 按下隐藏通道名称和峰值显示,只显示通道编号。
连续采集: 不开启连续采集时,到达采样深度后便停止采样,开启了连续采集之后示波器会持续采样。
跟随: 开启跟随后,横轴自动移动到实时采样处,跟随波形显示。
手动触发: 手动触发示波器采样按钮(自动触发使用TRIGGER指令)。
导入导出: 将示波器采样的数据点导出txt文件,再次加载显示点击导入,详细说明参加下节。
(2)显示模式
YT模式: 不同数据源随时间变化的曲线。
XY模式: 显示两个轴在某个平面的合成轨迹,将第一二个通道的曲线合成显示,适用于两轴插补。
XYZ模式: 显示三个轴在空间的合成轨迹,将第一二三个通道的曲线合成显示,适用于三轴插补。
(3)采样数据设置
显示: 选择当前通道曲线是否显示。
编号: 选择需要采集的数据源编号,需参考数据源,如:轴号、数字量IO编号、模拟量IO编号、TABLE编号、VR编号、MODBUS编号等。
数据源: 选择采集的数据类型,如下图,下拉菜单选择,多种类型参数可选。
偏移: 波形纵轴偏移量设置。
垂直刻度: 纵轴一格的刻度。
⊙若要设置示波器参数,如轴编号、数据源以及启动示波器设置窗口,要先停止示波器再设置。
2.设置界面
点击主界面的“设置”按钮,弹出如下图所示“示波器设置”窗口。
通道数 :要采样的数据通道总数,最多支持8通道同时采样。
深度: 总共采样的数据次数,深度越大采样的数据点越多,连续采集模式下此数据无效。
间隔: 采样时间间隔,此参数参考系统周期SERVO_PERIOD,系统周期出厂默认为1ms,即间隔设置为1表示1ms采样一次,系统周期与控制器固件版本有关。一般来说,间隔越小,采样数据越准确,单位时间内数据量越大。
TABLE位置: 设置不开启连续采集时抓取数据存放的位置,一般默认自动使用TABLE数据末尾空间,也可以自定义配置,但是设置时注意不要与程序使用的TABLE数据区域重合;连续采集下采样数据缓存在PC。
背景颜色/通道颜色: 设置背景与每个通道波形对应的颜色。
显示类型: 点和线段两种曲线类型可选。线段是将采样点集拟合成线,更容易发现异常的数据。
导出参数: 需要导出示波器数据时在采样前勾选,等待采样结束,在主界面选择导出。
3.示波器采样数据导入导出
导入: 示波器必须在停止状态下才能导入数据,导入成功能将采样波形复现出来。
导入采样数据方法: 点击“导入”,选择导入的数据文件为之前从示波器导出的文件类型后打开即可。
导出: 导出参数包括示波器参数设置情况,以及各个通道的数据类型和每个采样点的数据。
导出采样数据方法: 先在设置里勾选“导出参数”,启动示波器采样,采样完成后点击“导出”,选择文件夹保存示波器数据,导出数据为文本文件。
如下图,采样轴0的DPOS位置和MSPEED速度两个通道导出的数据。
三、示波器采样方法
1.示波器采样参考步骤
第一步: 打开工程项目,连接控制器或仿真器,再打开示波器窗口(操作示波器窗口之前需要连接到控制器或仿真器才可以操作)。
第二步: 在示波器窗口点击“设置”,选择采样通道数,采样深度,采样间隔,采样数据TABLE存储位置(一般来说自动使用TABLE数组末尾空间即可)和采样类型等,设置完成确认保存当前设置。
第三步: 再选择采样数据编号和数据源
第四步: 参数设置完毕,点击“启动”按钮,等待触发采样。
第五步: 将程序下载到控制器运行,程序里需要包含TRIGGER自动触发示波器采样指令,此时示波器开始采样,显示出不同数据源的波形。可调整显示刻度和波形偏移,便于观察不同波形。
⊙若波形精度不高或显示不完整,可点击“停止”按钮后再打开“设置”,调整好采样间隔和采样深度后重新执行上述采样过程。
⊙若需要采样的时间较长,开启“连续采集”功能。
2.示波器使用注意事项
(1)连续采集功能
不选择连续采集时,到达采样深度后示波器自动停止采样。
在示波器主界面勾选连续采集,再开启示波器,示波器触发采样后会持续采样,到达采样深度后仍继续采样,忽略设置的采样深度,直到按下停止才会停止采样。
连续采集的所有波形采样数据均能导出。
(2)XY模式/XYZ模式
由于这两种采集模式是把前两个/三个通道的数据合成,要注意数据源的类型,有部分数据合成是没有意义的,比如速度和位置曲线的合成曲线便无意义,一般用于查看合成插补轨迹。
(3)示波器采样时间计算
例如: 深度:10000,间隔:5
非连续采集模式下,如果系统周期SERVO_PERIOD=1000,也就是1ms轨迹规划周期,间隔5表示每5ms采集一个数据点,一共采集10000次数据,采集时间长度为50s。
采样时间间隔最小为一个系统周期,设置更小无效。
(4)TABLE数据末尾存储空间计算
非连续采集模式设置抓取数据存放的位置,一般默认自动使用TABLE数据末尾空间,此时根据采样数据占用空间大小自动计算起始空间地址。
计算方法: 采样数据占用空间大小=通道数*深度
例: 若控制器的TABLE空间大小为320000,采样4个通道,深度为30000,每个采样点占用一个TABLE,所以会占用4*30000 = 120000个TABLE位置,320000-120000=200000,此时TABLE的起始位置为200000
数据存放的位置也可以自定义配置,若按上面的通道数和深度,起始TABLE空间自定义时不能超过200000,否则无法设置,如下图所示。
⊙示波器采样数据占用的空间不要与程序使用的TABLE数据区域重合。
⊙控制器TABLE空间大小可使用TSIZE指令读取、在“控制器状态”窗口查看或在线命令“?*max”打印查看。
四、示波器使用例程
1.直线插补的例程
(1)YT模式下三个轴的DPOS位置随时间变化的曲线
(2)XYZ模式下三轴位置合成轨迹,即为实际加工的轨迹
2.自动凸轮飞剪的例程
假设要切的型材长度为4m,工作台运行距离1m,轴1为基本轴(型材传送),轴0为跟随轴(追剪工作台),OUT0口控制刀具,飞剪部分程序如下:
速度和位置的波形如下图 :轴1为匀速运动的传送带,轴0为追剪轴。
工作台(跟随轴)的运动距离: 0.4(加速阶段)+0.2(跟随同步)+0.4(减速阶段)=1m单位,然后-1m返回运动。
型材(参考轴)的运动距离: 1+0.8+0.2+0.8+1.2=4m单位,全程匀速。
3.单轴PSO位置同步输出
硬件比较输出指令触发后,到达比较点输出OP信号,PSO示意图如下图所示,以ZMC432为例进行演示。
位置同步输出示意图
输出随轨迹变化的波形如下图,HW_PSWITCH2控制每到达一个TABLE点位置OP便反转一次,TABLE的所有点比较结束之后,OP不再反转,保持最后一次的电平状态。
4.二维或者三维的PSO输出
二轴PSO位置同步输出,到达比较点输出OP信号,以ZMC432为例进行演示。
PSO功能支持固定周期输出,也支持固定距离输出,如下右图,固定距离输出使得在拐角等需要减速的场合,拐角处的输出也是均匀的,不会堆积。
(1)YT模式下的波形如下图所示
比较20个点,每次比较OP反转一次,每段运动最后部分因为加入了SRAMP速度平滑处理,处于减速段,所以相同距离,运动时间更长,OP反转的时间间隔也相应延长。
(2)XYZ模式下的3D波形如下图所示
本次,正运动技术经济型EtherCAT运动控制器(九):示波器使用,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
相关问答
plc怎么通电测试?
PLC通电测试通常包括以下步骤:首先,确保所有连接好电源线,然后插入电源插座。接着,在PLC控制器上设置开关到“关闭”状态,然后将PLC控制器插入RJ45连接器...
数控机床如何进行报警画面的显示
[回答]--------------------------------------------------------------------------------275062165数控机床维修技术3...
松下plc怎么测量输出端好坏?
1.可以通过测量输出端的电压或电流来判断松下PLC的输出端是否正常工作。2.原因是输出端的电压或电流是衡量输出信号的重要指标,如果输出端的电压或电流与预...
哪位朋友求了解!!如何把电脑模拟成触摸屏与plc连接?,马赛克...
[回答]数据的传输无非0和1,有电和无电。不管你想显示什么,触摸屏最后的结果也就是0和1。电脑也一样。所以示波器可以显示出每条线的波形。根据波形编写译...
怎么看PLC发送的脉冲和驱动器接收的脉冲-158****3239的回...
一般都可以在伺服驱动器中监视脉冲数在U参数(监控参数)里面,你最好翻下手册,这个对自己来说也是个学习.走偏一般就3个原因1联轴器是否固定,(虽然...
怎样测量cclink输出点?
要测量CCLink输出点,首先需要确保CCLink网络连接正常。然后,使用CCLink模块的输入/输出状态指示灯来确定输出点的状态。通过读取PLC程序中的输出位状态,可以进...
2022湖南对口招生考试机电类专业考试基本要求及考试大纲-红...
机电类专业综合知识考试基本要求及考试大纲一、考试基本要求(一)基本知识和基本技能的考试要求1.掌握机电类专业的基础知识、基本概念、基本理论...
modbus通讯故障,有哪些解决方法?-懂得
除了楼上说的外,有条件的可以用示波器或者逻辑分析仪看一下,加上配合电脑分别调整,一定可以找到故障原因。建议做好接地,通讯线躲开大电流的地方,...
jd1a-40调试方法?
要调试JD1A-40,您可以按照以下步骤进行操作:1.首先,确保设备的电源连接正常,并检查所有连接线是否牢固。2.确认设备的设置和参数是否正确,例如速度、加...
有人知道不!专门PLC自动化编程培训就业班,PLC自动化编程培...
[回答]我们是做非标自动化设备的。以前我也和你一样想用PLC控制电调,因为我是做机械结构的,所以找了电控的来试了试。按道理,PLC可以发出电调所需要的调制...