基本介绍: CP1F36可编程控制器

本控制器设计全面,功能完善, 所以编程简单,几十分钟,基本能掌握和写出控制程序,经过20年迭代升级,具备电脑编程的全部功能,不需要专业的硬件和软件经验,全部中文编程,使用4条指令,即,循环,判断,赋值,调用模块,4条指令,就可以设计出硬件具备的任意所有功能,即显示控制输入到输出的任意控制和其它特殊功能,

点此下载软件,固件更新_V468_X86.rar,安装完打开选择编辑程序


下面是一个控制输出端Y0指示灯以1秒闪烁的列子

程序编写思路为
1:上电初始化数据,即关闭输出,设置闪烁时间
2:判断闪烁时间是否到,到了就交替关闭或打开输出,和重新设置时间
3:程序处理完后把结果输出到控制器输出端口,就是打开或关闭外部连接需要控制的指示灯

程序可以全速运行和单步调试,全速运行时,Y0-Y15输出信号变量的最低位输出接的指示灯,就0,1的1秒交替闪烁变化,单步运行时,如果在默认 = 默认+1指令时,点击一次默认加1,然后停止在下一条指令

列程下载:

电机启停控制:程序实现功能,X0接停止按钮,X1接启动按钮,

Y0接微型继电器控制电机,按下X0停止电机,按下X1启动电机

人机界面程序

控制器程序

电机启停有闪烁指示灯控制:程序实现功能,X0接停止按钮,X1接启动按钮,

Y0接微型继电器控制电机,Y1接指示灯,按下X0停止电机,按下X1启动电机

启动后指示灯以1秒频率闪烁

人机界面程序

控制器程序

递归打开输出:程序实现功能,每次模块自己调用自己,每次调用,同一个变量,都左移动1个位,

并且把最低位设置成1,移动完指定次数后依次返回到最初位置,然后把这个数输出到端口

人机界面程序

控制器程序

数据类型:

1:可以利用仿真界面的查看变量窗口的数据,改变数据和位数据,来使用二进制和十进制的转换

2:数据全部为16位,基本类型为16位无符号整数,即最大数为二进制16个1,1111 1111 1111 1111,即10进制65535,最小数为0,1个操作数为16个位数据,如果二进制转换16位数据,

从左到右,依次为高15位----低0位,如高到低8421表示,左边的数始终比右边的数大一倍,二进制每一位对应10进制数,

...位15..位14..位13..位12..位11..位10..位9...位8...位7...位6...位5...位4...位3...位2...位1...位0.........位位置

....1........1........1........1........1.........1.......1.......1.......1.......1.......1.......1.......1.......1.......1.......1............二进制

32768.16384.8192.4096..2048...1024..512...256...128....64.....32.....16......8.......4.......2.......1 ...........十进制

比如,110010,即,位5,位4,位1,为1,根据上面的位置提示即是,32,16,2,结果就是,32+16+2=50,如果是控制输出,写入50,就是打开Y5,Y4,Y1,Y15-Y0,对应,位15-位0

如编写赋值指令,"Y0_Y15输出信号 = 31",就是Y4-Y0有输出,即0000 0000 0001 1111,

即1 1111,右边4个1根据说明说的8421,就是4个全部1,所以相加8+4+2+1=15,因为左边的比右边的大1倍,所以8旁边的大一倍就是整个5个1对应为16 8 4 2 1,所以16+8+4+2+1 = 31

3:写入位数据,如操作上面列子中主板的16路输出,输出地址的为16,

如把Y0设置成1,清除Y1-Y15,就写入0000 0000 0000 0001,对应8421的最低位,所以对应最低位为1,就是写入1,即编写赋值指令,"Y0_Y15输出信号 = 1"

如把Y1设置成1,清除Y0,Y2-Y15,就写入0000 0000 0000 0010,对应8421,所以对应次低位为2,就是写入2,即编写赋值指令,"Y0_Y15输出信号 = 2"

如把Y0,Y1设置成1,清除Y2-Y15,就写入0000 0000 0000 0011,对应8421,所以对应低位为21,就是1,2相加写入3,即编写赋值指令,"Y0_Y15输出信号 = 3"

