随笔分类 -  C语言

叙述C语言开发心得的相关文章
摘要:最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址:http://brettbeauregard.com/blog/2011/04/ 阅读全文
posted @ 2019-07-20 21:10 Moonan 阅读(2857) 评论(0) 推荐(1)
摘要:对于Modbus TCP来说与Modbus RTU和Modbus ASCII有比较大的区别,因为它是运行于以太网链路之上,是运行于TCP/IP协议之上的一种应用层协议。在协议栈的前两个版本中,Modbus TCP作为客户端时也存在一些局限性。我们将对这些不足作一定更新。 1、存在的不足 在原有的协议 阅读全文
posted @ 2019-06-15 22:09 Moonan 阅读(4823) 评论(0) 推荐(0)
摘要:前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用。但在使用过程中,我们发现一些使用不便和受限的地方,所以我们就想要更新一下协议栈,主要是应用站的封装。 1、存在的局限性 阅读全文
posted @ 2019-04-27 21:56 Moonan 阅读(7523) 评论(0) 推荐(0)
摘要:我们在使用C语言实现相对复杂的软件开发时,经常会碰到使用回调函数的问题。但是回调函数的理解和使用却不是一件简单的事,在本篇我们根据我们个人的理解和应用经验对回调函数做简要的分析。 1、什么是回调函数 既然谈到了回调函数,首先我们就要搞清楚什么是回调函数。在讨论回调函数之前,我们需要说明另一个概念,那 阅读全文
posted @ 2018-12-22 11:14 Moonan 阅读(2447) 评论(0) 推荐(0)
摘要:在C语言中,修饰符extern用在变量或者函数的声明前,用来以标识变量或者函数的定义在别的文件中,提示编译器遇到此变量或者函数时,在其它文件中寻找其定义。extern关键字的用法有几种,我们下面对其进行说明。 (1)extern修饰变量的声明 extern关键字可以用来修饰变量,表示该变量在别的文件 阅读全文
posted @ 2018-12-16 19:14 Moonan 阅读(1354) 评论(1) 推荐(1)
摘要:神经网络是模拟人脑思维方式的数学模型。神经网络是智能控制的一个重要分支,人们针对控制过程提供了各种实现方式,在本节我们主要讨论一下采用单神经元实现PID控制器的方式。 1、单神经元的基本原理 单神经元作为构成神经网络的基本单位,具有自学习和自适应能力,且结构简单而易于计算。接下来我们讨论一下单神经元 阅读全文
posted @ 2018-12-01 21:42 Moonan 阅读(9211) 评论(0) 推荐(1)
摘要:在C语言中有一个typedef关键字,其用来定义用户自定义类型。当然,并不是真的创造了一种数据类型,而是给已有的或者符合型的以及复杂的数据类型取一个我们自己更容易理解的别名。总之,可以使用typedef关键字定义一个我们自己的类型名称。 那么,究竟如何定义,又有哪些情况下可已使用呢?接下来我们就对它 阅读全文
posted @ 2018-11-25 07:38 Moonan 阅读(1932) 评论(0) 推荐(0)
摘要:在C语言中,还有一个并不经常使用但却非常有用的关键字volatile。那么使用volatile关键字究竟能干什么呢?接下来我将就此问题进行讨论。 一个使用volatile关键字定义变量,其实就是告诉编译系统这变量可能会被意想不到地改变。那么编译时,编译器就不会自作主张的去假设这个变量的值,而进行代码 阅读全文
posted @ 2018-11-04 21:59 Moonan 阅读(1343) 评论(0) 推荐(1)
摘要:在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图。 事实上,无论我们是使用const关键字声明变量还是声明参数,其目的都是为了告诉使用者这个变量或者参数的应用目的。合 阅读全文
posted @ 2018-10-21 19:58 Moonan 阅读(4881) 评论(0) 推荐(0)
摘要:这一节我们来封装Modbus ASCII Master应用,Modbus ASCII主站的开发与RTU主站的开发是一致的。同样的我们也不是做具体的应用,而是实现ASCII主站的基本功能。我们将ASCII主站的功能封装为函数,以便在开发具体应用时调用。 对于ASCII主站我们主要实现的功能有两个:其一 阅读全文
posted @ 2018-09-30 06:44 Moonan 阅读(1508) 评论(0) 推荐(0)
摘要:与Modbus RTU在串行链路上分为Slave和Master一样,Modbus ASCII也分为Slave和Master,这一节我们就来开发Slave。对于Modbus ASCII从站来说,需要实现的功能其实与Modbus RTU的Slave是一样的。其操作过程也是一样的。首先接收到主站的访问命令 阅读全文
posted @ 2018-09-22 21:20 Moonan 阅读(1615) 评论(0) 推荐(0)
摘要:前面我们讨论了经典的数字PID控制算法及其常见的改进与补偿算法,基本已经覆盖了无模型和简单模型PID控制经典算法的大部。再接下来的我们将讨论智能PID控制,智能PID控制不同于常规意义下的智能控制,是智能算法与PID控制算法的结合,是基于PID控制器的智能化优化。 在本章我们首先来探讨一下专家PID 阅读全文
posted @ 2018-09-09 21:19 Moonan 阅读(5561) 评论(1) 推荐(0)
摘要:C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些。我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂。 一般来说static关键字的常见用法有三种:一是用作局部变量的修饰符;二是用作全局变量修饰符;三是用作函数修饰符。在本篇接下来的描述中 阅读全文
posted @ 2018-08-25 06:44 Moonan 阅读(1665) 评论(0) 推荐(0)
摘要:在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文,一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章,本人觉得很有启发,特将其翻译过来以备参考。原文网址:https://mcuoneclipse.com/2018/08/02/tutorial 阅读全文
posted @ 2018-08-11 14:29 Moonan 阅读(2551) 评论(0) 推荐(0)
摘要:C语言中的运算符绝对是C语言学习和使用的一个难点,因为在2011版的标准中,C语言的运算符的数量超过40个,甚至比关键字的数量还要多。这些运算符有单目运算符、双目运算符以及三目运算符,又涉及到左结合和右结合的问题,真是令人眼花缭乱。 1、运算符及优先级 运算符多可能使用更灵活方便,但这还涉及到运算符 阅读全文
posted @ 2018-07-28 18:25 Moonan 阅读(1062) 评论(0) 推荐(0)
摘要:对于一般的PID控制系统来说,当设定值发生较大的突变时,很容易产生超调而使系统不稳定。为了解决这种阶跃变化造成的不利影响,人们发明了步进式PID控制算法。 1、步进式PID的基本思想 所谓步进式PID算法,实际就是在设定值发生阶跃变化时,不直接对阶跃信号进行响应,而是在一定的时间内逐步改变设定值,直 阅读全文
posted @ 2018-07-22 09:58 Moonan 阅读(4030) 评论(0) 推荐(0)
摘要:对于一般的时滞系统来说,设定值的变动会产生较大的滞后才能反映在被控变量上,从而产生合理的调节。而前馈控制系统是根据扰动或给定值的变化按补偿原理来工作的控制系统,其特点是当扰动产生后,被控变量还未变化以前,根据扰动作用的大小进行控制,以补偿扰动作用对被控变量的影响。前馈控制系统运用得当,可以使被控变量 阅读全文
posted @ 2018-07-14 22:44 Moonan 阅读(17665) 评论(1) 推荐(0)
摘要:在计算机控制系统中,由于系统特性和计算精度等问题,致使系统偏差总是存在,系统总是频繁动作不能稳定。为了解决这种情况,我们可以引入带死区的PID算法。 1、带死区PID的基本思想 带死区的PID控制算法就是检测偏差值,若是偏差值达到一定程度,就进行调节。若是偏差值较小,就认为没有偏差。用公式表示如下: 阅读全文
posted @ 2018-06-22 21:34 Moonan 阅读(12302) 评论(6) 推荐(0)
摘要:前面已经实现了各种的PID算法,然而在某些给定值频繁且大幅变化的场合,微分项常常会引起系统的振荡。为了适应这种给定值频繁变化的场合,人们设计了微分先行算法。 1、微分先行算法的思想 微分先行PID控制是只对输出量进行微分,而对给定指令不起微分作用,因此它适合于给定指令频繁升降的场合,可以避免指令的改 阅读全文
posted @ 2018-06-09 15:33 Moonan 阅读(16719) 评论(0) 推荐(2)
摘要:从PID控制的基本原理我们知道,微分信号的引入可改善系统的动态特性,但也存在一个问题,那就是容易引进高频干扰,在偏差扰动突变时尤其显出微分项的不足。为了解决这个问题人们引入低通滤波方式来解决这一问题。 1、不完全微分的基本思想 微分项有引入高频干扰的风险,但若在控制算法中加入低通滤波器,则可使系统性 阅读全文
posted @ 2018-06-02 22:20 Moonan 阅读(8553) 评论(1) 推荐(2)