网上很多讲485的,搜出来一看,都一个模子复制出来的。不过硬件部分就那么接,这次详解PLC程序。
首先准备两本书,FX1S1N2N2NC编程手册(基本指令,步进梯形指令,应用指令说明书).pdf 和 FR-A500.pdf 。这两本可以去
三菱电机官网下载最新的。前一本书重点看273页往后,后一本书看4.2.41节。看不下去书的,可以去看
http://www.ymmfa.com/read-gktid-144031.html 这个贴子里的三菱通讯基础的视频,快进着看还是很不错的。
PLC编程用到通讯部分的指令如下图:

重点为RS, ASCI, HEX, CCD
能过查变频器手册,定义通讯的格式:我定义的为数据长度7位,偶校验,停止位1位,无起始符结束符,9600BPS速率。
PLC通讯格式的设定跟据变频器的设置,再写入到标志位里去,如下图:

然后通过PLC说明书知道,使用BD板,D8120的11,10,9这三位必须为110。这下一来,我上面的参数对应到D8120里去为H0C86。
到这一步,就相当于快递公司有了,地址写了,就差包裹了。
下面就是做包裹
通过RS定义包裹的大小
然后从变频器的手册上,找到包裹的具体形式:

然后填写相关部分的数据:
这个地方的数据形式还得看变频器,毕竟PLC上就是定义一长串的数据,把这串数据写满就行了。
上面一张图里面其实就是具体的数据形式了,不过,三菱规定通讯时使用的是ASCII码,那像ENQ的ASCII码是多少就得查表了。

指令代码也要查表

截图了部分,都在上面我给的那一节书中。
下面以让变频器正反转为例编段程序:
首先写入通讯格式,将下面跟随的程序置为8位处理模式。8位处理模式是因为三菱厂商制定的通讯方式是8位的ASCII码。ASCII码是用8位的二进制来表示一位十六进制的数,如 H30表示十六进制的0,H46表示十六进制的F。我个人理解ASCI转换其实就是把四位的形式转成8位的形式,两个同样表示F,十六进制里是1111; ASCII码为01000110。

上面是初始化程序,M8161为8位/16位的切换开关,ON时为8位。ZRST是清除数据区
下面开始定义缓冲区

D200开始的十个寄存器的发送缓冲区,D600开始的十个寄存器的接收缓冲区。这个就像快递的中转站,要发的包裹得统一到一个地方,等通知发货的时候,一起发掉。接收同理。
填写数据形式,做包裹
其中用到的指令代码截过来

我用X0正转,X2停止,X4 反转。

M100M102M104可以不用,我连着触摸屏做实验的,单独用PLC时不用。

D206,D207里面写入的数据根据指令说明里的说明来写,00为停,02为正转,04为反转。对就的按钮写对应的数据。因为D206在这三个指令里都是写0,所以放到公共赋值里去,偷点懒。

CCD校验完D220放的ASCI码的和,D221里放的是列偶校验,这里只需要一个D220的值。
再把D220里的值进行ASCI转换。

M8122变1后,D200到D209的数据就开始发送,发送完了后自动复位。
一个简单的通讯程序也就写完了。
[ 此帖被wangk0在2012-09-04 16:53重新编辑 ]