4:读取位数据,如操作上面列子中主板的24路输入,输入X0-X15的地址为0,输入X16-X31的地址为1

如读取X0信号到名称为临时变量的变量中,即编写赋值指令根据8421, "临时变量 = X0_X15输入信号&1",如果临时变量的值不是0,就是X0有信号

如读取X1信号到名称为临时变量的变量中,即编写赋值指令根据8421, "临时变量 = X0_X15输入信号&2",如果临时变量的值不是0,就是X1有信号

指令:

1:循环指令

2:判断指令,与指令,就是里面的条件全部满足才执行,或指令,就是里面的条件只要满足一个就执行

3:赋值指令,直接对变量赋值,操作符有,设置常数,加减乘除,取余数,位与,位或,位异或,位非,取反,位左移,位右移

4:调用模块,调用其它功能模块

比较符:

==:左边的数等于右边的数,则条件成立

!=:左边的数不等于右边的数,则条件成立

>:左边的数大于右边的数,则条件成立

>=:左边的数大于或等于右边的数,则条件成立

<:左边的数小于右边的数,则条件成立

<=:左边的数小于或等于右边的数,则条件成立

操作符:

N:后面数据不用,如,默认 = 33N1,后面的选N,表示等于号后面只有一个33,设置默认这个变量为33

+-*/,:加减乘除,和我们常用的数学计算一样,计算结果没有大于65535的数据,直接存储于变量,大于65535的,

或如果小的数减大的数,变量数据会溢出,即如,默认 = 45678*56789,结果是2594007942,大于65535,溢出时,只保留低的16位,结果,

默认 = 27526,这种可以检查特殊寄存器累加器的高16位,如果不是0,就是发生过数据溢出,此时高位可以从此寄存器读出

比如,累加器A低位,地址为111,累加器A高位,地址为112,累加器A低位=45678*56789,这样把结果存入32位的累加器A中

%:取余数,如,默认 = 默认%4,原来上面设置默认=33,默认=33/8,余1,这里计算后,默认为1

&:位与,都是1结果是1,有一个是0,结果就是0,可以用来取数据,如读取一路和多路输入端口状态,即 1&1 = 1,0&0 = 0,1&0 = 0,0&1 = 0

第一个数为155,即每一个位对应为,10011011

第二个数为137,即每一个位对应为,10001001

...................................运算完,是137, 10001001

|:位或,有一个是1结果就是1,可以用来设置数据,如设置一路和多路输出端口状态,即 1|1 = 1,0|0 = 0,1|0 = 1,0|1 = 1

第一个数为155,即每一个位对应为,10011011

第二个数为137,即每一个位对应为,10001001

...................................运算完,是155, 10011011

^:位异或,如果两个位相同,设置0,不相同设置成1,即 1^1 = 0,0^0 = 0,1^0 = 1,0^1 = 1

第一个数为155,即每一个位对应为,10011011

第二个数为137,即每一个位对应为,10001001

...................................运算完,是146, 10010010

~:取反,把整个数据取反,即每一位,从0变为1,从1变为0即,~0=1,~1=0

如数据为155,即每一个位对应为,10011011

...............................运算完,是100, 01100100

<<:循环左移,把整个数据左移几位,总共16位,如左移1位,那么最高位丢弃,最低位变成第2位,最低位用0代替,即1111=11110

如数据为37019,即每一个位对应为,1001 0000 1001 1011

..................................运算完,是8502,0010 0001 0011 0110

>>:循环右移,把整个数据右移几位,总共16位,如右移1位,那么最低位丢弃,最高位变成第15位,最高位用0代替,即1111=0111

如数据为37019,即每一个位对应为,1001 0000 1001 1011

................................运算完,是18509,0100 1000 0100 1101

编写程序:

1:主界面说明

2:新建模块:

3:新建判断指令:

4:新建循环指令:

5:新建赋值指令:

6:新建调用模块指令:

7:变量窗口:

8:清理变量:

