益旺电气
工控爱好者
级别: 略有小成
精华主题: 0
发帖数量: 91 个
工控威望: 201 点
下载积分: 6963 分
在线时间: 84(小时)
注册时间: 2010-08-15
最后登录: 2024-01-18
查看益旺电气的 主题 / 回贴
楼主  发表于: 2019-03-19 09:48
      信捷PLC的性价比相对来说还算是可以,现在众多的顺控程序很多设备都在使用,我使用也有数年之久,相对来说,XC系列的PLC,到最后的版本,也基本上该有功能也基本上有了,相对来说,通过不断的升级,也还算稳定。
    自去年开始,因业务需要,开始使用各种XD系列的PLC,但真的是很坑爹呀,那编程软件可能是我目前用过所有的PLC中最垃圾的一个,也不知道他们公司的哪位大神,使用那样的扩展模式,加一个扩展得后面加一个10000,真的是数着数字都烦,原来好好的,在加一个模块后加100就可以了,这样倒好,要给打号码管都太长了,更别提输这数字了,
    那软件呢,注释当中一大堆用不着的,也在当中,有时要找一个IO真的挺难找的,不知道用哪种PLC,里面可用的就显示,这样不让人家好搞多了,还有就是那插入一行,与删除一行,得非常小心,因为你稍不注意,乖乖,它就得转圈圈了,死机了,没保存,不好意思,它自动备份后写的那部分程序,你得重来了。
    还有就是发现那软件有一个问题,在时实性较高的东西,有时并不会从上往下的顺序来的,有时得人为的增加延时等待。希望信捷的研发中心人员,能够重视这些问题,我们是很希望国产的很好,也很愿意支持国货,但得不影响自己工程的前提下呀。在某些方面,多学习一下国际上知名品牌的长处,对自己的产品还是很有益处的。
   我现在基本上,实时性高一点的地方还是使用国际知名品牌。一些顺控制要求不高的地方使用一下信捷,我很支持国货,但是目前为止,能用XC就尽量用XC,XD目前为止还是很不稳定。什么时候稳定时再用吧。希望信捷公司人员看到后,能知道怎么提升。让支持你们的人不会太失望。
本帖最近评分记录:
  • 下载积分:+1(qj_wgx) 除了信捷,不还有其它的 ..
  • 下载积分:+1(lizhendong) 感谢分享!
  • 下载积分:+1(蓝色卫兵) 对与一个刚要接触而且以 ..
  • 工控自动化设备PLC,触摸屏,单片机程序开发设计 ,PCB设计,生产与销售
    bifujian110
    羊月薪5000,打算用30万建一个窝,老虎不允许,说私自建就
    级别: 工控侠客
    精华主题: 0
    发帖数量: 384 个
    工控威望: 2120 点
    下载积分: 37373 分
    在线时间: 147(小时)
    注册时间: 2017-02-06
    最后登录: 2023-04-06
    查看bifujian110的 主题 / 回贴
    1楼  发表于: 2019-03-21 10:24
    信捷用起来感觉真的不方便, 刚好公司最近买了几台设备是用于信捷PLC的, 目前要开发上位机, 感觉信捷的寄存器什么的太多了, 写了个地址分析的函数超长啊
    public override ushort AnalyzeAddress(string strAddress)
    {
       Address address = Address.GetAddress(strAddress);
       if (address == null) return 0;
       switch (address.Type.ToLower())
       {
          case "m": if (address.Number <= 20480) return address.Number; break;
          case "x":
             if (address.Number <= 77) return (ushort)(address.Number + 20480);
             else if (address.Number <= 10000 && address.Number <= 10077) return (ushort)(address.Number + 20736);
             else if (address.Number <= 10100 && address.Number <= 10177) return (ushort)(address.Number + 20800);
             else if (address.Number <= 10200 && address.Number <= 10277) return (ushort)(address.Number + 20864);
             break;
          case "y":
             if (address.Number <= 77) return (ushort)(address.Number + 24576);
             else if (address.Number <= 10000 && address.Number <= 10077) return (ushort)(address.Number + 24832);
             else if (address.Number <= 10100 && address.Number <= 10177) return (ushort)(address.Number + 24896);
             else if (address.Number <= 10200 && address.Number <= 10277) return (ushort)(address.Number + 24960);
             break;
          case "s": if (address.Number < 8000) return (ushort)(address.Number + 28672); break;
          case "sm": if (address.Number < 4096) return (ushort)(address.Number + 36864); break;
          case "t": if (address.Number < 4096) return (ushort)(address.Number + 40960); break;
          case "c": if (address.Number < 4096) return (ushort)(address.Number + 45056); break;
          case "et": if (address.Number < 40) return (ushort)(address.Number + 49152); break;
          case "sem": if (address.Number < 128) return (ushort)(address.Number + 49280); break;
          case "hm": if (address.Number < 6144) return (ushort)(address.Number + 49408); break;
          case "hs": if (address.Number < 1000) return (ushort)(address.Number + 55552); break;
          case "ht": if (address.Number < 1024) return (ushort)(address.Number + 57600); break;
          case "hc": if (address.Number < 1024) return (ushort)(address.Number + 58624); break;
          case "hsc": if (address.Number < 40) return (ushort)(address.Number + 59648); break;
          case "d": if (address.Number < 20480) return (ushort)(address.Number + 28672); break;
          case "id":
             if (address.Number < 100) return (ushort)(address.Number + 20480);
             else if (address.Number <= 10000 && address.Number <= 10099) return (ushort)(address.Number + 20736);
             else if (address.Number <= 10100 && address.Number <= 10199) return (ushort)(address.Number + 20836);
             else if (address.Number <= 10200 && address.Number <= 10299) return (ushort)(address.Number + 20936);
             break;
          case "qd":
             if (address.Number < 100) return (ushort)(address.Number + 24576);
             else if (address.Number <= 10000 && address.Number <= 10099) return (ushort)(address.Number + 24832);
             else if (address.Number <= 10100 && address.Number <= 10199) return (ushort)(address.Number + 24932);
             else if (address.Number <= 10200 && address.Number <= 10299) return (ushort)(address.Number + 25032);
             break;
          case "sd": if (address.Number < 4096) return (ushort)(address.Number + 28672); break;
          case "td": if (address.Number < 4096) return (ushort)(address.Number + 32768); break;
          case "cd": if (address.Number < 4096) return (ushort)(address.Number + 36864); break;
          case "etd": if (address.Number < 40) return (ushort)(address.Number + 40960); break;
          case "hd": if (address.Number < 6144) return (ushort)(address.Number + 41088); break;
          case "hsd": if (address.Number < 1024) return (ushort)(address.Number + 47232); break;
          case "htd": if (address.Number < 1024) return (ushort)(address.Number + 48256); break;
          case "hcd": if (address.Number < 1024) return (ushort)(address.Number + 49280); break;
          case "hscd": if (address.Number < 40) return (ushort)(address.Number + 50304); break;
          case "fd": if (address.Number < 8192) return (ushort)(address.Number + 50368); break;
          case "sfd": if (address.Number < 6000) return (ushort)(address.Number + 58560); break;
          case "fs": if (address.Number < 48) return (ushort)(address.Number + 62656); break;
          default:
             break;
       }
       return ushort.MaxValue;
    }
    本帖最近评分记录:
  • 下载积分:+1(healer_1) 大佬级的才用C来写吧