概述
在第二个示例中,我们将编写一个递增整数值的便笺本地区OptoMMP内存映射。
这个例子的目的是:
- 客户端将连接并尝试重新连接是否存在任何错误。
- 尽可能将触发的写请求。处理请求的响应之后,下一个将被触发。
这个示例假设您基本熟悉CODESYS开发系统的创建和运行应用程序。它还假设您已经阅读了你好,世界!的例子。
第一步,确定OptoMMP地址使用
的值将被写入元素0便笺本32位整数。
OptoMMP内存映射地址可以确定在两个方面。
- 在“附录A:抓PAD-READ /写”部分OptoMMP协议指南(1465)形式。
- MMP计算器工具groov管理。从主页,点击I / O > > MMP的计算器的I / O服务。
OptoMMP内存映射的地址是0 xf0d81000。
步骤2 -创建和准备项目
- 创建或打开一个应用程序内的CODESYS开发系统。
- 确保光电子22图书馆,3.0.0.0或更高版本,添加到库管理器。
- 创建一个新的POU命名
MMP_WRITE_INTEGER与连续函数图表(CFC)作为实现语言。 - 新项目添加到任务配置。
添加以下变量的声明区域
MMP_WRITE_INTEGER程序。程序MMP_WRITE_INTEGER VAR mmpClient: OPTO.MmpClient;mmpWriteUDINT: OPTO.MmpClientWriteUDINT;udiVar: UDINT;END_VAR- 拖出一个盒子到氟编辑和分配它
添加函数。 配置输入和输出:

这将加1
udiVar每次氯氟化碳计划。
步骤3——初始化MmpClient实例
通常是可取的,让尽可能多的客户端连接。这可以通过客户端来完成xError输出,否定它,然后回传给它xConnect输入。
- 在声明编辑器中,双击
mmpClient变量,并将其拖动到实现区域。 - 分配
“127.0.0.1”来sAddress。 - 连接
xError输出到xConnect输入。 - 请取消新connecing线。
右键单击销
xError并选择否定。这将添加一个小圆的连接线离开xError。确保没有另一个圆的连接线的另一端。
连接xError和xConnect以这种方式将使以下行为:
- 最初,
xError是假,这导致xConnect是真正的并开始连接过程。 - 连接时,
xError仍然是假和xConnect仍然是真正的。 - 一旦连接,
xConnected就变成了真正的,xError仍然是假,xConnect仍然是真正的。 - 如果有一个错误(在连接或连接一次),
xError就变成了真正的这迫使xConnect来假。- 在下一个周期,过程开始了。由于状态改变
xConnect,xError清除和回到假,发送xConnect来真正的一次。
- 在下一个周期,过程开始了。由于状态改变
它可能需要一个或多个PLC周期的状态变化来完成。
步骤4——初始化MmpClientWriteUDINT实例
- 在声明编辑器中,双击
mmpWriteUDINT变量,并将其拖动到实现区域。 - 的一些输入需要设置。
- 分配
1000000来udiTimeOut。 - 分配
16 # F0D81000来udiMmpAddress。- 这是OptoMMP内存映射在步骤1中确定的地址。
- 分配
mmpClient来rClient。- 这是一个参考给客户机。

- 分配
如上所概述的这个例子中,我们要写udiVar尽可能多的价值。这可以通过MmpClientWriteUDINT块的xBusy输出,否定它,然后回传给它xExecute输入。
- 连接
xBusy输出到xExecute输入。 - 请取消新connecing线。
右键单击销
xBusy并选择否定。这将添加一个小圆的连接线离开xError。确保没有另一个圆的连接线的另一端。
连接xBusy和xExecute以这种方式将继续写尽可能多的价值。
- 最初,
xBusy是假,这导致xExecute是真正的并开始这个过程。 - 在执行,
xBusy成为和保持真正的和xExecute就变成了假。这并不阻止当前请求正在处理。 - 一旦完成了响应处理,
xBusy就变成了假,导致xExecute成为真正的,从而启动下一个请求。 - 如果有一个错误,
xError就变成了真正的和xBusy就变成了假,这迫使xExecute来真正的,从而启动下一个请求。- 现实世界的应用程序可能需要更复杂的错误处理。
- 常见的错误会造成MmpClient不连接,例如当第一个启动程序或在一个网络的问题。请求尽可能仍然可以运行,但是很快就会报告一个错误,再试一次。一旦客户端连接,下一个请求应该成功。
- 更多细节在CODESYS帮助文档边缘触发功能块的公共行为模型。
最后,我们需要养活thudiVar变量到写块中。可以通过直接分配udiVar到udiData输入。或者,更直观的方法,添加块可以连接到写块,像这样:

最后的程序应该如下:

步骤5 -运行并查看结果
在运行应用程序之前,使用groov管理查看便笺本价值。
- 在groov管理,导航到家里> I / O > >便笺本I / O服务。
- 对于数据类型,选择32位整数。
- 对于索引,输入0。
- 对于长度,输入1或者更多。
回到CODESYS:
- 进入在线模式。
- 运行应用程序。
如果一切顺利,应该有一个坚实的客户之间的蓝线xError输出和xConnect输入。写块的xBusy之间应该骑自行车真正的和假,因为每个请求完成。

在便笺本页面groov管理、便笺本元素应该增加。
梯子逻辑版本
这个例子在梯子逻辑(LD)非常相似。这里有一个方法可以写成:

结构化文本版本
这个例子在文本结构(ST)非常相似。这里有一个方法可以写成:

下一个步骤
继续的阅读一个整数数组的例子。



