恭喜,你发布的帖子
发布于 2016-06-19 23:21:26
18楼
接下来就是程序了。200SMART 自带的有Modbus库。200的好像没有,得下载一个,然后安装。第一步可以先把扫描程序写好,在帮助文件里面也有写好的主站程序,可以参考那个来写自己的。
我是这样写的,我把扫描程序和那些数据给定的程序分开了,循环扫描是主程序,在运行时调用子程序,觉得我这样 看着比较明了。扫描程序的第一步是初始化,MBUS_CTRL 指令用于初始化、监视或禁用Modbus 通信,要我详细说初始化的作用我也说不上来。初始化的EN短和M偶的端必须是一直接通的,在初始化完成有个完成标志位 。
MBUS_MSG 指令(或针对端口 1 的 MBUS_MSG_P1)用于启动对 Modbus 从站的请求和处理响应。也就是设置一些从站号 是读还是写从站的地址 以及把变频器的地址写到上面。如我要写入变频器方向,查阅说明书得知是地址40009 。40009是个变频器状态参数,一共16位,每一位表示一个参数。
如果我要正转,只需要给个2#10给PLC寄存器地址即可。也可以给正转高速2#1010正转中速2#10010.之前问过三菱客服,说是只能给十进制的数,当时没想那么多,就把二进制转换为10进制给了变频器地址对应的寄存器。其实2# 10#都行,试了,可以。
说到寄存器,用的时候并不是非得VB100 对应变频器起始地址,VW102对应第二个地址,也可以VW104对应变频器第二个地址。当然,这样可以避免出错。可是这是针对Count为1的时候,要是Count多了,就不能挨个写寄存器地址了。
把数据传给PLC寄存器之后,MSG指令执行读写指令。根据RW的数制(0 读 1写)来把变频器的数制读出来放到指针对应的字存储区或者把存储区的数值写入到变频器地址。执行完成,有完成标志位。还有错误位,如果执行完成后由错误,可以查看错误代码。一般常见的错误代码是6,表示同一时间内有多条MSG指令接通。
避免这一时间的方法就是把一条MSG指令的完成位作为下一条MSG指令的输入,当该条MSG指令完成后,用完成位复位自身的输入条件,同时用完成标志位置位一位存储区再作为下一条的输入,这样就能避免同时接通。如果要形成以循环,那么久需要等最后一条MSG指令复位其本身输入条件的同时,完成位再置位第一条MSG指令的使能输入条件,作为第一条MSG的输入。还有一点,First 端必须使用沿指令。
我把程序下载到PLC中打开监控发现并不扫描,发现好像是用了上升沿的问题,去掉上升沿,好了,循环扫描了。可是等我把程序保存了,PLC停止运行了,等下次再打开程序,下载监控的时候发现不行了,之后又把上升沿加上,下载程序,再去掉,下载,又可以了。搞不明白这是怎么回事,希望各位有知道的告知下。可能是扫描周期的问题,表示不理解。如果一直在循环扫描的话那就说明MSG指令不会出现同时接通的情况,那么我们就可以把数据传送到变频器地址对应的寄存器和把寄存器读出数制传送到PLC寄存器了。 因为一直在扫描,并不存在多条MSG指令同时接通的情况,应该能随便写入数据和读取数据吧,我试了给个方向给变频器,然后又给了个频率。看了下MSG的错误位,是0,应该没问题,初次接触Modbus,只是了解一点,理解并不深刻,还希望有大神能给仔细讲讲。
。
请填写推广理由:
分享
只看
楼主