大家好!
最近在研究如何在1200使用标准的FC/FB读取PROFIBUS-DP /PROFINET-IO的一致性数据,经过研究PEEK/POKE 等等间接寻址指令感觉实现不了,或者说我不知道如何实现,所以想了一个老办法
手头上有两个1200的PLC,一个是1211C,一个是1214C,本次本次实验把1211C作为一个IO设备,在博图组态好以后生成GSD文件具体如下
把1211C组态为IO设备,并且导出GSG文件,具体如下,由于这个不是介绍IO通讯是为了介绍数据的读写问题,所以就不详细解释图片的内容。

组态好以后导出GSD文件

为了可以在IO控制器可以直接查看写入IO设备的值,在IO设备里面进行了 20个字节的MOVE程序编写

以上是在IO设备组态的内容
建立一个新的项目,1200_SCL_组态1214C控制器,并且导入刚才导出的GSD文件,

在网络视图建立IO控制器与IO设备的连接

在IO控制器1214建立一个读写数据库,DB1,A1-A5的20个BYTE 是控制器写入IO设备的一致性数据区
A11-A55的20个BYTE是IO控制器读取IO设备的一致性数据区具体如下:

编写读写的FC,使用SCL来编写,调用了 DPWR_DAT 与DPRD_DAT也就是300的SFC14/15
并且定义好INPUT/OUTPUT参数,具体参考图片

在IO控制器的OB1调用上面编写好的SCL_程序块,并且监控返回值没有错误

在变量表对DB1的A1-A5的20个BYTE写入1.2.3.4.5.,然后DB1的A11-A55立即返回同样的值1,2,3,4,5


通过这样的封装,这个FC就可以实现一次编写多次调用也无需要修改了,只需要修改INPUT与OUTPUT的接口参数 P#DB1.DBX0.0 BYTE XX 就可以了,这样的程序就可以作为库程序了。
不知道大家还有没有更加快捷的方法?希望大家探讨一下!
谢谢!