全部编写调试完成,可以按此按钮,清除,除了已自定义地址外的没使用到的所有变量名

程序仿真:

注意:模拟运行和实际运行可能会不同,因为模拟仿真有数据自动全部初始化,实际

运行可能程序有些数据没有做初始化处理,可能运行结果会不同,比如循环指令,变量

未循环完10次,不退出,软件模拟时,变量有清零,会循环处理10次,而实际设备如果这个

变量是断电存储时,没进行清零,如果数据已经大于10,那么就不会进行循环操作,只能

说相同数据情况下,软件模拟和实际运行是一致的

编程技巧:

1:只要有定义的变量,最好程序上电时,初始化一下默认值

2:不是太简单功能的程序,尽量分成不同模块编写

3:模块内的变量尽量封闭在自己范围内,尽量不和外界产生连接,必须有被外部调用的变量,尽量搞成,本模块不存在时,不会影响其它模块正常工作这样此模块

调试完成后,可以先屏蔽掉不使用,这样减小程序复杂度,等到全部功能调试完成再加入

4:数据的运算操作,注意数据的溢出

5:判断一个数据的指定位是不是为1,一定要判断不等于0时为1,而不能判断等于1才是1

6:控制输出,尽量做到,先关闭全部输出,等程序处理完,再打开需要打开的,避免,本来想要关闭的输出没关闭

7:不是位操作判断,循环判断的条件,尽量用>=和<=,如果一定要用==号比较,一定要注意不会产生大于和小于的情况,否则会循环过头,程序产生错误

8:整个程序的刷新时间,不能超过1.5秒,否则会产生看门狗溢出错误,如果超过,可以设置标志,分成2次处理

9:如果有多个相同功能的模块,可以把需要的数据,传送给一个实现此功能的模块,大家共用此模块处理,等处理完,再取回需要的数据,减少重复处理代码,减小程序大小

10:递归操作,即模块自己调用自己,必须有退出机制,否则会死循环看门狗溢出或返回堆栈溢出

显示屏幕:

1: 板插扩展单色屏,可以用手机安卓版的编程APP程序编辑和下载,因为更新和下载保存,需要打开网络和存储器权限

 

编辑完成可以直接在手机上模拟设备运行界面

2: 支持市面上的文本控制器,4.3寸,7寸,10寸触摸屏或所有支持标准Modbus通讯协议的通讯设备,如温控仪,伺服,步进驱动器,变频器

文本

触摸屏

3:显示屏编辑软件使用说明,点击下载

注意:

1:手机端安装完成后,先在应用管理里打开存储器读写权限,不打开读取不到程序

2:下载等距字体,在手机的根目录下建立文件夹HmiFont,把下载的字体保存在里面,

因为手机的字体,可能不是等距字体即不同的字会有不同大小,如当数字靠近显示屏

边缘显示时,可能数字大小不同,有些数字会显示在外面看不见了,如果需要其它字体

按照下面操作取字模,注意文字字体有版权问题

设备说明:

型号:CP1F36

1: CPU 32位,240M频率,32位ARM Cortex-M4内核,RAM 224KB,FLASH 1024KB

2: I路PWM脉冲输出,可以脉冲方式驱动伺服电机驱动器或步进电机驱动器

3: 2路模拟量输出,可以电压方式驱动伺服电机驱动器

4: 2路模拟量输入,可以连接压力传感器,电阻式电子尺

5: 24路开关量输入,可以接按钮和二线接近开关

6: 12路带短路保护3A直流输出,每路可以直接最多同时驱动2个电磁阀,也可以脉冲方式输出驱动伺服阀

7: 1个扩展端口,可以扩展输入输出模块,显示模块,或WIFI模块添加物联网功能,或2路A,B,Z,的三相光电编码器的模块

8: 1路485/232通讯端口,1路USB通讯端口,2路232通讯端口

9: 通讯协议,支持MODBUS,Ascii和Rtu

10: 7A电流可拔插式端子

11: 电源需要一路12-24v直流供电

12:串口引脚定义

圆口232

九针232

接线图