当波特率为38400 bit/s时,Modbus通信协议推荐此时1个字符时间为500μs,即定时器定时时间为250μs。图3-20 Modbus数据串行口接收中断服务程序结构框图......
2023-11-22
由RTU模式消息帧格式可以看出,在完整的一帧消息开始传输时,必须和上一帧消息之间至少有3.5个字符时间的间隔,这样接收方在接收时才能将该帧作为一个新的数据帧接收。另外,在本数据帧进行传输时,帧中传输的每个字符之间不能超过1.5个字符时间的间隔,否则,本帧将被视为无效帧,但接收方将继续等待和判断下一次3.5个字符的时间间隔之后出现的新一帧并进行相应的处理。
因此,在编程时首先要考虑1.5个字符时间和3.5个字符时间的设定和判断。
1.字符时间的设定
在RTU模式中,1个字符时间是指按照用户设定的波特率传输一个字节所需要的时间。
例如,当传输波特率为2400bit/s时,1个字符时间为
11×1/2400=4583μs
同样,可得出1.5个字符时间和3.5个字符时间分别为
11×1.5/2400=6875μs
11×3.5/2400=16042μs
为了节省定时器,在设定这两个时间段时可以使用同一个定时器,定时时间取为1.5个字符时间和3.5个字符时间的最大公约数即0.5个字符时间,同时设定两个计数器变量为m和n,用户可以在需要开始启动时间判断时将m和n清零。而在定时器的中断服务程序中,只需要对m和n分别做加1运算,并判断是否累加到3和7。当m=3时,说明1.5个字符时间已到,此时可以将1.5个字符时间已到标志T15FLG置成01H,并将m重新清零;当n=7时,说明3.5个字符时间已到,此时将3.5个字符时间已到标志T35FLG置成01H,并将n重新清零。(www.chuimin.cn)
波特率从1200~19200bit/s,定时器定时时间均采用此方法计算。
当波特率为38400bit/s时,Modbus通信协议推荐此时1个字符时间为500μs,即定时器定时时间为250μs。
2.数据帧接收的编程方法
在实现Modbus通信时,设每个字节的一帧信息需要11位,其中1位起始位、8位数据位和2位停止位,无校验位。通过串行口的中断接收数据,中断服务程序每次只接收并处理一个字节数据,并启动定时器实现时序判断。
在接收新一帧数据时,接收完第一个字节之后,置帧标志FLAG为0AAH,表明当前存在一个有效帧正在接收。在接收该帧的过程中,一旦出现时序不对,则将帧标志FLAG置成55H,表明当前存在的帧为无效帧。其后,接收到本帧的剩余字节仍然放入接收缓冲区,但标志FLAG不再改变,直至接收到3.5字符时间间隔后的新一帧数据的第一个字节,主程序即可根据FLAG标志判断当前是否有有效帧需要处理。
Modbus数据串行口接收中断服务程序如图3-18所示。
图3-18 Modbus数据串行口接收中断服务程序结构框图
有关现场总线与工业以太网及其应用技术的文章
当波特率为38400 bit/s时,Modbus通信协议推荐此时1个字符时间为500μs,即定时器定时时间为250μs。图3-20 Modbus数据串行口接收中断服务程序结构框图......
2023-11-22
ModBus控制系统的技术特征:1)ModBus通信协议是一种工业现场总线通信协议,ModBus协议把通信对象定义为“主站”和“从站”。图1-18 用网关来实现现场总线和管理网络的互联图1-19 ModBus协议和ISO/OSI参考模型的关系......
2023-08-29
Arduino是源自意大利的一个开放源代码的硬件项目平台,该平台包括一块具备简单I/O功能的电路板以及一套程序开发环境软件。Arduino简化了单片机工作的流程,对AVR库进行了二次编译封装,把端口都打包好,寄存器、地址指针之类的基本不用管,大大降低了软件开发难度,适宜非专业爱好者使用,特别适合学生和一些业余爱好者使用。本文后续内容均在Arduino UNO板上编程。图7-1Arduino UNO R3的开发板......
2023-06-26
Intel 处理器接口很多,如LGA775、LGA1366、LGA1155、LGA1156 以及LGA2011等,虽然它们针脚数不一样,但安装的过程是十分类似的。图7-8利用凹凸槽对准CPU 插槽Intel 二代智能酷睿处理器采用的是双凹槽设计,让用户安装方便,如图7-9 所示。图7-10压杆下压锁紧CPU经过以上3 个步操作,Intel 处理器可顺利安装到主板上。这样设计的好处是有效防止了安装CPU 时针脚被损坏,但是弊端是如果主板的处理器插槽针脚有损坏,更换就会更加的麻烦。......
2023-11-18
PCIe总线规范将这种“对PCIe设备配置空间”的读写访问方式称为ECAM机制。CPU可以直接对这段特殊的存储器域地址空间进行访问,从而访问PCIe设备的配置空间。使用ECAM机制与使用CONFIG_ADDRESS和CONFIG_DATA这对寄存器,间接访问PCIe设备的配置空间有较大的不同。其中raw_pci_ops函数指针使用0xCF8和0xCFC两个I/O端口寄存器访问PCI总线配置空间,而raw_pci_ext_ops函数使用ECAM方式访问PCI总线配置空间。虽然Montevina平台提供了256MB的PCIe设备使用的配置空间,但是这些空间的实际利用率较低。......
2023-10-20
图11-41 新建工程界面2.模块FB的声明为了编写程序,需要在模块FB声明窗口中对模块FB进行声明。单击该按钮后会显示模块型号选择列表,从列表内选择“QX40”模块,如图11-43所示。按照先前的方法定义两个常量,分别是“40”和“55”,定义一个变量“TIC001.SV”,随后根据图示使用连线工具进行连接。图11-60 定义注释5.程序编译1)单击工具栏的图标,也可以通过点击菜单的“Convert(转换)”→“Cold-start Compile”执行操作,如图11-61所示。......
2023-06-16
第十三条人民法院经过阅卷、调查或者询问当事人,认为原告起诉不符合法定起诉条件的,可以迳行裁定驳回起诉,但需要开庭审理查明相关事实的除外。第十七条人民法院审查申请再审案件,应当依据行政诉讼法第九十一条规定,结合当事人的再审请求及理由进行审查。第十八条依法快速审理的简单行政案件,庭审笔录可以适当简化。第二十一条人民法院审理简单行政案件过程中,发现案件疑难复杂的,应当及时转为复杂案件进行审理。......
2023-07-31
图6.2-4 G代码输入页面图6.2-5 G代码文本说明在选择了G代码后,可继续利用地址、数字键输入坐标值,输入完成后用和键将所需要的数据输入到程序中。图6.2-6 G代码图形说明图6.2-7 M代码输入页面输入M代码数值(如01)并利用键确认,CNC即可显示图6.2-8所示的M代码的文本型帮助文件。......
2023-06-25
相关推荐