摩登3测速代理_C/C++中关于局部函数中更新实参指针的方法

在C++” target=”_blank”>C++语言中因为参数的传递方式属于值传递,局部参数在函数内部的改变并不会影响实参的值,有时候为了保存对在函数中的修改,往往采用返回值或者指向指针的指针的形式来实现,我就采用简单的内存分配来说明。其中很多初学者都会犯的错误就是第一种实现方式,那是因为我们没有搞清楚C语言的参数传递方式。 本文引用地址:http://www.eepw.com.cn/article/201612/324508.htm /*错误的实现*/ void getmemory(int *ptr,int size) { ptr = (int *)malloc(sizeof(int)*size); } /*返回值类型*/ int * getmemory(int size) { int *temp = (int *)malloc(sizeof(int)*size); if(temp != NULL) { return temp; } return NULL; } /*指向指针的指针*/ void getMemory(int **buf,int size) { *buf = (int *)malloc(sizeof(int)*size); } 上面的实现是C语言中关于指针更新的两种方式,这两种方式在一些结构体中使用的也比较多,比如链表,队列等常用的数据结构操作中。这两种实现方式有各自的优缺点,比如返回值类型,因为在C语言中只能返回一个值,当然也可以采用结构体的形式采用保证实现多类型返回。这时候如果返回了一个指针操作,往往也不便于返回其他重要的信息,比如有时候要返回操作是否成功的标志等,这时候就显得特别不方便,最典型的例子就是在链表头中插入新的数据时,这时候链表头被更新了,如果直接返回链表头就不能观察当前操作是否完成,而且如果没有都需要返回值来更新链表头,也显得特别不方便。 /*返回值式的链表更新表头操作*/ head = insert_listnode(head,value); /*自动更新的操作*/ insert_listnode(*head,value); 一般而言,我在写程序的过程中更加喜欢用第二种形式,这时候就显得第一种特别的不舒服。但是第二种写法也存在一些缺点,特别是当很多人对指针处于懵懂的期间,很容易出现错误,因为在函数内部一般操作的对象不是传递进来的参数,而是对参数的解引用,如果对函数调用和指针不是很清楚的情况下,这种写法很容易出现错误,因为不知道何时是采用(*head)何时采用head,不清楚这一点,代码自然而然就出现了错误。第一种往往是很多入门级程序员(我之前一般采用的方式)比较喜欢的方式。 在C++中关于函数参数的传递比C语言中有了更多的选择,其中比较重要的就是引用的引入,引用是一段内存区域的别名,对别名的操作实质上就是对内存本身的操作,这和传值的方式有着本质的区别,有了这种意识。我觉得采用引用的方式实现指针的更新就会更加的方便,也就能够克服前面两种方法的缺点。即占用返回值和在函数内部合适使用指针合适使用解引用。 采用简单的例子说明: bool getMemory(int * &a, int size) { /*本应该采用new实现,但是为了和前面一直,采用malloc实现*/ a = (int *)malloc(sizeof(int)*size); if(a != NULL) return true; else return false; } 这时候就很好的实现了在函数内部实现实参指针参数的更新,简要的分析一下,由于变量a是一个指针对象的引用,在函数的调用时就发生了引用对象的绑定操作,绑定一旦完成就不会更改了,这时候对变量a的操作实质上就是对指针的操作,如下所示: int *b; /* 在调用该函数的时候,相当于发生了绑定操作 int *&a = b; 这时候对a的操作就是对b的操作 在函数内部将a指向了一个新的对象 实质就是将b指向了这个对象 这样就实现了实参指针的更新操作 这种操作不需要注意解引用,而且不会占用返回值 */ getMemory(b,10); 所以说在C++ 中,多考虑引用的方式作为参数,不仅仅能够避免大数据结构的复制,有时候也能起到恰到好处的作用。我认为这也是C++中推荐使用引用作为参数的原因之一。

摩登3娱乐怎么样?_CC-Link现场总线系统构成及特点

