分享好友 水电电工首页 水电电工分类 切换频道

西门子S7-200PLC编程小技巧

2024-09-11 06:55860建材之家

西门子的 S7-200 PLC 功能强大,性能可靠,但在做数学运算时不能象高级语言那样做变量类型自动转换,经常要手工做 BTI、ITD 之类的转换,计算完成后又要 DTI 等耗时的操作,而且使代码行数增加,程序可读性不好,也降低了程序运行的效率。

本文给出一种可以避免使用这些指令的小技巧,使你的代码看起来更简洁,也缩程序的扫描周期。
就是在计算机编程中做算法设计时典型的以空间换时间的思想。比如一个字变量,在计算中经常要向双字变量转换,则我们在定义符号时让该变量占据双字的内存空间,将不用的字清零,则可同时以字型或双字型访问该变量而不需要进行专门的转换。
S7-200 的内存格式与我们常用的 PC 机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量,同时也可以 VD0 以双字型访问,避免了类型转换。
为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
   b ---- 字节型变量(byte)
   w ---- 字型变量(word)
   d ---- 双字变量(double)
   r ---- 实型变量(real)
   f ---- 位变量(flag)
   btn --- 自复位按钮式输入(button)
   sw ---- 切换开关或自锁按钮输入(switch)
   sig --- 传感器、编码等电平信号输入(signal)
   rly --- 输出继电器位(relay)
   ……
   当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
   假如有一个字类型变量名为 VarName,为使用前面的转换技巧,我们可以这样定义:
   wVarName ---- VW2
   dVarName ---- VD0
在程序初始化时将 VW0 清零(如果是不需要记忆的变量,直接将 dVarName 清零也可)或者在数据块中将 VW0 设置为零。则以后需要以字类型访问变量时就用 wVarName,需要以双字类型访问变量时就用 dVarName。完全不需要类型转换。
本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
缺点是要多占用两字节的内存,以后程序中不能使用 VW0。但 S7-200 的 RAM 空间很大,一般是用不完的,以 226 为例,有多达 10K 的 RAM,偶从来没有超过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。
同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。
举报
收藏 0
打赏 0
评论 0
停送电操作指导书
一、 停送电倒闸操作必须听从调度指挥,并与用户取得联系后方可进行。二、 严格执行“电业安全规程”及“两票”制度执行一人操作,一人监护。三、 送电必须按母线侧刀闸、线路刀闸、油开关顺序操作,停电顺序相反,严禁带负荷拉闸。四、 停电后应立即挂好停电标志牌,严防挂错。五、 停电操作必须戴绝缘手套、穿绝缘鞋,站在绝缘垫上。六、 高压设备均为双回路供电,一回使用一回备用,严格执行双回路送电有

0评论2024-10-0448

DCS控制系统和PLC控制系统的区别
1. DCS是一种“分散式控制系统”,而PLC只是一种(可编程控制器)控制“装置”,两者是“系统”与“装置”的区别。系统可以实现任何装置的功能与协调,PLC装置只实现本单元所具备的功能。  2. 在网络方面,DCS网络是整个系统的中枢神经,和利时公司的MACS系统中的系统网采用的是双冗余的100Mbps的工业以太网,采用的国际标准协议TCP/IP。它是安全可靠双冗余的高速通讯网络,系统的拓展

0评论2024-10-0473

Modbus以及Modbus Plus有什么区别?
Modbus是一种通讯结构,广泛应用在智能设备之间进行主-从方式通讯。一个Modbus信息桢包括从机地址、功能码、数据区和数据校验码。正因为 Modbus仅仅定义了通讯结构,所以可以使用RS232、RS422和RS485端口,可以使用光纤、无线等媒质实现通讯。而 Modbus Plus则是一种典型的令牌环网,完整定义了通讯协议、网络结构、连接电缆(或者光缆)以及安装工具等方面的性能指标。

0评论2024-10-0441

继电保护安全措施票
近几年的继电保护事故通报中,由于漏拆、误拆有关连线或漏退、误投有关压板,造成运行开关误掉闸的现象时有发生。从各起事故中总结出,大部分原因是未认真执行现场继电保护安全措施票。下面对某发电厂具体执行继电保护安全措施票的情况作一介绍。 1 继电保护安全措施票的格式 继电保护安 全措施票的格式是参照《继电保护和电网安全自动装置现场工作保安规定》中的格式,并稍加改动 而形成,主要在内容格式上和审批格式

0评论2024-10-0436

西门子S7-200高速计数器怎么接收伺服驱动器的A相B相Z相差动信号
想利用西门子S7-200PLC的高速计数器,采集伺服驱动器的反馈编码器值,利用高速计数器采集到的值,在程序中比较好控制伺服电机实际运行的位置.答:西门子的200无法直接采集差分信号,因此你需要买个转化板进行转换(即使是224xp也只是支持集电极开路的0到5v,并不是差分)其次每个cpu的循环周期都得10ms左右,如果你在程序中比较实际位置,在进行输出的话很有很大的延迟,除非速度很慢,否则在

0评论2024-10-0469

双电源供电配电图
双电源供电配电图

0评论2024-10-0452

西门子变频器预充电的问题
变频器在放置很长时间不使用时,首次上电需要执行预充电,有人说需要用直流调压器直接接在母线正负极,慢慢升压,我想问的是变频器不是有预充电的吗,为什么还要用直流调压器啊?预充电有预充电电阻和预充电继电器,那么预充电继电器吸合和断开的时间是由什么来控制呢,这个时间可调吗?还有,如果接上输入电源,但是不启动,那么这个时候是不是在执行预充电?另外,如果不执行任何形式的预充电,变频器是在接上输入电源时主

0评论2024-10-0470

51单片机CPU的内部结构及工作原理
从上图中我们可以看到,在虚线框内的就是CPU的内部结构了,8位的MCS-51单片机的CPU内部有数术逻辑单元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序状态字PSW(8位)、程序计数器PC(有时也称为指令指针,即IP,16位)、地址寄存器AR(16位)、数据寄存器DR(8位)、指令寄存器IR(8位)、指令译码器ID、控制器等部件组成。1、运

0评论2024-10-0480

电功率计算公式的灵活变通
现有一个碳膜电阻,其额定电功率为P=1W(瓦),额定电阻为R=100Ω(欧);知道这两个数值后需要计算出这个电阻的额定电流I以及额定电压U。解题:我们知道电功率公式是P=UI,现在我们知道电功率和电阻,所以电功率公式要转换一下,转换计算公式为:P=I²R;但是我们需要计算的是电流,所以I²=P/R,然后把I开方就计算出了电流:电流:然后我们代入上面的公式中,I=1/10

0评论2024-10-0495

编码器工作原理
绝对脉冲编码器:APC  增量脉冲编码器:SPC  两者一般都应用于速度控制或位置控制系统的检测元件.  旋转编码器是用来测量转速的装置。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。  增量型编码器与绝

0评论2024-10-0468