1.调用ASIx_CTRL子程序
将图12-13左边窗口的文件夹“\程序块\向导”中的子程序“ASIx_CTRL”拖放到OB1中(见图12-14),其中的x是AS-i模块所在的槽位号。SM0.0的常开触点一直接通,每次扫描时都执行ASIx_CTRL,才能保证正常的AS-i网络通信。必须为每个CP 243-2模块编写一条ASIx_CTRL指令。ASIx_CTRL指令根据ASIx_SYM符号表中的定义,在AS-i模块和CPU的V存储区之间复制从站I/O数据。ASIx_CTRL只有一个输出变量Error(错误信息),可以在ASI向导的在线帮助中查阅错误代码的意义。
CP 243-2占用的CPU的数字量输入、输出字节(本例程为IB2和QB2)分别是AS-i的状态(错误)字节和命令字节。它们各位的意义见表12-2和表12-3。
图12-14 调用ASI0_CTRL子程序
图12-15 控制ASI通信位
表12-2 状态字节
表12-3 控制字节
主站发送数据之前,应将控制字节中的“ASI_COM”(Q2.6)置位为1(见图12-15)。下载程序后,可以通过AS-i专用的符号表(见图12-13)中的符号地址或绝对地址访问AS-i从站的输入、输出变量。
2.CP243-2的Bank(www.xing528.com)
分配给CP 243-2的8个模拟量输入字和8个模拟量输出字(本例从AIW0和AQW0开始),可以被切换为称为Bank(库)的64个输入区和64个输出区,每个区的长度为8个字。用控制字的第0~5位选择Bank。Bank0用于标准从站或A从站的数字量输入,Bank1用于AS-i诊断,Bank2~Bank15用于命令调用的响应数据,Bank31用于B从站的数字量输入。Bank32~Bank47是从站1~31的模拟量输入。
3.用ASI命令实现主站的控制和诊断功能
CP 243-2用各种命令来实现主站的控制功能,AS-i命令的详细资料见随书光盘中的文件《CP 243-2AS-i Master Manual》的第5章。
子程序ASIx_READ从指定的库读取数据(见图12-16),并将该数据存放在由指针DB_Ptr指定的16B的V存储区。子程序ASIx_WRITE将数据写入CP 243-2中指定的库(见图12-17),用指针DB_Ptr指定16个字节的V存储区的源地址。
图12-16 调用ASI0_READ
图12-17 调用ASI0_WRITE
以执行命令Change_AS-i_Slave_Address(改变AS-i从站地址)为例,由CP243-2的用户手册可知,该命令的发送缓冲区的首字节为命令代码16#0D,第2和第3个字节分别是从站老的地址和新的地址。可以用指令或用STEP7-Micro/WIN的状态表(相当于STEP 7的变量表)将上述信息写入VB220~VB222,然后调用图12-17中的子程序ASIx_WRITE,将VB220~VB222中的信息发送到从站。用子程序ASI0_READ接收从站发送的响应信息(见图12-16),存放在VB200开始的V存储区。由CP 243-2的用户手册可知,该命令的返回信息有两个字节,第1个字节为命令代码16#0D,第2个字节为命令的状态字节。
4.用CP 243-2的命令诊断AS-i从站
通过CP 243-2的命令代码16#30,读取激活的AS-i从站列表LAS、检测到的AS-i从站列表LDS、永久性的AS-i从站列表LPS和AS-i规范的标志。程序与图12-15~图12-17基本上相同,ASIx_WRITE的Bank值为2,仅需要发送一个字节的命令代码16#30。用ASIx_READ读取的数据存放在DB_Ptr指定的V存储区,前18个字节在Bank2,后10个字节在Bank3。Bank2的第0号字节为16#30,1号字节为命令状态字节,2~9号字节为LAS,10~17号字节为LDS。Bank3的0~7号字节为LPS。每个从站占二进制的一位,0号从站在第1个字节的最高位,7号从站在第1个字节的最低位。
Bank3的8号和9号字节为标志字节,标志的详细信息请查阅CP243-2的用户手册。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。