融合了控制与信息处理的现场总线CC-Link(Control &Communication Link)是一种省配线、信息化的网络,它不但具备高实时性、分散控制、与智能设备通信、RAS等功能,而且依靠与诸多现场设备制造厂商的紧密联系,提供开放式的环境。Q系列PLC的CC-Link模块QJ61BTll,在继承A/QnA系列特长的同时,还采用了远程设备站初始设定等方便的功能。 为了将各种各样的现场设备直接连接到CC-Link上,与国内外众多的设备制造商建立了合作伙伴关系,使用户可以很从容地选择现场设备,以构成开放式的网络。2000年10月,Woodhead、Contec、Digital、NEC、松下电工、三菱等6家常务理事公司发起,在日本成立了独立的非盈利性机构“CC-Link协会”(CC-Link Partner Association,简称CLPA),旨在有效地在全球范围内推广和普及CC-Link技术。到2001年12月CLPA成员数量为230多家公司,拥有360多种兼容产品。 1.CC-Link系统的构成CC-Link系统只少1个主站,可以连接远程I/O站、远程设备站、本地站、备用主站、智能设备站等总计64个站。CC-Link站的类型如表1所示。表1 CC-Link站的类型 CC-Link站的类型 内容 主站 控制CC-Link上全部站,并需设定参数的站。每个系统中必须有1个主站。如A/QnA/Q系列PLC等 本地站 具有CPU模块,可以与主站及其他本地站进行通信的站。如A/QnA/Q系列PLC等 备用主站 主站出现故障时,接替作为主站,并作为主站继续进行数据链接的站。(http://www.diangon.com/版权所有)如A/QnA/Q系列PLC等 远程I/O站 只能处理位信息的站,如远程I/O模块、电磁阀等 远程设备站 可处理位信息及字信息的站,如A/D、D/A转换模块、变频器等 智能设备站 可处理位信息及字信息,而且也可完成不定期数据传送的站,如A/QnA/Q系列PLC、人机界面等 CC-Link系统可配备多种中继器,可在不降低通信速度的情况下,延长通信距离,最长可达13.2km。例如,可使用光中继器,在保持10Mbps通信速度的情况下,将总距离延长至4300m。另外,T型中继器可完成T型连接,更适合现场的连接要求。 2.CC-Link的通信方式 (1)循环通信方式 CC-Link采用广播循环通信方式。在CC-Link系统中,主站、本地站的循环数据区与各个远程I/O站、远程设备站、智能设备站相对应,远程输入输出及远程寄存器的数据将被自动刷新。而且,因为主站向远程I/O站、远程设备站、智能设备站发出的信息也会传送到其他本地站,所以在本地站也可以了解远程站的动作状态。 (2)CC-Link的链接元件 每一个CC-Link系统可以进行总计4096点的位,加上总计512点的字的数据的循环通信,通过这些链接元件以完成与远程I/O、模拟量模块、人机界面、变频器等FA(工业自动化)设备产品间高速的通信。 CC-Link的链接元件有远程输入(RX)、远程输出(RY)、远程寄存器(RWw)和远程寄存器(RWr)四种,如表2所示。远程输入(RX)是从远程站向主站输入的开/关信号(位数据);远程输出(RY)是从主站向远程站输出的开/关信号(位数据);远程寄存器(RWw)是从主站向远程站输出的数字数据(字数据);远程寄存器(RWr)是从远程站向主站输入的数字数据(字数据)。 表2链接元件一览表 项目 规格 整个CC-Link系统最大链接点数 远程输入(RX) 2048点 远程输出(RY) 2048点 远程寄存器(RWw) 256点 远程寄存器(RWr) 256点 每个站的链接点数 远程输入(RX) 32点 远程输出(RY) 32点 远程寄存器(RWw) 4点 远程寄存器(RWr) 4点 注:CC-Link中的每个站可根据其站的类型,分别定义为1个、2个、3个或4个站,即通信量可为表中“每个站的链接点数”的1到4倍。(3)瞬时传送通信在CC-Link中,除了自动刷新的循环通信之外,还可以使用不定期收发信息的瞬时传送通信方式。瞬时传送通信可以由主站、本地站、智能设备站发起,可以进行以下的处理: l)某一PLC站读写另一PLC站的软元件数据。2)主站PLC对智能设备站读写数据。3)用GX Developer软件对另一PLC站的程序进行读写或监控。4)上位PC等设备读写一台PLC站内的软元件数据。 3.CC-Link的特点(1)通信速度快 CC-Link达到了行业中最高的通信速度(10Mbps),可确保需高速响应的传感器输入和智能化设备间的大容量数据的通信。可以选择对系统最合适的通信速度及总的距离见表3. 表3 CC-Link通信速度和距离的关系 通信速度 10Mbps 5Mbps 2.5Mbps 625kbps 156kbps 通信距离 ≤100m ≤160m ≤400m ≤900m ≤1200m 注:可通过中继器延长通信距离 (2)高速链接扫描在只有主站及远程I/O站的系统中,通过设定为远程I/O网络模式的方法,可以缩短链接扫描时间。表4为全部为远程I/O站的系统所使用的远程I/O网络模式和有各种站类型的系统所使用的远程网络模式(普通模式)的链接扫描时间的比较。表4链接扫描时间的比较(通信速度为10Mbps时) 站数 链接扫描时间/ms 远程I/O网络模式 远程网络模式(普通模式) 16 1.02 1.57 32 1.77 2.32 64 3.26 3.81 (3)备用主站功能使用备用主站功能时,当主站发生了异常时,备用主站接替作为主站,使网络的数据链接继续进行。而且在备用主站运行过程中,原先的主站如果恢复正常时,则将作为备用主站回到数据链路中。在这种情况下,如果运行中主站又发生异常时,则备用主站又将接替作为主站继续进行数据链接。

摩登3主管554258:_电力猫 D-Link W306AV拆解

为大家送上了D-Link W306AV无线电力猫的评测,从总体的评测状况来看,这款产品确实让我们感到比较满意。但是在测试中,有几个问题我们认为还是能够进一步改进的。首先是发热问题,我们怀疑这款产品使用的是Atheros的芯片,因为感觉发热量很大,连续工作后的温度估计在40℃左右。其次则是它的插销头,感觉有些松。 本文引用地址:http://www.eepw.com.cn/article/234814.htm     那既然是有疑问,我们也就顾不上这是目前国内媒体唯一的一对W306AV了,拆了它!这是我们心中一个越来越强烈的愿望。好吧,说干就干,先把它扒光了扔上拆解台。     动手之前先验明一下正身。那句Designed by D-Link California是有关这款W306AV另外一个让我很感兴趣的话题。没听说过D-Link在美帝还有这么一个高档场所啊?问D-Link的蔺坛主,答曰:“有兴趣的话,咱们可以组团去参观啊。”好,蔺坛主,您老的话我记下了。     好了,开始动手吧。和TP-Link那个全部采用卡榫设计的PLC产品不同,W306AV看起来十分好拆,四颗螺丝拧下,我们就能进入它的体内了。螺丝拧的很紧,装配质量相当好。     因为只顾着使劲拧螺丝了,当我们把四颗螺丝全部拧下来之后,发现W306AV竟然掉出来一些白色的渣。看看螺丝孔,没有破损的迹象,估计是封螺丝用的一种什么东东吧。     “喀嚓!”猛的把W306AV掰开的感觉,真的是很有快感啊!就像我们手里捧着一个大西瓜,“喀嚓”一声给掰开的感觉,实在很有成就感。     拿下上盖,首先看到的是一个被金属屏蔽罩保护着的电路板。从屏蔽罩的外形上我们即可看出,这是W306AV的无线模块。     好吧,我实在没想到,就是这么一个看起来不大的玩意,竟然在肚子里藏了三块电路板。我们可以试着猜测一下,最下面的,自然是它的电路板,用于与电力线的电力连接和信号的获取。中间的一层,则是将获取的电力线信号,转换为无线芯片能够识别的数字信号,然后交给最上面的无线模块,编码之后发射出去。 前面我们看到,这款W306AV在小小的机身内,竟然有三层电路板等着我们去一一拆开。那这三层电路板是怎么连接的呢?     拧掉无线模块上的三颗螺丝,我们看到在电路板的一侧,还有两排插针需要拔开。这两排插针就是从电力线信号转换模块到无线模块之间的数据线路。     由于无线模块和天线直接焊在了一起,所以我们也就没动烙铁把它焊下来。而里面的两层电路板,要想拿出来,咱们只能使用一点暴力了。     一番撕扯蹂躏之后,里面的两块电路板只得举手投降,乖乖的从机壳里爬了出来。注意看各个电路板之间,这款W306AV的防护措施,确实做得相当到位啊。     在无线模块和电力线信号调制模块之间的,是一块厚厚的不锈钢板。但是它的安装方式实在让人蛋疼,我们费了老半天的时间,才找到一把能伸进去这个狭小地方的尖嘴钳子。     电源模块和电力线信号调制模块之间,还是使用两排插针进行连接。拔掉这两组插针,我们就能够看到最底层的电源模块了。     这就是位于最底层的电源模块。除了电器电路之外,这里还有网线接口。从电力线获得的模拟信号,并不在这里进行调制,而是通过插针输送到上面一层的电路板中进行数模转换工作。这样的好处很明显,那就是可以避免很多的电流干扰,毕竟在我们家中的电路里,各种家用电器所带来的杂波是无处不在的。     电路板和插销头相连接的方式。这样的方式从电气性能上来说,也没什么不好,毕竟焊点饱满线路也不长。但是,为啥总感觉这样的连接有点山寨的意思呢。 好了,现在只剩下最后一块电路板我们还没看到它的真面目了。而这也是PLC产品里,和普通无线产品最大的不同。     这块电路板裹的确实太严实了。上面是一层厚厚的钢板,既能屏蔽各种干扰,又能起到散热的作用。     不要小看电路板下面这张黑色的类似塑料一样的玩意。这是一种比我们常见的PVC塑料绝缘性能更佳的材质,D-Link在这里用上这种材质,实在出乎我们的意料之外。哦,对了,这层材质其实是罩在电源模块之上的,因此可以将数字电路和模拟电路部分,从物理上作出一个很好的隔离。     从侧面望去,厚厚的不锈钢板甚至和四层PCB的厚度相近。而从中间望去,我们又看到了一个硕大的屏蔽罩,结结实实的把最重要的部件扣在中间。     很能反映D-Link细致水平的一个细节。在与电路模块相接触的一侧,固定绝缘罩的螺丝钉,采用了绝缘的塑料材质。     拆掉厚厚不锈钢板盔甲的电路板,又是一个大大的屏蔽罩挡在了我们眼前。我忽然在想,是不是一层又一层的屏蔽罩和电路板,让这个W306AV没有办法好好的喘口气,以至造成了使用中发热量较大的问题?     在把电路板一块块装回去的过程中,我忽然发现了在最上方电路板右侧的一排小LED灯,不仔细看还真不容易看到,你发现了吗?     拆解完成之后的全家福。这款产品在使用上,基本已经摆脱了传统无线网络设备繁杂难用的使用感受,即插即用完全不用设置的使用方式,确实带给了我们愉悦的使用体验。 我们希望见到越来越多能够带个我们这种使用体验的网络产品。 电路相关文章:电路分析基础

摩登3注册网址_IO-Link 收发器包含集成的降压型稳压器和LDO

本文引用地址:http://www.eepw.com.cn/article/249091.htm   LT3669/-2 提供具可调摆率和电流限制的坚固线路驱动器,该摆率和电流限制是外部可调以优化 EMC 性能。这些线路驱动器每个可提供 / 吸收高达 250mA 电流,或者当连在一起时可提供 / 吸收 500mA,同时最低残留电压低于 2.1V。自适应线路驱动器脉冲电路安全地开关重负载。这些驱动器可非常容易地配置为推挽、上拉或下拉,以最大限度地提高系统灵活性。其他特点包括电流限制检测和过热停机。LT3669EUFD 和 LT3669EUFD-2 都有现货供应,采用 28 引脚耐热性能增强型 4mm x 5mm QFN 封装。千片批购价为每片 3.55 美元。工业级版本 LT3669IUFD 和 LT3669IUFD-2 保证工作在 –40°C 至 +150°C 的工作结温范围,高温级版本 LT3669HUFD 和 LT3669HUFD-2 则保证工作在 –40°C 至 +125°C。所有版本都有现货供应。如需更多信息,请登录 www.linear.com.cn/product/LT3669。   照片说明:具集成的高效率降压型稳压器和 LDO 的 IO-Link 收发器   性能概要:LT3669/-2   · 可兼容 IO-Link PHY (COM1/COM2/COM3)   · 电缆接口保护高达 ±60V   · 在 7.5V 至 40V 电压范围内工作   · 集成的降压型开关稳压器   · 最大负载电流:100mA (LT3669) / 300mA (LT3669-2)   · 可同步和可调开关频率:250kHz 至 2.2MHz   · 输出电压:0.8V 至 16V   · 集成的 150mA LDO 线性稳压器   · 具可调摆率和电流限制的坚固线路驱动器   · 自适应线路驱动器脉冲方案安全地开关重负载   · 驱动器可配置为推挽、上拉或下拉   · 可调的上电复位定时器   · 小外形 28 引脚耐热性能增强型 4mm x 5mm QFN 封装

摩登3平台首页_Maxim Integrated推出用于接近检测、加强分布式控制的两款IO-Link参考设计

  Maxim Integrated Products, Inc. 推出两款最新的子系统参考设计,提供高精度、低功耗接近检测(MAXREFDES27#)并通过紧凑的数字输入集线器加强分布式控制(MAXREFDES36#)。 本文引用地址:http://www.eepw.com.cn/article/261932.htm   现代“智能化”制造业很大程度上依赖于高速自动化及优异的检测功能,进而引发对多功能、高精度接近检测需求的大幅增长,然而接近检测并非易事,系统需要多路传感器输入。这里介绍的两款全新子系统均集成了工业应用所需的IO-Link®标准接口,有效节省空间。MAXREFDES27#接近检测传感器采用IO-Link协议,实现控制器和远端光传感器之间的高效、双向通信。MAXREFDES36#数字集线器采用IO-Link协议加强分布式控制,将16路数字输入放置在二进制传感器附近,从而缩减了PLC侧大量的线缆数量,并大幅降低成本、实现更高的数字输入密度。   MAXREFDES27#接近检测传感器   MAXREFDES27# IO-Link子系统参考设计允许操作人员调节、校准光接近检测传感器,实现高达14位分辨率的精度。包含DC-DC低功耗转换电路有效提高系统效率。该设计可针对不同的表面和光强水平进行调节和校准。   高集成度:电路板集成DC-DC转换器、IO-Link收发器、接近检测传感器和Renesas RL78微控制器,有效提升效率、可靠性及系统可配置性   超低功耗:功耗仅为150mW (典型值),低功耗特性有效降低热耗,从而提高可靠性、延长工作时间   可靠的IO-Link性能:提供自配置功能、传感器与控制模块之间高效的双向通信以及多种保护机制   微小的外形尺寸:整个设计的印刷电路板(PCB)尺寸为8.2mm x 31.5mm   MAXREFDES36# 16通道数字集线器   工业控制通常存在大量的输入线缆,从各种传感器至可编程逻辑控制器(PLC)的数字输入模块。此种传统架构很难进行故障排查、且维护费用高。最新的MAXREFDES36# IO-Link子系统将16路数字输入汇集到集线器,省去了连接PLC的15根电缆。该子系统功耗仅为235mW,尺寸较现有方案缩小60%。这种节省空间的数字集线器允许制造商在每个系统控制器中放置更多的数字输入,有效简化运营复杂度、降低维护成本、保持低功耗运行、延长正常工作时间。   高集成度:电路板包含DC-DC电源转换器、两个8通道数字输入串行器、IO-Link收发器和Renesas RL78微控制器   可靠的IO-Link性能:提供自配置、短路和关断保护、过热预警以及驱动功能   低功耗:功耗仅为235mW (典型值)   小尺寸:方案尺寸为53.75mm x 72mm,可放入标准DIN导轨PCB支架,较现有方案缩小60%       评价   · Maxim Integrated参考设计经理David Andeen表示:“接近检测和分布式控制是工业转型升级的两大关键要素,光传感器与IO-Link协议相结合,能够支持多种低功耗传感器;数字输入模块通过减少工厂车间的线缆布设数量,在降低成本的同时,也便于维护。MAXREFDES27#和MAXREFDES36#能够帮助用户更快、更好地实现工业设计,降低成本、提升整个工厂的性能”。   价格信息   MAXREFDES27#和MAXREFDES36#电路板的价格均为99美元。另免费提供原理图、布局文件和固件(包括IO-Link所需的 IODD文件),可即刻投入使用。   关于其它参考设计的相关信息,请访问Maxim参考设计中心。

摩登3平台首页_8 端口 IO-Link 参考设计套件加快开发速度

  凌力尔特公司 (Linear Technology Corporation) 推出 IO-Link (IEC 61131-9) 参考设计套件,这包括了 DC2228A 8 端口 IO-Link 主控器和 DC2227A IO-Link 设备参考设计。目前全球安装的 IO-Link 节点超过 219 万个,这款新型参考设计套件可满足对于较大型网络不断增长的需求,其减少了 IC 数目、降低了开发成本并加快了产品上市进程。借助配套提供的所有必需的硬件、电缆和软件,用户能够快速地评估一个端到端 IO-Link v1.1 系统。 本文引用地址:http://www.eepw.com.cn/article/275136.htm   DC2228A 是一款完整的 8 端口 IO-Link 主控器参考设计,其采用两个 LTC2874 四通道主控器 IC 以实现其 IO-Link v1.1 物理接口 (PHY),并利用了 LTC2874 的高端口数和坚固性 – 热插拔 (Hot Swap™) 保护型 L+ 电源输出、±50V 绝对最大值 CQ 引脚和 8V 至 34V 工作电压。DC2228A 可方便地采用一个外部 24V 电源或一个以太网供电 (PoE) 系统供电运作。一个内置的双核 NXP LPC43 微控制器负责运行 DC2228A 的协议栈,而一个 TEConcept 软件控制工具则可利用一部 Windows PC 直接操作该电路板,或通过以太网对其实施远程操作 (以实现更加准确的车间仿真)。包括 DC2227A 在内的任何 IO-Link 器件均可连接至 DC2228A。   DC2227A 是一款完整的 IO-Link 设备参考设计,用 LT3669-2 收发器 IC 实现通信,并为内置温度传感器、光传感器和白炽灯供电,利用了 LT3669-2 的 ±60V 电压保护和大电流驱动能力,LT3669-2 提供一个 300mA 降压型稳压器和一个 150mA LDO。内置Atmel SMART SAM3S 系列微控制器运行 DC2227 的协议栈,同时 TEConcept I/O 设备描述 (IODD) 文件支持 IO-Link 和 SIO 设备运行。任何 IO-Link 主控器 (包括 DC2228A) 都可以控制 DC2227A。   DC2228A 的价格为 599 美元,DC2227A 的价格为…

摩登3娱乐怎么样?_C/C++中宏定义的经典运用

在C语言中宏定义是比较有用的技巧,在Linux源码中经常使用一些宏定义,比如宏container_of()等都是经典的宏定义表示方式。在C++不再主张使用宏定义,但是宏定义实际上却是是一个非常有用的手段。实质上宏定义能够搞定的实现采用其它的实现也是可以的,宏定义的作用是简单的替代作用,掌握这个是理解的关键,以前在没有代码阅读量的时候总是以为宏定义就是简单的定义一些常量什么的,实质上不然,宏定义完全可以写成函数的形式,但是宏定义和函数有一定的差别,函数的调用一般采用栈的方式实现,这时候存在局部变量,形参、实参等问题,如果不理解C语言的本质,很多时候非常容易搞错,但是宏定义则不然,宏定义没有调用的过程,宏的实现仅仅是一个替换过程,不用压栈出栈,宏实现的类似函数修改的就是当前区域中的变量,不是局部变量。这也是一些较深层次的问题,在刚学习C语言的时候很多人只要看见类似于函数的形式都认为是函数,实质上不一定,很有可能就是采用宏定义实现的类函数,这时候就可能导致所谓的形参实参问题发生较大的变化。关于宏的问题在面试笔试的过程中、写代码的过程中都是非常有用的部分,我就不再做介绍。 今天看了一遍博客《Reduce C-language coding errors with X macros》,感觉文章写得非常的好,也对自己写代码有了一定的帮助,所以就将该文章用我自己的语言,写出来和大家分享分享吧。 本文引用地址:http://www.eepw.com.cn/article/201612/324488.htm 在嵌入式实时操作系统中,经常将系统分成很多层次,很多个模块,每一个模块都有自己的初始化过程,这时候我们一般采用的形式如下所示: typedef void(*p_func_t)(void); enum { STATE_0, STATE_1, STATE_2, … STATE_M, NUM_STATES }; p_func_t inital_table[NUM_STATES] { func_0, func_1, func_2, … func_M, }; 这种实现方法是比较常见的实现方式,但是这种方法的缺点是所有的初始化过程是按照一定的顺序的,而且不能随机的初始化,因此如果在编码的过程中将状态号与初始化函数对应错误,将出现比较难以发现的错误,这种错误经常出现,当然有些编译器以及支持随机的初始化过程,但是并不具有通用性,而且这种实现方式代码比较多,能不能采用宏定义的方式简化代码量呢?当然是可以的,采用类似于函数的宏定义就可以实现,具体的实现如下: typedef void(*p_func_t)(void); #define STATE_TABLE ENTRY(STATE_0,func_0) ENTRY(STATE_1,func_1) ENTRY(STATE_2,func_2) ENTRY(STATE_3,func_3) ENTRY(STATE_4,func_4) enum{ #define ENTRY(a,b) a, STATE_TABLE #undef ENTRY NUM_STATES }; p_func_t inital_table[NUM_STATES] = { #define ENTRY(a,b) b, STATE_TABLE #undef ENTRY }; 上面这种实现方式的优点是运用了宏定义简少代码量。我做一个简要的分析,首先采用宏定义定义了一组ENYRT,其中包含两个参数,分别是状态号STATE_N,和状态对应的初始化函数,这种实现方式能够避免上面所谓的状态号与函数对应错误的问题,因为在宏定义的过程中一般都会认真的确定各种接口,对应好了只需要定义相关的函数就可以啦。在enum中采用了#define和#undef来限定这一组宏定义的作用范围,在个作用域中,ENTRY(a,b)是表示“a,”,需要注意不能忽略a后的,因为这就是在enum中定义变量后要添加的符号,我想大家应该知道enum{a,b,c,d}每一个成员后面都包含”,”的特性的。也就是说在这作用域中,ENTRY(a,b)被替换为”a,”,那么这时候STATE_TABLE就被替换为STATE_0,STATE_1等,然后和NUM_STATES就组成了第一个例程中的enum结构。而在p_func_t jumptable[NUM_STATES]仍然采用了了STATE_TABLE,由于采用了#define和#undef限定了宏的作用范围,这时的ENTRY(a,b)将被替代为“b,”,也就是func_0,func_1等,这样也就完成了函数指针数组的初始化过程,这样的初始化能够减少状态号与初始化函数对应出错的情况。 这样的实现也可以认为是宏定义的巧妙运用,但是这种方法还是存在一些问题,因为采用#define 和#undef这种方法很可能导致错误的产生,因为很有可能不能很好的把握这个限定作用域的使用方法,这时候可以采用一种新的类似函数的实现方法,可以让STATE_TABLE带一个参数,也就是采用类似命令的形式定义相关的内容: typedef void(*p_func_t)(void); /*以下产生几个常用的命令*/ /*enum产生*/ #define EXPAND_AS_ENUM(a,b) a, /*初始化表产生*/ #define EXPAND_AS_INITTABLE(a,b) b, /*声明各个函数*/ #define EXPAND_AS_FUNCDEC(a,b) void b(void); /*将STATE_TABLE的参数就是具体的命令*/ #define STATE_TABLE(ENTRY) ENTRY(STATE_0,func_0) ENTRY(STATE_1,func_1) ENTRY(STATE_2,func_2) ENTRY(STATE_3,func_3) ENTRY(STATE_4,func_4) /*定义enum*/ enum{ STATE_TABLE(EXPAND_AS_ENUM) NUM_STATES }; /*声明各个函数*/ STATE_TABLE(EXPAND_AS_FUNCDEC) /*初始化表*/ p_func_t inital_table[NUM_STATES] = { STATE_TABLE(EXPAND_AS_INITTABLE) }; 以上实现方法能够较好的避免#define和#undef的限定作用域问题,这实际上采用ENTRY作为参数传递给STATE_TABLE,然后ENTRY可用来实现不同的指令,这些指令的定义也是一系列的宏定义,这种实现架构能够比较好的避免缺少声明等问题。同时也较少了错误的产生可能。 上一页 1 2 下一页

摩登3注册开户_CC-Link 在 TFT制造业中的应用

一. 随着现代工业的发展以及 自动化程度的不断提高,对于一些中大型的控制系统提供了很大的方便,不仅能使控制变的 容易、而且使得操作变的更加简单。在TFT制造业中,一些工作必须由特定的设备去完成,如液晶洗净工程,以前我们在液晶洗净工程系统中采用的是单一的PLC和一些开关的控制,使得系统的线路比较复杂,而且不是很稳定,容易出现故障,在解决故障时也不是很方便(由于线路的复杂和报警监视系统的缺陷),而且操作也不方便,再功能方面也不够完善,很多事情还得由人工去完成,如洗剂的糖度、PH值、纯水比抵抗值,废液的排放等。这样不仅工作效率底,而且有时很容易出错。后来我们想到采用CC-Link和人机界面进行改造,使得系统 控制和线路都变的很简洁,操作也变的非常的简单,整个系统的稳定性也很好,而且增加了系统故障监视系统 ,出现故障能够及时的反映出来,系统比较容易保养、维护、维修。另外,采用CC-Link和人机界面使得系统的扩展性加强,而且容易进行分散控制。在液晶的洗净工程中比 较适用。该系统主要有四个部分组成,及装载部分、主体部分、卸载部分、废液回收部分。装载部分主要是将产品装载并且将它传送到设备的主体部分,然后由主体部分用超音波和洗剂对产品进行清洗、 烘干。主体的清洗部分也分三个部分,首先是用洗剂清洗,然后用纯水冲洗,再用纯水泡洗。液回收部分主要是回收废的洗净液。该系统比较分散。如用单一的PLC会使得线路很繁杂,控制面板也是非常的杂 ,控制开关需要很多。现在 的控制面板如图1所示。该 系统的动作部分主要有传送部分、摇晃部分、液循环部分、精确加热控制部分、热循环控制系统、废液回收系统。系统共采用了27个电机,基本都采用了FR-500变频器控制。系统总共用了600多点输入、输出点(包括备用点)。 二. 整个系统采用了三菱A系列的PLC 和GOT人机界面以及16个远程I/O模快组成。系统图如图2所示。 本文引用地址:http://www.eepw.com.cn/article/201612/329337.htm 系统结构图(图2) 以上是整个系统的控制图。我们采用了A1SJ61BT11为通讯单元和CC-Link专用电缆FANC-SBH构成一个通讯网络。在电缆的两端要接终端抵抗。我们采用SW1D5-CCMAP可以直接将通讯程序产生出来。程序比较简单,也可以自己写。采用CC-Link 连接,主局一台CPU对应连接远程I./O单元 ,远程节点单元,本地局单元最多只能连接64台, 如在一个系统中全部连接远程I/O单元可以连接64台及远程输入,输出2048点,全部是远程节点单元只能连接42台,若全是本地局或待机主局至多连接26台。在CC-Link系统中可以连接的设备除上面所提到的以外还有定位单元,RS232InterFace 单元,GPP机能用周边设备增加单元,FX系列的PLC,T分支单元,AC servo ,以及电磁阀,感应器,指示计,温调计等等。 三: 技术性能和特点1. 为了使改造后的系统能适应各种的动作要求和技术要求,设计时考虑到了这一点,如对于不同的产品的超音波的频率不一样,摇晃的频度和幅度不一样,清洗的时间不一样等等。这些都可以改变变频器参数或系统的参数来改变系统运作情况。2. 系统采用CC-Link,使得整个系统的配线非常简单,维护和维修起来也非常的容易进行。3. 系统采用了人机界面,使的控制面板显得非常的简洁,而且专门为系统增加了报警监视系统,在系统出现错误或故障时,能够及时清楚的反映出来,这样,在系统出现故障时,就能够快速的恢复系统的正常运转。4. 该装置的内部全部采用腐蚀液体溶剂和纯水,一般人体都不能直接接触,在装置的内部全部采用空气阀控制,为了防止液漏,在装置的内部装有漏液监视系统,这样,能够有效的防止漏液。5. 纯水供应系统不是采用循环的工作方式,而是采用的单向供应,所以装置内的纯水一直保证是干净的,这样就能够保证清洗产品清洗的质量。6. 系统的加热系统不是采用的直接加热,而是采用的热风循环系统,这样可以有效的防止局部太热造成制品的不良。7. 此外,系统还装有液体整体监视系统,装置整体的动作监视系统,等。 四:适用的范围本系统能够适应TFT制造业中中小尺寸中任何产品的洗净,对于不同的产品只要用不同的装载治具,整个装置的工作方式是连续的自动的工作方式。所以效率比较高,产量比较大。而且本装置能够同时清洗两种使用不同洗净剂的产品。选择哪种产品系统可以自动切换。不需要停机更换洗剂。图3为该装置的整体实物照片。另外,液回收系统在厂房的外面。 五: 体会在洗净装置的设计中,基本上都采用了三菱的工控产品,主要是以前一直使用三菱的产品,对三菱的产品比较性赖,而三菱产品本身可靠性也比较好,功能也比较强。这次通过对CC-Link和人机界面的使用,得出以下几点。1. CC-Link系统简单、适用、性能可靠、投资少。2. 采用人机界面,使控制面板非常的简洁,而且系统的功能大大的增加。3. 系统布线简洁,方便维护、维修。4. CC-Link的扩展性强、分散性好。5. 网络传送速度快,采用CC-Link组建的BUS网络最快的速度能达到10Mbps。6.可以 进行大容量的数据通讯,传送的距离比较长。7.CC-Link系统具有丰富的RAS机能,如自动复列机能、待机主局机能、子局切离机能、良好的链接状态确认机能、诊断机能等。这样就使得系统运行更可靠。8.主局PC和本地PC之间可以实现N:N的循环链接传送。很容易构建分散的PC系统。9.CC-Link系统的网络比较开放,一般国内外的周边设备都能够使用。本系统中就有其他 的工控产品,运行还比较可靠。 结束语本系统采用了CC-Link和人机界面,总的来说,功能是大大的增强,而系统变的非常的简洁。在以后的使用中,对于一些中大型系统,也会尽量采用这种系统 。

摩登3注册登录网_CC-Link的通信模块

CC-Link通信方式的常用网络模块有CC-Link通信模块(FX2N-16CCL-M、FX2N-32CCL)、CC-Link/LT通信模块(FX2N-64CCL-M)、Link远程I/O链接模块(FX2N-16Link-M)和AS-i网络模块(FX2N-32ASI-M)。本文将介绍FX2N-16CCL-M、FX2N-32CCL模块。 FX2N-16CCL-M FX2N-16CCL-M是FX系列PLC的CC-Link主站模块,它将与之相连的FX系列PLC作为CC-Link的主站。主站是整个网络中控制数据链接系统的站。 远程I/O站仅处理位信息,远程设备站可以处理位信息和字信息。当FX系列PLC为主站单元时,只能以FX2N-16CCL-M作为主站通信模块,整个网络最多可以连接7个I/O站和8个远程设备站。 特点: 用FX系列的PLC作为主站,构成高速、经济的 现场总线系统,可以连接支持CC-Link的本公司产品和合作厂商的 工控设备,所以可以选择适合客户要求的设备,构成高速的现场 总线网络。 由于实现了网络的省接线、省空间,所以在提高布线工作效率的同时,还减少了安装费用和维护费用。 FX2N-32CCL FX2N-32CCL模块是将PLC连接到CC-Link网络中的接口模块,与之连接的PLC将作为远程设备站。它在连接CC-Link网路时,必须进行站号和占用站数的设定。站号由2位旋转开关设定,占用站数由1位旋转开关设定,站号可在1~64之间设定,占用站数在1~4之间设定。 特点: FX2N-32CCL作为FX系列PLC的特殊扩展模块连接, 每个站的远程输入输出点数为:输入32点、输出32点。 每个站的远程寄存器点数为:RWw写入区域4点,RWr读出区域4点。 站数设定在1~4个站之间可选,因此可以根据控制规模构建系统。

摩登3官网注册_基于Camera Link接口的图像跟踪系统的设计

  目前使用的图像跟踪系统前端输入信号一般都是PAL制式的标准全电视信号,每20 ms一场,每40 ms一帧。模拟信号经过视频解码器转换成720×576大小的数字信号后,再对其中的目标进行分割、识别和跟踪,并准确计算出目标的位置角度偏差,并传给伺服机构。在某系统中要求能对3×3像素大小的小目标进行精确跟踪,为了达到跟踪精度,可以提高图像输入的帧频和提高图像输入的分辨率,因此前端采用了 DALSA公司的一款基于Camera Link接口的数字摄像机,该相机的帧频为100 Hz,分辨率高达1 400×1 024。这样帧处理时间就只有10 ms,考虑到系统的实时性,我们采用了TI公司的高性能的DSP芯片TMS320C6414和高性能FPGA芯片EP2S30F672为核心的硬件处理平台。 本文引用地址:http://www.eepw.com.cn/article/166928.htm   1 系统硬件结构和工作原理   整个图像跟踪模块的结构图如图1中虚线框所示,整个系统包括以FPGA为核心的图像采集和预处理单元,以DSP为核心的图像处理单元以及由FPGA控制的图像显示单元。   由于采集、处理、显示均要访问存储器,为了降低成本,用普通的异步SRAM构成。按照功能来分可分为采集处理用SRAM组和采集显示用SRAM组,每组分别包括两片SRAM,其读写逻辑由FPGA控制,采用乒乓方式进行切换。   对于采集处理部分,第K帧时,SRAM1由FPGA控制写入图像数据,同时SRAM2由DSP读数进行处理;第K+1帧时则相反,SRAM2由FPGA控制写入图像数据,同时SRAM1由DSP读数进行处理。   对于采集显示部分,第K帧时,SRAM3由FPGA控制写入图像数据,同时SRAM4由FPGA读数进行显示;第K+1帧时则相反,SRAM4由FPGA控制写入图像数据,同时SRAM3由FPGA读数进行显示。   整个系统工作过程都是这样的:其中图像采集单元经由差分转换芯片后变成LVTTL信号,直接连至FPGA,由FPGA控制数字图像的采集,进行图像预处理后,将图像数据存储在SRAM中,给DSP发出中断信号,DSP响应中断后,从SRAM中读取一帧图像数据后,进行图像分割、目标提取、目标跟踪算法,计算出方位和高度角偏差分量,将结果通过FPGA的片内的板间通信双口RAM传递给主控模块,主控模块再调整伺服机构保证被跟踪的目标处于视场中心。   主控模块还可以将系统的一些状态变量实时的通过板间通信双口RAM传给DSP,DSP根据这些状态生成需要显示的字符,将这些字符写入到FPGA片内字符叠加双口RAM中。FPGA读取显示RAM中的图像数据和片内字符叠加双口RAM内的数据,在原图上叠加十字丝和波门,以及系统的一些状态字符信息,按照 PAL制式时序向DA芯片送视频数据,这样监视器就可以输出标准的PAL制式的图像。   2 各个单元设计   2.1 基于Camera Link接口的图像采集和预处理单元   Camera Link是一种基于视频应用发展而来的接口,它解决了视频数据输出和采集之间的速度匹配问题。Camera Link数据的传输率非常高,可达1 Gb/s,采用了LVDS格式,抗噪性能好。Camera Link的信号包括三个部分:串行通信部分、相机控制部分、视频信号部分,基于Camera Link接口的图像采集单元详图见图2,每个部分采用专门的差分转换芯片。串行通信部分则将异步串口转换成标准的RS 232电平,这样可以由主控机对相机的曝光时间、对比度等设置进行调节。相机控制部分包括4对差分信号,用来对相机进行控制,比如相机的外同步信号输入控制,可以由FPGA进行控制。视频部分的28 b LVTTL信号是关键控制部分,它们直接接在FPGA上,由FPGA来控制采集的时序。 上一页 1 2 3 下一页