codesys与C#做共享内存通信 .pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

codesys与C#做共享内存通信

本节在学习codesys怎样通过共享内存的方式进行与C#程序做通

共享内存,多个进程可以对内存中的一块区域进行读写操作,达

到数据交互的目的。

在共享内存使用时,需要将这个安装包

SharedMemoryCommunication安装到codesys下,包文件需要的

话私信联系我即可

在安装完成codesys的SharedMemoryCommunication后,就

开始我们今天的学习吧

1.新建工程,然后在库管理器中添加,在高级这个选项卡。

2.在搜索框中搜索SysShm和SysTypes2Interfaces这两个库文

这样就添加完库了,库中具体函数的名称,在库中可以查看,也

可以在百度中看到其他博主的介绍,我这就略过了哈

3.新建一个DUT,类型选择为结构,也就是说,在进行通信时,

数据类型为建立的这几种类型,同样,也可以读数据的建立一个DUT,

写数据的建立一个DUT,这样在共享内存时更加方便。本次实验采用

了第一种方式。

TYPEDataExchange:

STRUCT

diValue1:DINT;

diValue2:DINT;

bValue3:BOOL;

END_STRUCT

END_TYPE

4.PLC程序的建立

声明变量

//ThisprogramshowshowtoreadandwritetoShared

Memory.

PROGRAMPLC_PRG

VAR

tt:Ton;

hShMemRead:RTS_IEC_HANDLE;

ResultRead:RTS_IEC_RESULT;

deInstRead:DataExchange;

ReadResult:RTS_IEC_RESULT;

iRead:__UXINT;

hShMemWrite:RTS_IEC_HANDLE;

ResultWrite:RTS_IEC_RESULT;

deInstWrite:DataExchange;

WriteResult:RTS_IEC_RESULT;

iWrite:__UXINT;

ulSize:UDINT:=SIZEOF(DataExchange);

END_VAR

在这要注意的是,共享内存的名称一定要和C#中的统一,否则就

存在通信失败的情况

tt(IN:=TRUE,PT:=T#2000MS);

IFtt.QTHEN

//ReadstructurefromSharedMemory.

hShMemRead:=SysSharedMemoryCreate(Test_Read,0,

ADR(ulSize),ADR(ResultRead));

iRead:=SysSharedMemoryRead(hShMemRead,0,

ADR(deInstRead),SIZEOF(deInstRead),ADR(ReadResult));

iRead:=SysSharedMemoryClose(hShm:=hShMemRead);

//WritestructuretoSharedMemory.

hShMemWrite:=SysSharedMemoryCreate(Test_Write,0,

ADR(ulSize),ADR(ResultWrite));

deInstWrite.diValue1:=deInstWrite.diValue1+2;

deInstWrite.diValue2:=deInstWrite.diValue2-3;

文档评论(0)

132****5677 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档