17838383235
首页 > 新闻中心 > 6ES7222-1HF22-0XA8现货西门子代理
新闻中心
6ES7222-1HF22-0XA8现货西门子代理
发布时间:2024-05-24        浏览次数:5        返回列表

6ES7222-1HF22-0XA8现货西门子代理

6ES7222-1HF22-0XA8现货西门子代理

6ES7222-1HF22-0XA8现货西门子代理


西门子PLC编程技巧,就是好用!




【导读】本文通过例程的方式总结一些常用的西门子PLC编程技巧,从简单到复杂,从梯形图到SCL,希望对大家有所帮助。

(一)PLC系统常闭点PLC程序的常闭点,可以作为逻辑支路断开、调试或检修的屏蔽开关,尽量使用比较独立的存储位。



图片

(二)PLC系统常开点

PLC程序的常开点,可以作为逻辑支路接通、调试或检修的接通开关,尽量使用比较独立的存储位。

图片

(三)PLC系统上电脉冲

PLC程序的系统上电脉冲,可以作为系统初始化脉冲来复位、清零和设置系统重要参数,尽量使用比较独立的存储位。

图片

(四)一键触发启停功能

用一个按钮实现启动和停止功能,可以作为操作按钮不够时的一个补救措施。

图片

(五)模拟量输入标定功能

将整数的模拟量标定为实数的工程量,相当于博途中自带的SCALE_X ,但该子程序结合高低量程限制后,标定和调试都更加方便。

(1)子程序调用

图片

(2)子程序变量声明

图片



(3)SCL代码IF (#Emin < #Emax) AND (#Dmin < #Dmax) THEN    IF #Raw < #Dmin THEN        #RawTemp := #Dmin;    END_IF;    IF #Raw > #Dmax THEN        #RawTemp := #Dmax;    END_IF;    IF (#Raw >= #Dmin) AND (#Raw <= #Dmax) THEN        #RawTemp := #Raw;    END_IF;    #OutReal := (INT_TO_REAL(#RawTemp - #Dmin) / INT_TO_REAL(#Dmax - #Dmin)) * (#Emax - #Emin) + #Emin;    #OutPercentage := (#OutReal / (#Emax - #Emin)) * 100.0;ELSE    #OutReal := 0.0;    #OutPercentage := 0.0;END_IF;




(六)模拟量输出标定功能

将实数的工程量标定为整数的数字量,相当于博途中自带的NORM_X ,但该子程序结合高低量程限制后,标定和调试都更加方便。

(1)子程序调用

图片

(2)子程序变量声明

图片



(3)SCL代码IF (#Dmin < #Dmax) AND (#Emin < #Emax) THEN    IF #Raw < #Emin THEN        #RawTemp := #Emin;    END_IF;    IF #Raw > #Emax THEN        #RawTemp := #Emax;    END_IF;    IF (#Raw >= #Emin) AND (#Raw <= #Emax) THEN        #RawTemp := #Raw;    END_IF;    #OutInteger := REAL_TO_INT(((#RawTemp - #Emin) / (#Emax - #Emin)) * INT_TO_REAL(#Dmax - #Dmin) + INT_TO_REAL(#Dmin));    #OutPercentage := ((((#RawTemp - #Emin) / (#Emax - #Emin)) * INT_TO_REAL(#Dmax - #Dmin) + INT_TO_REAL(#Dmin)) / INT_TO_REAL((#Dmax - #Dmin))) * 100.0;ELSE    #OutInteger := 0;    #OutPercentage := 0.0;END_IF;RETURN;



(七)冒泡法排序功能

通过冒泡法升序或降序模式排序数组。

(1)子程序调用

图片

(2)子程序变量声明

图片

(3)模式为1(升序)的运行结果如下图所示:

图片

(4)模式为0(降序)的运行结果如下图所示:

图片

(5)SCL代码

图片


IF #Enable THEN

    //获取数组上限

    #L := LOWER_BOUND(ARR := #Array, DIM := 1);

    //获取数组下限

    #H := UPPER_BOUND(ARR := #Array, DIM := 1);

    //冒泡法排序

    FOR #i := #L TO #H-1 DO

        FOR #j := #L TO #H-1-#i DO

            IF #Mode THEN

                //升序

                IF #Array[#j] > #Array[#j + 1] THEN

                    #temp1 := #Array[#j];

                    #Array[#j] := #Array[#j + 1];

                    #Array[#j + 1] := #temp1;

                END_IF;

            ELSE

                //降序

                IF #Array[#j] < #Array[#j + 1] THEN

            END_IF;

        END_FOR;

    END_FOR;

END_IF;

(八)斜坡函数功能

输出值按照指定斜率(单位/秒)跟随设定值,可以用来防止数值突变,这个功能可以在博途中添加扩展库函数(LGF)后直接调用Ramp函数。

(1)子程序调用

图片

(2)子程序变量声明

图片



(3)SCL代码#rv1:= RD_SYS_T(#ActualTime);
IF #InitFB = true THEN    #LastTime := #ActualTime;    #AuxOut := #SetPoint;    #Out := #AuxOut;END_IF;
#DeltaTime_T:= T_DIFF(IN1:=#ActualTime, IN2:=#LastTime);#DeltaTime_DI:= TIME_TO_DINT(#DeltaTime_T);#DeltaTime:= DINT_TO_REAL(#DeltaTime_DI);#DeltaTime := #DeltaTime / 1000.0;#LastTime := #ActualTime;
IF #SetPoint < #AuxOut THEN    #Out := #AuxOut;    #auxR := #AuxOut - (#Rate * #DeltaTime);    #Out := #AuxOut;    #AuxOut := MAX(IN1 := #auxR, IN2 := #SetPoint);    #Out := #AuxOut;    RETURN;ELSE    IF #SetPoint > #AuxOut THEN        #Out := #AuxOut;        #auxR := (#Rate * #DeltaTime) + #AuxOut;        #Out := #AuxOut;        #AuxOut := MIN(IN1 := #auxR, IN2 := #SetPoint);        #Out := #AuxOut;    END_IF;END_IF;RETURN;




核心提示:西门子PLC代理,西门子变频器代理,西门子伺服电机代,西门子工控机代理,西门子触摸屏代理
刚发布的文章
联系方式
  • 地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
  • 手机:17838383235
  • 联系人:徐嘉泉
新闻分类
最新发布
企业新闻
站内搜索