PLC编程时,对DP通信的变频器控制字1采用数组类型,0-15位,分别控制,而不直接使用047E047F,这样的话,怎样把数组变量转换为INT?用的是TIAV13SP1,PLC是1215CV4.1
问题补充:
说说我的期望,一个项目会有很多的变频器,而其中几个变频器我还用的自由报文,改过默认控制字,所以必须做成块FC,(常用的047E047F不方便,换算麻烦),像USS通信的块一样,OFF1OFF2OFF3FACK反转禁止负频率等,都做个一个FC里面,里面全是形参,需要时调用就行,填写对应的实参。但是,昨天我查过AT覆盖,好像要求是不能覆盖已在接口中声明为参数的PLC结构化的变量,应该是FCFB吧,所以我觉得AT覆盖实现不了
最佳答案
不明白的你的意思,但是给你看几个变量的用法!也许能解答你的要求!
AT覆盖变量
用户程序要访问声明变量内的数据区域,可以通过附加声明来覆盖所声明的变量。这样,可以选择对不同数据类型的已声明变量进行寻址。例如,可以使用BOOL的ARRAY对WORD数据类型变量的各个位寻址。
要覆盖变量,直接在待覆盖的变量后声明附加变量,并用关键字“AT”加以标识
对于变量覆盖可适用以下通用规则:
·在STL、LAD、FBD和GRAPH中,S7-1200和S7-1500允许变量覆盖。
·SCL支持在所有CPU系列中覆盖。
·可以在以下块中覆盖变量:
o在标准访问的代码块中
o在可优化访问具有保留设置“在IDB中设置”的变量的代码块中
·覆盖变量数据宽度必须小于等于被覆盖变量的数据宽度。
·不可以覆盖VARIANT和INSTANCE数据类型的变量。
·无法覆盖库中声明为接口中参数的块。
·无法覆盖接口中声明为参数的结构化PLC变量
S7-1200/1500:在FC中使用AT
对于S7-1200/1500中的FC,覆盖变量和被覆盖变量的数据长度必须相同。如果无法通过程序实现,则可通过.X、.B、.W或.D语法对现有变量中的区域进行寻址。
图片说明:
提问者对于答案的评价:
按照你的方法,确定AT可用,在FC里面,已经满足需求,非常感谢