C++PLC编码规范

PC在编码规范方比PLC要好过多。既然它都是编程语言,那么PC方面的正经是否可就此同PLC呢?答案是一定的,但要作取舍。下面规范被之多数得以用来一般PLC,其中微只是指向西门子博途,使用时要注意。

变量命名

当前PLC中的变量命名没有统一之规则,这地方我们得参照PC编程,在PC的编程中出如下规则:

  1. camelCase,又吃骆驼命名法,变量中第一但词首许母小写,后面单词的首字母大写,就如camelCase名称相同。Java、C++等高档语言中常见应用。
  2. snake_case,又为蛇蛇命名法,单词都有些写,单词和单词里用生划线隔开。是Python推荐的命名风格
  3. PascalCase,帕斯卡命名法,源自于Pascal语言。和camelCase相似,不过首字母也大写。几乎以具备的尖端语言中,用来定名类名。
  4. Hungarian,有匈牙利人发明,所以也深受匈牙利命名法。微软前期引进的风格。现在吗基本没有人使用。

敲定:推荐普通变量,全局变量,共享DB,FC函数用camelCase。而FB用PascalCase,相应的背景多少块则当后加DB。对于常量用全大写的SNAKE_CASE。有些名字而传统就是是大写,就不要转移多少写,比如HMI,FC,FB,SV,PV等。在SCL中,建议重点词用小写,系统自带的函数用小写,以分别用户之函数,这个TIA
Portal会自动完成。

变量取名

描绘程序太烦的从事非是团组织逻辑关系,而是变量的命名。一个来含义的讳会叫程序清晰不丢掉。

  1. 于Q输出,都是做到有平动作,最好用动词+名词,或名词+动词。
  2. 对于I输入,按钮启动电机(push button),可以描绘成pbStartMotor,
    旋转开关(switch
    button)切换自动手动,可以形容成sbAutoMan,限位开关(limit
    switch)可以描绘成lsCylinderOut。如果反应一个位置状态,那么尽管写成名词+形容词或名词+方位。比如lsCylinderOut,vehicleOnLeft等等。最好定点一类词。这次小车被vehicle,那么下次就算无须为dolly。
  3. 对于一些bool型变量,很麻烦归类,比如想发挥“是否形成”等判断概念,写成hasDone,isGood会比较好。
  4. 对于M,如果是到位动作,和Q一致,如果是代表状态,和I一致。
  5. 对此定时器和计数器较麻烦命名,但可以写成因为ton或ctu开头的,以分别一般变量。
  6. 以SCL中,对于循环变量,习惯用i,j,k来表示。
  7. 于FC和FB比较辛苦,如果是瓜熟蒂落动作,用动词+名词。如果是团队程序,用工位号来顶替。

变量的命名很麻烦,这里虽不一一列举。

数组

  1. 西门子的数组起始索引可以是借助的,建议始终打1始发,以配合SCL中的循环。SCL中循环开始与收还是闭区间。这个定义不是杀好谈明白,自己体会吧。

变量的施用

  1. 对于M全局变量,仅以OB中运用,用来在FC或FB之间传输数据用,限制性的使用M。另外传输数据用一道享DB也蛮好。TIA
    Portal中生出组的概念,把共同享DB和系的FC,FB放在同等组中。
  2. 于定时器和计数器
    由于传统的定时器和计数器是全局的,我们限制性使用。对于FC,可以当与组的共享DB块被声明,对于FB可以以static中声称。如果FB中的计数器和定时器外部需要看,可以用output传出,不要直接读背景数据块,背景数据块是供FB使用的。
  3. 对HMI访问的变量,可以建造一个FC和一个共享DB,作为接口使用。在命名上可描绘成interfaceHMI+编号,每个HMI各搞一个接口,方便管理,写界面的与描写序的得分别了。

程序逻辑

  1. 于上马勾画序时,首先使建模,从全局入手,切不可一直达来就形容序,通过建模,你可以再清了解工艺流程,修改模型呢较方便,方便工程师之间联络。PC编程有UML建模语言,状态机就属内部的一致种。Matlab的状态机最为强劲。当然PLC也发出温馨的工具,SFC。建模完成后,可以依据模型转换为LAD和SCL,或直接生成PLC程序。如何转移可以参见我之技术博客。
  2. 程序中注释,过去一直当更加详细越好,不过世道变了,现在援引代码自我注释,也就是说,清晰的代码不要注释也十分爱懂,而散乱的代码即使有注释也微乎其微理解。注释不要错过解释有条告句子或指令,要描绘有代码的用意。对于FC,FB,接口参数必需要注释。
  3. 代码重构。通用编程有特别讨论重构的写。对于一个操纵要求,当您首先全套写时,由于针对题目掌握的非足够深刻,写来底代码很糊涂,变量的命名也老自由,当写了第一整整,程序可以正常运作,但信念不足,此时公重新在原先代码的基础及而写了一致全,发现你针对之控制次还起信念了,这个历程被重构,有时候是过程会再也好几通。好的主次是反复推敲出来的。如果发求,你可以描绘成FC或FB,作为仓库反复用。
  4. 尽量以时开触点。其实我们大部分丁还习惯常开。但终端限位一般还是常闭接法。另外自动手动可以独家写成稀个触点,都用常开表示。

次第组织

  1. 团队程序,其实用FB块比较好,这样可以用她的静态变量来来当次中的简报。当然就此FC也得,指定一个共享DB块当次中通信用。
  2. 手动和自动程序可以独家写一个片,然后分别出口到中间变量
    ,可以是DB或M区。再新建一个块,把这些中变量组合在一起控制Q输出,可以增长一些互锁条件,命名为outAssignment。
  3. 总的编程软件被,我们将同工位号的块命名成“工位号+功能”,博途有个组的成效,可以添加一个新组,命名位相关工位号,然后把工位相关的主次在中间。此时可精简块的工位号,但“组织”块不宜精简掉,它需要在OB片被调用。

今天写及这边,谢谢。

十分欢迎大家汇报,后期会窜