S7-1200通过Modbus/485通讯INVT变频器(小白篇)

因为工作原因,一直做上位机的我现在什么都干,从去年冬天开始就偶尔鼓捣鼓捣下位机,我这边用的都是西门子1200,哈哈,做为小白的我拿着说明书,连问带蒙的,终于把通讯变频器搞定了,很开心。当然,从事这方面工作的都会,就不用看了。这里只是给初学者看的。因为我在学习中一直查不到相应的确切资料,希望我的经验分享能帮助到刚入门的小伙伴们。

如何通讯这里就不细说了,站里多的很。这里只是说一下INVT变频器的频率给定。

INVT CHF100A变频器,通讯频率设定,地址是2000,说明书上只给出了对应方式(-10000对应100%,10000对应100%),其它并未说明。 打电话给客服告诉是 16进制整型。然后做为小白的我就想多了,哈哈,总是想着要给十进制转成十六进制,愁的都吃不下饭了。鼓捣了一下午也没弄明白,今天早上突然想着用转换试试,然后就成功了,唉,也是愁的难受。不说了,上干货。

正确思路如下:

1、用户给定数据是REAL型

2、计算对应百分比数据

3、数据转换为16进制WORD型(客服说的16进制整型)

4、写到变频器里

下面是我的测试代码:

IF #INcov < 50 AND #INcov > 0 THEN
    #t1 := #INcov;
ELSE
    IF #INcov >= 50 THEN
        #t1 := 50;
    ELSE
        #t1 := 0;
    END_IF;
END_IF;
#t2 := #t1 / 50;
#t3 := 10000 * #t2;
#t4 := REAL_TO_INT(#t3);
#t5 := INT_TO_WORD(#t4);
#OUTcov := #t5;

解释:我是把转换做成了一个函数模块,方便使用。  因为我这边的频率是0-50,所以先设了个上下限。如果需要用户设把数值改成变量就行了。后面就是获取0-50对应0-10000的数值,然后转成INT型,再转成WORD型就OK了。

东西不多,也很简单,硬是卡了我一下午。非科班的悲哀。。。