① 西门子 300plc怎么上传程序
西门子 300pl上传程序
1、 设置通讯方式,采用简单的mpi通讯,把和你的计算机用通讯线连接好后,在选择开始-simatic-step7-设置pg-pc接口打开后,设置通讯参数,并进行通讯诊断,诊断通讯无误。
2、打开step7项目编辑器manger后,新建一个空项目。
3、点击plc--上传到pg(uploadtopg)。
4、出现对话框,选择你要上传的站内内容,如是一个话,你就选择你通讯诊断的地址相同就好了,要是多站的话要搞清楚对应的站地址在选择上传。
5、点击上传,就上用户程序、系统程序和硬件组态,但是所有程序段都是没有注释的。
S7- 300 PL指令及编程软件,对于西门子公司的SIMATICS7系列PLC,常用的编程软件是STEP7, STEP7中有丰富的S7系列PLC的编程语言,通常使用的是梯形图(LAD)、语句表(STL)和顺控指令(GRAPH)等。
另外,还有功能块图(FDB)、标准控制语言(SCL)、状态图(HiGraph)、连续功能图(CFC)和STEP 7的C语言等。
梯形图具有直观、简单等优点,并且在STEP 7中, 梯形图可以转换成为语句表(STL)和功能块图(FDB)。在编程的过程中,用户可以选择上面所示的某- -种语言进行编程,也可以利用多种语言的优点来进行混合编程,使用户的程序开发、输入和调试等工作变得极为方便。
② 西门子PLC SCL编程指令讲解
在SCL程序编写中,在逻辑控制或者数据处理分析中,有一类指令我们用得最多,就是程序控制指令,常见的入IF ,Case ,For 和While 等。下面我仔细的讲解,有疑问可以留言提出:
图1 程序控制指令
IF .. THEN 指令
IF 指令含有含有三个分支,分别是Then ,Else 和ElsIF。
图2 IF 语句
图3 浮点数比较条件
IF语句应该是SCL里面最常用的语句了,常用于条件判断。判断类型可以是BOOL类型,可以是浮点类型等等,基本上所有类型都可以判断,只要比较的两个变量类型是一样。
在图2中,AByte 是Byte 类型,因为1在0..255之间,所以1会自动转化为Byte类型。如果比较的是Abyte类型是256,会是什么样子呢?读者可以自己写的程序,试验一下,看看结果,会加深你对数据类型的理解。
上面程序中,首先比如AByte是否和1相等,如果相等则Outvalue的值为1,然后和2比较,如果和2相等,那么OuValue值为2,如果都满足条件OuValue 的输出值则为5。
上述的IF条件语句,也可以用CASE语句来进行表示。CASE的比较类型没有IF 范围广,只有整形才能做为比较条件。
CASE指令
图4 IF语句的CASE表达方式
从CASE语句表述中,我们发现语句相对于IF表达式来说,更加清晰简单明了,所以如果需要用到整形条件作为判断,尽量用CASE来实现,会提高效率。
FOR 指令
FOR指令常用来对数组类型数据进行批量处理,在上一期讲解中已经举过一个例子,下面举个稍微复杂点的例子。
图5 FOR循环语句
在FOR程序,我们对数组的每一个索引值进行赋值,同时判断索引值的奇偶性来进行赋值操作。
图6 FOR循环语句2
在上面的程序里面,我们发现有一个关键字Continue .当FOR循环执行到该语句的时候,Continue下面的程序都不会执行。所以,当iCout小于15的时候,AArray[iCount]:=iCount赋值语句不会执行。
还有一个地方有点区别,就是FOR 语句后面,多了一个关键字 BY 。BY的含义是For 执行的间隔按照BY的设定来执行。如果后面设定为1,则0..99全部执行;如果设定为2,则执行顺序为0,2,4,6,8的顺序来执行。
上述的FOR循环语句,我们同样可以采用WHILE循环来实现。
WHILE 指令
图7 WHILE指令
WHILE循环的表达方式和FOR循环基本类型,但是我们注意一点,这里面对循环变量,手动进行进行递进。如果没有这一句,iCount的值一直为0,循环条件iCount<100将一直为True,WHILE循环会一直执行。所以切记一定执行该语句。
我们还注意到一个关键字EXIT,当执行到该指令的时候,WHILE循环会停止执行,FOR指令也是一样。所以上面的程序,运行下来的情况是,数组的赋值只执行到AArray[81]结束。
GOTO指令
goto指令主要用来执行跳转过程,可以带来程序操作的便利性,一般不推荐使用。若操作不当,则会打乱整个程序的逻辑性。
在图7 中,如果iCount 大于90,那么,程序就会跳出WHILE 循环执行指定标签lable13地方程序#iCount=0,继续从头开始执行WHILE循环。当然这个操作是毫无意义的,这里只是举个例子而已。
③ 西门子PLC中的STL和SCL指令
STL有点类似汇编语言,和机器码对应,无论哪种语言写的PLC程序都可以转换成STL查看,所以掌握基本的STL指令和语法是很有帮助的。另外STL直接操作寄存器,实现同样功能时可以减少运算量和寄存器调用次数,并且只关心数据类型的长度(例如不区分int和word),减少了数据类型转换,总的来说执行效率高,但实现复杂运算和逻辑时编程繁琐。
SCL类似于高级语言Pascal、C之类野毕伍,可以通过简单的语句实现复杂的功能,逻辑清晰,在复杂数据类型的处理上也非颂或常方便,虽然理论上执行效率比STL低,但实际一般不会有明显的影响。
另外,在同一个FC或FB中,STL可以和梯形图数含混合使用,而SCL编写的FC或FB不能混合其他语言