S7-200 SMART USS 标准指令库包括 USS_INIT、USS_CTRL、USS_RPM_X、USS_WPM_X等指令。调用这些指令时会自动增加一些子程序和中断服务程序。
USS 库应用首先要进行 USS 通信的初始化。使用 USS_INIT 指令初始化 USS 通信功能。
图 1. 选择 USS_INIT 指令
打开 USS 指令库分支,像调用子程序一样调用 USS_INIT 指令。
图 2. 调用 USS_INIT 指令
图中:
= | 1 | 设置为 USS 通信协议并进行相关初始化 |
0 | 恢复为 PPI 协议并禁用USS通信 |
= | 1200 |
1200 bit/s |
2400 |
2400 bit/s |
|
4800 |
4800 bit/s |
|
9600 |
9600 bit/s |
|
19200 |
19200 bit/s |
|
38400 |
38400 bit/s |
|
57600 |
57600 bit/s |
|
115200 |
115200 bit/s |
USS_INIT 子程序的 Active 参数用来表示网络上哪些 USS 从站要被主站访问,即在主站的轮询表中激活。网络上作为 USS 从站的驱动装置每个都有不同的 USS 协议地址,主站要访问的驱动装置,其地址必须在主站的轮询表中激活。USS_INIT 指令只用一个 32 位长的双字来映射 USS 从站有效地址表,Active 的无符号整数值就是它在指令输入端的取值。
表 1. 从站地址映射位号 | MSB 31 |
30 | 29 | 28 | ... | 03 | 02 | 01 | LSB 00 |
---|---|---|---|---|---|---|---|---|---|
对应从站地址 | 31 | 30 | 29 | 28 | ... | 3 | 2 | 1 | 0 |
从站激活标志 | 0 | 0 | 0 | 0 | ... | 1 | 0 | 0 | 0 |
取 16 进制无符号整数值 | 0 | ... | 8 | ||||||
Active = | 16#00000008 |
在这个 32 位的双字中,每一位的位号表示 USS 从站的地址号;要在网络中激活某地址号的驱动装置,则需要把相应位号的位置设为二进制“1",不需要激活 USS 从站,相应的位设置为”0"。最后对此双字取无符号整数就可以得出 Active 参数的取值。
在表 1 的例子中,如果使用站地址为 3 的 MM 440 变频器,则须在位号为 03 的位单元格中填入二进制“1"。其他不需要激活的地址 对应的位设置为”0"。取整数,计算出的 Active 值为 00000008 h,即 16#00000008,也等于十进制数 8(如图 1.中的 e.)
建议使用 16 进制数,这样可以每 4 位一组进行加权计算出 16 进制数,并组合成一个整数。当然也可以表示为十进制或二进制数值,但有时会很麻烦,而且不直观。
如果一时难以计算出有多个 USS 从站配置情况下的 Active 值,可以使用 Windows 自带的计算器。将其设置为科学计算器模式,可以方便地转换数制。
USS 指令库需要大概 402 个字节的 V 存储区用于支持其工作。调用 USS_INIT 指令后就可以为 USS 指令库分配库存储区。也可以在编程的稍后阶段分配存储区地址,但这一步是必不可少的,否则程序无法通过编译。
根据 S7-200 SMART中的数据存储区分配原则,分配给库指令的数据区绝对不能与其他程序使用的数据区有任何重叠。否则会造成出错。