python中uss的用法_plc编程中uss库的用法问题

plc编程中uss库的用法问题

问题描述(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协议是串行通信协议,其物理联接方式应该是串行联接,而不能是树形。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值