USS协议库指令的用法
时间:2023-03-21来源:佚名
关于200与G110变频器通信问题,想请教各位高工们,请各位详细指教,现有1台200plc和14台G110变频器,之间采用USS通信,14台变频器的控制可以多段速频率实时控制,控制频率由屏上设置,并且14台的实际运行频率需要反馈给PLC后,再屏上显示,14台电机运行方式有时同时控制,也可能错开控制,而且每个电机多需要2段速·和正反转控制,先想请教高工们:USS库的用法。1.先定义需要控制的变频器数量,波特率,同时在变频器设置相对应的通信属性,2.USS控制块的用法,本人也用1台PLC和1台G110通信过,能运行,频率也可设置,也就是单台通信能达到预期的效果,现在迷惑之处是,14台,是需要14个USS控制块调用吗?USS控制块好像是USS_CTRL,如果是,每个USS控制块占用397个字节,那么14个所需要的字节量=14*397个字节吗?并且14个USS控制块要像MODBUS库那样写轮回控制(靠前者完成位触发后者所需要的库吗),具体怎样轮回控制要怎样写?前辈们:请详细写出程序例子,本人在此谢过!!!如果14USS控制块不需要轮回触发,就直接分别同时调用它,这样可以同时分别控制电机运行吗?这样端口会通信不了,会错吗? 答:1、USS协议库指令,归根结底是一个子程序集,它包含了若干个子程序。这些子程序的运行会占用变量区。由于子程序运行时,会占用这些变量区,所以用户不能用。否则运行出错。我的学生就犯过这种错误,导致uss指令运行时始终有错误代码1。(这种错误,编译不会提示有错误的。除非你没有指定库指令的存储器区,程序编译会出错,当然也就别提程序运行了) 2、理解上面这一点,回想C语言的运行,显然,无论你驱动多少个变频器。所占用的都是那397个字节。因为他们调用的都是同一个子程序。 3、进一步讲,所谓的USS指令库,其本质就是PLC的自由口通信,只不过西门子写了一个通用程序集,简化了用户的工作。 4、针对你PLC与单台变频器通信已经成功。相关设置及编程对你而言应该不成问题。一次初始化(定义PLC的某一端口使用USS协议通信),多次调用USS_CTRL(或USS_CTRL_P1)指令就可以完成对多台变频器的驱动。关键是要理解初始化中active的含义:这是一个32位的整数,第0位为1,表示地址为“0”的变频器加入uss通信,第1位为1,表示地址为“1”的变频器加入uss通信,以此类推,1个S7-200可以对32个变频器控制。需要引起注意的是,很多人,先调试了一台,指定了库指令变量区,后来加入多台,不经意中很容易使用已经分配给通信的变量区。造成运行错误。 5、单台运行通过了,进而调试多台,可能出现检查程序正确,但就是没法运行成功的情况。这时候,请检查“总线终端电阻”开关的设置,只有首尾置“ON”,第二个,在USS 总线上的各个器件之间要求有一个公共的 0 V 基准 (端子号 10) ,既要把这个端子串联起来并与PLC的COM端相连。单台调试时,可以不连,多台总线式通信务必连接。第三,同时应该记住USS协议是串行通信协议,其物理联接方式应该是串行联接,而不能是树形。 |