该案例是使用1500CPU通过MODBUS RTU来采集配电房中的电表进行能源监控。这里只展示其中一个PTP模块的程序,该模块一个接了29块电表,电表类型有两种,第一种读取起始地址位40007读取长度为48个word 第二种读取起始地址为40007读取长度为64.
下面是FB块的变量部分:

其中ID变量的结构为:

ID表示从站的战号,tyep表示电表的类型。
下面是主程序部分的初始化:

初始化中先执行了初始模块的指令,然后将MODBUS站号,设备类型等写入到地址中,由于我这里读取数据只用100个byte数据的数组,有一种电表的数据长度超过100个byte,所以我这里是分了两次进行读取。
下面的是启动以及计数,其中增加了一个定期初始化轮询的指令。

下面是写入站号,地址,地址长度,以及执行modbus指令和指令执行后的错误处理:

下面是读取完数据进行数据处理:

这个项目刚开始的时候我是使用官方案例中的梯形图轮询方式进行程序编写的,刚开始还好,但这个项目中大概使用了20个PTP模块,写了三四个模块的程序后我发现PLC的代码工作存储器空间满了,写不下去了,后来我才改成使用SCL进行编程,最终我将全部程序写完也只不过使用了50%多一点的代码工作存储器。