# plc全套设计
**Repository Path**: RimGo/plc-secondary-module
## Basic Information
- **Project Name**: plc全套设计
- **Description**: plc全套设计,适合超大规模plc部署而不失响应速度,适合接入系统层而不失响应速度,编程方面:适合C语言
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 5
- **Created**: 2025-03-17
- **Last Updated**: 2025-03-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
20230711
经过一段时间代码编写,发现直接做PLC会导致我资金断链,毕竟这是一个小众市场。所以,我计划先赚钱,明天再继续PLC
# 综述
“**澄澄**“:致力打造一款工业可编程控制器(PLC)。适合超大型自动化流水线统一控制。在本次设计中,我们注重了设备的低成本和高可用性,同时秉承了PLC的优点和特点。我们将继续探索PLC在不同领域的应用,并为客户提供更好的解决方案。
### 设计特点
- 接口高速:自定义光纤协议,强调多PLC协调工作,跨PLC可达一万以上io输入、输出,平均可在3ms内响应。
- 接口开放:串口协议、spi协议对外开放,某些控制在可容忍操作系统,如linux系统的任务调度延时情况下,可以利用电脑强大算力辅助控制。(操作系统一般情况下在50ms内可做出响应)。
- 生态完整:拥有常规输入、输出模块、对外接口模块、互联网模块,浮点乘除法模块(含PID算法)。接口开放,不限制外设品牌。
- 响应速度高:空载程序响应速度在500us以内。分为高速运行区和低速运行区。
- 学习成本低:以精简的C语言为基础,并实现汉语编程。教程完善。
- 低成本:每一个电源电阻全部注明作用,电路原理全部做好注释。合理增删电路,压缩成本,价格透明。工控环境良好的情况,价格可以做到极低。
- **开源:此款PLC承诺永久开源**,包括:编程软件,硬件电路,固件程序。
- 后台支持完整:在线编程,在线模块化例程,快速开发,对外接口模块接入PC,可实现远程编程。
- 适合跨行、跨领域工作:PLC协议开放,数据可轻易获取和输入。获取的数据可以利用电脑强大算力辅助控制,从而使用java语言,python语言,shell语言,编写。屏幕可使用HTML、JS、编写。PC的辅助,使控制模式更加便捷多样化。
- 可联网,对接官方云服务器,便捷远程开发。官方提供设计人员、搭建服务和驻厂运维人员,为您的PLC设备保驾护航。
# 安装说明简述
编程端:web页面:登录设备管理页,
离线端,电脑安装java,并使用java -jar运行,在网页打开。
电路板:根据garben文件定制电路板,并按要求焊接。
在淘宝或者联系开发者单独购买完整电路板。
固件:使用st-link下载器,按要求连接接入器和PLC的电路板,下载固件。
编程: 接入器的串口连接PC或者专用的设备的串口,本机编程下载。
设置当前网络的账号密码,远程接入网络。stp连接,远程下载
具体安装使用,需要观看视频:http://
# 为什么能实现
原因要点:天下武功,唯快不破。
## 简述plc
PLC,即可编程逻辑控制器,顾名思义是一种可编程的设备,它包含CPU、内存和输入/输出接口,并通过编程来控制设备的运行。
PLC与电脑相比,拥有瞬时响应,并增加输入/输出接口。使得它可以实现更广泛的控制任务。
PLC与单片机相比,PLC具有更强的抗干扰能力,可以在高温高压等特殊环境下运行,更适合于工业控制领域的使用。
## “**澄澄**“plc特点
### 多PLC协调工作而不失反应速度
PLC分三级,每级PLC下可接16台设备。每台PLC在编程时候,需确定那些数据为共享的数据,当此数据有变化的时候,并向上级发送,经过判断那些为共享的数据,向更上级发送,同级PLC可以在发送过程中获取数据,并做出响应。每一级发送速度高达1Mb/s字节每秒。
交换机与PLC一级使用光纤相连。
| 上级 | 下级 | 筛选数据 | 建议连接方式 | 速度 |
| ----------- | ---------- | -------- | ------------------- | -------------- |
| 主交换机 | 一级交换机 | 否 | 光纤 | 10MB/s |
| 一级交换机 | 二级交换机 | 否 | 光纤 | 10MB/s |
| 二级交换机 | PLC接入器 | 否 | 光纤 | 1MB/s |
| PLC接入器 | PLC | 是 | 485总线、网线、直联 | 1MB/s |
| PLC转接器 | 电脑 | 否 | 485线 | 波特率:115200 |
| PLC冗余接口 | PLC | 否 | 网线 | 1MB/s |
| | | | | |
### 高速运行区和低速运行区
瞬时一般是指ms以内,甚至是us。例如:pwm,物件到指定位置后启停 。
延时一般是人能反应的极限,>50ms,例如:有:按键,触摸屏,显示器闪烁,
其瞬时和延时没有严格的限制点,在plc生产领域,大部分是瞬时设计,但要求瞬时响应的逻辑一般比较简单单,经过几轮if判断就可以。当然也有需要复杂的计算。众所周知,单片机对如果没有专有的乘法器,浮点运算很慢,会严重影响瞬时响应时间,
本设计的目标就是将延时和非延时区分开来,复杂运算和简单运算区分开来,要求瞬时的,用plc计算,要求计算影响瞬时响应的,用强大的mcu,或者cpu或者计算机算,再回传
回传可以,但是必须保证传输的速度,5G解决了网络问题,但是要求每次保证10ms内的回传任然不可能,所以针对传输,又必须开发专有的交换机。保证数据转发在ms以内
这样的设计,简单的控制中,不必要购买昂贵的plc,在复杂的控制中,又优于一台高性能plc,在多plc控制当中,可以贯穿整个流水线,并可以汇总到一台总控台上,通过其它编程语言控制任何一台plc
高速运行区只能直接操作io口,不能使用自带函数等功能,只能用int变量。
- 大量使用spi自定义协议,提高传输速度,配置传输等级和传输内容,让多个plc的数据交换达到了ms以内。
- 使用双路+环状设计,在替换设备的时候,尽最小可能替换设备不停机。
- 提供梯形图,c语言、输入码,而且同步转换
# 设备描述 / 实现原理(简述)
设备分为硬件和软件两大部分
其中硬件分为:交换机、显示模块、IO模块、转接模块等大的部分
软件为编程软件。
## 硬件设备描述
### 设备解释
| 模块 | 特点1 | 特点2 | 特点3 |
| --------- | -------------------------------------------- | -------------------------------- | ------------ |
| 显示模块 | 香蕉派、荔枝派 | hdmi显示、触摸屏控制 | |
| 交换机 | 连结外网 | 将子设备组成网络 | |
| PLC主控 | PLC继电器
PLC块晶体管
电机控制模块 | | |
| PLC接入器 | 又串口又网口 | 低成本将子设备组成网络 | 串口 |
| PLC按键器 | 2网口一冗余,一替换 | 冗余口网线口*1,含3个485。全输出 | 串行控制输出 |
| 卡边 | 电转光 | | |
**交换机**
- 为主控接入网络提供数据交换渠道,模拟spi 20个。
- 导轨版有8个口和主模块通信,2对上联冗余接口。可接8台设备或4台冗余设备。
- 机架常规款有16个口和主模块通信,2对上联并定位冗余接口,2个口作为备用口。可接16台设备或8台冗余设备。
- 机架冗余款的16个口和2个备用口均上下同时发送数据。形成36口的冗余交换机,再加4个上联口,成为40口交换机。
- 超远传输机架款是用差分传输信号的方式,检测光线的强弱进行数据的传输。加上冗余功能,该设备只能接8组io口,拓展之后为2个U机架可以接16组io。
- 每个交换机有一个串口,后期导轨版串口改为以太网口,机架款添加网口,设定地址为0000后,并且该交换机设定为交换机数据接收模式后,交换机由串口或者网口发出。否则通过上联口发出。
- 询问和回复均为完整包,回复忙或者无可回复内容时候,自动将io状态回复,交换机广播携带当前编号前8的前8个io
**显示模块**
- 使用工控机作为显示设备,也可以用树莓派等设备代替。
- 用于显示,触摸屏。
- 显示屏可以视为一个用电脑模拟的PLC,所使用的协议和实际PLC相同,所以需要串口或者网线将电脑收发的数据转为“**澄澄**“PLC可识别的协议。所有数据需要向PLC申请才能获取。
- 收集记录日志,做java python判断(一些需要时间处理,发送到主设备需要占用带宽的数据,例如模拟数据,1万次循环的用时,日志记录,断网后临时处理方式)。
**主模块**(以常规款为例子)
- 每次发送8个字节,固定长度发送
- 8个输出12个输入1对485输入一对电源
- 含有oled显示器,可以配置显示logo,配置菜单,监视运行情况等
- spi转485传输,不会因线长而造成数据出错,多plc协同工作
- 双plc冗余工作,出现问题无延时换另外一台,维修不停机。
**PLC接入器**
- 内含mcu,作为主设备让PLC互联。
- 含以太网口
- 含typec 的ch340的串口
- 询问多个PLC设备数据,转发其它PLC数据,将多个设备协调运行起来
**PLC按键器**
- 2个网口,方便不停机更换设备,接入跳线;冗余口一个
- 按键4个
- 串行输出口一对
- 供电口一对。
**卡边**
- 将spi数据转为光数据,方便远程对接。
- 有2个光口,方便接入环形输入
- 用于卡边,固定plc
**串行设备**
串行输出为澄澄PLC的一款特色功能,其原理是通过PLC的一个输出口,发送串行数据,在此总线上的所有设备。均可受控。该功能任意一台设备上都拥有。该功能极大的扩充了PLC的输出口数量,也不缺乏稳定性,对非高要求低成本控制有极大优势。
**串行输入设备**
传感器设备的接入。
### 传输方式
传输方式为本设计的最大亮点,极大的提高了传输速率
使用光纤进行了传输,
光也有信号强弱,也会有干扰,使用485进行光强弱的比较,实现稳定传输
网线有8根线,由4对双绞线构成,由于上传的数据量大,上传用2对线,下载用1对线,信号用1对双绞线。连接
### 其他功能
测试发送延时,需要一个函数,发出去,再返回来,定义数据延时
### 传输的数据类型 计算方式
每一步的结果都放入一个缓存空间
每个缓存空间,首个位置判断,直接赋值,第二个判断,要判断是缓存空间否为1,如果缓存位置是1,直接跳过。
除去第一个外,第二个值开始要判断之前的结果
只能对数字进行判断,如果对字符或者字符串判断的话,会造成数据量大影响处理速度,所以如果判断字符串的话,要放到显示模块中判断
### 缓存
用于给用户所使用的内存 大小为10kb
# 网络连接
设备的下载功能可利用网络进行远程下载。
我们的设备提供了网络远程下载功能,每次传输1kb,只有当“传输完成位”为1时才认为本轮传输完毕,以此循环直到下载完成。
此外,我们的设备也可以通过手机端进行控制。对于充值会员的设备,可以获得800kb的缓存空间,所有性能按照物联网设备无会员100倍计算,是普通会员的10倍。
在PLC项目中,我们提供了免费的物联网平台,这是一种极为廉价的方式,我们也尽可能地维护平台的稳定性。然而,在大型和重要的PLC业务中,利用公有的PLC平台可能存在数据安全性和稳定性的风险。因此,我们建议厂商聘用专业的编程人员,利用我们提供的开源PLC服务端代码搭建私有服务器。同时,我们也提供设计人员、搭建服务和驻厂运维人员,为您的PLC设备保驾护航。
服务端开源代码不在本项目中,请访问:http://
## 设计背景
我曾经从事PLC工作、单片机和Java程序开发,最后转向云平台设计。通过了解各个行业的优缺点,我决定发扬米格25效应,综合考虑PLC的稳定性、运行速度和价格,设计出了这款PLC。
这款PLC的设计范围非常广泛,需要多个人或团队的共同努力才能完成。因此,我们选择以开源的方式,完善设计,提高设备的稳定性,为用户提供更好的服务。
在PLC的设计中,速度和效率是非常重要的考虑因素。随着5G时代的到来,“快”成为这个时代的代名词。在设计PLC时,我们必须了解哪些数据变量需要瞬时响应,哪些需要延时响应。响应时间贯穿整个编程过程。因此,在设计PLC时,我们注重了响应速度的优化。我们使用了高效的算法和数据结构,以确保PLC能够在最短的时间内响应各种指令和信号。
为了让编程更加符合人类思维方式,我对编程进行了改造。我摒弃了梯形图,自创了一套建议语言,让每个人都能轻松上手编程,快速开发。这种语言不仅易于理解和使用,而且能够提高编程效率和准确性。通过这种语言,编程人员可以更轻松地编写复杂的控制程序,从而提高PLC的性能和稳定性。
在设计之初,我考虑到了编程的简易性和复杂性相结合。我们选择开源的代码、简易的接口、使用Java、Python和Shell语言,能够方便地接收程序发出的参数,并方便地再传入程序。这让复杂的东西用高端的工具来完成,以此实现速度和多功能并存。再配合现有软件,如3D和平面设计,可更形象、美观地展示给用户。此外,设备可以联网,无论是读取数据、远程控制还是调试编程,都更加方便快捷。
PLC的存在是为了稳定,但在实际应用中,价格也是需要考虑的因素。例如,网线是由4对双绞线制成,阻抗为100欧姆,不符合485总线120欧姆的阻抗要求。但同样是双绞线,不能一概而论不能使用网线代替双绞线。网线没有485网线的传导性好,屏蔽能力强,容易断。但在实际生产中,不缺乏工况极为良好的环境,而且在极短距离和低速传输中,阻抗不匹配不会影响传输效率,所以需要适当取舍。
开源就意味着失去经济来源?非也,在PLC的设计中,如果我们极为注重了设备的可靠性和稳定性。可无一列外的全部使用高品质的电子元件和材料,这样确实可以确保PLC能够在各种恶劣的环境下正常运行。但成本也随之飙升。所以,根据工况环境确定我们是否有必要采用多重保护措施,如过压保护、过流保护和防尘防静电保护等,才显得尤为重要。单纯的依靠开源真的做不到一通百通,就算我注释标准的再细,点点细节,只知其表而不知其理,很难在多变复杂的工况环境中,拟定一个更好的方案。
总之,这款PLC在设计上注重速度和效率,同时降低成本,为各行业提供更好的控制和管理。我们相信,通过不断完善和开源,这款PLC将能够为更多的用户带来更好的服务和体验。我们坚信,这款PLC将成为未来各行业的不可或缺的控制设备。我们将继续努力,不断改进和完善这款PLC,以满足用户不断变化的需求。
### 总目标
设计整套plc产品,包括控制,机械臂等。物联网设备全套设计。工作室改为实验室。
### 经济来源
网站赚钱。
产品销售。
欢迎赞助。
提供服务。
# 更新情况
最后一次更新:2023年3月29日
状态:plc正在加速开发中,无法下载测试
开发者QQ:370069225
注:个人使用免费。商业化需联系作者,并在产品外观按要求加入“工控“Logo、二维码后可免费。
git命令不好记,不记了,在此记录
```
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/hollow_world/plc-secondary-module.git
git push -u origin "master"
```
```
cd existing_git_repo
git remote add origin https://gitee.com/hollow_world/plc-secondary-module.git
git push -u origin "master"
```
- (20230306)其实在后期的考虑当中,认为使用工控机比较适合,大多数工控机都带有串口,。当时放弃串口的原因是觉得串口传输速度太慢,spi会快一点,显然,非系统传输确实是spi快很多,貌似不太适合系统,为了快速开发,选择使用性能更好的工控机。工控机跑java程序,带触摸屏,价格合适,兼容性高,稳定性也不错。网页显示的界面也灵活多变。
- (20230307)其实想到现在,带系统的嵌入式设备真的是可有可无,本来是想以嵌入式设备创新的,但是,还是鸡肋。现在,彻底放弃了。只当个显示屏用吧。
作为工业设备,最重要的是设备的稳定性,只有稳定性才能称之为工业产品。冗余接入必不可少。
交换机有冗余性。
其实每一台PLC中控有24个io,其中8出12入2个485,因为对于冗余系统来说几乎每一个输出,都要有一个输入检测是否继电器真的工作,也就是说,每一个输出要对应一个输入,此时,继电器烧毁,熔焊,都能检测出来,一旦发现问题,可以软切换到另外一台冗余的PLC上工作,使输出效果即使有故障也可以无缝衔接。
正常情况下,如果通过编译器写的代码不会导致程序死机,死机后会由看门狗重启,此时需要程序员格外关注程序是否由bug,重启是一种很严重的问题,或许此款PLC不太适合在这种环境中工作,例如高辐射的环境中。请加防护。
PLC交换机全部光口,型号分2种,一种是16口,可配置为8*2冗余,也可以不配置。一种是32口,强制16*2冗余,在交换机中,冗余的2个口发送的数据的频率和结果完全一样,同样的数据传输到子设备的主备交换机上,由于主备交换机存在着频率不同的可能性,所以,需要两根频率信号线,一根信号线作为开始发送标志位,一根信号线作为spi信号线,发送标志位下拉,表示主开始发送,当信号线没有在预定时间下拉,
对于输出设备,每台机器都有一条自带供电的io输出,只能输出不能输入。有点是瞬时性还可以,稳定性不错,65535个输出点,可以接民用控制开关,缺点是波特率慢,不做缓存,需要程序控制收发速度。没有反馈,不知道结果。需要用其他方式反馈。限制输出功率为24V1A,后续增大功率要中继
一台PLC有输出,有输入才算完整。单独为一个功能做一个模块不好,所以全输出型设备上有4个接口一个为自带输出地址的设备,为2组485总线,要注意的是:485总线上设备越少越好。
串行设备接入设备,多数外接传感器设备的回传,回传内容肯定是询问制。由于保证了数据的数量和距离,就无法保证时效性。由于485总线问题多,有时候要接外厂商设备接入,工业稳定性就相对差了一些。
应用场景:
旧塑料大棚中灯和喷水改造自动控制。大棚长度100米左右,灯以安装常规布线。未改造前手动控制,每日会有人巡检,出现问题可以人为补救,没有瞬时要求执行的设备。需要外网接入远程控制。
改造要求:二氧化碳传感器、温度传感器、空气湿度传感器、土壤湿度传感器、光照传感器接入。土壤湿度传感器为1米一个,其他传感器为10米一个。
方案对比:使用一般的wifi开关,配几个无线路由器,对于数百个开关,和布线,也是不少的消费,而在实际的生产当中,会因为墙的阻隔。稳定性也欠佳。
我还遇到过485总线被雷击,高低压线并行走,导致485芯片的损坏的情况,一个芯片损坏总线出现故障,这种非常规操作导致损坏真的是无可奈何。但是坏了的mcu好好的,查又不好查,做好损坏避免那是必然,作为PLC设计者,唯一能做的就是避免损坏和坏了及时定位和替换。总之485这个东西很玄乎,我不拿示波器我也很难确定问题点。
避免485损坏的方式有:各跨接5V的TVS二极管,光耦隔离,多中继中转,输出电容隔离。
传感器设备,例如温湿度、人体、超声波开关等检测模块,当然,也有厂家特殊的模块需要接入这类模块,通过模拟量的转变,统一通过485吧参数传入PLC,由于每种模块的参数不一样,会造成协议不统一,所以暂定为4个字节。
这次设计,和上一次相比,设计的目的是为了便宜和可用性,但是上次的想法还是不可否认,在后期可以继续使用。
- 大量使用spi自定义协议,提高传输速度,配置传输等级和传输内容,让多个plc的数据交换达到了ms以内。
- 使用双路+环状设计,在替换设备的时候,尽最小可能替换设备不停机。
- 提供梯形图,c语言、输入码,而且同步转换