登录
首页 » Others » PLC通讯实现-C#访问OPCUA实现读写PLC

PLC通讯实现-C#访问OPCUA实现读写PLC

于 2021-05-07 发布
0 313
下载积分: 1 下载次数: 1

代码说明:

1、包含C#实现OPCUA的Server和Client的核心代码。2、包含C#统一接口规范封装后的应用代码。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 永磁同步电机无速度传感器DSP
    基于DSP28335的永磁同步电机无速度传感器程序
    2020-12-02下载
    积分:1
  • STM32F407VET6原理图
    STM32F407VET6最小系统原理图,Altium Designer绘图,非PDF
    2020-12-11下载
    积分:1
  • 《MFC.Windows序设计(第2版)修订版》【高清完整版+带书签索引】.(Programming.Windows.with.MFC)
    内容简介  《MFC Windows程序设计(第2版)》是对其极为经典的第1版的全面更新,本书不仅扩展了已被认为是权威的关于Microsoft用于Windows API的功能强大的C++类库的阐述,还新增了有关COM、OLE和ActiveX的内容。本书的作者,Jeff Prosise,用其无与伦比的技巧向读者讲述了MFC程序设计中的基本概念和主要技术——再次阐释了在32位Windows平台上进行了快速的面向对象开发的完美方法。  本书涵盖了以下专题:  事件驱动程序设计和MPC的基础知识  文档/视图体系结构  位图、调色板和区域  多线程和线程同步  MFC与组件对象模型(CO
    2020-12-11下载
    积分:1
  • 晶圆缺陷检测与分类的卷积神经网络
    晶圆缺陷检测与分类的卷积神经网络;针对晶圆检验时扫描电镜图像的缺陷检测和缺陷分类两问题,采用了“ ZFNet”的卷积神经网络来分类晶圆缺陷,并基于该分类器实现了一种“基于块的卷积神经网络”缺陷检测算法。为了提高准确率和加快速度,又改动“更快的区域卷积神经网络”实现了另一种检测算法。第卷第期邡鑫,史峥:晶圆缺陌检测与分类的卷积神经网络ZENet classifierDarker ImIn.ril” HumpBitel检测算法示意图在训练检测器时,数据集是检测器原始尺寸的图像,且包含标记好的缺陷区域和类型。我们结构通过·系列数据扩张操作,得到组数据,随机选取相比于检测算法主作为训练集,作为测试集。要从以下三方面进行了针对性的改进算法中需要优化的参数有滑动窗口尺寸滑()针对重复计算卷积的缺点,采用先动步幅、概率阙值、面积阙值,由于无法求出统一计算特征图,再按)进行映射各参数与检测结果的明确关系式,所以采用遍历法优化参截取的办法。如图,先通过卷积网络(数。因为检测到的缺陷尽量正确和尽量检测到所有缺陷是)对输入图像计算得到其特征图,因为在输入图像矛盾的,故以精确率和召回率的调和平均值作为优上的都能映射到特征图上,所以从输入图像上按化目标,也可根据实际需要调整两者权重满足不同侧重。割取图像进行卷积运算可以替代为直接从特征图上按测试结果映射后的范围割取,从而避免多次重复计算卷积。由于用训练好的检测模型对测试集检的大小形状不·,而全连接层的神经元连接数是固定的,测,计算模式下每张图大概耗时如果检测到的缺所以对割取得到的子特征图,通过层次采样到统陷与标准答案的且类型相同,则判为正确,否尺寸以连接到全连接层。则判为错误。得到结果如表,计算得:laut Image精确率Feature Map召回率ROI其屮正确缺陷的平均表检测器测试结果数量正确错误network有缺陷(正类)图映射示意图从检测结果来看该算法基本实现∫对图像上晶圆()针对滑动窗口尺寸单·的缺点,增缺陷的检测和分类,但是值较低,缺陷检测位置不加了滑动窗口的尺寸类型,并且增加由一个全卷积网络准确,检测耗时较长,分析其原囚如下)组成的()检测出错的数据中,缺陷较大的类型易判断错,)来预判断是否有缺陷。本文采用面积缺陷较小的容易被漏掉,说明只使用一种尺寸的滑动框很分别为,长宽比分别为、共难适应尺寸变化范围较大的缺陷种尺寸的滑动窗口,依次计算其中有缺陷的概率,再从中)滑动框步幅减小则算法耗时平方倍增加,而步幅筛选出一定数量最有可能有缺陷的区域,进行非极大值抑过长造成缺陷概率分布图分辨率较差,从而检测到缺陷位制(),最后得到一定数置准确度较差量的候选区域。()相邻滑动框都有大量重叠,所以每个区域都被多()针对缺陷检测位置准确度差的缺点,次重复送入计算卷积,导致算法耗吋较长。在全连接层后连接一个边界回归层在与上述检测算法相似的图像目标检测领域,近来出用来修正缺陷位置,该回归层与分类层并列。现的很好的克服了以上缺点并取得了很好的针对本文的缺陷检测问题,直接套用标准效果,所以下面介绍如何通过改动实现品圆并不能解决问题。因为判断晶圆的缺陷类型通常需缺陷的检测与分类。要结合缺陷区域周围的图形信息,而在预判断是否有C1994-2017ChinaAcademicJournalElcctronicPublishinghOusc.Allrightsrescrved.http://www.cnki.nct计算机工程年月日缺陷吋还进行了边界回归。虽然更加准确的给出缺陷的位()将原尺寸为的图像调整为置,但送入检测网络的特征儿乎不包含缺陷周围图肜信息,使得滑动窗口尺寸能够适应缺陷大小的变化范围,也可以导致缺陷分类不准。故木文对标准徹了一些根据实际情况来具体调整。改动:得到缺陷检测算法如图,卷积网络(()将改为只判断滑动窗口内是否有缺陷,而,)将输入图僚转换成多种特征图;根据不进行边界回归,也就是只计算所有滑动窗口有缺陷的概特征图从滑动窗口中选出最有可能存在缺陷的率,选取可能性最大的个,做非极大值抑制,再选出层根据特征图中抽取出对应特征组成特可能性最大的个进行检测。征向量;检测网络()根据特征向()将卷积层的尺寸加大为,加大感受野量判断缺陷类型,并进行边界回归;最后通过和概率),从而在判断滑动框內是否有缺陷吋能参阈值对候选缺陷进行过滤即可得到最终缺陷。考更多的周围信息。Detection NetworkonFolutionnl actorSoftmaxRuI Puling liver,e Prop卟 edMS+PrubilitessionInput Image 1024*1024Fully 10 dyercrectCcrvchrionalLaver size 747图检测算法示意图模型训练和平均值作为优化目标,并且使用相同的训练集和图中的检测算法也是基于架构实现,因为卷测试集积网络提取的特征类型对相似普遍有效,故其卷积网络的测试结果参数是直接迁移第章分类器的卷积层参数。但是用训练好的检测模型对测试集检测,和的参数则需要通过方法进行训练,标准计算模式下每张图大概耗时,采用相同判定标准,提供了分开和联合两种训练方式。为了节约得到检测结果如表(其中负类总数与表中总数不同是因时间,本文采用联合训练方式,并结合缺陷检测问题的实为同一张图屮可能检测到多个缺陷),计算得际情况调整超参数精确率在训练时,对每张输入图像,要计算的滑动窗口召回率数量庞大(种尺寸的滑动窗口,滑动步幅)。所以从中随机抽取个作为训练集,其中正例其中正确缺陷的平均负例,且正例占比不超过。分类器采用表检测器测试结果损失函数数量正确错误在训练时,设置提供个,从中随有缺陷(正类)机选取个作为训练集,其屮正例无缺陷(负类)负例,且正例占比不超过。另外设置学从结果来看该算法各方面都优于检测算习率分类器采用损失函数,而边界回法和值更高说明检测检测缺陷类型正确归采用函数。且位置准确,而且速度也大大提高(检测一张图像耗时从为了与检测算法对比,在最后通过遍历法缩小到)。如图为检测缺陷示例,共中标注了缺陷优化和概率阈值时,同样以精确率和召回率的调位置、类型和对应概率C1994-2017ChinaAcademicJournalElcctronicPublishinghOusc.Allrightsrescrved.http://www.cnki.nct邡鑫,史峥:晶圆缺陷检测与分类的卷积神经网络I I图检测结果示例图结束语而对图像上的缺陷检测和缺陷分类这两个问题,本文提出的改动后的检测算法能够精准、快速地从图像中检测出缺陷并同吋进行分类。得益于卷积神经网络良好的特征学习能力,该检测算法能够根据标记好缺陷位置和类型的数据自动学习特征,从而尽量避免人工千预,使算法具有较强的适应能力。参考文献徐姗姗刘应安徐昇基于卷积神经网络的木材缺陷识别山东大学学报工学版刘云杨建滨王传旭基于卷积神经网络的苹果缺陷检测算法电子测量技术江帆刘辉王彬等基于模型的图像识别计算机工程C1994-2017ChinaAcademicJournalElcctronicPublishinghOusc.Allrightsrescrved.http://www.cnki.nct
    2021-05-06下载
    积分:1
  • matlab小波变换图像边缘检测源代码
    对图像用小波变换进行边缘检测,直接运行就会有六张图生成作为例子。matlab代码,很实用,可用于遥感图像的边缘检测等等
    2020-12-06下载
    积分:1
  • 三维重建的原理以及算法
    三维重建的原理,没有代码。姿势介绍一下三维重建
    2020-12-08下载
    积分:1
  • 内存乒乓缓存机制和消息分发机制的C代码实现
    用C代码实现乒乓内存缓冲机制,具体实用价值,帮助您提高内存响应速度与及时数据的处理。unsigned long writeunsigned long greadunsigned long overflowST TWTMSG QUEUE:/ Helper macros for accessing Msg queues. *#define tWt QUEUE EMPty(a)(((g->write==(q)->gread)? 1: 0)#define twt_ QUeUe full(a)(((((q)->qwrite +1% TIMEWEIGHT TASKQUEUE SIZED)==(q)->gread)?1: 0)米 generate a Msg entity*正常返回消息体的指针,异常返回NULLT TWTMSG* generateMsg(tT-TWTMSG* pmSg=nULL,if(NULL =-(ptMsg malloc(sizeof(T TWTMSG)))return NULL;memset(ptMsg, 0, sizeof(T TWTMSG)return pmSg;destroy a Msgvoid destroy Msg(t TWTMSG ptMsgif(NULL ptMsg->pfDestroyMsg)pt Msg->pfDestroy Msg(ptMsg->pvMsg)if (NULL != pt Msg)free(pmSgfree a Msg Queuevoid freeTWTMsg Que(T TWTMSG QUEUE* ptMsgQif(NULL =ptMsg Afree(ptMsg Q);Init a Msg QT TWTMSG QUEUE* initTWTMsg QueoT TWTMSG QUEUE pmSg Q= NULlif (NULL ==(ptMsgQ malloc(sizeof(T_ TWTMSG QUeue)goto ErrRetmemset(ptMsgQ, 0, sizeof(T TWTMSG QUEUE))return pmSg Q;Errretprintf( initTWTMsg Que Fail! ")freeTWTMsgQue(ptMsg Q)return nullPop a pvMsg packet from a msg packet queues param g is the packet queue from which to pop the pbuf@return pointer to pvMsg packet if available, NULl otherwiseT TWTMSG* TWTMsg Get(T_ TWTMSG QUEUE aT TWTMSG*//*加锁if(TWT_ QUEUE_ EMPTY(a))iReturn a NUll pointer if the queue is emptypmSg=NULL;else is The queue is not empty so return the next frame from itand adjust the read pointer accordinglypmSg=g->pvMsglq >greadg->gread =((q->gread +1)% TIMEWEIGHT_TASKQUEUE_ SIZE)/*解锁return(pmSg);Push a pmSg packet onto a pvMsg packet queue@param p is the pmsg to push onto the packet queue@param g is the packet queue.W @return 0 if successful, -1 if q is fullnt TWTMsg Send(T tWTMSg*p, T TWTMSG QUEUE *qint ret/if(!TWT_ QUEUE FULL(al)iThe queue isn t full so we add the new frame at the currentw write position and move the write pointer.g->pvMsgla->write]=pg- >write =((q->qwrite+1)% TIMEWEIGHT TASKQUEUE SIZE;ret =oThe stack is full so we are throwing away this value. Keep trackof the number of times this happensg->overflow++ret =-1://*解锁return(ret)**米**米来米***来米*半米*米*半米*米求***半*米米求半**米求半**半求半和*米*//消息分发机制//*算法是//*正常返回0,出错返回-1水米米******水*米*水**米*半*水米米冰半**水水*水米米半米冰水*米水水*水*米水水extern int RecToFile MsgProc(T_ MSG_ REC2 FILE* ptMsg);int DispatchMsg(T TWTMSG *ptMsgitif(NULl = ptMsg goto ErrRet/*dispatch msg*/switch(ptMsg->en Msg Type)case TWT PINgPoNgBuff recRecTo File Msg Procl(TMSG_REC2FE) (pmSg->pMsg);/*处理消息*/destroy Msg( pmSg;/*消毁消息breakdefault.printf("Dispatch Msg Msgtype Error! n")break.return 0ErrRetprintf("Dispatch Msg Fail! ";return-1./*buff size*/#defineP| NGPONG_ BUFF BSIZE0X20000//10*1024*1024/*10M*/*ping pong buff*///chargacPINGBUFF[PINGPONG BUFF BSIZE]; /* Ping Buff*///chargacPONGBUFF[PINGPONG_ BUFF BSIZE] *Pong Buff*/水米米*********米*水**米*半*水米米水**冰水*水米米半半水半米冰水*米水水*水*米米//*释放 ping pong buff/必然成功//*无返回木***木*水****本**水*水水*水****本水**水水****水水***本***米*水void Destroy Ping Pong Butt(T PINGPONGBUFF USE DES ptPing Pong Butt)nLoopif (NULL = pt Ping pong buffreturnfor (nLoop=0; nLooptIng BuffUse[nLoop]. pcHeadAddr)free(ptPing Pong ->t Ping BuffUse[nLoop]. pcHeadAddr)free(pt Ping pong Buff)/初始化 ping pong buff返回 pign pong buff的描述指针//*正常返回0,出错返回-1水水水水水水水水水木水木水水水水水木水木水水水水水水水水本水水水水水水水水水本水水水水水水水水水水水水水T PINGPONGBUFF USE DES InitPing Pong Buff(unsigned int n BuffSizeT PINGPONGBUFF USE DES* ptBuffDes=NULLintnLoop/*获取buf描述*if NULL==(ptBuffDes=malloc(sizeof(T PINGPONGBUFF USE DES))))goto ErrRetmemset(pt BuffDes, 0, sizeof(T_PINGPONGBUFF USE_ DES));/*分别初始化ping和pong*/for(nLoop=0; nLooptIng BuffUsenLoop pcHeadAddr =malloc n BuffSize))goto Err Ret;ptBuffDes->tIng BuffUselnLoop] nBuffSize nBuffsizeptBuffDes->tPing BuffUse[nLoop]. oFfsetptBuffDes->tPing BuffUsenLoop) eUseStatus-=BUFF WRITEABLE;pt BuffDes->eCurUseIDBUFF PINGreturn pt BuffDesErrretprintf("lnitPing Pong Buff Fail!");DestroyIng Pong Buff(pt BuffDes)turn null平**米**米*米***来米米*米*米*半米*米米米来*半米平**米米求*来*半求半来*米求*和*米*/*Reset ping pong buff//*正常返回0,出错返回-1米米米米水冰米*米米水**米米冰*米水米米米米水米水*水米米来米米x米来米米水冰来来宋来水米来米来冰#define ResetBuffUse(ptBuffuse)pt BuffUse->oFfset0pt BuffUse->eUseStatus BUFF WRITEABLEgenerate a file rec msg*正常返回消息体的指针,异常返回NULLT_MSG_REC2lGK SenFRMSB(T_BUFF_USE_DES *ptBuffUse, REC_FILE_DESLIST *ptFileListRT MSG REC2FILE KE* ptRFMsg= NULL;if(NULL ==(ptRFMsg malloc(sizeof(T_ MSG REC2 FILE)return nUllptRFMsg- >pt BuffUse pt BuffUseptRFMsg->pt Filelist ptFilelist;return ptRFMsg
    2020-12-03下载
    积分:1
  • 解析相对定向及模型坐标的计算
    确定两张像片的相对定向元素 建立模型,计算模型点坐标
    2020-11-27下载
    积分:1
  • 黑马序员_超全面的JavaWeb视频教vedio33天1-13天源码笔记.rar
    黑马程序员_超全面的JavaWeb视频教程vedio33天1-13天源码笔记.rar )
    2020-12-11下载
    积分:1
  • vc下实现的分段线性插值、二次多项式插值、三次多项式插值、三次样条插值,并配有MATLAB测试
    【实例简介】vc下实现的分段线性插值、二次多项式插值、三次多项式插值、三次样条插值,并配有MATLAB测试程序
    2021-11-19 00:37:20下载
    积分:1
  • 696518资源总数
  • 106148会员总数
  • 10今日下载